Skip to content

StealthTransferState

Defined in: ootle/src/stealth/transfer.ts:28

Mutable internal state accumulated by a StealthTransfer builder.

inputsToSpend: Map<string, { input: StealthInput; owner: string; }>

Defined in: ootle/src/stealth/transfer.ts:47

Stealth UTXOs to spend, keyed by their commitment hex alone (insertion-ordered, duplicates rejected). A commitment uniquely identifies a UTXO within the builder’s single resource, and a UTXO has exactly one owner — so keying by commitment (not owner+commitment) prevents the same UTXO being registered twice under different owner labels, which the engine would reject as a self-double-spend. Each value carries the input alongside its owner address (the one-time spend signer). The Map preserves insertion order so the masks aggregate and the inputs statement is built in the same order — required for the balance proof to verify.


outputs: Output[]

Defined in: ootle/src/stealth/transfer.ts:48


resource: string

Defined in: ootle/src/stealth/transfer.ts:29


revealedInput: { amount: bigint; source: string; } | null

Defined in: ootle/src/stealth/transfer.ts:36

The revealed-source account and the total amount withdrawn from it, or null for a stealth-input-only spend. Coupling the source and amount in one tagged field encodes the invariant — a revealed input always has a source — in the type system, so consumers can narrow without “unreachable” guards.


revealedOutputAmount: bigint

Defined in: ootle/src/stealth/transfer.ts:49