export type FileReferenceScope = 'workspace' | 'external' | 'agent-profile' | 'session-artifact' | 'missing' | 'invalid';
/** Where an off-workspace file lives (UI badge + manage deep link). */
export type FileReferenceLocationKind = 'agent-profile' | 'xopc-skills' | 'xopc-config' | 'xopc-agents' | 'xopc-sessions' | 'host';
export type FileReferenceCapability = 'preview' | 'edit' | 'openExternal' | 'revealInFolder' | 'copyPath' | 'importToWorkspace';
export interface RegisteredFileReference {
    id: string;
    absolutePath: string;
    sessionKey?: string;
    scope: FileReferenceScope;
    locationKind?: FileReferenceLocationKind;
    capabilities: FileReferenceCapability[];
    expiresAt: number;
}
export interface RegisterFileReferenceInput {
    absolutePath: string;
    sessionKey?: string;
    scope: FileReferenceScope;
    locationKind?: FileReferenceLocationKind;
    capabilities: FileReferenceCapability[];
    ttlMs?: number;
}
export declare class FileReferenceRegistry {
    private readonly refs;
    register(input: RegisterFileReferenceInput): RegisteredFileReference;
    resolve(id: string): RegisteredFileReference | null;
    /**
     * Remove a specific reference (used after a one-shot action like
     * import-to-workspace completes so the source card can't be re-triggered).
     * Returns true if the reference existed and was removed.
     */
    expireById(id: string): boolean;
    expire(now?: number): void;
}
export declare const fileReferenceRegistry: FileReferenceRegistry;
