export type CodeLookupOutcome = 'success' | 'budget_exceeded' | 'consent_blocked' | 'license_blocked' | 'symbol_low_confidence' | 'unresolved' | 'patch_verified' | 'patch_sketch' | 'patch_unverified' | 'sidecar_missing' | 'rejected';
export interface CodeLookupLedgerEntry {
    turn: number;
    ts: number;
    toolName: 'resolve_symbol' | 'lookup_app_source' | 'lookup_aosp_source' | 'lookup_kernel_source' | 'lookup_oem_sdk' | 'lookup_blog_knowledge' | 'propose_patch';
    codebaseId?: string;
    chunkIds: string[];
    consentApplied: boolean;
    tokensSpent: number;
    outcome: CodeLookupOutcome;
    legacyPath: boolean;
}
export interface CodeLookupSummary {
    lookupCount: number;
    patchCount: number;
    referencedCodebaseIds: string[];
}
export declare class CodeLookupLedger {
    private readonly sessionId;
    private readonly capTokens;
    private readonly capPatches;
    private readonly entries;
    private readonly sidecarPath;
    private appendQueue;
    constructor(sessionId: string, capTokens: number, capPatches: number, sidecarPath?: string);
    static restore(sessionId: string, capTokens: number, capPatches: number, sidecarPath?: string): CodeLookupLedger;
    record(entry: CodeLookupLedgerEntry): void;
    flush(): Promise<void>;
    getEntries(): readonly CodeLookupLedgerEntry[];
    hasPriorLookupOf(chunkId: string): boolean;
    hasSuccessfulCodeLookup(): boolean;
    remainingTokens(): number;
    remainingPatches(): number;
    toSnapshotSummary(): CodeLookupSummary;
    getSessionId(): string;
}
//# sourceMappingURL=codeLookupLedger.d.ts.map