import { FieldNode, FragmentDefinitionNode, GraphQLAbstractType, GraphQLCompositeType, GraphQLField, GraphQLObjectType, GraphQLSchema, OperationDefinitionNode, SelectionSetNode, VariableDefinitionNode } from "graphql";
import { FragmentMap } from "./buildQueryPlan";
import { FieldSet } from "./FieldSet";
import { Scope } from "./Scope";
export declare class QueryPlanningContext {
    readonly schema: GraphQLSchema;
    readonly operation: OperationDefinitionNode;
    readonly fragments: FragmentMap;
    readonly autoFragmentization: boolean;
    internalFragments: Map<string, {
        name: string;
        definition: FragmentDefinitionNode;
        selectionSet: SelectionSetNode;
    }>;
    internalFragmentCount: number;
    protected variableDefinitions: {
        [name: string]: VariableDefinitionNode;
    };
    constructor(schema: GraphQLSchema, operation: OperationDefinitionNode, fragments: FragmentMap, autoFragmentization: boolean);
    getFieldDef(parentType: GraphQLCompositeType, fieldNode: FieldNode): GraphQLField<any, any, {
        [key: string]: any;
    }>;
    getPossibleTypes(type: GraphQLAbstractType | GraphQLObjectType): ReadonlyArray<GraphQLObjectType>;
    getVariableUsages(selectionSet: SelectionSetNode, fragments: Set<FragmentDefinitionNode>): {
        [name: string]: VariableDefinitionNode;
    };
    getBaseService(parentType: GraphQLObjectType): string | undefined;
    getOwningService(parentType: GraphQLObjectType, fieldDef: GraphQLField<any, any>): string | undefined;
    getKeyFields(scope: Scope, serviceName: string, fetchAll?: boolean): FieldSet;
    getRequiredFields(scope: Scope, fieldDef: GraphQLField<any, any>, serviceName: string): FieldSet;
    getProvidedFields(fieldDef: GraphQLField<any, any>, serviceName: string): FieldSet;
    private getFragmentCondition;
    private scopeForFragment;
    collectFields(scope: Scope, selectionSet: SelectionSetNode, fields?: FieldSet): FieldSet;
}
//# sourceMappingURL=QueryPlanningContext.d.ts.map