/**
 * A type of a value in GROQ.
 */
export declare type GroqValueName = 'null' | 'boolean' | 'number' | 'string' | 'array' | 'object' | 'range' | 'pair' | 'path';
/**
 * Returns the type of the value.
 */
export declare function getType(data: any): GroqValueName;
/**
 * The result of an expression.
 */
export declare type Value = StaticValue | StreamValue | MapperValue;
export declare class StaticValue<P = any> {
    private data;
    constructor(data: P);
    getType(): GroqValueName;
    get(): Promise<P>;
    [Symbol.asyncIterator](): Generator<StaticValue<any>, void, unknown>;
    getBoolean(): boolean;
}
/**
 * A StreamValue accepts a generator which yields values.
 */
export declare class StreamValue {
    private generator;
    private ticker;
    private isDone;
    private data;
    constructor(generator: () => AsyncGenerator<Value, void, unknown>);
    getType(): string;
    get(): Promise<any[]>;
    [Symbol.asyncIterator](): AsyncGenerator<any, void, unknown>;
    getBoolean(): boolean;
    _nextTick(): Promise<void>;
}
export declare class MapperValue {
    value: Value;
    constructor(value: Value);
    getType(): string;
    get(): Promise<any>;
    [Symbol.asyncIterator](): any;
    getBoolean(): boolean;
}
export declare class Range {
    static isConstructible(leftType: string, rightType: string): boolean;
    private left;
    private right;
    private exclusive;
    constructor(left: string | number, right: string | number, exclusive: boolean);
    isExclusive(): boolean;
    toJSON(): (string | number)[];
}
export declare class Pair {
    private first;
    private second;
    constructor(first: any, second: any);
    toJSON(): any[];
}
export declare class Path {
    private pattern;
    private patternRe;
    constructor(pattern: string);
    matches(str: string): boolean;
    toJSON(): string;
}
export declare function fromNumber(num: number): any;
export declare function fromJS(val: any): any;
export declare const NULL_VALUE: StaticValue<any>;
export declare const TRUE_VALUE: StaticValue<boolean>;
export declare const FALSE_VALUE: StaticValue<boolean>;
