2017-04-17 19:55:43 +02:00
|
|
|
// Copyright (c) 2018 The Bitcoin Core developers
|
|
|
|
// Distributed under the MIT software license, see the accompanying
|
|
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
|
2020-10-01 16:05:57 +02:00
|
|
|
#ifndef BITCOIN_INTERFACES_NODE_H
|
|
|
|
#define BITCOIN_INTERFACES_NODE_H
|
2017-04-17 19:55:43 +02:00
|
|
|
|
2017-04-17 22:02:44 +02:00
|
|
|
#include <addrdb.h> // For banmap_t
|
2017-04-18 00:56:44 +02:00
|
|
|
#include <amount.h> // For CAmount
|
2017-04-17 21:37:36 +02:00
|
|
|
#include <net.h> // For CConnman::NumConnections
|
2017-04-17 20:23:14 +02:00
|
|
|
#include <netaddress.h> // For Network
|
|
|
|
|
2017-04-17 19:55:43 +02:00
|
|
|
#include <functional>
|
|
|
|
#include <memory>
|
2017-04-17 21:37:36 +02:00
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdint.h>
|
2017-04-17 19:55:43 +02:00
|
|
|
#include <string>
|
2017-04-17 21:57:19 +02:00
|
|
|
#include <tuple>
|
|
|
|
#include <vector>
|
2017-04-17 19:55:43 +02:00
|
|
|
|
2019-01-21 18:45:59 +01:00
|
|
|
class BanMan;
|
2017-04-18 01:46:08 +02:00
|
|
|
class CCoinControl;
|
2017-04-17 21:37:36 +02:00
|
|
|
class CDeterministicMNList;
|
2017-04-18 01:46:08 +02:00
|
|
|
class CFeeRate;
|
Qt: Adds Governance tab (#4351)
* Qt: Adds settings option to showGovernanceTab
* Qt: Adds not-yet-functional Governance tab to UI
* library: adds hook into governance rom node interface
* Qt: WIP: puts CGovernanceObject hashes on Governance tab
WIP: basically ready to be filled out, most of the infra in place
now.
* Qt: Populates Governance table values
Governance table now contains real values for current columns. Display
columns may potentially change.
- want url in table if right click option opens url?
- What set of cols wanted? Show yes/no votes?
- Decide refresh functionality.
- Do we even want filter func? (checkbox show: proposal, trigger, active coming)
* qt: Shows Voting Status on Governance page
Towards DMT like Governance page, now shows voting status, but needs to
look at super blocks to determine if proposal period has passed and show
final funded or unfunded for past proposals.
* Qt: refactor governance tab to use Model-View arch
Refactors the QT Governance tab to use a Model-View architecture. The
list of Proposals is stored in a QAbstractItemModel, and a QTableView is
used to display.
This makes a much cleaner separation of concerns in the implementation.
Also, can now use the QSortFilterProxyModel to get responsive filtering.
Less internal state inside the GovernanceList, critical sections
removed.
- Needs update loop implemented.
- Needs Proposal detail widget implemented.
* qt: adds periodic update to gov proposal list
Periodically update list of governance related proposals.
* qt: populates governancelist voting status column
* qt: governancelist Porposal shows extra info on doubleClick
* qt: governancelist: reorder .cpp impl to match .h
* qt: governancelist: fixup based on CI
- Adds LOCK(cs_main) for call to pGovObj->IsValidLocally.
- retab, removes trailing whitespace in governancelist.{cpp,h}
* qt: clang-format for governancelist
* Fixes
- drop unused include
- use proper univalue "get_" functions
- shorter/translatable statuses
- shorter dates
- add missing css styles
* qt: addresses governancelist code review items
* qt: use enum to name columns of governancelist
* fix: clear context menu before adding new items
* fix: skip potential nullptr proposals
* improve: show proposal url in context menu
* refactor: tweak enum name, make sure it's int starting from 0, use full name
* fix: column count
* improve: make it sortable, sort by start_date by default
* qt: use full col name in voting status col change signal emit
* better sorting
* use mapToSource to fix data fetching
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2021-10-30 03:14:25 +02:00
|
|
|
class CGovernanceObject;
|
2017-04-17 21:57:19 +02:00
|
|
|
class CNodeStats;
|
2017-04-18 22:42:30 +02:00
|
|
|
class Coin;
|
2017-04-17 22:38:51 +02:00
|
|
|
class RPCTimerInterface;
|
|
|
|
class UniValue;
|
2017-04-17 20:23:14 +02:00
|
|
|
class proxyType;
|
2017-04-17 21:57:19 +02:00
|
|
|
struct CNodeStateStats;
|
2017-04-17 20:23:14 +02:00
|
|
|
|
2020-10-01 16:05:57 +02:00
|
|
|
namespace interfaces {
|
2017-04-17 19:55:43 +02:00
|
|
|
class Handler;
|
2017-04-17 21:10:47 +02:00
|
|
|
class Wallet;
|
2017-04-17 19:55:43 +02:00
|
|
|
|
2020-08-28 02:50:50 +02:00
|
|
|
//! Interface for the src/evo part of a dash node (dashd process).
|
|
|
|
class EVO
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~EVO() {}
|
|
|
|
virtual CDeterministicMNList getListAtChainTip() = 0;
|
|
|
|
};
|
|
|
|
|
Qt: Adds Governance tab (#4351)
* Qt: Adds settings option to showGovernanceTab
* Qt: Adds not-yet-functional Governance tab to UI
* library: adds hook into governance rom node interface
* Qt: WIP: puts CGovernanceObject hashes on Governance tab
WIP: basically ready to be filled out, most of the infra in place
now.
* Qt: Populates Governance table values
Governance table now contains real values for current columns. Display
columns may potentially change.
- want url in table if right click option opens url?
- What set of cols wanted? Show yes/no votes?
- Decide refresh functionality.
- Do we even want filter func? (checkbox show: proposal, trigger, active coming)
* qt: Shows Voting Status on Governance page
Towards DMT like Governance page, now shows voting status, but needs to
look at super blocks to determine if proposal period has passed and show
final funded or unfunded for past proposals.
* Qt: refactor governance tab to use Model-View arch
Refactors the QT Governance tab to use a Model-View architecture. The
list of Proposals is stored in a QAbstractItemModel, and a QTableView is
used to display.
This makes a much cleaner separation of concerns in the implementation.
Also, can now use the QSortFilterProxyModel to get responsive filtering.
Less internal state inside the GovernanceList, critical sections
removed.
- Needs update loop implemented.
- Needs Proposal detail widget implemented.
* qt: adds periodic update to gov proposal list
Periodically update list of governance related proposals.
* qt: populates governancelist voting status column
* qt: governancelist Porposal shows extra info on doubleClick
* qt: governancelist: reorder .cpp impl to match .h
* qt: governancelist: fixup based on CI
- Adds LOCK(cs_main) for call to pGovObj->IsValidLocally.
- retab, removes trailing whitespace in governancelist.{cpp,h}
* qt: clang-format for governancelist
* Fixes
- drop unused include
- use proper univalue "get_" functions
- shorter/translatable statuses
- shorter dates
- add missing css styles
* qt: addresses governancelist code review items
* qt: use enum to name columns of governancelist
* fix: clear context menu before adding new items
* fix: skip potential nullptr proposals
* improve: show proposal url in context menu
* refactor: tweak enum name, make sure it's int starting from 0, use full name
* fix: column count
* improve: make it sortable, sort by start_date by default
* qt: use full col name in voting status col change signal emit
* better sorting
* use mapToSource to fix data fetching
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2021-10-30 03:14:25 +02:00
|
|
|
//! Interface for the src/governance part of a dash node (dashd process).
|
|
|
|
class GOV
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~GOV() {}
|
2022-02-15 17:28:55 +01:00
|
|
|
virtual std::vector<CGovernanceObject> getAllNewerThan(int64_t nMoreThanTime) = 0;
|
Qt: Adds Governance tab (#4351)
* Qt: Adds settings option to showGovernanceTab
* Qt: Adds not-yet-functional Governance tab to UI
* library: adds hook into governance rom node interface
* Qt: WIP: puts CGovernanceObject hashes on Governance tab
WIP: basically ready to be filled out, most of the infra in place
now.
* Qt: Populates Governance table values
Governance table now contains real values for current columns. Display
columns may potentially change.
- want url in table if right click option opens url?
- What set of cols wanted? Show yes/no votes?
- Decide refresh functionality.
- Do we even want filter func? (checkbox show: proposal, trigger, active coming)
* qt: Shows Voting Status on Governance page
Towards DMT like Governance page, now shows voting status, but needs to
look at super blocks to determine if proposal period has passed and show
final funded or unfunded for past proposals.
* Qt: refactor governance tab to use Model-View arch
Refactors the QT Governance tab to use a Model-View architecture. The
list of Proposals is stored in a QAbstractItemModel, and a QTableView is
used to display.
This makes a much cleaner separation of concerns in the implementation.
Also, can now use the QSortFilterProxyModel to get responsive filtering.
Less internal state inside the GovernanceList, critical sections
removed.
- Needs update loop implemented.
- Needs Proposal detail widget implemented.
* qt: adds periodic update to gov proposal list
Periodically update list of governance related proposals.
* qt: populates governancelist voting status column
* qt: governancelist Porposal shows extra info on doubleClick
* qt: governancelist: reorder .cpp impl to match .h
* qt: governancelist: fixup based on CI
- Adds LOCK(cs_main) for call to pGovObj->IsValidLocally.
- retab, removes trailing whitespace in governancelist.{cpp,h}
* qt: clang-format for governancelist
* Fixes
- drop unused include
- use proper univalue "get_" functions
- shorter/translatable statuses
- shorter dates
- add missing css styles
* qt: addresses governancelist code review items
* qt: use enum to name columns of governancelist
* fix: clear context menu before adding new items
* fix: skip potential nullptr proposals
* improve: show proposal url in context menu
* refactor: tweak enum name, make sure it's int starting from 0, use full name
* fix: column count
* improve: make it sortable, sort by start_date by default
* qt: use full col name in voting status col change signal emit
* better sorting
* use mapToSource to fix data fetching
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2021-10-30 03:14:25 +02:00
|
|
|
};
|
|
|
|
|
2020-08-28 02:56:07 +02:00
|
|
|
//! Interface for the src/llmq part of a dash node (dashd process).
|
|
|
|
class LLMQ
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~LLMQ() {}
|
|
|
|
virtual size_t getInstantSentLockCount() = 0;
|
|
|
|
};
|
|
|
|
|
2020-08-28 01:41:57 +02:00
|
|
|
//! Interface for the src/masternode part of a dash node (dashd process).
|
|
|
|
namespace Masternode
|
|
|
|
{
|
|
|
|
class Sync
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~Sync() {}
|
|
|
|
virtual bool isBlockchainSynced() = 0;
|
|
|
|
virtual bool isSynced() = 0;
|
|
|
|
virtual std::string getSyncStatus() = 0;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2021-03-17 23:36:11 +01:00
|
|
|
namespace CoinJoin {
|
|
|
|
//! Interface for the global coinjoin options in src/coinjoin
|
2020-08-28 11:52:00 +02:00
|
|
|
class Options
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual int getRounds() = 0;
|
|
|
|
virtual int getAmount() = 0;
|
|
|
|
|
|
|
|
virtual void setEnabled(bool fEnabled) = 0;
|
|
|
|
virtual void setMultiSessionEnabled(bool fEnabled) = 0;
|
|
|
|
virtual void setRounds(int nRounds) = 0;
|
|
|
|
virtual void setAmount(CAmount amount) = 0;
|
|
|
|
|
|
|
|
virtual bool isMultiSessionEnabled() = 0;
|
|
|
|
virtual bool isEnabled() = 0;
|
|
|
|
// Static helpers
|
|
|
|
virtual bool isCollateralAmount(CAmount nAmount) = 0;
|
|
|
|
virtual CAmount getMinCollateralAmount() = 0;
|
|
|
|
virtual CAmount getMaxCollateralAmount() = 0;
|
|
|
|
virtual CAmount getSmallestDenomination() = 0;
|
|
|
|
virtual bool isDenominated(CAmount nAmount) = 0;
|
2022-01-11 01:57:37 +01:00
|
|
|
virtual std::array<CAmount, 5> getStandardDenominations() = 0;
|
2020-08-28 11:52:00 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2020-08-28 02:50:50 +02:00
|
|
|
//! Top-level interface for a dash node (dashd process).
|
2017-04-17 19:55:43 +02:00
|
|
|
class Node
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~Node() {}
|
|
|
|
|
|
|
|
//! Set command line arguments.
|
2018-05-30 19:42:58 +02:00
|
|
|
virtual bool parseParameters(int argc, const char* const argv[], std::string& error) = 0;
|
2017-04-17 19:55:43 +02:00
|
|
|
|
2017-04-17 20:23:14 +02:00
|
|
|
//! Set a command line argument if it doesn't already have a value
|
|
|
|
virtual bool softSetArg(const std::string& arg, const std::string& value) = 0;
|
|
|
|
|
|
|
|
//! Set a command line boolean argument if it doesn't already have a value
|
|
|
|
virtual bool softSetBoolArg(const std::string& arg, bool value) = 0;
|
|
|
|
|
2017-04-17 19:55:43 +02:00
|
|
|
//! Load settings from configuration file.
|
2018-05-30 19:42:58 +02:00
|
|
|
virtual bool readConfigFiles(std::string& error) = 0;
|
2017-04-17 19:55:43 +02:00
|
|
|
|
|
|
|
//! Choose network parameters.
|
|
|
|
virtual void selectParams(const std::string& network) = 0;
|
|
|
|
|
2019-01-12 01:33:11 +01:00
|
|
|
//! Get the (assumed) blockchain size.
|
|
|
|
virtual uint64_t getAssumedBlockchainSize() = 0;
|
|
|
|
|
|
|
|
//! Get the (assumed) chain state size.
|
|
|
|
virtual uint64_t getAssumedChainStateSize() = 0;
|
|
|
|
|
2018-03-23 22:14:39 +01:00
|
|
|
//! Get network name.
|
|
|
|
virtual std::string getNetwork() = 0;
|
|
|
|
|
2017-04-17 19:55:43 +02:00
|
|
|
//! Init logging.
|
|
|
|
virtual void initLogging() = 0;
|
|
|
|
|
|
|
|
//! Init parameter interaction.
|
|
|
|
virtual void initParameterInteraction() = 0;
|
|
|
|
|
|
|
|
//! Get warnings.
|
|
|
|
virtual std::string getWarnings(const std::string& type) = 0;
|
|
|
|
|
2017-04-18 22:42:30 +02:00
|
|
|
// Get log flags.
|
2020-11-29 18:28:14 +01:00
|
|
|
virtual uint64_t getLogCategories() = 0;
|
2017-04-18 22:42:30 +02:00
|
|
|
|
2017-04-17 19:55:43 +02:00
|
|
|
//! Initialize app dependencies.
|
|
|
|
virtual bool baseInitialize() = 0;
|
|
|
|
|
|
|
|
//! Start node.
|
|
|
|
virtual bool appInitMain() = 0;
|
|
|
|
|
|
|
|
//! Stop node.
|
|
|
|
virtual void appShutdown() = 0;
|
|
|
|
|
2021-06-24 18:07:08 +02:00
|
|
|
//! Prepare shutdown.
|
|
|
|
virtual void appPrepareShutdown() = 0;
|
|
|
|
|
2017-04-17 19:55:43 +02:00
|
|
|
//! Start shutdown.
|
|
|
|
virtual void startShutdown() = 0;
|
|
|
|
|
2017-04-17 20:33:47 +02:00
|
|
|
//! Return whether shutdown was requested.
|
|
|
|
virtual bool shutdownRequested() = 0;
|
|
|
|
|
2021-03-19 16:00:24 +01:00
|
|
|
//! Setup arguments
|
|
|
|
virtual void setupServerArgs() = 0;
|
2017-04-17 20:40:41 +02:00
|
|
|
|
2017-04-17 20:23:14 +02:00
|
|
|
//! Map port.
|
|
|
|
virtual void mapPort(bool use_upnp) = 0;
|
|
|
|
|
|
|
|
//! Get proxy.
|
|
|
|
virtual bool getProxy(Network net, proxyType& proxy_info) = 0;
|
|
|
|
|
2017-04-17 21:37:36 +02:00
|
|
|
//! Get number of connections.
|
|
|
|
virtual size_t getNodeCount(CConnman::NumConnections flags) = 0;
|
|
|
|
|
2017-04-17 21:57:19 +02:00
|
|
|
//! Get stats for connected nodes.
|
|
|
|
using NodesStats = std::vector<std::tuple<CNodeStats, bool, CNodeStateStats>>;
|
|
|
|
virtual bool getNodesStats(NodesStats& stats) = 0;
|
|
|
|
|
2017-04-17 22:02:44 +02:00
|
|
|
//! Get ban map entries.
|
|
|
|
virtual bool getBanned(banmap_t& banmap) = 0;
|
|
|
|
|
2017-04-17 22:38:51 +02:00
|
|
|
//! Ban node.
|
|
|
|
virtual bool ban(const CNetAddr& net_addr, BanReason reason, int64_t ban_time_offset) = 0;
|
|
|
|
|
|
|
|
//! Unban node.
|
|
|
|
virtual bool unban(const CSubNet& ip) = 0;
|
|
|
|
|
2019-01-21 18:45:59 +01:00
|
|
|
//! Disconnect node by address.
|
|
|
|
virtual bool disconnect(const CNetAddr& net_addr) = 0;
|
|
|
|
|
|
|
|
//! Disconnect node by id.
|
2017-04-17 22:38:51 +02:00
|
|
|
virtual bool disconnect(NodeId id) = 0;
|
|
|
|
|
2017-04-17 21:37:36 +02:00
|
|
|
//! Get total bytes recv.
|
|
|
|
virtual int64_t getTotalBytesRecv() = 0;
|
|
|
|
|
|
|
|
//! Get total bytes sent.
|
|
|
|
virtual int64_t getTotalBytesSent() = 0;
|
|
|
|
|
|
|
|
//! Get mempool size.
|
|
|
|
virtual size_t getMempoolSize() = 0;
|
|
|
|
|
|
|
|
//! Get mempool dynamic usage.
|
|
|
|
virtual size_t getMempoolDynamicUsage() = 0;
|
|
|
|
|
|
|
|
//! Get header tip height and time.
|
|
|
|
virtual bool getHeaderTip(int& height, int64_t& block_time) = 0;
|
|
|
|
|
|
|
|
//! Get num blocks.
|
|
|
|
virtual int getNumBlocks() = 0;
|
|
|
|
|
|
|
|
//! Get last block time.
|
|
|
|
virtual int64_t getLastBlockTime() = 0;
|
|
|
|
|
|
|
|
//! Get last block hash.
|
|
|
|
virtual std::string getLastBlockHash() = 0;
|
|
|
|
|
|
|
|
//! Get verification progress.
|
|
|
|
virtual double getVerificationProgress() = 0;
|
|
|
|
|
|
|
|
//! Is initial block download.
|
|
|
|
virtual bool isInitialBlockDownload() = 0;
|
|
|
|
|
|
|
|
//! Get reindex.
|
|
|
|
virtual bool getReindex() = 0;
|
|
|
|
|
|
|
|
//! Get importing.
|
|
|
|
virtual bool getImporting() = 0;
|
|
|
|
|
|
|
|
//! Set network active.
|
|
|
|
virtual void setNetworkActive(bool active) = 0;
|
|
|
|
|
|
|
|
//! Get network active.
|
|
|
|
virtual bool getNetworkActive() = 0;
|
|
|
|
|
2017-04-18 01:46:08 +02:00
|
|
|
//! Estimate smart fee.
|
|
|
|
virtual CFeeRate estimateSmartFee(int num_blocks, bool conservative, int* returned_target = nullptr) = 0;
|
|
|
|
|
|
|
|
//! Get dust relay fee.
|
|
|
|
virtual CFeeRate getDustRelayFee() = 0;
|
|
|
|
|
2017-04-17 22:38:51 +02:00
|
|
|
//! Execute rpc command.
|
|
|
|
virtual UniValue executeRpc(const std::string& command, const UniValue& params, const std::string& uri) = 0;
|
|
|
|
|
|
|
|
//! List rpc commands.
|
|
|
|
virtual std::vector<std::string> listRpcCommands() = 0;
|
|
|
|
|
|
|
|
//! Set RPC timer interface if unset.
|
|
|
|
virtual void rpcSetTimerInterfaceIfUnset(RPCTimerInterface* iface) = 0;
|
|
|
|
|
|
|
|
//! Unset RPC timer interface.
|
|
|
|
virtual void rpcUnsetTimerInterface(RPCTimerInterface* iface) = 0;
|
|
|
|
|
2017-04-18 22:42:30 +02:00
|
|
|
//! Get unspent outputs associated with a transaction.
|
|
|
|
virtual bool getUnspentOutput(const COutPoint& output, Coin& coin) = 0;
|
|
|
|
|
2021-08-12 08:02:09 +02:00
|
|
|
//! Return default wallet directory.
|
|
|
|
virtual std::string getWalletDir() = 0;
|
|
|
|
|
|
|
|
//! Return available wallets in wallet directory.
|
|
|
|
virtual std::vector<std::string> listWalletDir() = 0;
|
|
|
|
|
2017-04-18 00:56:44 +02:00
|
|
|
//! Return interfaces for accessing wallets (if any).
|
|
|
|
virtual std::vector<std::unique_ptr<Wallet>> getWallets() = 0;
|
|
|
|
|
2019-02-12 19:19:05 +01:00
|
|
|
//! Attempts to load a wallet from file or directory.
|
|
|
|
//! The loaded wallet is also notified to handlers previously registered
|
|
|
|
//! with handleLoadWallet.
|
|
|
|
virtual std::unique_ptr<Wallet> loadWallet(const std::string& name, std::string& error, std::string& warning) = 0;
|
|
|
|
|
2020-08-28 02:50:50 +02:00
|
|
|
//! Return interface for accessing evo related handler.
|
|
|
|
virtual EVO& evo() = 0;
|
|
|
|
|
Qt: Adds Governance tab (#4351)
* Qt: Adds settings option to showGovernanceTab
* Qt: Adds not-yet-functional Governance tab to UI
* library: adds hook into governance rom node interface
* Qt: WIP: puts CGovernanceObject hashes on Governance tab
WIP: basically ready to be filled out, most of the infra in place
now.
* Qt: Populates Governance table values
Governance table now contains real values for current columns. Display
columns may potentially change.
- want url in table if right click option opens url?
- What set of cols wanted? Show yes/no votes?
- Decide refresh functionality.
- Do we even want filter func? (checkbox show: proposal, trigger, active coming)
* qt: Shows Voting Status on Governance page
Towards DMT like Governance page, now shows voting status, but needs to
look at super blocks to determine if proposal period has passed and show
final funded or unfunded for past proposals.
* Qt: refactor governance tab to use Model-View arch
Refactors the QT Governance tab to use a Model-View architecture. The
list of Proposals is stored in a QAbstractItemModel, and a QTableView is
used to display.
This makes a much cleaner separation of concerns in the implementation.
Also, can now use the QSortFilterProxyModel to get responsive filtering.
Less internal state inside the GovernanceList, critical sections
removed.
- Needs update loop implemented.
- Needs Proposal detail widget implemented.
* qt: adds periodic update to gov proposal list
Periodically update list of governance related proposals.
* qt: populates governancelist voting status column
* qt: governancelist Porposal shows extra info on doubleClick
* qt: governancelist: reorder .cpp impl to match .h
* qt: governancelist: fixup based on CI
- Adds LOCK(cs_main) for call to pGovObj->IsValidLocally.
- retab, removes trailing whitespace in governancelist.{cpp,h}
* qt: clang-format for governancelist
* Fixes
- drop unused include
- use proper univalue "get_" functions
- shorter/translatable statuses
- shorter dates
- add missing css styles
* qt: addresses governancelist code review items
* qt: use enum to name columns of governancelist
* fix: clear context menu before adding new items
* fix: skip potential nullptr proposals
* improve: show proposal url in context menu
* refactor: tweak enum name, make sure it's int starting from 0, use full name
* fix: column count
* improve: make it sortable, sort by start_date by default
* qt: use full col name in voting status col change signal emit
* better sorting
* use mapToSource to fix data fetching
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2021-10-30 03:14:25 +02:00
|
|
|
//! Return interface for accessing governance related handler.
|
|
|
|
virtual GOV& gov() = 0;
|
|
|
|
|
2020-08-28 02:56:07 +02:00
|
|
|
//! Return interface for accessing llmq related handler.
|
|
|
|
virtual LLMQ& llmq() = 0;
|
|
|
|
|
2020-08-28 01:41:57 +02:00
|
|
|
//! Return interface for accessing masternode related handler.
|
|
|
|
virtual Masternode::Sync& masternodeSync() = 0;
|
|
|
|
|
2021-08-10 07:48:49 +02:00
|
|
|
//! Return interface for accessing coinjoin related handler.
|
2021-03-17 23:36:11 +01:00
|
|
|
virtual CoinJoin::Options& coinJoinOptions() = 0;
|
2020-08-28 11:52:00 +02:00
|
|
|
|
2017-04-17 19:55:43 +02:00
|
|
|
//! Register handler for init messages.
|
|
|
|
using InitMessageFn = std::function<void(const std::string& message)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleInitMessage(InitMessageFn fn) = 0;
|
2017-04-17 20:33:47 +02:00
|
|
|
|
|
|
|
//! Register handler for message box messages.
|
|
|
|
using MessageBoxFn =
|
|
|
|
std::function<bool(const std::string& message, const std::string& caption, unsigned int style)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleMessageBox(MessageBoxFn fn) = 0;
|
|
|
|
|
|
|
|
//! Register handler for question messages.
|
|
|
|
using QuestionFn = std::function<bool(const std::string& message,
|
|
|
|
const std::string& non_interactive_message,
|
|
|
|
const std::string& caption,
|
|
|
|
unsigned int style)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleQuestion(QuestionFn fn) = 0;
|
2017-04-17 21:10:47 +02:00
|
|
|
|
|
|
|
//! Register handler for progress messages.
|
|
|
|
using ShowProgressFn = std::function<void(const std::string& title, int progress, bool resume_possible)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleShowProgress(ShowProgressFn fn) = 0;
|
|
|
|
|
|
|
|
//! Register handler for load wallet messages.
|
|
|
|
using LoadWalletFn = std::function<void(std::unique_ptr<Wallet> wallet)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleLoadWallet(LoadWalletFn fn) = 0;
|
2017-04-17 21:37:36 +02:00
|
|
|
|
|
|
|
//! Register handler for number of connections changed messages.
|
|
|
|
using NotifyNumConnectionsChangedFn = std::function<void(int new_num_connections)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleNotifyNumConnectionsChanged(NotifyNumConnectionsChangedFn fn) = 0;
|
|
|
|
|
|
|
|
//! Register handler for network active messages.
|
|
|
|
using NotifyNetworkActiveChangedFn = std::function<void(bool network_active)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleNotifyNetworkActiveChanged(NotifyNetworkActiveChangedFn fn) = 0;
|
|
|
|
|
|
|
|
//! Register handler for notify alert messages.
|
|
|
|
using NotifyAlertChangedFn = std::function<void()>;
|
|
|
|
virtual std::unique_ptr<Handler> handleNotifyAlertChanged(NotifyAlertChangedFn fn) = 0;
|
|
|
|
|
|
|
|
//! Register handler for ban list messages.
|
|
|
|
using BannedListChangedFn = std::function<void()>;
|
|
|
|
virtual std::unique_ptr<Handler> handleBannedListChanged(BannedListChangedFn fn) = 0;
|
|
|
|
|
|
|
|
//! Register handler for block tip messages.
|
|
|
|
using NotifyBlockTipFn =
|
|
|
|
std::function<void(bool initial_download, int height, int64_t block_time, const std::string& block_hash, double verification_progress)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleNotifyBlockTip(NotifyBlockTipFn fn) = 0;
|
|
|
|
|
2021-08-10 21:41:00 +02:00
|
|
|
//! Register handler for chainlock messages.
|
|
|
|
using NotifyChainLockFn =
|
|
|
|
std::function<void(const std::string& bestChainLockedHash, int32_t bestChainLockedHeight)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleNotifyChainLock(NotifyChainLockFn fn) = 0;
|
|
|
|
|
2017-04-17 21:37:36 +02:00
|
|
|
//! Register handler for header tip messages.
|
|
|
|
using NotifyHeaderTipFn =
|
|
|
|
std::function<void(bool initial_download, int height, int64_t block_time, const std::string& block_hash, double verification_progress)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleNotifyHeaderTip(NotifyHeaderTipFn fn) = 0;
|
|
|
|
|
|
|
|
//! Register handler for masternode list update messages.
|
|
|
|
using NotifyMasternodeListChangedFn =
|
|
|
|
std::function<void(const CDeterministicMNList& newList)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleNotifyMasternodeListChanged(NotifyMasternodeListChangedFn fn) = 0;
|
|
|
|
|
|
|
|
//! Register handler for additional data sync progress update messages.
|
|
|
|
using NotifyAdditionalDataSyncProgressChangedFn =
|
|
|
|
std::function<void(double nSyncProgress)>;
|
|
|
|
virtual std::unique_ptr<Handler> handleNotifyAdditionalDataSyncProgressChanged(NotifyAdditionalDataSyncProgressChangedFn fn) = 0;
|
2017-04-17 19:55:43 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
//! Return implementation of Node interface.
|
|
|
|
std::unique_ptr<Node> MakeNode();
|
|
|
|
|
2020-10-01 16:05:57 +02:00
|
|
|
} // namespace interfaces
|
2017-04-17 19:55:43 +02:00
|
|
|
|
2020-10-01 16:05:57 +02:00
|
|
|
#endif // BITCOIN_INTERFACES_NODE_H
|