import type { RagSourceKind } from '../../types/sparkContracts';
export type CodebaseKind = Extract<RagSourceKind, 'app_source' | 'aosp' | 'kernel_source' | 'oem_sdk'>;
export interface CodebaseRef {
    codebaseId: string;
    kind: CodebaseKind;
    displayName: string;
    rootPath: string;
    rootRealpath: string;
    commitHash?: string;
    vendor?: string;
    buildId?: string;
    pathFilters?: string[];
    excludeGlobs?: string[];
    symbolMapPaths?: string[];
    licenseTag?: string;
    consent: {
        sendToProvider: boolean;
        consentedAt: number;
        consentedBy: string;
        consentHash: string;
    };
    indexGeneration: number;
    lastIngestAt?: number;
    lastIngestStatus?: 'ok' | 'partial' | 'failed' | 'blocked_by_security';
    lastIngestError?: string;
    chunkCount?: number;
    blockedFileCount?: number;
    redactionHitCount?: number;
    tenantId?: string;
    workspaceId?: string;
    userId?: string;
    createdAt: number;
    updatedAt: number;
}
export interface CodebaseRefSummary {
    codebaseId: string;
    kind: CodebaseRef['kind'];
    displayName: string;
    commitHash?: string;
    vendor?: string;
    buildId?: string;
    indexGeneration: number;
    chunkCount: number;
    eligibleForSendToProvider: boolean;
}
export interface RegisterCodebaseInput {
    kind: CodebaseKind;
    displayName: string;
    rootPath: string;
    rootRealpath?: string;
    commitHash?: string;
    vendor?: string;
    buildId?: string;
    pathFilters?: string[];
    excludeGlobs?: string[];
    symbolMapPaths?: string[];
    licenseTag?: string;
    sendToProvider?: boolean;
    consentedBy?: string;
    tenantId?: string;
    workspaceId?: string;
    userId?: string;
}
export declare class CodebaseRegistry {
    private readonly registryPath;
    private readonly codebases;
    private loaded;
    constructor(registryPath: string);
    load(): void;
    register(input: RegisterCodebaseInput): CodebaseRef;
    get(codebaseId: string): CodebaseRef | undefined;
    list(): CodebaseRefSummary[];
    updateIngestStatus(codebaseId: string, patch: Pick<CodebaseRef, 'lastIngestStatus'> & Partial<CodebaseRef>): void;
    private persist;
}
//# sourceMappingURL=codebaseRegistry.d.ts.map