export type EcosystemEntryKind = 'plugin' | 'skill' | 'hook-pack' | 'policy-pack'; export interface EcosystemCatalogPathOptions { readonly cwd: string; readonly homeDir: string; readonly projectCatalogRoot?: string | undefined; readonly userCatalogRoot?: string | undefined; readonly projectInstallRoot?: string | undefined; readonly userInstallRoot?: string | undefined; } export interface EcosystemCatalogEntry { readonly id: string; readonly kind: EcosystemEntryKind; readonly name: string; readonly summary: string; readonly version?: string | undefined; readonly author?: string | undefined; readonly source: string; readonly tags: readonly string[]; readonly trustNotes?: string | undefined; readonly installHint?: string | undefined; readonly provenance?: string | undefined; readonly signature?: string | undefined; readonly updateHint?: string | undefined; readonly runtimeFit?: { readonly minAppVersion?: string | undefined; readonly maxAppVersion?: string | undefined; readonly platforms?: readonly string[] | undefined; readonly requiresSandbox?: boolean | undefined; }; readonly compatibility?: { readonly minAppVersion?: string | undefined; readonly maxAppVersion?: string | undefined; readonly platforms?: readonly string[] | undefined; readonly requiresSandbox?: boolean | undefined; readonly appVersion?: string | undefined; readonly status?: 'supported' | 'warning' | undefined; readonly reasons?: readonly string[] | undefined; }; } export interface EcosystemCatalogFile { readonly version: 1; readonly entries: EcosystemCatalogEntry[]; } export interface EcosystemInstallReceipt { readonly version: 1; readonly id: string; readonly kind: EcosystemEntryKind; readonly installedAt: number; readonly scope: 'project' | 'user'; readonly entry: EcosystemCatalogEntry; readonly sourcePath: string; readonly targetPath: string; readonly fingerprint: string; readonly provenanceSummary: string; readonly runtimeFit: { readonly appVersion: string; readonly status: 'supported' | 'warning'; readonly reasons: readonly string[]; }; readonly compatibility: { readonly appVersion: string; readonly status: 'supported' | 'warning'; readonly reasons: readonly string[]; }; } export interface EcosystemCatalogBundle { readonly version: 1; readonly exportedAt: number; readonly scope: 'project' | 'user'; readonly entries: readonly EcosystemCatalogEntry[]; } export interface EcosystemCatalogBundleSummary { readonly exportedAt: number; readonly scope: 'project' | 'user'; readonly counts: Readonly>; } export interface EcosystemInstallBackup { readonly version: 1; readonly id: string; readonly kind: EcosystemEntryKind; readonly createdAt: number; readonly scope: 'project' | 'user'; readonly archivedTargetPath: string; readonly targetPath: string; readonly receipt: EcosystemInstallReceipt; readonly reason: 'update' | 'uninstall' | 'replace'; } export declare function loadEcosystemCatalog(kind: EcosystemEntryKind, options: EcosystemCatalogPathOptions): EcosystemCatalogEntry[]; export declare function searchEcosystemCatalog(kind: EcosystemEntryKind, query: string, options: EcosystemCatalogPathOptions): EcosystemCatalogEntry[]; export declare function reviewEcosystemCatalogEntry(entry: EcosystemCatalogEntry, options: EcosystemCatalogPathOptions): { entry: EcosystemCatalogEntry; sourcePath: string; sourceExists: boolean; sourceKind: 'local-path' | 'remote' | 'unknown'; riskLevel: 'low' | 'medium'; recommendedScope: 'project' | 'user'; runtimeFit: { status: 'supported' | 'warning'; reasons: readonly string[]; }; compatibility: { status: 'supported' | 'warning'; reasons: readonly string[]; }; }; export declare function installEcosystemCatalogEntry(kind: EcosystemEntryKind, entryId: string, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; skipBackup?: boolean; }): { ok: true; receipt: EcosystemInstallReceipt; } | { ok: false; error: string; }; export declare function inspectInstalledEcosystemEntry(kind: EcosystemEntryKind, entryId: string, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; }): { ok: true; receipt: EcosystemInstallReceipt; } | { ok: false; error: string; }; export declare function uninstallEcosystemCatalogEntry(kind: EcosystemEntryKind, entryId: string, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; }): { ok: true; removedPath: string; } | { ok: false; error: string; }; export declare function updateInstalledEcosystemEntry(kind: EcosystemEntryKind, entryId: string, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; }): { ok: true; receipt: EcosystemInstallReceipt; previousReceipt: EcosystemInstallReceipt; } | { ok: false; error: string; }; export declare function listEcosystemInstallBackups(kind: EcosystemEntryKind, entryId: string, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; }): EcosystemInstallBackup[]; export declare function rollbackInstalledEcosystemEntry(kind: EcosystemEntryKind, entryId: string, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; backupId?: string; }): { ok: true; receipt: EcosystemInstallReceipt; restoredFrom: EcosystemInstallBackup; } | { ok: false; error: string; }; export declare function listInstalledEcosystemEntries(kind: EcosystemEntryKind, options: EcosystemCatalogPathOptions): EcosystemInstallReceipt[]; export declare function exportEcosystemCatalogBundle(scope: 'project' | 'user', options: EcosystemCatalogPathOptions): EcosystemCatalogBundle; export declare function inspectEcosystemCatalogBundle(bundle: EcosystemCatalogBundle): EcosystemCatalogBundleSummary; export declare function importEcosystemCatalogBundle(bundle: EcosystemCatalogBundle, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; }): { imported: number; pathByKind: Partial>; }; export declare function upsertEcosystemCatalogEntry(entry: EcosystemCatalogEntry, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; }): { ok: true; path: string; entry: EcosystemCatalogEntry; } | { ok: false; error: string; }; export declare function removeEcosystemCatalogEntry(kind: EcosystemEntryKind, entryId: string, options: EcosystemCatalogPathOptions & { scope?: 'project' | 'user'; }): { ok: true; path: string; } | { ok: false; error: string; }; //# sourceMappingURL=catalog.d.ts.map