diff options
author | Ryan Ofsky <ryan@ofsky.org> | 2023-03-13 11:53:33 -0400 |
---|---|---|
committer | Andrew Chow <github@achow101.com> | 2023-04-11 15:52:25 -0400 |
commit | 8741522e6c75a0ad0c96f44e5668befc1624fb0b (patch) | |
tree | 7a48af86e753e88f2222883c1e38c6ab06c02883 /src/wallet/types.h | |
parent | 27dcc07c08a77eba53ccc91e5521ff674f1bd198 (diff) | |
download | bitcoin-8741522e6c75a0ad0c96f44e5668befc1624fb0b.tar.xz |
wallet: Add wallet/types.h for simple public enum and struct types
Move isminetype and isminefilter there this commit, add WalletPurpose type next
commit.
Diffstat (limited to 'src/wallet/types.h')
-rw-r--r-- | src/wallet/types.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/wallet/types.h b/src/wallet/types.h new file mode 100644 index 0000000000..8c1f72f131 --- /dev/null +++ b/src/wallet/types.h @@ -0,0 +1,53 @@ +// 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. + +//! @file Public type definitions that are used inside and outside of the wallet +//! (e.g. by src/wallet and src/interfaces and src/qt code). +//! +//! File is home for simple enum and struct definitions that don't deserve +//! separate header files. More complicated wallet public types like +//! CCoinControl that are used externally can have separate headers. + +#ifndef BITCOIN_WALLET_TYPES_H +#define BITCOIN_WALLET_TYPES_H + +#include <type_traits> + +namespace wallet { +/** + * IsMine() return codes, which depend on ScriptPubKeyMan implementation. + * Not every ScriptPubKeyMan covers all types, please refer to + * https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.21.0.md#ismine-semantics + * for better understanding. + * + * For LegacyScriptPubKeyMan, + * ISMINE_NO: the scriptPubKey is not in the wallet; + * ISMINE_WATCH_ONLY: the scriptPubKey has been imported into the wallet; + * ISMINE_SPENDABLE: the scriptPubKey corresponds to an address owned by the wallet user (can spend with the private key); + * ISMINE_USED: the scriptPubKey corresponds to a used address owned by the wallet user; + * ISMINE_ALL: all ISMINE flags except for USED; + * ISMINE_ALL_USED: all ISMINE flags including USED; + * ISMINE_ENUM_ELEMENTS: the number of isminetype enum elements. + * + * For DescriptorScriptPubKeyMan and future ScriptPubKeyMan, + * ISMINE_NO: the scriptPubKey is not in the wallet; + * ISMINE_SPENDABLE: the scriptPubKey matches a scriptPubKey in the wallet. + * ISMINE_USED: the scriptPubKey corresponds to a used address owned by the wallet user. + * + */ +enum isminetype : unsigned int { + ISMINE_NO = 0, + ISMINE_WATCH_ONLY = 1 << 0, + ISMINE_SPENDABLE = 1 << 1, + ISMINE_USED = 1 << 2, + ISMINE_ALL = ISMINE_WATCH_ONLY | ISMINE_SPENDABLE, + ISMINE_ALL_USED = ISMINE_ALL | ISMINE_USED, + ISMINE_ENUM_ELEMENTS, +}; +/** used for bitflags of isminetype */ +using isminefilter = std::underlying_type<isminetype>::type; +} // namespace wallet + +#endif // BITCOIN_WALLET_TYPES_H |