/**
 * SessionPoolE2EResultStore — the durable, signed, append-only record of each
 * rollout stage's Tier-3 E2E outcome (Multi-Machine Session Pool §Rollout). It is
 * the mechanical evidence the StageAdvancer gates on: a stage does NOT activate
 * until its prior stage's E2E recorded `green` for the current commit. Per
 * "Structure > Willpower" the gate is grounded in this implemented record, not a
 * human's say-so.
 *
 * Append-only + signed (tamper-evident, AuditTrail-style): a reversion or a new run
 * APPENDS a row, NEVER overwrites a prior one, so the full green/red history per
 * commit is preserved. The Tier-3 E2E harness is the ONLY writer (`recordResult`).
 */
export type StageE2EOutcome = 'green' | 'red';
export interface StageE2EResult {
    stage: number;
    result: StageE2EOutcome;
    commitSha: string;
    ranAt: string;
    evidenceRef: string;
    signature: string;
}
export interface SessionPoolE2EResultStoreDeps {
    /** Absolute path to the append-only results file. */
    filePath: string;
    /** Sign the canonical (signature-excluded) row. Production: HMAC/Ed25519 over a state secret. */
    sign: (canonical: string) => string;
    /** Verify a signature against the canonical row. */
    verifySig: (canonical: string, signature: string) => boolean;
    now?: () => number;
}
/** Canonical bytes a row's signature covers — field-ordered, signature EXCLUDED. */
export declare function canonicalE2ERow(r: Omit<StageE2EResult, 'signature'>): string;
export declare class SessionPoolE2EResultStore {
    private readonly d;
    constructor(deps: SessionPoolE2EResultStoreDeps);
    /** Append a signed result row. The ONLY writer (called by the Tier-3 E2E harness). */
    recordResult(stage: number, result: StageE2EOutcome, commitSha: string, evidenceRef: string): StageE2EResult;
    /** All rows (oldest→newest). Tolerant of a missing file / a torn trailing line. */
    all(): StageE2EResult[];
    /** The MOST RECENT row for a stage (a later `red` supersedes an earlier `green`). */
    getLatestForStage(stage: number): StageE2EResult | null;
    /** Verify a row's signature (tamper check). */
    verify(row: StageE2EResult): boolean;
}
//# sourceMappingURL=SessionPoolE2EResultStore.d.ts.map