client.transfers reads and streams ledger transfer history. Create movements with client.internal_transfers, client.withdraw, or polyester::chain.
use polyester::proto::ledger::read::v1::ListTransfersRequest;
let page = client.transfers.list(ListTransfersRequest {
limit: 50,
..Default::default()
}).await?;
for transfer in page.transfers {
println!(
"{} {} {} debit={}",
transfer.tx_id,
transfer.asset_id,
transfer.amount,
transfer.is_debit,
);
}The generated request carries subaccount_id, limit, reversed (sort direction), ts_min_us and ts_max_us, transfer_code, ledger, and page_token. Leave subaccount_id as None for the main account; Some(0) returns Error::Validation before sending. Both legs of a transfer share LedgerTransfer.transfer_id. Each leg also carries balance_after (the account bucket's balance
after it, at the 18-decimal ledger scale) and link_id (groups related legs), both None when the
server sent none. Pass a non-empty next_page_token back as page_token for the next page; an
empty one is the last page.
let mut sub = client.transfers.subscribe(None).await?;
if let Some(transfer) = sub.recv_result().await? {
println!("{} {}", transfer.tx_id, transfer.amount);
}The stream is private and None uses Config.default_account_id.