/**
 * Kernel Execution — append-only ledger.
 *
 * Every step / verify / merge call writes exactly one row here. Rows are
 * never rewritten; auditing the path is just `tail -f` on a JSONL file.
 *
 * Keep this tiny. Don't grow it into an event bus — if a consumer needs
 * notifications, a narrow subscribe() goes here; no pub/sub framework.
 */
import type { LedgerEntry } from './types.js';
export interface KernelLedger {
    /** Append one entry. Returns the entry id (generated if absent). */
    append(entry: Omit<LedgerEntry, 'id' | 'timestamp'> & {
        id?: string;
        timestamp?: string;
    }): Promise<LedgerEntry>;
    /** Read every row in order. Used by tests + merge() to locate verify rows. */
    readAll(): Promise<LedgerEntry[]>;
    /** Latest `passed` verify for (runId, stepId), or null. */
    findLatestPassedVerify(runId: string, stepId: string): Promise<LedgerEntry | null>;
    /** Specific verify row by id, or null. */
    findVerifyById(verifyId: string): Promise<LedgerEntry | null>;
    /** Step row (regardless of status) by id, or null. */
    findStep(runId: string, stepId: string): Promise<LedgerEntry | null>;
    /** Path of the underlying JSONL file. Exposed for tests + ops. */
    readonly ledgerPath: string;
}
export declare function getKernelLedger(): KernelLedger;
/** Build a ledger rooted at a caller-chosen path. Used by tests. */
export declare function createKernelLedger(ledgerPath: string): KernelLedger;
/** Reset the process-wide singleton. Test-only. */
export declare function __resetKernelLedgerForTests(): void;
