import type { UniqueIdentifier } from '@dnd-kit/core';
export declare enum SQLDataType {
    VARCHAR = "VARCHAR",
    CHAR = "CHAR",
    TEXT = "TEXT",
    INT = "INT",
    BIGINT = "BIGINT",
    SMALLINT = "SMALLINT",
    DECIMAL = "DECIMAL",
    FLOAT = "FLOAT",
    DOUBLE = "DOUBLE",
    BOOLEAN = "BOOLEAN",
    DATE = "DATE",
    DATETIME = "DATETIME",
    TIMESTAMP = "TIMESTAMP",
    TIME = "TIME",
    JSON = "JSON",
    BLOB = "BLOB"
}
export interface Column {
    id: UniqueIdentifier;
    name: string;
    dataType: SQLDataType;
    length?: number;
    nullable: boolean;
    primaryKey: boolean;
    autoIncrement: boolean;
    defaultValue?: string;
    description?: string;
}
export interface Table {
    id: UniqueIdentifier;
    name: string;
    columns: Column[];
    position: {
        x: number;
        y: number;
    };
    description?: string;
}
export interface ForeignKey {
    id: UniqueIdentifier;
    sourceTableId: UniqueIdentifier;
    sourceColumnId: UniqueIdentifier;
    targetTableId: UniqueIdentifier;
    targetColumnId: UniqueIdentifier;
    onDelete: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
    onUpdate: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
}
export interface DatabaseSchema {
    id: UniqueIdentifier;
    name: string;
    tables: Table[];
    foreignKeys: ForeignKey[];
    createdAt: Date;
    updatedAt: Date;
}
export declare enum ToolType {
    MOVE = "MOVE",
    HAND = "HAND",
    TABLE = "TABLE",
    EDIT = "EDIT",
    RELATIONSHIP = "CONNECTION"
}
export interface SchemaBuilderState {
    selectedTool: ToolType;
    selectedTableId: UniqueIdentifier | null;
    selectedColumnId: UniqueIdentifier | null;
    isConnecting: boolean;
    connectionStart: {
        tableId: UniqueIdentifier;
        columnId: UniqueIdentifier;
    } | null;
    canvasOffset: {
        x: number;
        y: number;
    };
    isPanning: boolean;
}
//# sourceMappingURL=database.d.ts.map