///
import * as events from 'events';
import { BaseNodeDefinition, Flow as FlowDefinition, Node, NodeDefinition, NodeDefinitionProviderMap, NodeDefinitions, NodeDependencyTypes } from '@chix/common';
import { ILoader, LoaderResponse } from './interfaces';
import { DependencyManager } from './lib/DependencyManager';
import { Dependencies, DependencyTypes, LoadDefinitionResult, LoadNodeResult, ProviderDef, Workload } from './types';
export declare class Loader extends events.EventEmitter implements ILoader {
getNodeSource: (provider: string, ns: string, name: string) => NodeDefinition | FlowDefinition;
protected dependencyManager: DependencyManager;
private nodeDefinitions;
load(_flows: FlowDefinition | FlowDefinition[], _update?: boolean): Promise;
loadNodeDefinitionFrom(provider: string, ns: string, name: string): Promise;
loadNode(providerDef: ProviderDef): Promise;
getWorkLoad(flows: FlowDefinition[], defaultProvider: string, update: boolean): Workload;
saveNodeDefinition(_providerLocation: string, _nodeDefinition: NodeDefinition): void;
hasDependencies(type?: DependencyTypes): boolean;
getDependencies(type?: DependencyTypes): Dependencies | NodeDependencyTypes;
setDependencies(dependencies: Dependencies): void;
initProviderMap(flow: FlowDefinition, defaultProvider: string): void;
addNodeDefinitions(identifier: string, nodeDefs: NodeDefinitions | Array): void;
addNodeDefinition(identifier: string, nodeDef: NodeDefinition | FlowDefinition): void;
setNodeDefinition(provider: string, nodeDefinition: NodeDefinition | FlowDefinition): void;
setNodeDefinitions(nodeDefinitions: NodeDefinitionProviderMap): void;
hasNodeDefinition(providerUrl: string, ns: string, name: string): boolean;
hasNodeDefinitions(provider?: string): boolean;
getNodeDefinition(node: Node, flow: FlowDefinition): Promise;
resolveProvider(node: Node, flow: FlowDefinition): string;
loadNodeDefinition(node: Node, flow: FlowDefinition): Promise;
getNodeDefinitionFrom(provider: string, ns: string, name: string): FlowDefinition | NodeDefinition;
getNodeDefinitions(provider?: string): NodeDefinitionProviderMap | NodeDefinitions;
isResolved(flow: FlowDefinition): boolean;
getUnresolved(flow: FlowDefinition): BaseNodeDefinition[];
mergeSchema(graph: FlowDefinition): Promise;
}