import { ColumnBuilderBaseConfig, entityKind, MakeColumnConfig, HasDefault, ColumnBaseConfig } from 'drizzle-orm';
import { MySqlColumnBuilder, AnyMySqlTable, MySqlColumn } from 'drizzle-orm/mysql-core';

type MySqlCuid2BuilderInitial<TName extends string> = Omit<MySqlCuid2Builder<{
    name: TName;
    dataType: 'string';
    columnType: 'MySqlCuid2';
    data: string;
    driverParam: string;
    enumValues: undefined;
}>, 'default' | '$default' | '$defaultFn'>;
declare class MySqlCuid2Builder<T extends ColumnBuilderBaseConfig<'string', 'MySqlCuid2'>> extends MySqlColumnBuilder<T> {
    static readonly [entityKind]: string;
    constructor(name: T['name']);
    build<TTableName extends string>(table: AnyMySqlTable<{
        name: TTableName;
    }>): MySqlCuid2<MakeColumnConfig<T, TTableName>>;
    /***
     * Creates a random `cuid2` value as the default value for the column.
     * The function will be called when the row is inserted, and the returned value will be used as the column value.
     */
    defaultRandom(): HasDefault<this>;
}
declare class MySqlCuid2<T extends ColumnBaseConfig<'string', 'MySqlCuid2'>> extends MySqlColumn<T> {
    static readonly [entityKind]: string;
    getSQLType(): string;
}

declare function cuid2(): MySqlCuid2BuilderInitial<''>;
declare function cuid2<TName extends string>(name: TName): MySqlCuid2BuilderInitial<TName>;

export { MySqlCuid2, MySqlCuid2Builder, type MySqlCuid2BuilderInitial, cuid2 };
