/** * Reconciliation for a `submitted` write receipt. * * A returned object cannot transition itself, and calling `set` again builds a * FRESH transaction — which is exactly what must not happen while the first * signature may still land. Without this call the `submitted` state is a dead * end and its terminal exits are unreachable. * * Everything here polls the SAME signature. Nothing here ever builds a new * transaction or broadcasts anything. */ import type { ClientConfig } from './config'; import type { RequestOverrides } from './operations'; import type { SetResult } from '../types'; export type ReconcileSetResultOptions = { /** * The same per-request overrides `set` accepts. Supply `_config`/`authProvider` * so a receipt minted by a server `WalletClient` reconciles through THAT * client's app binding and provider rather than the process-global one. */ _overrides?: RequestOverrides; }; export type WaitForSetResultOptions = ReconcileSetResultOptions & { /** Total wall-clock bound. Default 60s. */ timeoutMs?: number; /** Maximum reconciliation attempts. Default 60. */ maxAttempts?: number; /** Delay between attempts. Default 1s. */ pollIntervalMs?: number; /** Cancels the wait. The latest `submitted` receipt is returned, never discarded. */ signal?: AbortSignal; }; /** * The Solana execution lane a client config REQUIRES, or `null` when the config * carries no constraint. Only a positive contradiction rejects a receipt — an * unmapped or unset `chain` is not evidence of a mismatch. */ export declare function requiredSolanaChain(config: ClientConfig): string | null; /** * Poll the SAME signature a `submitted` receipt carries and return the * resulting `SetResult`. * * - Terminal receipts (`committed`, `confirmed`, `expired_not_landed`, * `signed`) are returned unchanged; nothing was left open. * - A `submitted` receipt with no transaction identifier (`transactionId: * null`) is rejected immediately: no identifier exists to poll. * - A transaction that landed and FAILED throws, exactly as it would have on * the original write. */ export declare function reconcileSetResult(receipt: SetResult, options?: ReconcileSetResultOptions): Promise; /** * Reconcile repeatedly until the receipt leaves `submitted` or the bound is hit. * * The bound is mandatory, because some states are permanently non-terminal by * design: an RPC that can never observe the signature or the expiry never * resolves. On exhaustion (or abort) this returns the LATEST `submitted` * receipt with its identifier intact rather than hanging or throwing the * identifier away. */ export declare function waitForSetResult(receipt: SetResult, options?: WaitForSetResultOptions): Promise;