export type MigrationValidationIssue = {
    componentPath: string;
    component: string;
    uid: string | null;
    message: string;
};
export type ComponentRule = {
    forbiddenFields?: string[];
    requiredFields?: string[];
    forbiddenTopLevelKeys?: string[];
    requiredTopLevelKeys?: string[];
    checkItemBasis?: boolean;
    checkEmbedSizes?: boolean;
};
export type WrapperNormalizationRule = {
    wrapperToBase: Record<string, string>;
};
export type RuleSetConfig = {
    ruleSetName: string;
    rules: Record<string, ComponentRule>;
    noIssuesMessage: string;
    wrapperNormalization?: WrapperNormalizationRule;
};
export type MigrationValidationDataFn = (args: {
    data: unknown;
    isDebug?: boolean;
}) => MigrationValidationReport | Promise<MigrationValidationReport>;
export type PreparedMigrationValidator = {
    id: string;
    name: string;
    ruleSet?: RuleSetConfig;
    validateData?: MigrationValidationDataFn;
    sourcePath: string;
};
export type MigrationValidationReport = {
    ok: boolean;
    issueCount: number;
    issues: MigrationValidationIssue[];
};
export declare class MigrationValidationFailedError extends Error {
    migrationConfig: string;
    validatorId: string;
    validatorName: string;
    issueCount: number;
    issues: MigrationValidationIssue[];
    constructor({ migrationConfig, validatorId, validatorName, issueCount, issues, }: {
        migrationConfig: string;
        validatorId: string;
        validatorName: string;
        issueCount: number;
        issues: MigrationValidationIssue[];
    });
}
export declare const discoverMigrationValidatorForMigrationFile: ({ migrationConfigName, migrationConfigPath, }: {
    migrationConfigName: string;
    migrationConfigPath: string;
}) => PreparedMigrationValidator | null;
export declare const validateRuleSetData: ({ data, ruleSet, isDebug, }: {
    data: unknown;
    ruleSet: RuleSetConfig;
    isDebug?: boolean;
}) => MigrationValidationReport;
export declare const runPreparedMigrationValidator: ({ validator, data, isDebug, }: {
    validator: PreparedMigrationValidator;
    data: unknown;
    isDebug?: boolean;
}) => MigrationValidationReport;
