import type { ColumnBuilderBaseConfig } from "../../column-builder.js";
import type { ColumnBaseConfig } from "../../column.js";
import { entityKind } from "../../entity.js";
import type { AnyMsSqlTable } from "../table.js";
import { type Writable } from "../../utils.js";
import { MsSqlColumn, MsSqlColumnBuilder } from "./common.js";
export type MsSqlTextBuilderInitial<TName extends string, TEnum extends [string, ...string[]]> = MsSqlTextBuilder<{
    name: TName;
    dataType: 'string';
    columnType: 'MsSqlText';
    data: TEnum[number];
    driverParam: string;
    enumValues: TEnum;
    generated: undefined;
}>;
export declare class MsSqlTextBuilder<T extends ColumnBuilderBaseConfig<'string', 'MsSqlText'>> extends MsSqlColumnBuilder<T, {
    enumValues: T['enumValues'];
    nonUnicode: boolean;
}> {
    static readonly [entityKind]: string;
    constructor(name: T['name'], config: MsSqlTextConfig<T['enumValues']> & {
        nonUnicode: boolean;
    });
}
export declare class MsSqlText<T extends ColumnBaseConfig<'string', 'MsSqlText'>> extends MsSqlColumn<T, {
    enumValues: T['enumValues'];
    nonUnicode: boolean;
}> {
    static readonly [entityKind]: string;
    readonly enumValues: T["enumValues"];
    readonly nonUnicode: boolean;
    constructor(table: AnyMsSqlTable<{
        name: T['tableName'];
    }>, config: MsSqlTextBuilder<T>['config']);
    getSQLType(): string;
}
export type MsSqlTextConfig<TEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined> = {
    enum?: TEnum;
};
export declare function text(): MsSqlTextBuilderInitial<'', [string, ...string[]]>;
export declare function text<U extends string, T extends Readonly<[U, ...U[]]>>(config?: MsSqlTextConfig<T | Writable<T>>): MsSqlTextBuilderInitial<'', Writable<T>>;
export declare function text<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(name: TName, config?: MsSqlTextConfig<T | Writable<T>>): MsSqlTextBuilderInitial<TName, Writable<T>>;
export declare function ntext(): MsSqlTextBuilderInitial<'', [string, ...string[]]>;
export declare function ntext<U extends string, T extends Readonly<[U, ...U[]]>>(config?: MsSqlTextConfig<T | Writable<T>>): MsSqlTextBuilderInitial<'', Writable<T>>;
export declare function ntext<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(name: TName, config?: MsSqlTextConfig<T | Writable<T>>): MsSqlTextBuilderInitial<TName, Writable<T>>;
