import { Vector2 } from './wcVectors';
export interface PlannerInteractionInformation {
    boxPlannerInteractionInformationPerElement: Map<number, PlannerInteractionPerBoxPlannerElement>;
}
export interface PlannerInteractionPerBoxPlannerElement {
    location: LocationInformation;
    isDeletable: boolean;
    availablePlanningLocations: {
        availableBoxPlannerCellsLeft?: LocationInformation;
        availableBoxPlannerCellsTop?: LocationInformation;
        availableBoxPlannerCellsRight?: LocationInformation;
    };
    availableMovingLocations: LocationInformation[];
}
/**
 * Gives information of the location of an element in the grid.
 */
export interface LocationInformation {
    cells: Cell[];
    widthPerCell: number;
    heightPerCell: number;
    depthPerCell: number;
    width: number;
    height: number;
    depth: number;
    startIndexWorldPos: Vector2;
}
export interface GeneralPlanningState {
    grids: Grid[];
    selectedElement?: SelectedElement;
}
export interface Grid {
    index: number;
    matrix: Cell[][];
    columnSizes: number | number[];
    rowSizes: number | number[];
    overlapping?: {
        gridIndex: number;
        myRows?: number[];
        myCloums?: number[];
        theirRows: number[];
        theirCloums: number[];
    };
}
export interface Cell {
    index: {
        x: number;
        y: number;
    };
    plannedElement?: PlannedElement;
}
export interface PlannedElement {
    basketId: string;
    articleCodex: string;
    elementId: number;
    subGrid?: Grid;
    canDelete?: boolean;
    canMove?: boolean;
    area: {
        fromX: number;
        toX: number;
        fromY: number;
        toY: number;
    };
    size: Size;
}
export interface Size {
    width: number;
    height: number;
    depth: number;
}
export interface SelectedElement {
    articleCodex: string;
    elementId: number;
    gridSpace: {
        rows: number;
        colums: number;
    };
    size: Size;
    area: {
        fromX: number;
        toX: number;
        fromY: number;
        toY: number;
    };
    rules: RuleType[];
}
export type RuleType = ModuloRule | SpecificRowsRule | SpecificCloumRule | FixedPositonRule;
export interface ModuloRule {
    type: 'Modulo';
    start?: number;
    modulo: number;
}
export interface SpecificRowsRule {
    type: 'SpecificRows';
    rows: number[];
}
export interface SpecificCloumRule {
    type: 'SpecificCloums';
    onlyOnColums: number[];
}
export interface FixedPositonRule {
    type: 'FixedPositon';
    grids: {
        gridIndex: number;
        places: {
            lowestX: number;
            lowestY: number;
        }[];
    }[];
}
//# sourceMappingURL=PlannerInteractionData.d.ts.map