import { Expression } from './expression'; import { TableDefinition } from './table'; export interface ColumnDefinitionFormat { dataType: string; isNotNull: boolean; isPrimaryKey: boolean; defaultExpression?: string; checkExpression?: string; isUnique: boolean; referencesTable?: string; referencesSelf?: boolean; referencesColumn?: string; enumValues?: string[]; } export interface ColumnDefinition { notNull(): ColumnDefinition; primaryKey(): ColumnDefinition; default(expression: string): ColumnDefinition; check(expression: string): ColumnDefinition; unique(): ColumnDefinition; references, ColumnName extends T extends TableDefinition ? keyof Columns : never>(table: T, columnName: ColumnName): ColumnDefinition; referencesSelf(columnName: string): ColumnDefinition; } export declare const makeColumnDefinition: (dataType: string, enumValues?: string[] | undefined) => ColumnDefinition; export declare class ColumnSet { private _columnSetBrand; } export declare class Column extends Expression { private readonly columnName; private readonly tableName; private readonly originalColumnName; private _columnBrand; constructor(columnName: Name, tableName: TableName, originalColumnName: string | undefined); as(alias: AliasName): Column; }