export type GraphNode = {
    name: string;
    isType: (value: any) => boolean;
    spread?: boolean;
};
export type GraphLink = {
    inputType: string;
    outputType: string;
    name: string;
    transform: (value: any) => any;
};
export interface ITransformationGraph {
    extend(nodes: GraphNode[], links: GraphLink[]): void;
    transform<TOut = any, TIn = any>(value: TIn, links: string[]): TOut;
}
export declare class TransformationGraph implements ITransformationGraph {
    private readonly nodes;
    private readonly links;
    extend(nodes: GraphNode[], links: GraphLink[]): void;
    transform<TOut = any, TIn = any>(value: TIn, links: string[]): TOut;
    toLastNode(links: string[]): GraphNode | undefined;
}
