submitAndWait

suspend fun submitAndWait(signedIntent: Intent, fromAddress: String, timeoutMs: Long = DEFAULT_TIMEOUT_MS): TransactionSubmitter.SubmissionResult

Submit a signed transaction and wait for finalization.

Steps:

  1. Serialize transaction to SCALE codec (unproven)

  2. Prove transaction via proof server

  3. Seal proven transaction (transform binding commitment)

  4. Submit via WebSocket and wait for NODE's finalized status

  5. Mark UTXOs as SPENT (after node confirms finalization)

  6. Return result

Why we wait for NODE finalization (not indexer):

  • Node's "finalized" status means the transaction is PERMANENT

  • Indexer can lag behind the node, causing race conditions

  • This matches the Midnight SDK's implementation exactly

Return

SubmissionResult indicating success or failure

Parameters

signedIntent

Signed Intent with all signatures

fromAddress

Sender's address (used for UTXO updates)

timeoutMs

Maximum time to wait for finalization (default 60s)