import { DocumentNode, FieldDefinitionNode, DirectiveDefinitionNode, DirectiveNode, FieldNode, InlineFragmentNode } from 'graphql'; export declare type Maybe = null | undefined | T; export declare type ServiceName = string | null; export declare type DefaultRootOperationTypeName = 'Query' | 'Mutation' | 'Subscription'; export interface ExternalFieldDefinition { field: FieldDefinitionNode; parentTypeName: string; serviceName: string; } export interface ServiceNameToKeyDirectivesMap { [serviceName: string]: FieldSet[] | undefined; } export declare type DirectiveUsages = Map; export interface FederationType { serviceName?: ServiceName; keys?: ServiceNameToKeyDirectivesMap; externals?: { [serviceName: string]: ExternalFieldDefinition[]; }; isValueType?: boolean; directiveUsages?: DirectiveUsages; } export declare type FieldSet = readonly (FieldNode | InlineFragmentNode)[]; export interface FederationField { serviceName?: ServiceName; requires?: FieldSet; provides?: FieldSet; belongsToValueType?: boolean; directiveUsages?: DirectiveUsages; } export interface FederationDirective { directiveDefinitions: { [serviceName: string]: DirectiveDefinitionNode; }; } export interface ServiceDefinition { typeDefs: DocumentNode; name: string; url?: string; } declare module 'graphql/language/ast' { interface UnionTypeDefinitionNode { serviceName?: string | null; } interface UnionTypeExtensionNode { serviceName?: string | null; } interface EnumTypeDefinitionNode { serviceName?: string | null; } interface EnumTypeExtensionNode { serviceName?: string | null; } interface ScalarTypeDefinitionNode { serviceName?: string | null; } interface ScalarTypeExtensionNode { serviceName?: string | null; } interface ObjectTypeDefinitionNode { serviceName?: string | null; } interface ObjectTypeExtensionNode { serviceName?: string | null; } interface InterfaceTypeDefinitionNode { serviceName?: string | null; } interface InterfaceTypeExtensionNode { serviceName?: string | null; } interface InputObjectTypeDefinitionNode { serviceName?: string | null; } interface InputObjectTypeExtensionNode { serviceName?: string | null; } } //# sourceMappingURL=types.d.ts.map