type Subscriber = (handleId: THandleId) => void; type StageSubscriber = (stage: TStage) => void; type LifecycleStage = "uninitialized" | "ready" | "invalidated"; type StageMap = { uninitialized: TStage; ready: TStage; invalidated: TStage; }; /** * Serializes leaf command dispatches for a lazily resolved handle. * Command callbacks must not enqueue another command on the same client. */ export type LazyHandleClient = { runCommand(buildPayload: (handleId: THandleId | undefined) => TPayload, dispatchAndWait: (payload: TPayload) => Promise): Promise; runCommandWithRetry(buildPayload: (handleId: THandleId | undefined) => TPayload, dispatchAndWait: (payload: TPayload) => Promise, options: { shouldRetry: (error: unknown) => boolean; onBeforeRetry?: (error: unknown) => void; }): Promise; /** At its FIFO turn, dispatches with the current handle or no-ops if absent. */ runResolvedHandleCommand(buildPayload: (handleId: THandleId) => TPayload, dispatchAndWait: (payload: TPayload) => Promise): Promise; getHandleId(): THandleId | undefined; /** Clears the resolved handle before retrying a stale-handle command. */ clearHandleForRetry(): THandleId | undefined; /** Records an authoritative invalidation for the active command. */ recordHandleInvalidation(handleId: string): THandleId | undefined; /** * Clears a matching resolved handle without cancelling active command * recovery. */ clearHandleIfMatching(handleId: string): THandleId | undefined; hasPendingCommands(): boolean; subscribeHandle(subscriber: Subscriber): () => void; getStage(): TStage; setStage(stage: TStage): void; subscribeStage(subscriber: StageSubscriber): () => void; reset(): void; invalidate(): void; }; export type CreateLazyHandleClientOptions = { getHandleIdFromSettlement: (settlement: TSettlement) => THandleId | undefined; stages?: StageMap; initialStage?: TStage; }; type CreateLazyHandleClientDefaultOptions = { getHandleIdFromSettlement: (settlement: TSettlement) => THandleId | undefined; initialStage?: LifecycleStage; stages?: undefined; }; type CreateLazyHandleClientCustomOptions = { getHandleIdFromSettlement: (settlement: TSettlement) => THandleId | undefined; stages: StageMap; initialStage?: TStage; }; export declare function createLazyHandleClient(options: CreateLazyHandleClientDefaultOptions): LazyHandleClient; export declare function createLazyHandleClient(options: CreateLazyHandleClientCustomOptions): LazyHandleClient; export {}; //# sourceMappingURL=lazy-handle-client.d.ts.map