/**
 * Represents a node in the SQL data flow diagram
 */
export interface DataFlowNode {
    id: string;
    label: string;
    type: NodeType;
    shape: NodeShape;
    details?: string[];
}
export type NodeType = 'table' | 'cte' | 'subquery' | 'process' | 'operation' | 'output';
export type NodeShape = 'cylinder' | 'hexagon' | 'diamond' | 'rounded' | 'rectangle' | 'circle' | 'stadium';
/**
 * Base class for all data flow nodes
 */
export declare abstract class BaseDataFlowNode implements DataFlowNode {
    id: string;
    label: string;
    type: NodeType;
    shape: NodeShape;
    details?: string[] | undefined;
    constructor(id: string, label: string, type: NodeType, shape: NodeShape, details?: string[] | undefined);
    abstract getMermaidRepresentation(): string;
}
/**
 * Represents a data source (table, CTE, subquery)
 */
export declare class DataSourceNode extends BaseDataFlowNode {
    private annotations;
    constructor(id: string, label: string, type: 'table' | 'cte' | 'subquery');
    addAnnotation(annotation: string): void;
    hasAnnotation(annotation: string): boolean;
    getMermaidRepresentation(): string;
    static createTable(tableName: string): DataSourceNode;
    static createCTE(cteName: string): DataSourceNode;
    static createSubquery(alias: string): DataSourceNode;
}
/**
 * Represents a processing operation (WHERE, GROUP BY, SELECT, etc.)
 */
export declare class ProcessNode extends BaseDataFlowNode {
    constructor(id: string, operation: string, context?: string);
    getMermaidRepresentation(): string;
    /** @deprecated Process nodes are no longer used in data flow diagrams */
    static createWhere(context: string): ProcessNode;
    /** @deprecated Process nodes are no longer used in data flow diagrams */
    static createGroupBy(context: string): ProcessNode;
    /** @deprecated Process nodes are no longer used in data flow diagrams */
    static createHaving(context: string): ProcessNode;
    /** @deprecated Process nodes are no longer used in data flow diagrams */
    static createSelect(context: string): ProcessNode;
    /** @deprecated Process nodes are no longer used in data flow diagrams */
    static createOrderBy(context: string): ProcessNode;
    /** @deprecated Process nodes are no longer used in data flow diagrams */
    static createLimit(context: string, hasOffset?: boolean): ProcessNode;
}
/**
 * Represents an operation (JOIN, UNION, etc.)
 */
export declare class OperationNode extends BaseDataFlowNode {
    constructor(id: string, operation: string, shape?: NodeShape);
    getMermaidRepresentation(): string;
    static createJoin(joinId: string, joinType: string): OperationNode;
    static createUnion(unionId: string, unionType?: string): OperationNode;
    static createSetOperation(operationId: string, operation: string): OperationNode;
}
/**
 * Represents the final output
 */
export declare class OutputNode extends BaseDataFlowNode {
    constructor(context?: string);
    getMermaidRepresentation(): string;
}
