31 #ifndef LEDGER_CORE_ABSTRACTACCOUNT_HPP 32 #define LEDGER_CORE_ABSTRACTACCOUNT_HPP 34 #include <api/Account.hpp> 35 #include "AbstractWallet.hpp" 36 #include "OperationQuery.h" 37 #include <async/Future.hpp> 38 #include <wallet/common/Amount.h> 39 #include <events/EventPublisher.hpp> 40 #include <api/Block.hpp> 41 #include <api/BlockCallback.hpp> 42 #include <api/BitcoinLikeAccount.hpp> 43 #include <api/EthereumLikeAccount.hpp> 44 #include <api/RippleLikeAccount.hpp> 45 #include <api/TezosLikeAccount.hpp> 46 #include <api/AddressListCallback.hpp> 47 #include <api/Address.hpp> 48 #include <api/AmountListCallback.hpp> 49 #include <api/ErrorCodeCallback.hpp> 50 #include <api/TimePeriod.hpp> 57 using AddressList = std::vector<std::shared_ptr<api::Address>>;
59 AbstractAccount(
const std::shared_ptr<AbstractWallet>& wallet, int32_t index);
62 std::shared_ptr<api::Logger>
getLogger()
override;
72 virtual std::shared_ptr<Preferences> getOperationExternalPreferences(
const std::string &uid);
73 virtual std::shared_ptr<Preferences> getOperationInternalPreferences(
const std::string &uid);
74 virtual std::shared_ptr<Preferences> getInternalPreferences()
const;
75 virtual std::shared_ptr<Preferences> getExternalPreferences()
const;
76 virtual std::shared_ptr<spdlog::logger>
logger()
const;
77 virtual const std::string& getAccountUid()
const;
78 virtual std::shared_ptr<AbstractWallet> getWallet()
const;
79 virtual std::shared_ptr<AbstractWallet> getWallet();
80 const std::shared_ptr<api::ExecutionContext> getMainExecutionContext()
const;
82 void getLastBlock(
const std::shared_ptr<api::BlockCallback> &callback)
override;
85 void getBalance(
const std::shared_ptr<api::AmountCallback> &callback)
override;
88 void getFreshPublicAddresses(
const std::shared_ptr<api::AddressListCallback> &callback)
override;
90 void getBalanceHistory(
const std::string & start,
91 const std::string & end,
92 api::TimePeriod precision,
93 const std::shared_ptr<api::AmountListCallback> & callback)
override;
95 const std::string & end,
96 api::TimePeriod precision) = 0;
100 std::shared_ptr<api::EventBus>
getEventBus()
override;
102 void emitEventsNow();
104 void eraseDataSince(
const std::chrono::system_clock::time_point & date,
const std::shared_ptr<api::ErrorCodeCallback> & callback)
override ;
108 void emitNewOperationEvent(
const Operation& operation);
109 void emitNewBlockEvent(
const Block& block);
110 void pushEvent(
const std::shared_ptr<api::Event>& event);
116 std::shared_ptr<spdlog::logger> _logger;
117 std::shared_ptr<api::Logger> _loggerApi;
118 std::shared_ptr<Preferences> _internalPreferences;
119 std::shared_ptr<Preferences> _externalPreferences;
120 std::shared_ptr<api::ExecutionContext> _mainExecutionContext;
121 std::shared_ptr<api::ExecutionContext> _threadPoolExecutionContext;
122 std::weak_ptr<AbstractWallet> _wallet;
123 std::shared_ptr<EventPublisher> _publisher;
124 std::mutex _eventsLock;
125 std::list<std::shared_ptr<api::Event>> _events;
131 #endif //LEDGER_CORE_ABSTRACTACCOUNT_HPP std::shared_ptr< api::BitcoinLikeAccount > asBitcoinLikeAccount() override
Definition: AbstractAccount.cpp:92
api::WalletType getWalletType() override
Definition: AbstractAccount.cpp:84
Definition: AbstractAccount.hpp:55
Definition: Deffered.hpp:49
Definition: Account.hpp:38
std::shared_ptr< api::RippleLikeAccount > asRippleLikeAccount() override
Definition: AbstractAccount.cpp:100
std::shared_ptr< api::EventBus > getEventBus() override
Definition: AbstractAccount.cpp:176
bool isInstanceOfBitcoinLikeAccount() override
Definition: AbstractAccount.cpp:72
Definition: Operation.h:53
bool isInstanceOfRippleLikeAccount() override
Definition: AbstractAccount.cpp:80
std::shared_ptr< api::OperationQuery > queryOperations() override
Definition: AbstractAccount.cpp:144
int32_t getIndex() override
Definition: AbstractAccount.cpp:60
Definition: Account.cpp:8
std::shared_ptr< api::TezosLikeAccount > asTezosLikeAccount() override
Definition: AbstractAccount.cpp:104
WalletType
Definition: WalletType.hpp:20
Definition: DedicatedContext.hpp:39
std::shared_ptr< api::Preferences > getPreferences() override
Definition: AbstractAccount.cpp:64
bool isInstanceOfEthereumLikeAccount() override
Definition: AbstractAccount.cpp:76
std::shared_ptr< api::Logger > getLogger() override
Definition: AbstractAccount.cpp:68
std::shared_ptr< api::Preferences > getOperationPreferences(const std::string &uid) override
Definition: AbstractAccount.cpp:88
std::shared_ptr< api::EthereumLikeAccount > asEthereumLikeAccount() override
Definition: AbstractAccount.cpp:96
Definition: logger.hpp:44