import { Flow, FlowConfiguration, FlowTypeEnum, UserDefinedInputVariable } from '@mablhq-internal/typescript-api-client';
import { MablStep } from '../MablStep';
export declare enum DiffOperation {
    DELETE = "DELETE",
    EQUAL = "EQUAL",
    INSERT = "INSERT"
}
export interface Diff {
    operation: DiffOperation;
    text: string;
}
export interface FlattenedFlowSteps {
    flattenedSteps: MablStep[];
    diffingFormat: string;
}
export interface StepDiff {
    operation: DiffOperation;
    steps: MablStep[];
}
export interface VariableDiff {
    operation: DiffOperation;
    variables: UserDefinedInputVariable[];
}
export interface FlowDiff {
    inputVariablesDiff: VariableDiff[];
    parametersDiff: VariableDiff[];
    stepDiff: StepDiff[];
}
interface TestFlowConfiguration {
    [key: string]: FlowConfiguration;
}
export declare function lineModeDiff(text1: string, text2: string): Diff[];
export declare function convertFlowToStepList(flow: Flow, flowConfig?: FlowConfiguration): MablStep[];
export declare function convertStepListToFlow(steps: MablStep[], flowType?: FlowTypeEnum, useMablscriptV2Format?: boolean): {
    flow: Flow;
    flowConfig?: FlowConfiguration;
};
export declare function flattenTestFlowsIntoSteps(flows: Flow[], flowConfigs?: TestFlowConfiguration): MablStep[];
export declare function constructTestFlowsFromSteps(steps: MablStep[], flowType?: FlowTypeEnum, useMablscriptV2Format?: boolean): {
    flows: Flow[];
    flowConfigs: TestFlowConfiguration;
};
export declare function flattenTestFlowsIntoLineDiffingFormat(flows: Flow[], flowConfig?: TestFlowConfiguration, omitStepId?: boolean): FlattenedFlowSteps;
export declare function convertDiffingFormatIntoDiffingSteps(diffs: Diff[], sourceSteps: MablStep[], targetSteps: MablStep[]): StepDiff[];
export declare function diffTests(test1Flows: Flow[], test1FlowConfig: TestFlowConfiguration | undefined, test2Flows: Flow[], test2FlowConfig: TestFlowConfiguration | undefined): StepDiff[];
export declare function diffFlows(flow1: Flow, flow2: Flow): FlowDiff;
export {};
//# sourceMappingURL=diffingUtil.d.ts.map