import Select from './nodes/Select';
import Sort from './nodes/Sort';
import Limit from './nodes/Limit';
import AbstractQueryNode from './nodes/AbstractQueryNode';
import GroupBy from './nodes/GroupBy';
declare type QueryProps = {
    select?: Select;
    sort?: Sort;
    limit?: Limit;
    query?: AbstractQueryNode;
    group?: GroupBy;
};
export default class Query {
    protected _selectNode: any;
    protected _sortNode: any;
    protected _limitNode: any;
    protected _queryNode: any;
    protected _groupNode: any;
    constructor(props?: QueryProps);
    setQuery(q: AbstractQueryNode): this;
    setSelect(s: Select): this;
    setSort(s: Sort): this;
    setLimit(l: Limit): this;
    setGroupBy(g: GroupBy): this;
    getNextLimit(initLimit?: number, initOffset?: number): this;
    get selectNode(): any;
    set selectNode(value: any);
    get sortNode(): any;
    set sortNode(value: any);
    get limitNode(): any;
    set limitNode(value: any);
    get queryNode(): any;
    set queryNode(value: any);
    get groupNode(): any;
    set groupNode(value: any);
    toString(): string;
}
export {};
