import { ComponentSpec, GraphComponentSpec, GraphSubPinSpec, PinsSpec, Spec, Specs } from '../types';
import { BundleSpec } from '../types/BundleSpec';
import { Dict } from '../types/Dict';
import { GraphMergeSpec } from '../types/GraphMergeSpec';
import { GraphPinSpec } from '../types/GraphPinSpec';
import { GraphSpec } from '../types/GraphSpec';
import { GraphUnitMerges } from '../types/GraphUnitMerges';
import { GraphUnitPlugs } from '../types/GraphUnitPlugs';
import { IO } from '../types/IO';
import { IOOf } from '../types/IOOf';
export declare function getSpec(specs: Specs, id: string): Spec;
export declare function getGraphSpec(specs: Specs, id: string): GraphSpec;
export declare function getSpecs(specs: Specs): Specs;
export declare function hasSpec(specs: Specs, id: string): boolean;
export declare function getComponentSpec(specs: Specs, id: string): ComponentSpec;
export declare function getSpecPins(specs: Specs, id: string, type: IO): PinsSpec;
export declare function getSpecIdPinPlugs(specs: Specs, id: string, type: IO, pinId: string): PinsSpec;
export declare function getSpecPinPlugs(spec: GraphSpec, type: IO, pinId: string): PinsSpec;
export declare function getSpecInputs(specs: Specs, id: string): PinsSpec;
export declare function getSpecOutputs(specs: Specs, id: string): PinsSpec;
export declare function getSpecIdPinPlugCount(specs: Specs, id: string, type: IO, pinId: string): number;
export declare function getSpecPinPlugCount(spec: GraphSpec, type: IO, pinId: string): number;
export declare function getSpecPinCount(specs: Specs, id: string, type: IO): number;
export declare function getSpecInputCount(specs: Specs, id: string): number;
export declare function getSpecOutputCount(specs: Specs, id: string): number;
export declare function emptySpec(init?: Partial<GraphSpec>): GraphSpec;
export declare function emptyShell(from: GraphSpec, init?: Partial<GraphSpec>): GraphSpec;
export declare function getSpecName(specs: Specs, id: string): string;
export declare function getSpecTitle(specs: Specs, id: string): string;
export declare function newSpecId(specs: Specs): string;
export declare function newUnitIdInSpecId(specs: Specs, id: string, unit_spec_id: string, blacklist?: Set<string>): string;
export declare function newUnitId(specs: Specs, spec: GraphSpec, unit_spec_id: string, blacklist?: Set<string>): string;
export declare function newUnitIdFromName(spec: GraphSpec, name: string, blacklist?: Set<string>): string;
export declare function newPinId(spec: GraphSpec, type: IO, start: string, blacklist?: Set<string>): string;
export declare function newMergeId(spec: GraphSpec, blacklist?: Set<string>): string;
export declare function hasUnitId(spec: GraphSpec, unitId: string): boolean;
export declare function hasMergeId(spec: GraphSpec, mergeId: string): boolean;
export declare const isPinInMerge: (spec: GraphSpec, mergeId: string, unitId: string, type: IO, pinId: string) => boolean;
export declare const isPinMerged: (spec: GraphSpec, unitId: string, type: IO, pinId: string) => boolean;
export declare const isPlugPluggedTo: (spec: GraphSpec, type: IO, pinId: string, subPinId: string, subPinSpec: GraphSubPinSpec) => boolean;
export declare const isPlugPlugged: (spec: GraphSpec, type: IO, pinId: string, subPinId: string) => boolean;
export declare function sameSpec(a: GraphSpec, b: GraphSpec): boolean;
export declare function sameUnits(a: GraphSpec, b: GraphSpec): boolean;
export declare function sameMerges(a: GraphSpec, b: GraphSpec): boolean;
export declare function sameInputs(a: GraphSpec, b: GraphSpec): boolean;
export declare function sameOutputs(a: GraphSpec, b: GraphSpec): boolean;
export declare function samePins(a: GraphSpec, b: GraphSpec, type: IO): boolean;
export declare function samePin(a: GraphPinSpec, b: GraphPinSpec): boolean;
export declare function sameMetadata(a: GraphSpec, b: GraphSpec): boolean;
export declare function isInternalSpecId(specId: string): boolean;
export declare function isSystemSpecId(specs: Specs, specId: string): boolean;
export declare function isSystemSpec(spec: Spec): boolean;
export declare function isEmptySpec(spec: GraphSpec): boolean;
export declare function getSpecRenderById(specs: Specs, id: string): boolean | undefined;
export declare function getSpecRender(spec: Spec): boolean | undefined;
export declare function isComponentId(specs: Specs, id: string): boolean;
export declare function isComponentSpec(spec: Spec): boolean;
export declare function hasSubComponent(spec: GraphSpec, subComponentId: string): boolean;
export declare function hasSubComponents(spec: GraphSpec): boolean;
export declare function shouldRender(componentSpec: GraphComponentSpec): boolean;
export declare function findInputDataExamples(specs: Specs, spec_id: string, input_id: string): string[];
export declare function getSingleMergePin(merge: GraphMergeSpec): {
    unitId: string;
    type: IO;
    pinId: string;
};
export type UnitMap = Dict<string>;
export type LinkMap = IOOf<Dict<string>>;
export type UnitLinkMap = Dict<LinkMap>;
export declare function remapUnitMerges(merges: GraphUnitMerges, unitMap: UnitMap, unitLinkMap: UnitLinkMap): GraphUnitMerges;
export declare function remapUnitPlugs(plugs: GraphUnitPlugs, linkMap: LinkMap): GraphUnitPlugs;
export declare function removeBundleMetadata(bundle: BundleSpec): void;
export declare function removeBundleMemory(bundle: BundleSpec): void;
export declare function removeSpecMemory(spec: GraphSpec): void;
export declare function removeSpecMetadata(spec: GraphSpec): void;
