propose abstract method

Future<SendProposal> propose(
  1. String requestUri
)

Prepare a send from a ZIP-321 payment URI (the §2.4 lossless request token the host composes via composePaymentUri, or a scanned QR). DETERMINISTIC, LOCAL: runs the audited note-selection + fee + change over the wallet DB and returns the numbers the user confirms before signing — no keys, no proofs, no network, no DB writes, nothing sent. The proposal stays an opaque, Rust-retained one-shot token; send consumes it by proposalId.

Throws a typed WalletApiError (insufficient funds carrying the figures, proposal-stale, payment-URI-invalid, network-mismatch, …) the controller maps to an honest inline fault.

Implementation

Future<SendProposal> propose(String requestUri);