import { z, ZodType } from "zod";
import { SentryCommand } from "../types/index.js";
export declare const AnalyzeCommandConfigSchema: z.ZodObject<{
    exclude: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    designSystemId: z.ZodOptional<z.ZodString>;
    package: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
    dryRun: z.ZodOptional<z.ZodBoolean>;
    includeAllProps: z.ZodOptional<z.ZodBoolean>;
    noWait: z.ZodOptional<z.ZodBoolean>;
    suppressDryRunNotice: z.ZodOptional<z.ZodBoolean>;
    wizard: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    includeAllProps?: boolean | undefined;
    designSystemId?: string | undefined;
    dryRun?: boolean | undefined;
    exclude?: string[] | undefined;
    package?: string | string[] | undefined;
    noWait?: boolean | undefined;
    suppressDryRunNotice?: boolean | undefined;
    wizard?: boolean | undefined;
}, {
    includeAllProps?: boolean | undefined;
    designSystemId?: string | undefined;
    dryRun?: boolean | undefined;
    exclude?: string[] | undefined;
    package?: string | string[] | undefined;
    noWait?: boolean | undefined;
    suppressDryRunNotice?: boolean | undefined;
    wizard?: boolean | undefined;
}>;
export type AnalyzeCommandConfig = z.infer<typeof AnalyzeCommandConfigSchema>;
export type ScannerType = "all" | "components" | "usage";
type UploadScannerType = Exclude<ScannerType, "all">;
export type AnalyzeTarget = {
    importFrom: string | string[];
    rootDir: string;
};
type ComponentUsageSnapshot = {
    meta?: {
        importFromPackages?: string[];
    };
    packages?: Record<string, {
        records?: Record<string, {
            count?: number;
        }>;
    }>;
};
export declare const analyzeFlags: {
    designSystemId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
    package: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
    exclude: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
    dryRun: import("@oclif/core/interfaces").BooleanFlag<boolean>;
    includeAllProps: import("@oclif/core/interfaces").BooleanFlag<boolean>;
    noWait: import("@oclif/core/interfaces").BooleanFlag<boolean>;
    suppressDryRunNotice: import("@oclif/core/interfaces").BooleanFlag<boolean>;
    wizard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
};
export type AnalyzeResult = "completed" | "retry-packages";
export type SelectedDesignSystem = {
    id: string;
    name: string;
    workspaceId: string;
    workspacePlan: string;
};
export declare abstract class AnalyzeCommandBase extends SentryCommand<AnalyzeCommandConfig> {
    get commandId(): string;
    get configSchema(): ZodType<AnalyzeCommandConfig>;
    private logStepHeader;
    protected isWizardMode(flags: AnalyzeCommandConfig): boolean;
    protected promptIntro(): Promise<void>;
    protected promptDesignSystemWizard(): Promise<SelectedDesignSystem>;
    protected promptSourceScanIntro(): Promise<{
        name: string;
        relativePath: string;
    }[]>;
    protected promptPackageSelection(discovered: {
        name: string;
        relativePath: string;
    }[]): Promise<string[]>;
    protected promptScanScope(): Promise<"all" | "select">;
    protected promptExcludePackageSelection(discovered: {
        name: string;
        relativePath: string;
    }[]): Promise<string[] | undefined>;
    private createAuthenticatedApiClient;
    protected executeAnalyze(flags: AnalyzeCommandConfig, scannerType: ScannerType, wizardMode?: boolean, selectedDesignSystem?: SelectedDesignSystem): Promise<AnalyzeResult>;
    protected fetchDesignSystemById(designSystemId: string): Promise<SelectedDesignSystem>;
    private buildAdoptionUrl;
    private printAnalysisComplete;
    private persistAnalyzeConfig;
    private uploadSnapshot;
    private uploadSnapshotsWithConcurrency;
    private startProcessingRun;
    private createArchiveFromSnapshotRoot;
    private logHttpError;
}
export declare function countUsageRecordsFromSnapshotPayload(usageJson: ComponentUsageSnapshot): number;
export declare function resolveAnalyzeTarget(input: {
    importFrom: string | string[];
    rootDir: string;
    scannerType: UploadScannerType;
}): AnalyzeTarget | null;
export {};
//# sourceMappingURL=analyze-command.d.ts.map