import { GraphQLSchema, GraphQLError, TypeDefinitionNode, DirectiveDefinitionNode, TypeExtensionNode } from 'graphql'; import { CompositionResult } from './utils'; import { ServiceDefinition, ExternalFieldDefinition } from './types'; import type { ServiceNameToKeyDirectivesMap } from '../composition/types'; import { DirectiveMetadata } from './DirectiveMetadata'; interface TypeDefinitionsMap { [name: string]: TypeDefinitionNode[]; } interface TypeExtensionsMap { [name: string]: TypeExtensionNode[]; } interface DirectiveDefinitionsMap { [name: string]: { [serviceName: string]: DirectiveDefinitionNode; }; } interface TypeToServiceMap { [typeName: string]: { owningService?: string; extensionFieldsToOwningServiceMap: { [fieldName: string]: string; }; }; } export interface KeyDirectivesMap { [typeName: string]: ServiceNameToKeyDirectivesMap; } declare type ValueTypes = Set; export declare function buildMapsFromServiceList(serviceList: ServiceDefinition[]): { typeToServiceMap: TypeToServiceMap; typeDefinitionsMap: TypeDefinitionsMap; typeExtensionsMap: TypeExtensionsMap; directiveDefinitionsMap: DirectiveDefinitionsMap; externalFields: ExternalFieldDefinition[]; keyDirectivesMap: KeyDirectivesMap; valueTypes: ValueTypes; directiveMetadata: DirectiveMetadata; }; export declare function buildSchemaFromDefinitionsAndExtensions({ typeDefinitionsMap, typeExtensionsMap, directiveDefinitionsMap, directiveMetadata, serviceList, }: { typeDefinitionsMap: TypeDefinitionsMap; typeExtensionsMap: TypeExtensionsMap; directiveDefinitionsMap: DirectiveDefinitionsMap; directiveMetadata: DirectiveMetadata; serviceList: ServiceDefinition[]; }): { schema: GraphQLSchema; errors: GraphQLError[]; }; export declare function addFederationMetadataToSchemaNodes({ schema, typeToServiceMap, externalFields, keyDirectivesMap, valueTypes, directiveDefinitionsMap, directiveMetadata, }: { schema: GraphQLSchema; typeToServiceMap: TypeToServiceMap; externalFields: ExternalFieldDefinition[]; keyDirectivesMap: KeyDirectivesMap; valueTypes: ValueTypes; directiveDefinitionsMap: DirectiveDefinitionsMap; directiveMetadata: DirectiveMetadata; }): void; export declare function composeServices(services: ServiceDefinition[]): CompositionResult; export {}; //# sourceMappingURL=compose.d.ts.map