import type { Node } from '../../xyflow/react.ts';
import { Position } from '../../xyflow/react.ts';
import type { BaseNodeData } from '../../components/BaseNode/BaseNode.types';
import type { HandleGroupManifest, NodeShape } from '../../schema/node-definition';
export declare const NodePositions: {
    readonly row1col1: {
        readonly x: 96;
        readonly y: 96;
    };
    readonly row1col2: {
        readonly x: 288;
        readonly y: 96;
    };
    readonly row1col3: {
        readonly x: 480;
        readonly y: 96;
    };
    readonly row2col1: {
        readonly x: 96;
        readonly y: 256;
    };
    readonly row2col2: {
        readonly x: 288;
        readonly y: 256;
    };
    readonly row2col3: {
        readonly x: 480;
        readonly y: 256;
    };
    readonly row3col1: {
        readonly x: 96;
        readonly y: 416;
    };
    readonly row3col2: {
        readonly x: 288;
        readonly y: 416;
    };
    readonly row3col3: {
        readonly x: 480;
        readonly y: 416;
    };
};
export interface CreateNodeOptions<T = Record<string, unknown>> {
    id: string;
    type?: string;
    position?: {
        x: number;
        y: number;
    };
    data?: Partial<BaseNodeData & T>;
    display?: {
        label?: string;
        subLabel?: string;
        shape?: NodeShape;
        color?: string;
        background?: string;
        icon?: string;
        iconColor?: string;
        iconBackground?: string;
    };
    handleConfigurations?: HandleGroupManifest[];
    selected?: boolean;
    useSmartHandles?: boolean;
    executionStatus?: 'NotExecuted' | 'InProgress' | 'Completed' | 'Failed' | 'Paused' | 'Cancelled' | 'UserCancelled' | 'Terminated';
}
export declare function createNode<T = Record<string, unknown>>(options: CreateNodeOptions<T>): Node<BaseNodeData & T>;
export declare function createNodeGrid(options: {
    baseId: string;
    type?: string;
    rows: Array<Array<{
        label: string;
        subLabel?: string;
        shape?: NodeShape;
        executionStatus?: string;
    }>>;
    startX?: number;
    startY?: number;
    gapX?: number;
    gapY?: number;
}): Node<BaseNodeData>[];
export declare const HandleConfigs: {
    readonly rightOutput: readonly [{
        readonly position: Position.Right;
        readonly handles: readonly [{
            readonly id: "output";
            readonly type: "source";
            readonly handleType: "output";
            readonly label: "Output";
        }];
    }];
    readonly leftInput: readonly [{
        readonly position: Position.Left;
        readonly handles: readonly [{
            readonly id: "input";
            readonly type: "target";
            readonly handleType: "input";
            readonly label: "Input";
        }];
    }];
    readonly inputOutput: readonly [{
        readonly position: Position.Left;
        readonly handles: readonly [{
            readonly id: "input";
            readonly type: "target";
            readonly handleType: "input";
            readonly label: "Input";
        }];
    }, {
        readonly position: Position.Right;
        readonly handles: readonly [{
            readonly id: "output";
            readonly type: "source";
            readonly handleType: "output";
            readonly label: "Output";
        }];
    }];
    readonly bottomArtifacts: (labels: string[]) => {
        position: Position;
        handles: {
            id: string;
            type: "source";
            handleType: "artifact";
            label: string;
        }[];
    }[];
};
export declare function createStatusVariations(baseConfig: Omit<CreateNodeOptions, 'id' | 'executionStatus'>): Node<BaseNodeData>[];
//# sourceMappingURL=nodes.d.ts.map