import { AggregateFunction } from '../../AggregateFunction';
import { Binder } from '../../binder';
import { Column } from '../../database';
import { ItemInfo } from '../../ItemInfo';
import { Expression, PrimitiveType } from '../../models';
import { ReturningItem } from '../../ReturningItemInfo';
import { All, Asterisk, Distinct } from '../../singletoneConstants';
import { Artifacts, BaseStep } from '../BaseStep';
import { FromItems, SelectFromStep } from './SelectFromStep';
import { ReturningStep } from '../ReturningStep';
import { TableAsterisk } from '../../TableAsterisk';
export type ColumnLike = Column | Expression;
export type SelectItem = ColumnLike | AggregateFunction | Binder | Asterisk | TableAsterisk;
export declare class SelectStep extends BaseStep {
    readonly items: (ItemInfo | SelectItem | PrimitiveType)[];
    private readonly distinct?;
    constructor(prevStep: BaseStep, items: (Distinct | All | ItemInfo | SelectItem | PrimitiveType)[]);
    getStepStatement(artifacts?: Artifacts): string;
    getStepArtifacts(): Artifacts;
    getAliases(): string[];
    from(...tables: FromItems): SelectFromStep;
    returning(...items: (ItemInfo | ReturningItem | PrimitiveType)[]): ReturningStep;
    private getColumns;
    private isSelectItemInfo;
    private static throwIfMoreThanOneDistinctOrAll;
}
