export type ExternalCatalogSource = {
    id: string;
    type: 'skills' | 'squads' | 'agents' | 'mcps';
    url: string;
    trust: 'reference' | 'import-allowed';
    notes?: string;
};
export interface ImportResult {
    ok: boolean;
    sourceId?: string;
    packId?: string;
    trust?: string;
    notes?: string;
    error?: string;
}
export declare class ExternalCatalogRegistry {
    list(): ExternalCatalogSource[];
    /**
     * Initiate an import from an external catalog source.
     *
     * Story 5.4 — OpenLife v1.3 Agent OS Integration.
     *
     * Hard-gated by trust='import-allowed'. Reference-only sources are
     * refused. The actual download/scan/install path goes through
     * SecurityDownloadGuard — this method validates the policy decision
     * only; the caller wires the actual fetch.
     *
     * Returns a structured ImportResult; never throws.
     */
    import(sourceId: string, packId: string): ImportResult;
    /**
     * Story 9.2 — wires ExternalCatalogRegistry.import policy decision to
     * SecurityDownloadGuard.downloadAndScan. Single-method "do the right
     * thing" entry for CLI handlers.
     *
     * Returns the same ImportResult shape augmented with downloadedTo
     * when successful. Never throws.
     */
    importAndFetch(sourceId: string, packId: string, url: string, targetDir?: string): Promise<ImportResult & {
        downloadedTo?: string;
        warnings?: string[];
    }>;
}
