import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; export type ClaimedSessionDelivery = { deliveryId: string; claimExpiresAt: number; isStillDeliverable: () => boolean | Promise; findSessionEntryId: (entries: readonly unknown[]) => string | undefined; send: () => void; settle: (sessionEntryId: string) => Promise; }; export type ClaimSessionDelivery = () => Promise; /** * Delivers at most one server-owned message into a Pi session at a time. * * Pi's public sendMessage API does not return the saved session entry ID. Keep * the claimed delivery in memory until that entry becomes observable. Polling * may reconcile the delivery, but it must never send the same claim again. */ export declare class SessionDeliveryCoordinator { private readonly queued; private claimed; private synchronizing; synchronize(ctx: Pick, claimers: readonly ClaimSessionDelivery[]): Promise; clear(): void; private sendClaimed; private rememberQueued; private settleQueued; private settleDelivery; }