import { HasIsValue, ITableOrView } from "../utils/ITableOrView";
import type { Column, ColumnWithDefaultValue, ComputedColumn, OptionalColumn, PrimaryKeyAutogeneratedColumn, PrimaryKeyColumn, __ColumnPrivate } from "../utils/Column";
import type { TypeAdapter } from "../TypeAdapter";
import type { QueryColumns, SqlBuilder, ToSql } from "../sqlBuilders/SqlBuilder";
import { ValueType } from "../expressions/values";
import { ValueSourceImpl } from "./ValueSourceImpl";
import { isColumnObject, type } from "../utils/symbols";
export declare class ColumnImpl extends ValueSourceImpl implements Column, __ColumnPrivate, ToSql {
    [type]: 'column';
    [isColumnObject]: true;
    __name: string;
    __tableOrView: ITableOrView<any>;
    __hasDefault: boolean;
    __isPrimaryKey: boolean;
    __isAutogeneratedPrimaryKey: boolean;
    __isComputed: boolean;
    __sequenceName?: string;
    constructor(table: ITableOrView<any>, name: string, valueType: ValueType, valueTypeName: string, typeAdapter: TypeAdapter | undefined);
    __toSql(sqlBuilder: SqlBuilder, params: any[]): string;
    __toSqlForCondition(sqlBuilder: SqlBuilder, params: any[]): string;
    __asColumn(): this & Column;
    __asOptionalColumn(): this & OptionalColumn;
    __asColumnWithDefaultValue(): this & ColumnWithDefaultValue;
    __asOptionalColumnWithDefaultValue(): this & OptionalColumn & ColumnWithDefaultValue;
    __asAutogeneratedPrimaryKey(): this & ColumnWithDefaultValue & PrimaryKeyColumn & PrimaryKeyAutogeneratedColumn;
    __asAutogeneratedPrimaryKeyBySequence(sequenceName: string): this & ColumnWithDefaultValue & PrimaryKeyColumn & PrimaryKeyAutogeneratedColumn;
    __asPrimaryKey(): this & PrimaryKeyColumn;
    __asComputedColumn(): this & ComputedColumn;
    __asOptionalComputedColumn(): this & OptionalColumn & ComputedColumn;
    __registerTableOrView(sqlBuilder: HasIsValue, requiredTablesOrViews: Set<ITableOrView<any>>): void;
    __registerRequiredColumn(_sqlBuilder: HasIsValue, requiredColumns: Set<Column>, onlyForTablesOrViews: Set<ITableOrView<any>>): void;
    __getOldValues(sqlBuilder: HasIsValue): ITableOrView<any> | undefined;
    __getValuesForInsert(sqlBuilder: HasIsValue): ITableOrView<any> | undefined;
    __isAllowed(sqlBuilder: HasIsValue): boolean;
}
export declare function createColumnsFrom(sqlBuilder: HasIsValue, columns: QueryColumns, target: QueryColumns, table: ITableOrView<any>): void;
export declare function createColumnsFromInnerObject(sqlBuilder: HasIsValue, columns: QueryColumns, target: QueryColumns, table: ITableOrView<any>, prefix: string): void;
export declare function getInnerObjetRuleToApply(sqlBuilder: HasIsValue, columns: QueryColumns): 1 | 2 | 3 | 4;
