/src/outputtype.h
C Header | 54 lines | 28 code | 11 blank | 15 comment | 0 complexity | 2efcec9b210f24a0b34efb21e3ff97f0 MD5 | raw file
- // Copyright (c) 2009-2010 Satoshi Nakamoto
- // Copyright (c) 2009-2021 The Bitcoin Core developers
- // Distributed under the MIT software license, see the accompanying
- // file COPYING or http://www.opensource.org/licenses/mit-license.php.
- #ifndef BITCOIN_OUTPUTTYPE_H
- #define BITCOIN_OUTPUTTYPE_H
- #include <attributes.h>
- #include <script/signingprovider.h>
- #include <script/standard.h>
- #include <array>
- #include <optional>
- #include <string>
- #include <vector>
- enum class OutputType {
- LEGACY,
- P2SH_SEGWIT,
- BECH32,
- BECH32M,
- };
- static constexpr auto OUTPUT_TYPES = std::array{
- OutputType::LEGACY,
- OutputType::P2SH_SEGWIT,
- OutputType::BECH32,
- OutputType::BECH32M,
- };
- std::optional<OutputType> ParseOutputType(const std::string& str);
- const std::string& FormatOutputType(OutputType type);
- /**
- * Get a destination of the requested type (if possible) to the specified key.
- * The caller must make sure LearnRelatedScripts has been called beforehand.
- */
- CTxDestination GetDestinationForKey(const CPubKey& key, OutputType);
- /** Get all destinations (potentially) supported by the wallet for the given key. */
- std::vector<CTxDestination> GetAllDestinationsForKey(const CPubKey& key);
- /**
- * Get a destination of the requested type (if possible) to the specified script.
- * This function will automatically add the script (and any other
- * necessary scripts) to the keystore.
- */
- CTxDestination AddAndGetDestinationForScript(FillableSigningProvider& keystore, const CScript& script, OutputType);
- /** Get the OutputType for a CTxDestination */
- std::optional<OutputType> OutputTypeFromDestination(const CTxDestination& dest);
- #endif // BITCOIN_OUTPUTTYPE_H