import { ObjectOfArraysType } from "array-object-transformer";
import { KeySetType, PlateIdConfigType, TransferInstructionsRowType, AnyStringObjectType, PlateMapRowType, ClashStrategyType, StrategyType, PlateColumnSuffixObjectType, SpecificColumnClashesType } from "./mainTypes";
import { PlateRelationshipType, SeparatorType } from "./PlateTypes";
interface ClashReportType {
    discoveredClashes: discoveredClashesType[];
    defaultClashStrategy: string;
    clashColumnStrategies: SpecificColumnClashesType[];
}
interface PlateTransformerParamsType {
    srcLayout: PlateMapRowType[];
    destLayout: PlateMapRowType[];
    srcPlateRel: PlateRelationshipType;
    destPlateRel: PlateRelationshipType;
}
interface discoveredClashesType {
    plate_id: string;
    colname: string;
    suffixColnames: string[];
    isActualClash: boolean;
    clashingIndexes: number[];
}
interface layoutGroup {
    plate_id: string;
    group: string;
}
declare class liquidDataHander {
    inputInstructions: AnyStringObjectType[];
    inputLayouts: AnyStringObjectType[][];
    instructions: TransferInstructionsRowType[];
    layouts: PlateMapRowType[][];
    layoutsSuffix: PlateMapRowType[][];
    plateInfo: PlateIdConfigType[];
    keySet: KeySetType;
    clashStrategy: StrategyType;
    columnSuffixNames: PlateColumnSuffixObjectType;
    clashColumnStrategies: ClashStrategyType[];
    finalDestPlates: PlateMapRowType[][];
    discoveredClashes: discoveredClashesType[];
    layoutGroups: layoutGroup[];
    removeVolumes: boolean;
    constructor(inputLayouts: AnyStringObjectType[][], inputInstructions: AnyStringObjectType[], platesInfo: PlateIdConfigType[], keySet: KeySetType, clashColumnStrategies?: ClashStrategyType[]);
    setup(): void;
    detectLayoutGroups(): void;
    fillMissingColumnsInPlateLayoutGroups(): void;
    fillMissingColumnsWithinPlateLayout(): void;
    getClashReport(): ClashReportType;
    getFinalPlateLayouts(clashColumnStrategies?: ClashStrategyType[], defaultClashStrategy?: StrategyType): PlateMapRowType[][];
    removeSufTags(): void;
    runLiquidDataHandlerWithClashStrategies(clashColumnStrategies: ClashStrategyType[], defaultClashStrategy: StrategyType, defaultSeparator?: SeparatorType): void;
    runLiquidDataHandlerAllSuffix(): void;
    resolveClashes(): void;
    getClashingIndexes(repeatedSuffixColnames: string[], columnLayout: ObjectOfArraysType): number[];
    discoverClashes(): void;
    getPlateTransformerParams(chunkInstructions: TransferInstructionsRowType[], layoutChoice: "layoutsSuffix" | "layouts"): PlateTransformerParamsType;
    detectUnusedPlates(): void;
    assertUniqueSuffixes(): void;
    setLayoutSuffix(): void;
    get columnClashes(): ClashStrategyType[];
    set columnClashStragtegies(strats: ClashStrategyType[]);
    addMissingPlateLayouts(): void;
    formatLayouts(): void;
    formatInstructions(): void;
}
export default liquidDataHander;
//# sourceMappingURL=liquidDataHandler.d.ts.map