type Operator = ' =' | ' <' | ' >' | ' <=' | ' >=' | ' <>' | ' !=';
type InOperator = ' IN ';
type LikeOperator = ' LIKE ' | ' NOT LIKE ';
type WithOperators<T> = {
    [K in keyof T as `${K & string}${Operator}`]?: T[K];
};
type WithInOperator<T> = {
    [K in keyof T as `${K & string}${InOperator}`]?: T[K][];
};
type WithLikeOperator<T> = {
    [K in keyof T as `${K & string}${LikeOperator}`]?: T[K] | string;
};
export type WhereObject<T> = {
    [K in keyof T]?: T[K] | 'IS NULL' | 'IS NOT NULL';
} & WithOperators<T> & WithInOperator<T> & WithLikeOperator<T> & {
    _OR?: boolean;
    _AND?: boolean;
};
export declare enum DatabaseColumnType {
    NULL = "NULL",
    INTEGER = "INTEGER",
    INT = "INT",
    TINYINT = "TINYINT",
    SMALLINT = "SMALLINT",
    MEDIUMINT = "MEDIUMINT",
    BIGINT = "BIGINT",
    UNSIGNED_BIG_INT = "UNSIGNED BIG INT",
    INT2 = "INT2",
    INT8 = "INT8",
    BIT = "BIT",// MySQL
    REAL = "REAL",
    DOUBLE = "DOUBLE",
    DOUBLE_PRECISION = "DOUBLE PRECISION",
    FLOAT = "FLOAT",
    TEXT = "TEXT",
    CHARACTER = "CHARACTER",
    CHAR = "CHAR",
    VARCHAR = "VARCHAR",
    VARYING_CHARACTER = "VARYING CHARACTER",
    NCHAR = "NCHAR",
    NATIVE_CHARACTER = "NATIVE CHARACTER",
    NVARCHAR = "NVARCHAR",
    CLOB = "CLOB",
    TINYTEXT = "TINYTEXT",
    MEDIUMTEXT = "MEDIUMTEXT",
    LONGTEXT = "LONGTEXT",
    NUMERIC = "NUMERIC",
    DECIMAL = "DECIMAL",
    BOOLEAN = "BOOLEAN",
    BOOL = "BOOL",// MySQL
    DATE = "DATE",
    DATETIME = "DATETIME",
    TIME = "TIME",
    TIMESTAMP = "TIMESTAMP",
    YEAR = "YEAR",// MySQL
    BLOB = "BLOB",
    BINARY = "BINARY",
    VARBINARY = "VARBINARY",
    TINYBLOB = "TINYBLOB",
    MEDIUMBLOB = "MEDIUMBLOB",
    LONGBLOB = "LONGBLOB",
    ENUM = "ENUM",
    SET = "SET",
    JSON = "JSON",
    GEOMETRY = "GEOMETRY",
    POINT = "POINT",
    LINESTRING = "LINESTRING",
    POLYGON = "POLYGON",
    MULTIPOINT = "MULTIPOINT",
    MULTILINESTRING = "MULTILINESTRING",
    MULTIPOLYGON = "MULTIPOLYGON",
    GEOMETRYCOLLECTION = "GEOMETRYCOLLECTION",
    ANY = "ANY"
}
export interface DatabaseColumn {
    name: string;
    type: keyof typeof DatabaseColumnType;
    primaryKey?: boolean;
    notNull?: boolean;
    unique?: boolean;
    defaultValue?: string | number | boolean | null;
    check?: string;
    length?: number;
    autoIncrement?: boolean;
    collate?: string;
    enum?: string[] | number[] | boolean[];
    references?: {
        table: string;
        column: string;
        onDelete?: 'SET NULL' | 'SET DEFAULT' | 'RESTRICT' | 'NO ACTION' | 'CASCADE';
        onUpdate?: 'SET NULL' | 'SET DEFAULT' | 'RESTRICT' | 'NO ACTION' | 'CASCADE';
    };
}
export interface SQLiteTable {
    name: string;
    columns: DatabaseColumn[];
}
export {};
