type CommitmentLedgerSource = "tool_result" | "cli" | "system" | "manual";
type CommitmentLedgerKind = "promise" | "follow_up" | "deadline" | "deliverable";
type CommitmentLedgerState = "open" | "fulfilled" | "cancelled" | "expired";
interface CommitmentLedgerEntry {
    schemaVersion: 1;
    entryId: string;
    recordedAt: string;
    sessionKey: string;
    source: CommitmentLedgerSource;
    kind: CommitmentLedgerKind;
    state: CommitmentLedgerState;
    scope: string;
    summary: string;
    dueAt?: string;
    entityRefs?: string[];
    workProductEntryRefs?: string[];
    objectiveStateSnapshotRefs?: string[];
    tags?: string[];
    metadata?: Record<string, string>;
    stateChangedAt?: string;
    resolvedAt?: string;
}
interface CommitmentLedgerStatus {
    enabled: boolean;
    rootDir: string;
    entriesDir: string;
    entries: {
        total: number;
        valid: number;
        invalid: number;
        byKind: Partial<Record<CommitmentLedgerKind, number>>;
        byState: Partial<Record<CommitmentLedgerState, number>>;
        latestEntryId?: string;
        latestRecordedAt?: string;
        latestSessionKey?: string;
    };
    latestEntry?: CommitmentLedgerEntry;
    invalidEntries: Array<{
        path: string;
        error: string;
    }>;
    lifecycle?: {
        staleOpen: number;
        overdueOpen: number;
        decayEligibleResolved: number;
    };
}
interface CommitmentLedgerLifecycleResult {
    transitionedToExpired: CommitmentLedgerEntry[];
    deletedResolved: CommitmentLedgerEntry[];
}
declare function resolveCommitmentLedgerDir(memoryDir: string, overrideDir?: string): string;
declare function validateCommitmentLedgerEntry(raw: unknown): CommitmentLedgerEntry;
declare function recordCommitmentLedgerEntry(options: {
    memoryDir: string;
    commitmentLedgerDir?: string;
    entry: CommitmentLedgerEntry;
}): Promise<string>;
declare function transitionCommitmentLedgerEntryState(options: {
    memoryDir: string;
    commitmentLedgerDir?: string;
    entryId: string;
    nextState: CommitmentLedgerState;
    changedAt: string;
}): Promise<CommitmentLedgerEntry>;
declare function applyCommitmentLedgerLifecycle(options: {
    memoryDir: string;
    commitmentLedgerDir?: string;
    enabled: boolean;
    decayDays: number;
    now?: string;
}): Promise<CommitmentLedgerLifecycleResult>;
declare function getCommitmentLedgerStatus(options: {
    memoryDir: string;
    commitmentLedgerDir?: string;
    enabled: boolean;
    lifecycleEnabled?: boolean;
    staleDays?: number;
    decayDays?: number;
    now?: string;
}): Promise<CommitmentLedgerStatus>;

export { type CommitmentLedgerEntry, type CommitmentLedgerKind, type CommitmentLedgerLifecycleResult, type CommitmentLedgerSource, type CommitmentLedgerState, type CommitmentLedgerStatus, applyCommitmentLedgerLifecycle, getCommitmentLedgerStatus, recordCommitmentLedgerEntry, resolveCommitmentLedgerDir, transitionCommitmentLedgerEntryState, validateCommitmentLedgerEntry };
