import { type Selectable } from 'kysely';
import type * as Db from '../Db.js';
import type * as db_Schema from '../Schema.js';
/** Columns of the `routes_transfer_subsidy_nonces` table. */
export type Table = db_Schema.RoutesTransferSubsidyNonce;
/** One persisted destination signer nonce cursor. */
export type Record = Selectable
;
type Lane = {
/** Destination subsidy signer address. */
account: string;
/** Destination EVM chain CAIP-2 id. */
chainId: string;
};
/** Locks a signer lane and rejects new work when its nonce cannot be recovered. */
export declare function lockAvailableIn(db: Db.Db, options: Lane): Promise;
/** Blocks a signer lane after a reserved nonce is permanently rejected. */
export declare function block(db: Db.Db, options: block.Options): Promise;
/** Blocks a signer lane inside a caller-owned transaction. */
export declare function blockIn(db: Db.Db, options: block.Options): Promise;
export declare namespace block {
/** Signer lane and permanent rejection evidence. */
type Options = Lane & {
/** Bounded reason for blocking the signer lane. */
reason: 'broadcast_rejected';
/** Transfer holding the rejected nonce. */
transferId: string;
};
}
/** Reserves one nonce under a transaction-scoped signer and chain lock. */
export declare function reserve(db: Db.Db, options: reserve.Options): Promise;
/** The signer lane is blocked by an unrecoverable reserved nonce. */
export declare class BlockedError extends Error {
name: string;
}
/** A rejected subsidy transaction had no persisted nonce cursor. */
export declare class MissingCursorError extends Error {
name: string;
}
export declare namespace reserve {
/** Signer and chain cursor used to reserve one nonce. */
type Options = {
/** Destination subsidy signer address. */
account: string;
/** Destination EVM chain CAIP-2 id. */
chainId: string;
/** Next nonce observed from the pending RPC state. */
pendingNonce: number;
};
}
export {};
//# sourceMappingURL=routesTransferSubsidyNonces.d.ts.map