export interface NodeEditorOptions{
    url? :string,
    testUrl?: string,
    runUrl?: string
}

export interface NodeTestData{
    isTrimmed: boolean;
    value: any;
}

export type NodeTypeDefinition = string | {
    type: string
} | {
    type: "select"
    values: Record<number, string>
};

export interface NodeDefinition{
    in: Record<string, NodeTypeDefinition>,
    out: Record<string, NodeTypeDefinition>,
}

export interface NodeUserData{
    [key: string]: any,
    in: Record<string, NodeTypeDefinition>
    out: Record<string, NodeTypeDefinition>,
}

export interface NodeData{
    x: number,
    y: number,
    userdata: Record<string, NodeUserData> | null,
    values: Record<string, any>
}

export type NodeEditorTestData = Record<string,Record<string, NodeTestData>>

export type NodeEditorConnectionData = Record<string, Record<string, Record<string, [string, string]>>>

export interface NodeEditorData{
    add: string[],
    types: Record<string, NodeTypeDefinition>
    nodes: Record<string, NodeData>
    connections: NodeEditorConnectionData
    test: NodeEditorTestData
}
