import { OffsetStep } from './OffsetStep';
import { LimitStep } from './LimitStep';
import { OrderByStep } from './OrderByStep';
import { ConditionStep } from '../ConditionStep';
import { BaseStep, Parenthesis } from '../BaseStep';
import { Condition, PrimitiveType } from '../../models';
import { BooleanColumn, Column } from '../../database';
import { OrderByArgsElement } from '../../orderBy';
import { All } from '../../singletoneConstants';
import { GroupByStep } from './GroupByStep';
import { LogicalOperator } from '../../operators';
import { ItemInfo } from '../../ItemInfo';
import { ReturningItem } from '../../ReturningItemInfo';
import { ReturningStep } from '../ReturningStep';
declare abstract class SelectConditionStep extends ConditionStep {
    and(condition: Condition): SelectWhereAndStep;
    and(left: Condition, operator: LogicalOperator, right: Condition): SelectWhereAndStep;
    and(left: Condition, operator1: LogicalOperator, middle: Condition, operator2: LogicalOperator, right: Condition): SelectWhereAndStep;
    or(condition: Condition): SelectWhereOrStep;
    or(left: Condition, operator: LogicalOperator, right: Condition): SelectWhereOrStep;
    or(left: Condition, operator1: LogicalOperator, middle: Condition, operator2: LogicalOperator, right: Condition): SelectWhereOrStep;
    groupBy(...groupByItems: Column[]): GroupByStep;
    orderBy(...orderByItems: OrderByArgsElement[]): OrderByStep;
    limit(n: null | number | All): LimitStep;
    limit$(n: null | number): LimitStep;
    offset(n: number): OffsetStep;
    offset$(n: number): OffsetStep;
    returning(...items: (ItemInfo | ReturningItem | PrimitiveType)[]): ReturningStep;
}
export declare class SelectWhereStep extends SelectConditionStep {
    constructor(prevStep: BaseStep, whereParts: (LogicalOperator | Condition | Parenthesis | BooleanColumn)[]);
}
export declare class SelectWhereAndStep extends SelectConditionStep {
    constructor(prevStep: BaseStep, whereParts: (LogicalOperator | Condition | Parenthesis | BooleanColumn)[]);
}
export declare class SelectWhereOrStep extends SelectConditionStep {
    constructor(prevStep: BaseStep, whereParts: (LogicalOperator | Condition | Parenthesis | BooleanColumn)[]);
}
export {};
