/**
 * State continuity scoring — measures how well a resumed/handed-off agent
 * preserves prior work.
 *
 * When session 2 continues
 * session 1's work, the key question is: did it preserve key artifacts,
 * or start over and lose context? Each `ContinuityCheck` inspects one
 * aspect (file preserved, key count grew, status advanced) and yields
 * 0-1 credit; the aggregate is the simple mean.
 *
 * Generic over any "snapshot" shape — pass your own checks.
 */
export interface ContinuitySnapshotPair<T> {
    before: T;
    after: T;
}
export interface ContinuityCheck<T> {
    /** Stable identifier; shown in the report. */
    id: string;
    /** Description of what this check measures. */
    description: string;
    /** Returns 0..1 credit for this dimension (1 = fully preserved/improved). */
    score: (pair: ContinuitySnapshotPair<T>) => number;
}
export interface ContinuityCheckResult {
    id: string;
    description: string;
    score: number;
    pass: boolean;
}
export interface ContinuityReport {
    results: ContinuityCheckResult[];
    /** Mean of per-check scores, in 0..1. */
    overallScore: number;
    /** True iff ALL checks scored ≥ passThreshold. */
    pass: boolean;
}
export declare function scoreContinuity<T>(pair: ContinuitySnapshotPair<T>, checks: ContinuityCheck<T>[], options?: {
    passThreshold?: number;
}): ContinuityReport;
/** Common check: a required key in a record exists and equals the prior value. */
export declare function keyPreserved<T extends Record<string, unknown>>(key: keyof T & string): ContinuityCheck<T>;
/** Common check: a collection (array) grew or stayed the same size. */
export declare function collectionPreserved<T, K extends keyof T & string>(key: K, minRatio?: number): ContinuityCheck<T>;
/** Common check: a status field advanced in an expected order. */
export declare function statusAdvanced<T extends Record<string, unknown>>(key: keyof T & string, progression: readonly string[]): ContinuityCheck<T>;
//# sourceMappingURL=state-continuity.d.ts.map