Skip to content

Commit 1baf67e

Browse files
Basic wallet txs test
1 parent 94b2629 commit 1baf67e

26 files changed

Lines changed: 2547 additions & 1382 deletions

src/cpp/py_monero.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,7 @@ PYBIND11_MODULE(monero, m) {
704704
// monero_tx
705705
py_monero_tx
706706
.def(py::init<>())
707+
.def_property_readonly_static("DEFAULT_PAYMENT_ID", [](py::object /* self */) { return monero::monero_tx::DEFAULT_PAYMENT_ID; })
707708
.def_readwrite("block", &monero::monero_tx::m_block)
708709
.def_readwrite("hash", &monero::monero_tx::m_hash)
709710
.def_readwrite("version", &monero::monero_tx::m_version)
@@ -983,6 +984,20 @@ PYBIND11_MODULE(monero, m) {
983984
.def_readwrite("change_amount", &monero::monero_tx_wallet::m_change_amount)
984985
.def_readwrite("num_dummy_outputs", &monero::monero_tx_wallet::m_num_dummy_outputs)
985986
.def_readwrite("extra_hex", &monero::monero_tx_wallet::m_extra_hex)
987+
.def("get_incoming_amount", [](monero::monero_tx_wallet& self) {
988+
uint64_t amount = 0;
989+
for (const auto& transfer : self.m_incoming_transfers) {
990+
if (transfer->m_amount != boost::none)
991+
amount += transfer->m_amount.get();
992+
}
993+
return amount;
994+
})
995+
.def("get_outgoing_amount", [](monero::monero_tx_wallet& self) {
996+
uint64_t amount = 0;
997+
if (self.m_outgoing_transfer != boost::none && self.m_outgoing_transfer.value()->m_amount != boost::none)
998+
amount = self.m_outgoing_transfer.value()->m_amount.get();
999+
return amount;
1000+
})
9861001
.def("get_transfers", [](monero::monero_tx_wallet& self) {
9871002
MONERO_CATCH_AND_RETHROW(self.get_transfers());
9881003
})
@@ -992,6 +1007,16 @@ PYBIND11_MODULE(monero, m) {
9921007
.def("filter_transfers", [](monero::monero_tx_wallet& self, const monero_transfer_query& query) {
9931008
MONERO_CATCH_AND_RETHROW(self.filter_transfers(query));
9941009
}, py::arg("query"))
1010+
.def("get_inputs_wallet", [](monero::monero_tx_wallet& self, const boost::optional<monero_output_query>& query) {
1011+
std::vector<std::shared_ptr<monero::monero_output_wallet>> inputs;
1012+
for(const auto& i : self.m_inputs) {
1013+
auto input = std::dynamic_pointer_cast<monero::monero_output_wallet>(i);
1014+
if (!input) continue;
1015+
if (query == boost::none || query.value().meets_criteria(input.get()))
1016+
inputs.push_back(input);
1017+
}
1018+
return inputs;
1019+
}, py::arg("query") = py::none())
9951020
.def("get_outputs_wallet", [](monero::monero_tx_wallet& self) {
9961021
MONERO_CATCH_AND_RETHROW(self.get_outputs_wallet());
9971022
})

src/python/monero_tx.pyi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ class MoneroTx(SerializableStruct):
77
"""
88
Models a Monero transaction on the blockchain.
99
"""
10+
DEFAULT_PAYMENT_ID: str
11+
"""Default tx payment id"""
1012
block: MoneroBlock | None
1113
"""Block including the transaction."""
1214
common_tx_sets: str | None

src/python/monero_tx_wallet.pyi

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,18 @@ class MoneroTxWallet(MoneroTx):
5555
@typing.overload
5656
def get_outputs_wallet(self, query: MoneroOutputQuery) -> list[MoneroOutputWallet]:
5757
...
58+
def get_inputs_wallet(self, query: MoneroOutputQuery | None = None) -> list[MoneroOutputWallet]:
59+
...
5860
@typing.overload
5961
def get_transfers(self) -> list[MoneroTransfer]:
6062
...
6163
@typing.overload
6264
def get_transfers(self, query: MoneroTransferQuery) -> list[MoneroTransfer]:
6365
...
66+
def get_incoming_amount(self) -> int:
67+
...
68+
def get_outgoing_amount(self) -> int:
69+
...
6470
@typing.overload
6571
def merge(self, tgt: MoneroTxWallet) -> None:
6672
...

tests/test_monero_connection_manager.py

Lines changed: 101 additions & 100 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)