import { GraphAddMergeData, GraphAddPinToMergeData, GraphAddUnitData, GraphBulkEditData, GraphCloneUnitData, GraphCoverPinData, GraphCoverPinSetData, GraphCoverUnitPinSetData, GraphExposePinData, GraphExposePinSetData, GraphExposeUnitPinSetData, GraphMoveSubGraphIntoData, GraphMoveSubGraphOutOfData, GraphPlugPinData, GraphRemoveMergeData, GraphRemoveMergeDataData, GraphRemovePinFromMergeData, GraphRemoveUnitData, GraphRemoveUnitPinDataData, GraphSetComponentSizeData, GraphSetSubComponentSizeData, GraphSetUnitMetadataData, GraphSetUnitPinDataData, GraphSetUnitSizeData, GraphUnplugPinData } from '../../Class/Graph/interface';
import { Position } from '../../client/util/geometry/types';
import { GraphSubPinSpec } from '../../types';
import { Action } from '../../types/Action';
import { AllKeys } from '../../types/AllKeys';
import { Dict } from '../../types/Dict';
import { GraphMergeSpec } from '../../types/GraphMergeSpec';
import { GraphMergesSpec } from '../../types/GraphMergesSpec';
import { GraphPinSpec } from '../../types/GraphPinSpec';
import { GraphSpec } from '../../types/GraphSpec';
import { GraphUnitMerges } from '../../types/GraphUnitMerges';
import { GraphUnitPlugs } from '../../types/GraphUnitPlugs';
import { GraphUnitsSpec } from '../../types/GraphUnitsSpec';
import { IO } from '../../types/IO';
import { IOOf } from '../../types/IOOf';
import { UnitBundleSpec } from '../../types/UnitBundleSpec';
import { G } from '../../types/interface/G';
import { U } from '../../types/interface/U';
export declare const ADD_UNIT = "addUnitSpec";
export declare const ADD_UNITS = "addUnits";
export declare const REMOVE_UNIT = "removeUnit";
export declare const REMOVE_UNITS = "removeUnits";
export declare const ADD_MERGE = "addMerge";
export declare const ADD_MERGES = "addMerges";
export declare const ADD_PIN_TO_MERGE = "addPinToMerge";
export declare const REMOVE_PIN_FROM_MERGE = "removePinFromMerge";
export declare const REMOVE_MERGE = "removeMerge";
export declare const REMOVE_MERGE_DATA = "removeMergeData";
export declare const REMOVE_MERGES = "removeMerges";
export declare const EXPOSE_PIN = "exposePin";
export declare const EXPOSE_PIN_SET = "exposePinSet";
export declare const COVER_PIN_SET = "coverPinSet";
export declare const COVER_PIN = "coverPin";
export declare const UNPLUG_PIN = "unplugPin";
export declare const PLUG_PIN = "plugPin";
export declare const SET_UNIT_PIN_DATA = "setUnitPinData";
export declare const REMOVE_UNIT_PIN_DATA = "removeUnitPinData";
export declare const SET_UNIT_PIN_CONSTANT = "setUnitPinConstant";
export declare const SET_UNIT_PIN_IGNORED = "setUnitPinIgnored";
export declare const EXPOSE_UNIT_PIN_SET = "exposeUnitPinSet";
export declare const COVER_UNIT_PIN_SET = "coverUnitPinSet";
export declare const SET_UNIT_ERR = "setUnitErr";
export declare const SET_PIN_SET_NAME = "setPinSetName";
export declare const SET_PIN_SET_FUNCTIONAL = "setPinSetFunctional";
export declare const SET_PIN_SET_REF = "setPinSetRef";
export declare const SET_METADATA = "setMetadata";
export declare const SET_UNIT_METADATA = "setUnitMetadata";
export declare const BULK_EDIT = "bulkEdit";
export declare const REMOVE_UNIT_MERGES = "removeUnitMerges";
export declare const EXPAND_UNIT = "expandUnit";
export declare const COLLAPSE_UNITS = "collapseUnits";
export declare const MOVE_SUBGRAPH_INTO = "moveSubgraphInto";
export declare const MOVE_SUBGRAPH_OUT_OF = "moveSubgraphOutOf";
export declare const SET_UNIT_SIZE = "setUnitSize";
export declare const SET_COMPONENT_SIZE = "setComponentSize";
export declare const SET_SUB_COMPONENT_SIZE = "setSubComponentSize";
export declare const CLONE_UNIT = "cloneUnit";
export declare const wrapAddUnitAction: (data: GraphAddUnitData) => {
    type: string;
    data: GraphAddUnitData;
};
export declare const wrapCloneUnitAction: (data: GraphCloneUnitData) => {
    type: string;
    data: GraphCloneUnitData;
};
export declare const makeCloneUnitAction: (unitId: string, newUnitId: string) => {
    type: string;
    data: GraphCloneUnitData;
};
export declare const makeAddUnitAction: (unitId: string, bundle: UnitBundleSpec, position?: Position | undefined, pinPosition?: IOOf<Dict<Position>> | undefined, layoutPosition?: Position | undefined, parentId?: string | null | undefined, merges?: GraphUnitMerges | undefined, plugs?: GraphUnitPlugs | undefined) => {
    type: string;
    data: GraphAddUnitData;
};
export declare const wrapMoveSubgraphIntoData: (data: GraphMoveSubGraphIntoData) => {
    type: string;
    data: GraphMoveSubGraphIntoData;
};
export declare const wrapMoveSubgraphOutOfData: (data: GraphMoveSubGraphOutOfData) => {
    type: string;
    data: GraphMoveSubGraphOutOfData;
};
export declare const makeMoveSubgraphIntoAction: (graphId: string, graphBundle: UnitBundleSpec, graphSpec: GraphSpec, nextSpecId: string, nodeIds: GraphMoveSubGraphIntoData["nodeIds"], nextIdMap: GraphMoveSubGraphIntoData["nextIdMap"], nextUnitPinMergeMap: GraphMoveSubGraphIntoData["nextUnitPinMergeMap"], nextPinIdMap: GraphMoveSubGraphIntoData["nextPinIdMap"], nextMergePinId: GraphMoveSubGraphIntoData["nextMergePinId"], nextPlugSpec: GraphMoveSubGraphIntoData["nextPlugSpec"], nextSubComponentParentMap: GraphMoveSubGraphIntoData["nextSubComponentParentMap"], nextSubComponentChildrenMap: GraphMoveSubGraphIntoData["nextSubComponentChildrenMap"], nextSubComponentIndexMap: GraphMoveSubGraphIntoData["nextSubComponentIndexMap"]) => {
    type: string;
    data: GraphMoveSubGraphIntoData;
};
export declare const makeMoveSubgraphOutOfAction: (graphId: string, graphBundle: UnitBundleSpec, graphSpec: GraphSpec, nextSpecId: string, nodeIds: {
    merge: string[];
    link: {
        unitId: string;
        type: IO;
        pinId: string;
    }[];
    unit: string[];
    plug: {
        type: IO;
        pinId: string;
        subPinId: string;
    }[];
}, nextIdMap: {
    merge: Dict<string>;
    link: Dict<IOOf<Dict<{
        mergeId: string;
        oppositePinId: string;
    }>>>;
    plug: IOOf<Dict<Dict<{
        mergeId: string;
        type: IO;
        subPinId: string;
    }>>>;
    unit: Dict<string>;
}, nextUnitPinMergeMap: Dict<IOOf<Dict<string>>>, nextPinIdMap: Dict<{
    input: Dict<{
        pinId: string;
        subPinId: string;
        ref?: boolean;
        defaultIgnored?: boolean;
    }>;
    output: Dict<{
        pinId: string;
        subPinId: string;
        ref?: boolean;
        defaultIgnored?: boolean;
    }>;
}>, nextMergePinId: Dict<{
    input: {
        mergeId: string;
        pinId: string;
        subPinSpec: GraphSubPinSpec;
        ref?: boolean;
    };
    output: {
        mergeId: string;
        pinId: string;
        subPinSpec: GraphSubPinSpec;
        ref?: boolean;
    };
}>, nextPlugSpec: {
    input: Dict<Dict<GraphSubPinSpec>>;
    output: Dict<Dict<GraphSubPinSpec>>;
}, nextSubComponentParentMap: Dict<string | null>, nextSubComponentChildrenMap: Dict<string[]>, nextSubComponentIndexMap: Dict<number>) => {
    type: string;
    data: GraphMoveSubGraphOutOfData;
};
export declare const makeAddUnitsAction: (units: GraphUnitsSpec) => {
    type: string;
    data: {
        units: GraphUnitsSpec;
    };
};
export declare const wrapMakeRemoveUnitAction: (data: GraphRemoveUnitData) => {
    type: string;
    data: GraphRemoveUnitData;
};
export declare const makeRemoveUnitAction: (unitId: string, bundle: UnitBundleSpec, position?: Position, pinPosition?: IOOf<Dict<Position>>, layoutPosition?: Position, parentId?: string | null, merges?: GraphMergesSpec, plugs?: GraphUnitPlugs) => {
    type: string;
    data: GraphRemoveUnitData;
};
export declare const makeRemoveUnitsAction: (ids: string[]) => {
    type: string;
    data: {
        ids: string[];
    };
};
export declare const wrapExposePinAction: (data: GraphExposePinData) => {
    type: string;
    data: GraphExposePinData;
};
export declare const makeExposePinAction: (type: IO, pinId: string, subPinId: string, subPinSpec: GraphSubPinSpec) => {
    type: string;
    data: GraphExposePinData;
};
export declare const makeSetPinSetNameAction: (type: IO, id: string, functional: boolean) => {
    type: string;
    data: {
        type: IO;
        id: string;
        functional: boolean;
    };
};
export declare const makeSetPinSetFunctionalAction: (type: IO, id: string, functional: boolean) => {
    type: string;
    data: {
        type: IO;
        id: string;
        functional: boolean;
    };
};
export declare const wrapExposeUnitPinSet: (data: GraphExposeUnitPinSetData) => {
    type: string;
    data: GraphExposeUnitPinSetData;
};
export declare const makeExposeUnitPinSetAction: (unitId: string, type: IO, pinId: string, pinSpec: GraphPinSpec, position?: Position) => {
    type: string;
    data: GraphExposeUnitPinSetData;
};
export declare const wrapExposePinSetAction: (data: GraphExposePinSetData) => {
    type: string;
    data: GraphExposePinSetData;
};
export declare const wrapCoverUnitPinSet: (data: GraphCoverUnitPinSetData) => {
    type: string;
    data: GraphCoverUnitPinSetData;
};
export declare const makeCoverUnitPinSetAction: (unitId: string, type: IO, pinId: string, pinSpec: GraphPinSpec, position?: Position) => {
    type: string;
    data: GraphCoverUnitPinSetData;
};
export declare const makeExposePinSetAction: (type: IO, pinId: string, pinSpec: GraphPinSpec, data: any) => {
    type: string;
    data: GraphExposePinSetData;
};
export declare const wrapCoverPinSetAction: (data: GraphCoverPinSetData) => {
    type: string;
    data: GraphCoverPinSetData;
};
export declare const makeCoverPinSetAction: (type: IO, pinId: string, pinSpec: GraphPinSpec) => {
    type: string;
    data: GraphCoverPinSetData;
};
export declare const wrapPlugPinAction: (data: GraphPlugPinData) => {
    type: string;
    data: GraphPlugPinData;
};
export declare const makePlugPinAction: (type: IO, pinId: string, subPinId: string, subPinSpec: GraphSubPinSpec) => {
    type: string;
    data: GraphPlugPinData;
};
export declare const wrapUnplugPinAction: (data: GraphUnplugPinData) => {
    type: string;
    data: GraphUnplugPinData;
};
export declare const makeUnplugPinAction: (type: IO, pinId: string, subPinId: string, subPinSpec: GraphPinSpec) => {
    type: string;
    data: GraphUnplugPinData;
};
export declare const wrapCoverPinAction: (data: GraphCoverPinData) => {
    type: string;
    data: GraphCoverPinData;
};
export declare const makeCoverPinAction: (type: IO, pinId: string, subPinId: string, subPinSpec: GraphSubPinSpec) => {
    type: string;
    data: GraphCoverPinData;
};
export declare const wrapSetUnitPinDataAction: (data: GraphSetUnitPinDataData) => {
    type: string;
    data: GraphSetUnitPinDataData;
};
export declare const makeSetUnitPinDataAction: (unitId: string, type: IO, pinId: string, data: any) => {
    type: string;
    data: GraphSetUnitPinDataData;
};
export declare const makeSetUnitPinConstantAction: (unitId: string, type: IO, pinId: string, constant: boolean) => {
    type: string;
    data: {
        unitId: string;
        type: IO;
        pinId: string;
        constant: boolean;
    };
};
export declare const makeSetUnitPinIgnoredAction: (unitId: string, type: IO, pinId: string, ignored: boolean) => {
    type: string;
    data: {
        unitId: string;
        type: IO;
        pinId: string;
        ignored: boolean;
    };
};
export declare const wrapRemoveUnitPinDataAction: (data: GraphRemoveUnitPinDataData) => {
    type: string;
    data: GraphRemoveUnitPinDataData;
};
export declare const makeRemoveUnitPinDataAction: (unitId: string, type: IO, pinId: string, data: string) => {
    type: string;
    data: GraphRemoveUnitPinDataData;
};
export declare const wrapSetUnitMetadataAction: (data: GraphSetUnitMetadataData) => {
    type: string;
    data: GraphSetUnitMetadataData;
};
export declare const makeSetUnitMetadataAction: (unitId: string, path: string[], data: any) => {
    type: string;
    data: GraphSetUnitMetadataData;
};
export declare const wrapSetUnitSizeAction: (data: GraphSetUnitSizeData) => {
    type: string;
    data: GraphSetUnitSizeData;
};
export declare const makeSetUnitSizeAction: (unitId: string, width: number, height: number, prevWidth: number, prevHeight: number) => {
    type: string;
    data: GraphSetUnitSizeData;
};
export declare const makeSetSubComponentSizeAction: (unitId: string, width: number, height: number, prevWidth: number, prevHeight: number) => {
    type: string;
    data: GraphSetSubComponentSizeData;
};
export declare const wrapSetSubComponentSizeAction: (data: GraphSetSubComponentSizeData) => {
    type: string;
    data: GraphSetSubComponentSizeData;
};
export declare const wrapSetComponentSizeAction: (data: GraphSetComponentSizeData) => {
    type: string;
    data: GraphSetComponentSizeData;
};
export declare const makeSetComponentSizeAction: (width: number, height: number, prevWidth: number, prevHeight: number) => {
    type: string;
    data: GraphSetComponentSizeData;
};
export declare const makeSetMetadataAction: (path: string[], value: any) => {
    type: string;
    data: {
        path: string[];
        value: any;
    };
};
export declare const wrapAddMergeActionData: (data: GraphAddMergeData) => {
    type: string;
    data: GraphAddMergeData;
};
export declare const makeAddMergeAction: (mergeId: string, mergeSpec: GraphMergeSpec, position?: Position | undefined) => Action;
export declare const wrapRemoveMergeActionData: (data: GraphRemoveMergeData) => {
    type: string;
    data: GraphRemoveMergeData;
};
export declare const makeRemoveMergeAction: (mergeId: string, mergeSpec: GraphMergeSpec, position?: Position | undefined) => Action;
export declare const wrapRemoveMergeDataAction: (data: GraphRemoveMergeDataData) => {
    type: string;
    data: GraphRemoveMergeDataData;
};
export declare const makeAddMergesAction: (merges: GraphMergesSpec) => Action;
export declare const makeRemoveMergesAction: (ids: string[]) => Action;
export declare const wrapAddPinToMergeData: (data: GraphAddPinToMergeData) => {
    type: string;
    data: GraphAddPinToMergeData;
};
export declare const makeAddPinToMergeAction: (mergeId: string, type: IO, unitId: string, pinId: string) => Action;
export declare const wrapRemovePinFromMergeData: (data: GraphRemovePinFromMergeData) => {
    type: string;
    data: GraphRemovePinFromMergeData;
};
export declare const makeRemovePinFromMergeAction: (mergeId: string, type: IO, unitId: string, pinId: string) => Action;
export declare const makeRemoveUnitMergesAction: (id: string) => Action;
export declare const wrapBulkEditData: (data: GraphBulkEditData) => {
    type: string;
    data: GraphBulkEditData;
};
export declare const makeBulkEditAction: (actions: Action[]) => Action;
export declare const reverseAction: ({ type, data }: Action) => Action;
export declare const processAction: (action: Action, method: Partial<AllKeys<G & U, Function>>, fallback?: (data: any) => void) => void;
export declare const processActions: (actions: Action[], method: Partial<AllKeys<G, Function>>, fallback?: (data: any) => void) => void;
