import { type PolicyResult } from "../../domain/policy/policy-result"; import type { RuntimeEffect } from "../../runtime/opencode/effects"; import type { RuntimeBeforeCompactionInput, RuntimeCompactionInput } from "./runtime-policy"; export interface CompactionSessionPolicy { beforeCompaction(input: RuntimeBeforeCompactionInput): void | Promise; onCompaction(input: RuntimeCompactionInput): PolicyResult | Promise>; onSessionDeleted?(sessionId: string): void; } export declare function createCompactionSessionPolicy(compactionPreserver?: { capture: (sessionId: string) => Promise; restore: (sessionId: string) => Promise; clearSession: (sessionId: string) => void; } | null): CompactionSessionPolicy;