import { GraphPinSpec, GraphSubPinSpec } from '../../types';
import { Dict } from '../../types/Dict';
import { GraphMergeSpec } from '../../types/GraphMergeSpec';
import { GraphUnitConnect } from '../../types/GraphUnitConnect';
import { IO } from '../../types/IO';
import { IOOf } from '../../types/IOOf';
import { UCG } from '../../types/interface/UCG';
import { GraphMoveSubGraphData } from './interface';
export type GraphLike<T extends UCG = UCG> = Pick<T, 'getMergeSpec' | 'getMergesSpec' | 'coverPinSet' | 'hasPinNamed' | 'hasMergePin' | 'getUnit' | 'exposePinSet' | 'getUnitPinData' | 'hasUnit' | 'addUnit' | 'removeUnit' | 'removeMerge' | 'moveRoot' | 'unplugPin' | 'plugPin' | 'exposePin' | 'setPinData' | 'addPinToMerge' | 'getPinPlugCount' | 'getPinData' | 'setPinConstant' | 'setUnitPinConstant' | 'hasPlug' | 'coverPin' | 'isUnitPinRef' | 'isUnitPinConstant' | 'addMerge' | 'hasMerge' | 'getExposedPinSpec' | 'getExposedPinSpecs' | 'removePinOrMerge' | 'removePinFromMerge' | 'isPinConstant' | 'getPlugSpecs' | 'getSubPinSpec' | 'getMergeData' | 'getSpec' | 'setUnitSize' | 'setSubComponentSize'>;
export declare function moveUnit(source: GraphLike, target: GraphLike, graphId: string, unitId: string, collapseMap: GraphMoveSubGraphData, connectOpt: GraphUnitConnect, ignoredUnit: Set<string>, unitIgnoredPin: Dict<IOOf<Set<string>>>, ignoredMerge: Set<string>, pinSpecs: IOOf<Dict<GraphPinSpec>>, reverse: boolean): void;
export declare function moveLinkPinInto(source: GraphLike, target: GraphLike, graphId: string, unitId: string, type: IO, pinId: string, data: any, collapseMap: GraphMoveSubGraphData, oppositeMergeId: string | null, oppositePinId: string | null, plugPinSpec: {
    pinId: string;
    subPinId: string;
} | null, ignoredUnit: Set<string>, reverse: boolean): void;
export declare function moveMerge(source: GraphLike, target: GraphLike, graphId: string, mergeId: string, mergeSpec: GraphMergeSpec, mergeIsRef: boolean, collapseMap: GraphMoveSubGraphData, connectOpt: GraphUnitConnect, ignoredUnit: Set<string>, pinSpecs: IOOf<Dict<GraphPinSpec>>, reverse: boolean): void;
export declare function movePlug(source: GraphLike, target: GraphLike, graphId: string, type: IO, pinId: string, pinSpec: GraphPinSpec, subPinId: string, subPinSpec: GraphSubPinSpec, nextPlugSpec: GraphMoveSubGraphData['nextPlugSpec'], nextPinIdMap: GraphMoveSubGraphData['nextPinIdMap'], nextMergePinId: GraphMoveSubGraphData['nextMergePinId'], nextIdMap: GraphMoveSubGraphData['nextIdMap']): void;
export declare function moveSubgraph<T extends UCG<any, any, any>>(source: GraphLike<T>, target: GraphLike<T>, graphId: string, collapseMap: GraphMoveSubGraphData, connectOpt: GraphUnitConnect, reverse?: boolean): void;
