import { FieldNode, GraphQLCompositeType, GraphQLField, SelectionSetNode, GraphQLObjectType } from 'graphql';
export interface Field<TParent extends GraphQLCompositeType = GraphQLCompositeType> {
    scope: Scope<TParent>;
    fieldNode: FieldNode;
    fieldDef: GraphQLField<any, any>;
}
export interface Scope<TParent extends GraphQLCompositeType> {
    parentType: TParent;
    possibleTypes: ReadonlyArray<GraphQLObjectType>;
    enclosingScope?: Scope<GraphQLCompositeType>;
}
export declare type FieldSet = Field[];
export declare function printFields(fields?: FieldSet): string;
export declare function matchesField(field: Field): (otherField: Field) => boolean;
export declare const groupByResponseName: (iterable: Iterable<Field<GraphQLCompositeType>>) => Map<string, Field<GraphQLCompositeType>[]>;
export declare const groupByParentType: (iterable: Iterable<Field<GraphQLCompositeType>>) => Map<GraphQLCompositeType, Field<GraphQLCompositeType>[]>;
export declare function selectionSetFromFieldSet(fields: FieldSet, parentType?: GraphQLCompositeType): SelectionSetNode;
//# sourceMappingURL=FieldSet.d.ts.map