import type { TDataType } from '../ast/types.js';
export interface DiagramOptions {
    theme?: 'dark' | 'light';
    width?: number;
    padding?: number;
    showPortLabels?: boolean;
    workflowName?: string;
    format?: 'svg' | 'html' | 'ascii' | 'ascii-compact' | 'text';
}
export interface DiagramPort {
    name: string;
    label: string;
    dataType: TDataType;
    direction: 'INPUT' | 'OUTPUT';
    isControlFlow: boolean;
    isFailure: boolean;
    cx: number;
    cy: number;
}
export interface DiagramNode {
    id: string;
    label: string;
    color: string;
    icon: string;
    isVirtual: boolean;
    inputs: DiagramPort[];
    outputs: DiagramPort[];
    x: number;
    y: number;
    width: number;
    height: number;
    scopeChildren?: DiagramNode[];
    scopeConnections?: DiagramConnection[];
    scopePorts?: {
        inputs: DiagramPort[];
        outputs: DiagramPort[];
    };
}
export interface DiagramStub {
    x: number;
    y: number;
    endX: number;
    labelOffset: number;
    color: string;
    dashed: boolean;
}
export interface DiagramConnection {
    fromNode: string;
    fromPort: string;
    toNode: string;
    toPort: string;
    sourceColor: string;
    targetColor: string;
    isStepConnection: boolean;
    path: string;
    sourceStub?: DiagramStub;
    targetStub?: DiagramStub;
}
export interface DiagramGraph {
    nodes: DiagramNode[];
    connections: DiagramConnection[];
    bounds: {
        width: number;
        height: number;
        originX?: number;
        originY?: number;
    };
    workflowName: string;
}
export interface ThemePalette {
    background: string;
    nodeFill: string;
    nodeStroke: string;
    labelColor: string;
    sublabelColor: string;
    connectionColor: string;
    dotColor: string;
    labelBadgeFill: string;
    labelBadgeBorder: string;
    nodeIconColor: string;
    scopeAreaStroke: string;
    nodeShadowOpacity: number;
    dotOpacity: number;
}
//# sourceMappingURL=types.d.ts.map