import { ColumnBuilder } from "../../column-builder.js"; import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnBuilderRuntimeConfig, ColumnDataType, HasDefault, HasGenerated, IsAutoincrement } from "../../column-builder.js"; import type { ColumnBaseConfig } from "../../column.js"; import { Column } from "../../column.js"; import { entityKind } from "../../entity.js"; import type { UpdateDeleteAction } from "../foreign-keys.js"; import type { MySqlTable } from "../table.js"; import type { SQL } from "../../sql/sql.js"; import type { Update } from "../../utils.js"; export interface ReferenceConfig { ref: () => MySqlColumn; actions: { onUpdate?: UpdateDeleteAction; onDelete?: UpdateDeleteAction; }; } export interface MySqlColumnBuilderBase = ColumnBuilderBaseConfig, TTypeConfig extends object = object> extends ColumnBuilderBase { } export interface MySqlGeneratedColumnConfig { mode?: 'virtual' | 'stored'; } export declare abstract class MySqlColumnBuilder = ColumnBuilderBaseConfig & { data: any; }, TRuntimeConfig extends object = object, TTypeConfig extends object = object, TExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig> extends ColumnBuilder implements MySqlColumnBuilderBase { static readonly [entityKind]: string; private foreignKeyConfigs; references(ref: ReferenceConfig['ref'], actions?: ReferenceConfig['actions']): this; unique(name?: string): this; generatedAlwaysAs(as: SQL | T['data'] | (() => SQL), config?: MySqlGeneratedColumnConfig): HasGenerated; } export declare abstract class MySqlColumn = ColumnBaseConfig, TRuntimeConfig extends object = {}, TTypeConfig extends object = {}> extends Column { readonly table: MySqlTable; static readonly [entityKind]: string; constructor(table: MySqlTable, config: ColumnBuilderRuntimeConfig); } export type AnyMySqlColumn> = {}> = MySqlColumn, TPartial>>>; export interface MySqlColumnWithAutoIncrementConfig { autoIncrement: boolean; } export declare abstract class MySqlColumnBuilderWithAutoIncrement = ColumnBuilderBaseConfig, TRuntimeConfig extends object = object, TExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig> extends MySqlColumnBuilder { static readonly [entityKind]: string; constructor(name: NonNullable, dataType: T['dataType'], columnType: T['columnType']); autoincrement(): IsAutoincrement>; } export declare abstract class MySqlColumnWithAutoIncrement = ColumnBaseConfig, TRuntimeConfig extends object = object> extends MySqlColumn { static readonly [entityKind]: string; readonly autoIncrement: boolean; }