diff --git a/src/wallet/api/yield_info.cpp b/src/wallet/api/yield_info.cpp new file mode 100644 index 000000000..9ff401534 --- /dev/null +++ b/src/wallet/api/yield_info.cpp @@ -0,0 +1,131 @@ +// Copyright (c) 2024, Salvium (author: SRCG) +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#include "yield_info.h" +#include "wallet.h" +#include "common_defines.h" + +#include "cryptonote_basic/cryptonote_format_utils.h" +#include "cryptonote_basic/cryptonote_basic_impl.h" +#include "common/base58.h" + +#include +#include +#include +#include +#include + +using namespace std; + +namespace Monero { + + YieldInfo::~YieldInfo() {} + + YieldInfoImpl::YieldInfoImpl(WalletImpl &wallet) + : m_wallet(wallet) + { + m_status = Status_Ok; + m_burnt = 0; + m_locked = 0; + m_supply = 0; + m_yield = 0; + m_yield_per_stake = 0; + m_num_entries = 0; + } + + YieldInfoImpl::~YieldInfoImpl() + { + + } + + int YieldInfoImpl::status() const + { + return m_status; + } + + string YieldInfoImpl::errorString() const + { + return m_errorString; + } + + std::string YieldInfoImpl::period() const + { + // Calculate the number of entries as a human-readable time period + uint64_t ts = m_num_entries * 120; + std::string result; + stringstream ss; + ss << std::setfill('0') << std::setw(2) << (ts / 86400) + << ":" << std::setw(2) << ((ts % 86400) / 3600) + << ":" << std::setw(2) << ((ts % 3600) / 60) + << ":" << std::setw(2) << (ts % 60) << " (DD:HH:MM:SS)"; + return ss.str(); + } + + bool YieldInfoImpl::update() + { + return false; + } + + uint64_t YieldInfoImpl::burnt() const + { + return m_burnt; + } + + uint64_t YieldInfoImpl::locked() const + { + return m_locked; + } + + uint64_t YieldInfoImpl::supply() const + { + return m_supply; + } + + uint64_t YieldInfoImpl::ybi_data_size() const + { + return m_num_entries; + } + + uint64_t YieldInfoImpl::yield() const + { + return m_yield; + } + + uint64_t YieldInfoImpl::yield_per_stake() const + { + return m_yield_per_stake; + } + + std::vector> YieldInfoImpl::payouts() const + { + return m_payouts; + } + +} diff --git a/src/wallet/api/yield_info.h b/src/wallet/api/yield_info.h new file mode 100644 index 000000000..8ec98fb42 --- /dev/null +++ b/src/wallet/api/yield_info.h @@ -0,0 +1,74 @@ +// Copyright (c) 2024, Salvium (author: SRCG) +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#include "wallet/api/wallet2_api.h" +#include "wallet/wallet2.h" + +#include +#include + + +namespace Monero { + +class WalletImpl; +class YieldInfoImpl : public YieldInfo +{ +public: + YieldInfoImpl(WalletImpl &wallet); + ~YieldInfoImpl(); + int status() const override; + std::string errorString() const override; + bool update() override; + uint64_t burnt() const override; + uint64_t locked() const override; + uint64_t supply() const override; + uint64_t ybi_data_size() const override; + uint64_t yield() const override; + uint64_t yield_per_stake() const override; + std::string period() const override; + std::vector> payouts() const override; + +private: + friend class WalletImpl; + WalletImpl &m_wallet; + + int m_status; + std::string m_errorString; + uint64_t m_burnt; + uint64_t m_locked; + uint64_t m_supply; + uint64_t m_yield; + uint64_t m_yield_per_stake; + uint64_t m_num_entries; + std::string m_period; + std::vector> m_payouts; +}; + +}