import { Artifacts } from '../steps/BaseStep';
import { INameGiver } from './INameGiver';
import { Table } from './Table';
import { Condition, IStatementGiver, PrimitiveType, ValueLike } from '../models';
import { ComparisonOperator } from '../operators';
import { OrderByItemInfo } from '../orderBy';
import { BuilderData } from '../builder';
import { ItemInfo } from '../ItemInfo';
import { UpdateSetItemInfo } from '../UpdateSetItemInfo';
export type ColumnObj = {
    name: string;
};
export declare abstract class Column implements INameGiver, IStatementGiver {
    protected readonly data: ColumnObj;
    private mTable?;
    protected constructor(data: ColumnObj);
    set table(table: Table);
    get table(): Table;
    get name(): string;
    get fqName(): string;
    getDoubleQuotedName(): string;
    as(alias: string): ItemInfo;
    /** @deprecated */
    get asc(): OrderByItemInfo;
    get ASC(): OrderByItemInfo;
    /** @deprecated */
    get desc(): OrderByItemInfo;
    get DESC(): OrderByItemInfo;
    /** @deprecated */
    get nullsFirst(): OrderByItemInfo;
    get NULLS_FIRST(): OrderByItemInfo;
    /** @deprecated */
    get nullsLast(): OrderByItemInfo;
    get NULLS_LAST(): OrderByItemInfo;
    /** @deprecated */
    get ascNullsFirst(): OrderByItemInfo;
    get ASC_NULLS_FIRST(): OrderByItemInfo;
    /** @deprecated */
    get descNullsFirst(): OrderByItemInfo;
    get DESC_NULLS_FIRST(): OrderByItemInfo;
    /** @deprecated */
    get ascNullsLast(): OrderByItemInfo;
    get ASC_NULLS_LAST(): OrderByItemInfo;
    /** @deprecated */
    get descNullsLast(): OrderByItemInfo;
    get DESC_NULLS_LAST(): OrderByItemInfo;
    /** @deprecated - since v0.15.0 use eqDEFAULT */
    get letDefault(): UpdateSetItemInfo;
    get eqDEFAULT(): UpdateSetItemInfo;
    getStmt(data: BuilderData, artifacts: Artifacts): string;
    abstract in(...values: ValueLike[]): Condition;
    abstract in$(...values: PrimitiveType[]): Condition;
    abstract notIn(...values: ValueLike[]): Condition;
    abstract notIn$(...values: PrimitiveType[]): Condition;
    protected static throwIfArrayIsEmpty(arr: ValueLike[], operator: ComparisonOperator): void;
}
