import { Position } from '../../client/util/geometry/types';
import { GraphPinSpec, GraphSubPinSpec } from '../../types';
import { Action } from '../../types/Action';
import { Dict } from '../../types/Dict';
import { GraphMergeSpec } from '../../types/GraphMergeSpec';
import { GraphMergesSpec } from '../../types/GraphMergesSpec';
import { GraphUnitSpec } from '../../types/GraphUnitSpec';
import { GraphUnitsSpec } from '../../types/GraphUnitsSpec';
import { IO } from '../../types/IO';
import { IOOf } from '../../types/IOOf';
export declare const ADD_UNIT = "addUnit";
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_MERGES = "removeMerges";
export declare const MERGE_MERGES = "mergeMerges";
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 TOGGLE_EXPOSE_INPUT = "toggleExposeInput";
export declare const TOGGLE_EXPOSE_OUTPUT = "toggleExposeOutput";
export declare const SET_UNIT_INPUT = "setUnitInput";
export declare const SET_UNIT_OUTPUT = "setUnitOutput";
export declare const SET_UNIT_OUTPUT_CONSTANT = "setUnitOutputConstant";
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_INPUT_CONSTANT = "setUnitInputConstant";
export declare const SET_UNIT_PIN_IGNORED = "setUnitPinIgnored";
export declare const SET_UNIT_INPUT_IGNORED = "setUnitInputIgnored";
export declare const SET_UNIT_OUTPUT_IGNORED = "setUnitOutputIgnored";
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 REMOVE_UNIT_MERGES = "removeUnitMerges";
export declare const EXPAND_UNIT = "expandUnit";
export declare const COLLAPSE_UNITS = "collapseUnits";
export declare const makeAddUnitAction: (id: string, unit: GraphUnitSpec, position: Position, pinPosition: IOOf<Dict<Position>>, layoutPositon: Position, parentId: string | null) => {
    type: string;
    data: {
        id: string;
        unit: GraphUnitSpec;
        position: import("../../client/util/geometry/types").Point;
        pinPosition: IOOf<Dict<import("../../client/util/geometry/types").Point>>;
        layoutPositon: import("../../client/util/geometry/types").Point;
        parentId: string;
    };
};
export declare const makeAddUnitsAction: (units: GraphUnitsSpec) => {
    type: string;
    data: {
        units: GraphUnitsSpec;
    };
};
export declare const makeRemoveUnitAction: (id: string, unit: GraphUnitSpec, position: Position, pinPosition: {
    input: Dict<Position>;
    output: Dict<Position>;
}, layoutPositon: Position, parentId: string | null) => {
    type: string;
    data: {
        id: string;
        unit: GraphUnitSpec;
        position: import("../../client/util/geometry/types").Point;
        pinPosition: {
            input: Dict<Position>;
            output: Dict<Position>;
        };
        layoutPositon: import("../../client/util/geometry/types").Point;
        parentId: string;
    };
};
export declare const makeRemoveUnitsAction: (ids: string[]) => {
    type: string;
    data: {
        ids: string[];
    };
};
export declare const exposePinAction: (type: IO, id: string, subPinId: string, subPin: GraphSubPinSpec) => {
    type: string;
    data: {
        type: IO;
        id: string;
        subPinId: string;
        subPin: GraphSubPinSpec;
    };
};
export declare const setPinSetNameAction: (type: IO, id: string, functional: boolean) => {
    type: string;
    data: {
        type: IO;
        id: string;
        functional: boolean;
    };
};
export declare const setPinSetFunctionalAction: (type: IO, id: string, functional: boolean) => {
    type: string;
    data: {
        type: IO;
        id: string;
        functional: boolean;
    };
};
export declare const makeExposePinSetAction: (type: IO, id: string, pin: GraphPinSpec) => {
    type: string;
    data: {
        type: IO;
        id: string;
        pin: GraphPinSpec;
    };
};
export declare const makeCoverPinSetAction: (type: IO, id: string) => {
    type: string;
    data: {
        type: IO;
        id: string;
    };
};
export declare const makePlugPinAction: (type: IO, id: string, subPinId: string, subPinSpec: GraphSubPinSpec) => {
    type: string;
    data: {
        type: IO;
        id: string;
        subPinId: string;
        subPinSpec: GraphSubPinSpec;
    };
};
export declare const makeUnplugPinAction: (type: IO, id: string, subPinId: string) => {
    type: string;
    data: {
        type: IO;
        id: string;
        subPinId: string;
    };
};
export declare const coverPinAction: (id: string, type: IO, subPinId: string) => {
    type: string;
    data: {
        type: IO;
        id: string;
        subPinId: string;
    };
};
export declare const setUnitPinDataAction: (unitId: string, type: IO, pinId: string, data: any) => {
    type: string;
    data: {
        unitId: string;
        type: IO;
        pinId: string;
        data: any;
    };
};
export declare const setUnitOutputConstantAction: (unitId: string, pinId: string, constant: boolean) => {
    type: string;
    data: {
        unitId: string;
        pinId: string;
        constant: boolean;
    };
};
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 makeSetUnitInputConstantAction: (unitId: string, pinId: string, constant: boolean) => {
    type: string;
    data: {
        unitId: string;
        pinId: string;
        constant: boolean;
    };
};
export declare const makeSetUnitOutputConstantAction: (unitId: string, pinId: string, constant: boolean) => {
    type: string;
    data: {
        unitId: string;
        pinId: string;
        constant: boolean;
    };
};
export declare const setUnitPinIgnoredAction: (unitId: string, type: IO, pinId: string, ignored: boolean) => {
    type: string;
    data: {
        unitId: string;
        type: IO;
        pinId: string;
        ignored: 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 makeSetUnitInputIgnoredAction: (unitId: string, pinId: string, ignored: boolean) => {
    type: string;
    data: {
        unitId: string;
        pinId: string;
        ignored: boolean;
    };
};
export declare const makeSetUnitOutputIgnoredAction: (unitId: string, pinId: string, ignored: boolean) => {
    type: string;
    data: {
        unitId: string;
        pinId: string;
        ignored: boolean;
    };
};
export declare const removeUnitPinDataAction: (unitId: string, type: IO, pinId: string) => {
    type: string;
    data: {
        unitId: string;
        type: IO;
        pinId: string;
    };
};
export declare const setUnitMetadataAction: (id: string, path: string[], value: any) => {
    type: string;
    data: {
        id: string;
        path: string[];
        value: any;
    };
};
export declare const setMetadataAction: (path: string[], value: any) => {
    type: string;
    data: {
        path: string[];
        value: any;
    };
};
export declare const makeAddMergeAction: (id: string, merge: GraphMergeSpec, position: Position) => Action;
export declare const makeRemoveMergeAction: (id: string, merge: GraphMergeSpec, position: Position) => Action;
export declare const makeAddMergesAction: (merges: GraphMergesSpec) => Action;
export declare const makeRemoveMergesAction: (ids: string[]) => Action;
export declare const makeAddPinToMergeAction: (id: string, type: IO, unitId: string, pinId: string) => Action;
export declare const makeRemovePinFromMergeAction: (id: string, type: IO, unitId: string, pinId: string) => Action;
export declare const makeMergeMergesAction: (a: string, b: string) => Action;
export declare const makeRemoveUnitMergesAction: (id: string) => Action;
export declare const reverseAction: ({ type, data }: Action) => Action;
