import { EdgeBuilder, BuildEdgeArgs, BuilderRawProjection as RawProjection, NameGenerators as EdgeNameGenerators } from '../edge'; import { ArgsBuilderData } from '../args'; import { BuildNameGen } from '../utils'; import { Ref } from '../ref'; import { CombinedQuery } from './combined-query'; declare type QueryProjection = EdgeBuilder | RawProjection; export declare type BuildQueryNameGen = BuildNameGen<{ _queryNameGenBrand: symbol; }>; export declare type QueryNameGen = ReturnType; export declare const queryNameGen: BuildQueryNameGen; export interface NameGenerators extends EdgeNameGenerators { query?: QueryNameGen; } export interface BuildQueryArgs extends BuildEdgeArgs { nameGen?: NameGenerators; } export declare const defaultNameGen: () => NameGenerators; export declare class QueryBuilder extends EdgeBuilder { constructor(type?: string, name?: string); /** set query name */ name(name: string): this; func(func: ArgsBuilderData['func']): this; ignoreReflex(): this; project(projection: QueryProjection | ((self: QueryBuilder) => QueryProjection), overwrite?: boolean): this; ref(...path: string[]): Ref; buildQueryArgs(nameGen?: NameGenerators): { name: string; args: import("../args").Args; edges: {}; varName: string; directives: {}; }; build(): CombinedQuery; } export {};