import { Dialect } from '../../dialect';
export { Dialect };
/** Tables managed internally by the framework — excluded from migration diff. */
export declare const INTERNAL_TABLES: Set<string>;
export interface ColumnSchema {
    name: string;
    type: string;
    size?: number;
    scale?: number;
    unsigned: boolean;
    nullable: boolean;
    autoIncrement: boolean;
    isPrimaryKey: boolean;
    defaultValue?: unknown;
    defaultExpression?: string;
    onUpdateExpression?: string;
    enumValues?: string[];
    enumTypeName?: string;
    isIdentity?: boolean;
    sequenceName?: string;
    ordinalPosition: number;
}
export interface IndexSchema {
    name: string;
    columns: string[];
    unique: boolean;
    spatial: boolean;
}
export interface ForeignKeySchema {
    name: string;
    columns: string[];
    referencedTable: string;
    referencedColumns: string[];
    onDelete: string;
    onUpdate: string;
}
export interface TableSchema {
    name: string;
    columns: ColumnSchema[];
    indexes: IndexSchema[];
    foreignKeys: ForeignKeySchema[];
    primaryKeyConstraintName?: string;
    skippedColumns?: Set<string>;
}
export type DatabaseSchema = Map<string, TableSchema>;
export interface SchemaDiff {
    dialect: Dialect;
    pgSchema?: string;
    addedTables: TableSchema[];
    removedTables: TableSchema[];
    modifiedTables: TableDiff[];
    entityEnumTypes?: Set<string>;
}
export interface TableDiff {
    tableName: string;
    addedColumns: ColumnSchema[];
    removedColumns: ColumnSchema[];
    modifiedColumns: ColumnModification[];
    renamedColumns: {
        from: string;
        to: string;
        column: ColumnSchema;
    }[];
    reorderedColumns: {
        name: string;
        after: string | null;
    }[];
    addedIndexes: IndexSchema[];
    removedIndexes: IndexSchema[];
    addedForeignKeys: ForeignKeySchema[];
    removedForeignKeys: ForeignKeySchema[];
    primaryKeyChanged: boolean;
    newPrimaryKey?: string[];
    oldPrimaryKey?: string[];
    oldPrimaryKeyConstraintName?: string;
    addedEnumTypes: {
        typeName: string;
        values: string[];
    }[];
    removedEnumTypes: string[];
    modifiedEnumTypes: {
        typeName: string;
        added: string[];
        removed: string[];
        newValues: string[];
        tableName: string;
        columnName: string;
    }[];
    entityColumns?: ColumnSchema[];
}
export interface ColumnModification {
    name: string;
    oldColumn: ColumnSchema;
    newColumn: ColumnSchema;
    typeChanged: boolean;
    nullableChanged: boolean;
    defaultChanged: boolean;
    autoIncrementChanged: boolean;
    onUpdateChanged: boolean;
}
export declare type __ΩColumnSchema = any[];
export declare type __ΩIndexSchema = any[];
export declare type __ΩForeignKeySchema = any[];
export declare type __ΩTableSchema = any[];
export declare type __ΩDatabaseSchema = any[];
export declare type __ΩSchemaDiff = any[];
export declare type __ΩTableDiff = any[];
export declare type __ΩColumnModification = any[];
//# sourceMappingURL=schema-model.d.ts.map