import { type RegistryConfig } from "#compiled/shadcn-registry/index.js";
import { z } from "#compiled/zod/index.js";
import { type Prompter } from "#setup/prompter.js";
import type { RegistrySetupCompletion } from "#setup/registry-setup-protocol.js";
import type { AddCommandOptions, RegistryCommandLogger } from "./registry.js";
import { type DeclaredPnpmBuildPolicy } from "./registry-pnpm-build-policy-flow.js";
import type { RegistrySetupCommand } from "./registry-setup-command.js";
export declare const RegistryPackageComponentSchema: z.ZodObject<{
    item: z.ZodString;
    label: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    default: z.ZodDefault<z.ZodBoolean>;
}, z.core.$strip>;
export type RegistryPackageComponent = z.infer<typeof RegistryPackageComponentSchema>;
interface PackageMetadata {
    requires?: string;
    install?: {
        pnpm?: {
            buildScripts: readonly DeclaredPnpmBuildPolicy[];
        };
    };
    setup?: RegistrySetupCommand[];
}
export interface RegistryPackageDependencies {
    createPrompter?: () => Prompter;
    hasInteractiveTerminal?: () => boolean;
}
export interface RegistryPackageOperations {
    itemAddress(item: string): string;
    metadata(item: unknown): PackageMetadata | undefined;
    assertCompatibleVersion(requiredVersion: string | undefined): void;
    runSetups(input: {
        item: string;
        setups: RegistrySetupCommand[];
        prompter: Prompter;
    }): Promise<RegistrySetupCompletion | false>;
    setupReminder(item: string): string;
}
export declare function runRegistryPackage(input: {
    logger: RegistryCommandLogger;
    appRoot: string;
    item: string;
    components: readonly RegistryPackageComponent[];
    config: RegistryConfig;
    options: AddCommandOptions & {
        prompter?: Prompter;
        signal?: AbortSignal;
    };
    dependencies: RegistryPackageDependencies;
    operations: RegistryPackageOperations;
}): Promise<RegistrySetupCompletion | false>;
export {};
