import type { SolanaWriteRpc } from '../types'; /** A signature status as `getSignatureStatuses` reports it. */ export interface SolanaSignatureStatus { slot?: number; err?: unknown; confirmationStatus?: string | null; confirmations?: number | null; } export type SolanaConfirmation = /** Seen at `confirmed` or better; `status.err` says whether it succeeded. */ { landed: true; status: SolanaSignatureStatus; contextSlot?: number; } /** Not seen at `confirmed` before the fence closed, or the RPC never answered usefully. */ | { landed: false; reason: string; }; export interface ConfirmSignatureOptions { /** Delay between status reads. Default 1s. */ pollIntervalMs?: number; /** * Wall-clock ceiling. A healthy RPC always ends the wait at the blockhash expiry (about * a minute); this bounds one whose block height never advances or that fails every read. * Default 120s. */ maxWaitMs?: number; } /** * Whether a status is final enough to decide on. `processed` can still belong to a fork * that is dropped, so only `confirmed` or `finalized` settle a write; an RPC that omits * `confirmationStatus` reports a rooted transaction as `confirmations: null`. */ export declare function settledSignatureStatus(status: SolanaSignatureStatus | null | undefined): status is SolanaSignatureStatus; /** * Poll the SAME signature until it is seen at `confirmed` or the blockhash fence closes. * Never broadcasts. A `processed` status, even one carrying an error, is not a verdict and * keeps the loop going. Once the confirmed block height passes `lastValidBlockHeight`, one * history-searching read decides whether the transaction landed anyway; if not, the answer * is "not seen" or "seen only below confirmed", never "never landed": only a finalized * expiry proves that, which is `reconcileSetResult`'s job. Transient RPC failures retry the * same signature. */ export declare function confirmSignature(rpc: SolanaWriteRpc, fence: { signature: string; lastValidBlockHeight: number; }, options?: ConfirmSignatureOptions): Promise;