import type { PublishLanguagesOption } from "../stories/stories.types.js";
import type { RequestBaseConfig } from "../utils/request.js";
import { type MigrationComponentAliasesByMigration, type MigrationComponentOverridesByMigration } from "./migration-component-scope.js";
import { type PreparedMigrationValidator } from "./migration-validation.js";
export type MigrateFrom = "file" | "space";
export interface PreparedMigrationConfig {
    migrationConfigName: string;
    migrationConfigPath: string;
    migrationConfigFileContent: Record<string, MapperDefinition>;
    componentsToMigrate: string[];
    validator: PreparedMigrationValidator | null;
}
export interface MigrationStepValidationReport {
    validatorId: string;
    validatorName: string;
    issueCount: number;
    sourcePath: string;
}
export interface MigrationStepReport {
    migrationConfig: string;
    touchedItems: number;
    totalComponentReplacements: number;
    replacementsByComponent: Record<string, number>;
    maxDepth: number;
    validation: MigrationStepValidationReport | null;
}
export interface MigrationPipelineResult {
    changedItems: any[];
    finalItems: any[];
    stepReports: MigrationStepReport[];
    totalItems: number;
}
interface MigrateItems {
    itemType: "story" | "preset";
    from: string;
    to: string;
    migrateFrom: MigrateFrom;
    migrationConfig: string | string[];
    componentsToMigrate?: string[];
    migrationComponentAliases?: MigrationComponentAliasesByMigration;
    migrationComponentOverrides?: MigrationComponentOverridesByMigration;
    filters?: {
        withSlug?: string[];
        startsWith?: string;
    };
    dryRun?: boolean;
    publish?: boolean;
    publishLanguages?: PublishLanguagesOption;
    fromFilePath?: string;
    fileName?: string;
    preparedMigrationConfigs?: PreparedMigrationConfig[];
}
export type MapperDefinition = (data: any) => any;
export declare const normalizeMigrationConfigNames: (migrationConfig: string | string[]) => string[];
export declare const prepareStoriesFromLocalFile: ({ from, fromFilePath, }: {
    from?: string;
    fromFilePath?: string;
}) => any;
export declare const prepareMigrationConfigs: ({ migrationConfig, componentsToMigrate, migrationComponentAliases, migrationComponentOverrides, }: {
    migrationConfig: string | string[];
    componentsToMigrate?: string[];
    migrationComponentAliases?: MigrationComponentAliasesByMigration;
    migrationComponentOverrides?: MigrationComponentOverridesByMigration;
}) => PreparedMigrationConfig[];
export declare const prepareMigrationConfig: ({ migrationConfig, }: {
    migrationConfig: string;
}) => Record<string, MapperDefinition>;
export declare const runMigrationPipelineInMemory: ({ itemType, itemsToMigrate, preparedMigrationConfigs, }: {
    itemType: "story" | "preset";
    itemsToMigrate: any[];
    preparedMigrationConfigs: PreparedMigrationConfig[];
}) => MigrationPipelineResult;
export declare const migrateAllComponentsDataInStories: ({ itemType, migrationConfig, migrateFrom, from, to, filters, dryRun, publish, publishLanguages, fromFilePath, fileName, migrationComponentAliases, migrationComponentOverrides, }: Omit<MigrateItems, "componentsToMigrate" | "preparedMigrationConfigs">, config: RequestBaseConfig) => Promise<void>;
export declare const doTheMigration: ({ itemType, from, itemsToMigrate, migrationConfig, migrationConfigs, to, dryRun, publish, publishLanguages, migrateFrom, fromFilePath, fileName, }: {
    itemType?: "story" | "preset";
    from: string;
    itemsToMigrate: any[];
    migrationConfig?: string | string[];
    migrationConfigs?: PreparedMigrationConfig[];
    to: string;
    dryRun?: boolean;
    publish?: boolean;
    publishLanguages?: PublishLanguagesOption;
    migrateFrom: MigrateFrom;
    fromFilePath?: string;
    fileName?: string;
}, config: RequestBaseConfig) => Promise<void>;
export declare const migrateProvidedComponentsDataInStories: ({ itemType, migrationConfig, migrateFrom, from, to, componentsToMigrate, filters, dryRun, publish, publishLanguages, fromFilePath, fileName, preparedMigrationConfigs, migrationComponentAliases, migrationComponentOverrides, }: MigrateItems, config: RequestBaseConfig) => Promise<void>;
export {};
