import type { ExtensionAPI, ExtensionContext, SessionBeforeCompactEvent, SessionBeforeCompactResult, SessionEntry } from "@earendil-works/pi-coding-agent"; type WindowPreparation = (ctx: ExtensionContext) => void | Promise; /** Await consumers of the outgoing context before retiring it without compaction. */ export declare function registerContextWindowPreparation(pi: ExtensionAPI, prepare: WindowPreparation): () => void; export declare function prepareContextWindow(pi: ExtensionAPI, ctx: ExtensionContext): Promise; type BranchProjection = (entries: readonly SessionEntry[], ctx: ExtensionContext) => readonly SessionEntry[]; /** Read-only context reconstruction for isolated consumers outside Pi's context hook. */ export declare function registerContextBranchProjection(pi: ExtensionAPI, project: BranchProjection): () => void; export declare function projectContextBranch(pi: ExtensionAPI, ctx: ExtensionContext, entries: readonly SessionEntry[]): readonly SessionEntry[]; type Preparation = (event: SessionBeforeCompactEvent, ctx: ExtensionContext) => SessionBeforeCompactResult | void | Promise; /** * Pi's compaction hooks are ordered, not a prepare/execute pair. Register the same * memoized preparation with Pi and PCC so policy and edits precede provider work * in either extension order. The event remains Pi's ordinary compaction event. */ export declare function registerCompactionPreparation(pi: ExtensionAPI, handler: Preparation): { prepare: Preparation; dispose(): void; }; export declare function prepareExtensionCompaction(pi: ExtensionAPI, event: SessionBeforeCompactEvent, ctx: ExtensionContext): Promise; export {};