import { type SchemaDefinition, type SchemaMetadata, type ReducerConfig } from "../schema_registry.js";
import { type VerticalPack } from "./registry.js";
export interface VerticalPackSchemaEntry {
    entity_type: string;
    schema_version: string;
    metadata: SchemaMetadata;
    schema_definition: SchemaDefinition;
    reducer_config: ReducerConfig;
}
export interface VerticalPackManifest {
    vertical: string;
    schemas: VerticalPackSchemaEntry[];
}
export interface InstalledVerticalPackRecord {
    slug: string;
    installed_at: string;
    manifest_path: string;
    schemas: Array<{
        entity_type: string;
        schema_version: string;
    }>;
}
export interface InstalledVerticalPacksFile {
    version: 1;
    packs: Record<string, InstalledVerticalPackRecord>;
}
export interface InstallVerticalPackResult {
    slug: string;
    installed: VerticalPackSchemaEntry[];
    upgraded: VerticalPackSchemaEntry[];
    skipped: Array<{
        entity_type: string;
        reason: string;
    }>;
    manifest_path: string;
}
export interface UninstallVerticalPackResult {
    slug: string;
    removed_record: boolean;
    retained_schemas: string[];
}
export declare function readManifest(packOrPath: VerticalPack | string): VerticalPackManifest;
/** Install a vertical pack by slug. Idempotent. */
export declare function installVerticalPack(slug: string, options?: {
    user_id?: string;
    user_specific?: boolean;
}): Promise<InstallVerticalPackResult>;
/**
 * Remove a vertical pack from the install registry. Schema definitions are
 * retained because data may already exist for them; we only forget that the
 * pack was the source.
 */
export declare function uninstallVerticalPack(slug: string): Promise<UninstallVerticalPackResult>;
/** Return the install records currently on disk. */
export declare function getInstalledPacks(): InstalledVerticalPackRecord[];
/** Return true when the pack slug appears in the install registry. */
export declare function isVerticalPackInstalled(slug: string): boolean;
/** All packs that ship a schema manifest, paired with their install state. */
export declare function listPacksWithStatus(): Array<{
    pack: VerticalPack;
    installed: boolean;
    installed_at?: string;
}>;
//# sourceMappingURL=install.d.ts.map