import { z } from 'zod';
import type { PluginErrorType, PluginInstallError } from './plugins.js';
export declare const PluginInstallModeSchema: z.ZodEnum<{
    recommended: "recommended";
    full: "full";
    minimal: "minimal";
}>;
export declare const StackSignalSchema: z.ZodObject<{
    name: z.ZodString;
    confidence: z.ZodEnum<{
        low: "low";
        medium: "medium";
        high: "high";
    }>;
    source: z.ZodString;
}, z.core.$strip>;
export declare const PluginRecommendationSchema: z.ZodObject<{
    id: z.ZodString;
    displayName: z.ZodString;
    tier: z.ZodEnum<{
        always: "always";
        "stack-matched": "stack-matched";
        optional: "optional";
    }>;
    stacks: z.ZodArray<z.ZodString>;
    description: z.ZodString;
}, z.core.$strip>;
export declare const PluginInstallPlanSchema: z.ZodObject<{
    marketplaceAlreadyRegistered: z.ZodBoolean;
    marketplaceToRegister: z.ZodBoolean;
    toInstall: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        displayName: z.ZodString;
        tier: z.ZodEnum<{
            always: "always";
            "stack-matched": "stack-matched";
            optional: "optional";
        }>;
        stacks: z.ZodArray<z.ZodString>;
        description: z.ZodString;
    }, z.core.$strip>>;
    toSkip: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        displayName: z.ZodString;
        tier: z.ZodEnum<{
            always: "always";
            "stack-matched": "stack-matched";
            optional: "optional";
        }>;
        stacks: z.ZodArray<z.ZodString>;
        description: z.ZodString;
    }, z.core.$strip>>;
    detectedStacks: z.ZodArray<z.ZodString>;
    mode: z.ZodEnum<{
        recommended: "recommended";
        full: "full";
        minimal: "minimal";
    }>;
}, z.core.$strip>;
export declare const PluginInstallResultSchema: z.ZodObject<{
    projectPath: z.ZodString;
    mode: z.ZodEnum<{
        recommended: "recommended";
        full: "full";
        minimal: "minimal";
    }>;
    dryRun: z.ZodBoolean;
    marketplaceAdded: z.ZodBoolean;
    installed: z.ZodArray<z.ZodString>;
    skipped: z.ZodArray<z.ZodString>;
    failed: z.ZodArray<z.ZodString>;
    message: z.ZodString;
}, z.core.$strip>;
export declare const MarketplaceRegistrationStatusSchema: z.ZodObject<{
    alreadyRegistered: z.ZodBoolean;
    registered: z.ZodBoolean;
    skipped: z.ZodBoolean;
}, z.core.$strip>;
export type PluginInstallMode = z.infer<typeof PluginInstallModeSchema>;
export type StackSignal = z.infer<typeof StackSignalSchema>;
export type PluginRecommendation = z.infer<typeof PluginRecommendationSchema>;
export type PluginInstallPlan = z.infer<typeof PluginInstallPlanSchema>;
export type PluginInstallResult = z.infer<typeof PluginInstallResultSchema>;
export type MarketplaceRegistrationStatus = z.infer<typeof MarketplaceRegistrationStatusSchema>;
/** Promisified execFile signature with timeout — used for dependency injection in plugin-installer engine. */
export type PluginExecFileFn = (file: string, args: string[], options: {
    timeout: number;
}) => Promise<{
    stdout: string;
    stderr: string;
}>;
/** SPEC-605: Internal pattern rule for classifying plugin install errors. */
export interface PluginErrorPattern {
    type: PluginErrorType;
    pattern: RegExp;
    recovery: string;
}
/** Result of a batch plugin install operation. */
export interface InstallOutcome {
    installed: string[];
    skipped: string[];
    failed: string[];
    /** SPEC-605: Detailed classification of each failure. */
    failedDetails: PluginInstallError[];
}
/** Internal catalog shape loaded from plugin-recommendations.json. */
export interface PluginCatalog {
    plugins: PluginRecommendation[];
}
/** Schema of src/config/framework-registry/index.json — canonical framework catalog. */
export interface FrameworkRegistryIndex {
    frameworks: {
        id: string;
        displayName: string;
        ecosystem: string;
        frameworkVersion: string;
        lastUpdated: string;
        file: string;
    }[];
}
/** Alias lookup map: raw-name-lowercased → canonical framework/target id. */
export type StackMatcherAliasMap = Record<string, string>;
//# sourceMappingURL=plugin-install.d.ts.map