import { GraphMergeSpec, GraphMergesSpec, GraphMergeUnitSpec, GraphPinSpec, GraphPlugOuterSpec, GraphSpec, PinSpec, Spec, Specs } from '../types';
import { IO } from '../types/IO';
export declare function isValidSpecName(name: string): boolean;
export declare function getPinNodeId(unitId: string, type: IO, pinId: string): string;
export declare function getInputNodeId(unitId: string, pinId: string): string;
export declare function getOutputNodeId(unitId: string, pinId: string): string;
export declare function getExposedPinId(id: string, type: string): string;
export declare function getMergePinNodeId(mergeId: string, type: IO): string;
export declare function opposite(kind: IO): IO;
export declare const findMergePin: (merge: GraphMergeSpec, type: IO) => {
    unitId: string;
    pinId: string;
} | undefined;
export declare const getMergePinCount: (merge: GraphMergeSpec) => number;
export declare const getMergeUnitPinCount: (merge_unit: GraphMergeUnitSpec) => number;
export declare const forEachPinOnMerges: (merges: GraphMergesSpec, callback: (mergeId: string, unitId: string, type: IO, pinId: string) => void) => void;
export declare const forEachPinOnMerge: (merge: GraphMergeSpec, callback: (unitId: string, type: IO, pinId: string) => void) => void;
export declare const forEachSpecPin: (spec: Spec, callback: (type: IO, pinId: string, pinSpec: PinSpec) => void) => void;
export declare const forEachGraphSpecPin: (spec: GraphSpec, callback: (type: IO, pinId: string, pinSpec: GraphPinSpec) => void) => void;
export declare const forEachGraphSpecPinOfType: (spec: GraphSpec, type: IO, callback: (pinId: string, pinSpec: GraphPinSpec) => void) => void;
export declare const specHasUnit: (spec: GraphSpec, unitId: string) => boolean;
export declare const specHasMerge: (spec: GraphSpec, mergeId: string) => boolean;
export declare const findMergePlug: (spec: GraphSpec, type: IO, mergeId: string) => GraphPlugOuterSpec | null;
export declare const findSpecAtPath: (specs: Specs, spec: Spec, path: string[]) => any;
