import { type GjcPluginMigrationFailure, type GjcPluginRegistryEntry, PluginMigrationRequiredError } from "./types"; export interface GjcPluginMigrationStatus { plugin: string; scope: GjcPluginRegistryEntry["scope"]; status: "migrated" | "failed"; surfaces: string[]; failure?: GjcPluginMigrationFailure; } export declare function isV2Tool(surface: unknown): surface is { extensionId: string; name: string; schema: unknown; schemaHash: string; implementationHash: string; metadataVersion: 2; }; export declare function entryNeedsMigration(entry: GjcPluginRegistryEntry): boolean; /** * Convert one persisted v1 registry entry into v2 metadata. This function only * reads manifests and declared files through the non-executing compiler. */ export declare function migrateGjcPluginEntry(entry: GjcPluginRegistryEntry): Promise<{ entry: GjcPluginRegistryEntry; changed: boolean; status: GjcPluginMigrationStatus; }>; /** Migrate entries from a parsed registry in memory; never imports implementations. */ export declare function migrateGjcPluginEntries(entries: readonly GjcPluginRegistryEntry[]): Promise<{ entries: GjcPluginRegistryEntry[]; changed: boolean; statuses: GjcPluginMigrationStatus[]; }>; /** Read-only status helper used by `gjc plugin doctor`. */ export declare function migrationStatusForEntry(entry: GjcPluginRegistryEntry): Promise; export declare function getGjcPluginMigrationStatuses(cwd: string, options?: { migrate?: boolean; }): Promise; export declare function runGjcPluginMigrationPreflight(cwd: string): Promise; /** * Optional doctor pre-flight. It uses exactly the same in-process compiler as * registry load and therefore has no separate eager activation path. */ export declare function migratePluginRootForDoctor(pluginRoot: string): Promise; export declare function migrationDoctorCheckMessage(status: GjcPluginMigrationStatus): string; export declare function migrationRequiredError(entry: GjcPluginRegistryEntry): PluginMigrationRequiredError;