/**
 * Schema - Column definition and type system
 * Defines database columns with type safety
 */
export type ColumnType = 'string' | 'integer' | 'boolean' | 'date' | 'datetime' | 'json' | 'text' | 'timestamp' | 'decimal' | 'uuid' | 'float' | 'double' | 'binary' | 'enum' | 'bigInteger' | 'smallInteger' | 'tinyInteger' | 'mediumInteger' | 'time' | 'year' | 'char' | 'longText' | 'mediumText' | 'tinyText' | 'blob' | 'mediumBlob' | 'longBlob' | 'tinyBlob' | 'ipAddress' | 'macAddress' | 'geometry' | 'point' | 'lineString' | 'polygon' | 'geometryCollection' | 'multiPoint' | 'multiLineString' | 'multiPolygon';
export interface ColumnDefinition {
    name: string;
    type: ColumnType;
    nullable: boolean;
    default?: unknown;
    unique: boolean;
    primary: boolean;
    index: boolean;
    autoIncrement?: boolean;
    unsigned?: boolean;
    comment?: string;
    references?: string;
    on?: string;
    onDelete?: string;
    onUpdate?: string;
    renameTo?: string;
    change?: boolean;
    drop?: boolean;
    after?: string;
    first?: boolean;
    charset?: string;
    collation?: string;
    length?: number;
    precision?: number;
    scale?: number;
    values?: string[];
}
export interface IColumn {
    nullable(): IColumn;
    default(value: unknown): IColumn;
    unique(): IColumn;
    primary(): IColumn;
    index(): IColumn;
    autoIncrement(): IColumn;
    unsigned(): IColumn;
    comment(text: string): IColumn;
    references(column: string): IColumn;
    on(table: string): IColumn;
    onDelete(action: string): IColumn;
    onUpdate(action: string): IColumn;
    renameTo(name: string): IColumn;
    change(): IColumn;
    drop(): IColumn;
    after(column: string): IColumn;
    first(): IColumn;
    charset(value: string): IColumn;
    collation(value: string): IColumn;
    length(value: number): IColumn;
    precision(value: number): IColumn;
    scale(value: number): IColumn;
    values(value: string[]): IColumn;
    getDefinition(): ColumnDefinition;
}
/**
 * Column - Column definition builder
 * Sealed namespace object following Pattern 2
 *
 * @see FRAMEWORK_REFACTOR_FUNCTION_PATTERN.md for Pattern 2 details
 */
export declare const Column: Readonly<{
    /**
     * Create a new column instance
     */
    create(name: string, type: ColumnType): IColumn;
}>;
export interface ISchema {
    string(name: string, length?: number): IColumn;
    integer(name: string): IColumn;
    boolean(name: string): IColumn;
    date(name: string): IColumn;
    datetime(name: string): IColumn;
    json(name: string): IColumn;
    text(name: string): IColumn;
    timestamp(name: string): IColumn;
    decimal(name: string, precision?: number, scale?: number): IColumn;
    uuid(name: string): IColumn;
    float(name: string): IColumn;
    double(name: string): IColumn;
    binary(name: string): IColumn;
    enum(name: string, values: string[]): IColumn;
    bigInteger(name: string): IColumn;
    smallInteger(name: string): IColumn;
    tinyInteger(name: string): IColumn;
    mediumInteger(name: string): IColumn;
    time(name: string): IColumn;
    year(name: string): IColumn;
    char(name: string, length?: number): IColumn;
    longText(name: string): IColumn;
    mediumText(name: string): IColumn;
    tinyText(name: string): IColumn;
    blob(name: string): IColumn;
    mediumBlob(name: string): IColumn;
    longBlob(name: string): IColumn;
    tinyBlob(name: string): IColumn;
    ipAddress(name: string): IColumn;
    macAddress(name: string): IColumn;
    geometry(name: string): IColumn;
    point(name: string): IColumn;
    lineString(name: string): IColumn;
    polygon(name: string): IColumn;
    geometryCollection(name: string): IColumn;
    multiPoint(name: string): IColumn;
    multiLineString(name: string): IColumn;
    multiPolygon(name: string): IColumn;
    increments(name: string): IColumn;
    bigIncrements(name: string): IColumn;
    timestamps(): void;
    softDeletes(): void;
    getColumns(): Map<string, IColumn>;
    getTable(): string;
}
export declare const Schema: Readonly<{
    /**
     * Create a new schema instance
     */
    create(table: string): ISchema;
}>;
//# sourceMappingURL=Schema.d.ts.map