import { ItemInfo } from '../../ItemInfo';
import { ReturningItem } from '../../ReturningItemInfo';
import { ReturningStep } from '../ReturningStep';
import { Column } from '../../database';
import { Condition, PrimitiveType } from '../../models';
import { LogicalOperator } from '../../operators';
import { OrderByArgsElement } from '../../orderBy';
import { HavingStep } from './HavingStep';
import { OrderByStep } from './OrderByStep';
import { Artifacts, BaseStep } from '../BaseStep';
export declare class GroupByStep extends BaseStep {
    protected readonly groupByItems: ReadonlyArray<Column>;
    constructor(prevStep: BaseStep, groupByItems: ReadonlyArray<Column>);
    getStepArtifacts(): Artifacts;
    getStepStatement(artifacts?: Artifacts): string;
    having(condition: Condition): HavingStep;
    having(left: Condition, operator: LogicalOperator, right: Condition): HavingStep;
    having(left: Condition, operator1: LogicalOperator, middle: Condition, operator2: LogicalOperator, right: Condition): HavingStep;
    orderBy(...orderByItems: OrderByArgsElement[]): OrderByStep;
    returning(...items: (ItemInfo | ReturningItem | PrimitiveType)[]): ReturningStep;
}
