// Copyright (c) 2011-2015 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #pragma once #include #include #include #include #include namespace cryptonote { class Currency; } namespace CryptoNote { class INode; class IWallet; } namespace WalletGui { class Node { public: virtual ~Node() = 0; virtual void init(const std::function& callback) = 0; virtual void deinit() = 0; virtual std::string convertPaymentId(const std::string& paymentIdString) = 0; virtual std::string extractPaymentId(const std::string& extra) = 0; virtual uint64_t getLastKnownBlockHeight() const = 0; virtual uint64_t getLastLocalBlockHeight() const = 0; virtual uint64_t getLastLocalBlockTimestamp() const = 0; virtual uint64_t getPeerCount() const = 0; virtual CryptoNote::IWallet* createWallet() = 0; }; class INodeCallback { public: virtual void peerCountUpdated(Node& node, size_t count) = 0; virtual void localBlockchainUpdated(Node& node, uint64_t height) = 0; virtual void lastKnownBlockHeightUpdated(Node& node, uint64_t height) = 0; }; Node* createRpcNode(const cryptonote::Currency& currency, INodeCallback& callback, const std::string& nodeHost, unsigned short nodePort); Node* createInprocessNode(const cryptonote::Currency& currency, INodeCallback& callback, const cryptonote::CoreConfig& coreConfig); }