import { SubschemaConfig } from '@graphql-tools/delegate'; import { GraphQLSchema, GraphQLDirective } from 'graphql'; interface PropertyTree { [property: string]: null | PropertyTree; } interface ParsedMergeArgsExpr { args: Record; usedProperties: PropertyTree; mappingInstructions?: Array; expansions?: Array; } interface MappingInstruction { destinationPath: Array; sourcePath: Array; } interface Expansion { valuePath: Array; value: any; mappingInstructions: Array; } type VariablePaths = Record>; interface StitchingDirectivesOptions { keyDirectiveName?: string; computedDirectiveName?: string; mergeDirectiveName?: string; canonicalDirectiveName?: string; pathToDirectivesInExtensions?: Array; } type Complete = { [P in keyof Required]: Exclude extends Required> ? T[P] : T[P] | undefined, undefined>; }; type StitchingDirectivesFinalOptions = Complete; interface MergedTypeResolverInfo extends ParsedMergeArgsExpr { fieldName: string; returnsList: boolean; } interface StitchingDirectivesResult { keyDirectiveTypeDefs: string; computedDirectiveTypeDefs: string; mergeDirectiveTypeDefs: string; canonicalDirectiveTypeDefs: string; stitchingDirectivesTypeDefs: string; allStitchingDirectivesTypeDefs: string; stitchingDirectivesValidator: (schema: GraphQLSchema) => GraphQLSchema; stitchingDirectivesTransformer: (subschemaConfig: SubschemaConfig) => SubschemaConfig; keyDirective: GraphQLDirective; computedDirective: GraphQLDirective; mergeDirective: GraphQLDirective; canonicalDirective: GraphQLDirective; allStitchingDirectives: Array; } declare function stitchingDirectives(options?: StitchingDirectivesOptions): StitchingDirectivesResult; declare function federationToStitchingSDL(federationSDL: string, stitchingConfig?: StitchingDirectivesResult): string; export { type Expansion, type MappingInstruction, type MergedTypeResolverInfo, type ParsedMergeArgsExpr, type PropertyTree, type StitchingDirectivesFinalOptions, type StitchingDirectivesOptions, type StitchingDirectivesResult, type VariablePaths, federationToStitchingSDL, stitchingDirectives };