import { Field } from './field';
import { Expression } from './expression';
import { Value } from './value';
import { Context } from './context';
import { DisplayField } from './display_field';
import { Dimension } from './dimension';
import { Sort } from './sort';
import { SegmentedQuery } from './segmented_query';
import { Operator } from './operator';
export declare class Query {
    expressions: Expression[];
    context: Context;
    fields: DisplayField[];
    groupBy: Dimension[];
    sort?: Sort;
    aggregate: DisplayField[];
    isSubquery: boolean;
    constructor(options: Partial<Query>);
    static compile(options: Partial<Query>): Query;
    clone(): Query;
    containsField(field: Field): boolean;
    containsFieldWithValue(field: Field, value: Value): boolean;
    getValue(field: Field, ...operators: Operator[]): Value<import("./value").ValueType, unknown> | undefined;
    unsetValue(field: Field, operator: Operator): this;
    setValue(field: Field, operator: Operator, value: Value): this;
    toGraphQL(): import("./compile_output").CompileOutput;
    segment(): SegmentedQuery[] | void;
}
