export type EcosystemEntryKind = 'plugin' | 'skill' | 'hook-pack' | 'policy-pack';
export interface EcosystemCatalogPathOptions {
    readonly cwd: string;
    readonly homeDir: string;
    readonly projectCatalogRoot?: string;
    readonly userCatalogRoot?: string;
    readonly projectInstallRoot?: string;
    readonly userInstallRoot?: string;
}
export interface EcosystemCatalogEntry {
    readonly id: string;
    readonly kind: EcosystemEntryKind;
    readonly name: string;
    readonly summary: string;
    readonly version?: string;
    readonly author?: string;
    readonly source: string;
    readonly tags: readonly string[];
    readonly trustNotes?: string;
    readonly installHint?: string;
    readonly provenance?: string;
    readonly signature?: string;
    readonly updateHint?: string;
    readonly compatibility?: {
        readonly minAppVersion?: string;
        readonly maxAppVersion?: string;
        readonly platforms?: readonly string[];
        readonly requiresSandbox?: boolean;
    };
}
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 compatibility: {
        readonly appVersion: string;
        readonly status: 'compatible' | '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<Record<EcosystemEntryKind, number>>;
}
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';
    compatibility: {
        status: 'compatible' | '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<Record<EcosystemEntryKind, string>>;
};
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