import { DirectiveDefinitionNode, EnumTypeDefinitionNode, EnumValueDefinitionNode, FieldDefinitionNode, GraphQLSchema, InputObjectTypeDefinitionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ListTypeNode, NamedTypeNode, NameNode, NonNullTypeNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, UnionTypeDefinitionNode, StringValueNode } from 'graphql'; import { BaseVisitor, ParsedConfig, RawConfig } from '@graphql-codegen/visitor-plugin-common'; import { EnumValuesMap, ScalarsMap, DeclarationKindConfig, DeclarationKind, ParsedEnumValuesMap } from '@graphql-codegen/visitor-plugin-common'; import { DeclarationBlockConfig } from '@graphql-codegen/visitor-plugin-common'; import { DeclarationBlock } from './utils'; import { OperationVariablesToObject } from '@graphql-codegen/visitor-plugin-common'; export interface ParsedTypesConfig extends ParsedConfig { enumValues: ParsedEnumValuesMap; declarationKind: DeclarationKindConfig; addUnderscoreToArgsType: boolean; } export interface RawTypesConfig extends RawConfig { /** * @name addUnderscoreToArgsType * @type boolean * @description Adds `_` to generated `Args` types in order to avoid duplicate identifiers. * * @example With Custom Values * ```yml * config: * addUnderscoreToArgsType: true * ``` * */ addUnderscoreToArgsType?: boolean; /** * @name enumValues * @type EnumValuesMap * @description Overrides the default value of enum values declared in your GraphQL schema. * You can also map the entire enum to an external type by providing a string that of `module#type`. * * @example With Custom Values * ```yml * config: * enumValues: * MyEnum: * A: 'foo' * ``` * * @example With External Enum * ```yml * config: * enumValues: * MyEnum: ./my-file#MyCustomEnum * ``` * * @example Import All Enums from a file * ```yml * config: * enumValues: ./my-file * ``` */ enumValues?: EnumValuesMap; /** * @name declarationKind * @type DeclarationKindConfig * @description Overrides the default output for various GraphQL elements. * * @example Override all declarations * ```yml * config: * declarationKind: 'interface' * ``` * * @example Override only specific declarations * ```yml * config: * declarationKind: * type: 'interface' * input: 'interface' * ``` */ declarationKind?: DeclarationKind | DeclarationKindConfig; } export declare class BaseTypesVisitor extends BaseVisitor { protected _schema: GraphQLSchema; protected _argumentsTransformer: OperationVariablesToObject; constructor(_schema: GraphQLSchema, rawConfig: TRawConfig, additionalConfig: TPluginConfig, defaultScalars?: ScalarsMap); readonly scalarsDefinition: string; setDeclarationBlockConfig(config: DeclarationBlockConfig): void; setArgumentsTransformer(argumentsTransfomer: OperationVariablesToObject): void; NonNullType(node: NonNullTypeNode): string; InputObjectTypeDefinition(node: InputObjectTypeDefinitionNode): string; InputValueDefinition(node: InputValueDefinitionNode): string; Name(node: NameNode): string; FieldDefinition(node: FieldDefinitionNode): string; UnionTypeDefinition(node: UnionTypeDefinitionNode, key: string | number, parent: any): string; getObjectTypeDeclarationBlock(node: ObjectTypeDefinitionNode, originalNode: ObjectTypeDefinitionNode): DeclarationBlock; ObjectTypeDefinition(node: ObjectTypeDefinitionNode, key: number | string, parent: any): string; getInterfaceTypeDeclarationBlock(node: InterfaceTypeDefinitionNode, originalNode: InterfaceTypeDefinitionNode): DeclarationBlock; InterfaceTypeDefinition(node: InterfaceTypeDefinitionNode, key: number | string, parent: any): string; ScalarTypeDefinition(node: ScalarTypeDefinitionNode): string; protected _buildEnumImport(identifier: string, source: string): string; getEnumsImports(): string[]; EnumTypeDefinition(node: EnumTypeDefinitionNode): string; StringValue(node: StringValueNode): string; protected buildEnumValuesBlock(typeName: string, values: ReadonlyArray): string; DirectiveDefinition(node: DirectiveDefinitionNode): string; protected buildArgumentsBlock(node: InterfaceTypeDefinitionNode | ObjectTypeDefinitionNode): string; protected _getScalar(name: string): string; protected _getTypeForNode(node: NamedTypeNode): string; NamedType(node: NamedTypeNode): string; ListType(node: ListTypeNode): string; SchemaDefinition(): any; protected wrapWithListType(str: string): string; }