import type { Kind } from './kinds'; import type { Source } from './source'; import type { TokenKind } from './tokenKind'; /** * Contains a range of UTF-8 character offsets and token references that * identify the region of the source from which the AST derived. */ export declare class Location { /** * The character offset at which this Node begins. */ readonly start: number; /** * The character offset at which this Node ends. */ readonly end: number; /** * The Token at which this Node begins. */ readonly startToken: Token; /** * The Token at which this Node ends. */ readonly endToken: Token; /** * The Source document the AST represents. */ readonly source: Source; constructor(startToken: Token, endToken: Token, source: Source); get [Symbol.toStringTag](): string; toJSON(): { start: number; end: number; }; } /** * Represents a range of characters represented by a lexical token * within a Source. */ export declare class Token { /** * The kind of Token. */ readonly kind: TokenKind; /** * The character offset at which this Node begins. */ readonly start: number; /** * The character offset at which this Node ends. */ readonly end: number; /** * The 1-indexed line number on which this Token appears. */ readonly line: number; /** * The 1-indexed column number at which this Token begins. */ readonly column: number; /** * For non-punctuation tokens, represents the interpreted value of the token. * * Note: is undefined for punctuation tokens, but typed as string for * convenience in the parser. */ readonly value: string; /** * Tokens exist as nodes in a double-linked-list amongst all tokens * including ignored tokens. is always the first node and * the last. */ readonly prev: Token | null; readonly next: Token | null; constructor( kind: TokenKind, start: number, end: number, line: number, column: number, value?: string, ); get [Symbol.toStringTag](): string; toJSON(): { kind: TokenKind; value?: string; line: number; column: number; }; } /** * The list of all possible AST node types. */ export declare type ASTNode = | NameNode | DocumentNode | OperationDefinitionNode | VariableDefinitionNode | VariableNode | SelectionSetNode | FieldNode | ArgumentNode | FragmentSpreadNode | InlineFragmentNode | FragmentDefinitionNode | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | ListValueNode | ObjectValueNode | ObjectFieldNode | DirectiveNode | NamedTypeNode | ListTypeNode | NonNullTypeNode | SchemaDefinitionNode | OperationTypeDefinitionNode | ScalarTypeDefinitionNode | ObjectTypeDefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | InterfaceTypeDefinitionNode | UnionTypeDefinitionNode | EnumTypeDefinitionNode | EnumValueDefinitionNode | InputObjectTypeDefinitionNode | DirectiveDefinitionNode | SchemaExtensionNode | ScalarTypeExtensionNode | ObjectTypeExtensionNode | InterfaceTypeExtensionNode | UnionTypeExtensionNode | EnumTypeExtensionNode | InputObjectTypeExtensionNode; /** * Utility type listing all nodes indexed by their kind. */ export declare type ASTKindToNode = { [NodeT in ASTNode as NodeT['kind']]: NodeT; }; /** * @internal */ export declare const QueryDocumentKeys: { [NodeT in ASTNode as NodeT['kind']]: ReadonlyArray; }; /** * @internal */ export declare function isNode(maybeNode: any): maybeNode is ASTNode; /** Name */ export interface NameNode { readonly kind: Kind.NAME; readonly loc?: Location; readonly value: string; } /** Document */ export interface DocumentNode { readonly kind: Kind.DOCUMENT; readonly loc?: Location; readonly definitions: ReadonlyArray; } export declare type DefinitionNode = | ExecutableDefinitionNode | TypeSystemDefinitionNode | TypeSystemExtensionNode; export declare type ExecutableDefinitionNode = | OperationDefinitionNode | FragmentDefinitionNode; export interface OperationDefinitionNode { readonly kind: Kind.OPERATION_DEFINITION; readonly loc?: Location; readonly operation: OperationTypeNode; readonly name?: NameNode; readonly variableDefinitions?: ReadonlyArray; readonly directives?: ReadonlyArray; readonly selectionSet: SelectionSetNode; } export declare enum OperationTypeNode { QUERY = 'query', MUTATION = 'mutation', SUBSCRIPTION = 'subscription', } export interface VariableDefinitionNode { readonly kind: Kind.VARIABLE_DEFINITION; readonly loc?: Location; readonly variable: VariableNode; readonly type: TypeNode; readonly defaultValue?: ConstValueNode; readonly directives?: ReadonlyArray; } export interface VariableNode { readonly kind: Kind.VARIABLE; readonly loc?: Location; readonly name: NameNode; } export interface SelectionSetNode { kind: Kind.SELECTION_SET; loc?: Location; selections: ReadonlyArray; } export declare type SelectionNode = | FieldNode | FragmentSpreadNode | InlineFragmentNode; export interface FieldNode { readonly kind: Kind.FIELD; readonly loc?: Location; readonly alias?: NameNode; readonly name: NameNode; readonly arguments?: ReadonlyArray; readonly directives?: ReadonlyArray; readonly selectionSet?: SelectionSetNode; } export interface ArgumentNode { readonly kind: Kind.ARGUMENT; readonly loc?: Location; readonly name: NameNode; readonly value: ValueNode; } export interface ConstArgumentNode { readonly kind: Kind.ARGUMENT; readonly loc?: Location; readonly name: NameNode; readonly value: ConstValueNode; } /** Fragments */ export interface FragmentSpreadNode { readonly kind: Kind.FRAGMENT_SPREAD; readonly loc?: Location; readonly name: NameNode; readonly directives?: ReadonlyArray; } export interface InlineFragmentNode { readonly kind: Kind.INLINE_FRAGMENT; readonly loc?: Location; readonly typeCondition?: NamedTypeNode; readonly directives?: ReadonlyArray; readonly selectionSet: SelectionSetNode; } export interface FragmentDefinitionNode { readonly kind: Kind.FRAGMENT_DEFINITION; readonly loc?: Location; readonly name: NameNode; /** @deprecated variableDefinitions will be removed in v17.0.0 */ readonly variableDefinitions?: ReadonlyArray; readonly typeCondition: NamedTypeNode; readonly directives?: ReadonlyArray; readonly selectionSet: SelectionSetNode; } /** Values */ export declare type ValueNode = | VariableNode | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | ListValueNode | ObjectValueNode; export declare type ConstValueNode = | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | ConstListValueNode | ConstObjectValueNode; export interface IntValueNode { readonly kind: Kind.INT; readonly loc?: Location; readonly value: string; } export interface FloatValueNode { readonly kind: Kind.FLOAT; readonly loc?: Location; readonly value: string; } export interface StringValueNode { readonly kind: Kind.STRING; readonly loc?: Location; readonly value: string; readonly block?: boolean; } export interface BooleanValueNode { readonly kind: Kind.BOOLEAN; readonly loc?: Location; readonly value: boolean; } export interface NullValueNode { readonly kind: Kind.NULL; readonly loc?: Location; } export interface EnumValueNode { readonly kind: Kind.ENUM; readonly loc?: Location; readonly value: string; } export interface ListValueNode { readonly kind: Kind.LIST; readonly loc?: Location; readonly values: ReadonlyArray; } export interface ConstListValueNode { readonly kind: Kind.LIST; readonly loc?: Location; readonly values: ReadonlyArray; } export interface ObjectValueNode { readonly kind: Kind.OBJECT; readonly loc?: Location; readonly fields: ReadonlyArray; } export interface ConstObjectValueNode { readonly kind: Kind.OBJECT; readonly loc?: Location; readonly fields: ReadonlyArray; } export interface ObjectFieldNode { readonly kind: Kind.OBJECT_FIELD; readonly loc?: Location; readonly name: NameNode; readonly value: ValueNode; } export interface ConstObjectFieldNode { readonly kind: Kind.OBJECT_FIELD; readonly loc?: Location; readonly name: NameNode; readonly value: ConstValueNode; } /** Directives */ export interface DirectiveNode { readonly kind: Kind.DIRECTIVE; readonly loc?: Location; readonly name: NameNode; readonly arguments?: ReadonlyArray; } export interface ConstDirectiveNode { readonly kind: Kind.DIRECTIVE; readonly loc?: Location; readonly name: NameNode; readonly arguments?: ReadonlyArray; } /** Type Reference */ export declare type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode; export interface NamedTypeNode { readonly kind: Kind.NAMED_TYPE; readonly loc?: Location; readonly name: NameNode; } export interface ListTypeNode { readonly kind: Kind.LIST_TYPE; readonly loc?: Location; readonly type: TypeNode; } export interface NonNullTypeNode { readonly kind: Kind.NON_NULL_TYPE; readonly loc?: Location; readonly type: NamedTypeNode | ListTypeNode; } /** Type System Definition */ export declare type TypeSystemDefinitionNode = | SchemaDefinitionNode | TypeDefinitionNode | DirectiveDefinitionNode; export interface SchemaDefinitionNode { readonly kind: Kind.SCHEMA_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly directives?: ReadonlyArray; readonly operationTypes: ReadonlyArray; } export interface OperationTypeDefinitionNode { readonly kind: Kind.OPERATION_TYPE_DEFINITION; readonly loc?: Location; readonly operation: OperationTypeNode; readonly type: NamedTypeNode; } /** Type Definition */ export declare type TypeDefinitionNode = | ScalarTypeDefinitionNode | ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode | UnionTypeDefinitionNode | EnumTypeDefinitionNode | InputObjectTypeDefinitionNode; export interface ScalarTypeDefinitionNode { readonly kind: Kind.SCALAR_TYPE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly directives?: ReadonlyArray; } export interface ObjectTypeDefinitionNode { readonly kind: Kind.OBJECT_TYPE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly interfaces?: ReadonlyArray; readonly directives?: ReadonlyArray; readonly fields?: ReadonlyArray; } export interface FieldDefinitionNode { readonly kind: Kind.FIELD_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly arguments?: ReadonlyArray; readonly type: TypeNode; readonly directives?: ReadonlyArray; } export interface InputValueDefinitionNode { readonly kind: Kind.INPUT_VALUE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly type: TypeNode; readonly defaultValue?: ConstValueNode; readonly directives?: ReadonlyArray; } export interface InterfaceTypeDefinitionNode { readonly kind: Kind.INTERFACE_TYPE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly interfaces?: ReadonlyArray; readonly directives?: ReadonlyArray; readonly fields?: ReadonlyArray; } export interface UnionTypeDefinitionNode { readonly kind: Kind.UNION_TYPE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly directives?: ReadonlyArray; readonly types?: ReadonlyArray; } export interface EnumTypeDefinitionNode { readonly kind: Kind.ENUM_TYPE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly directives?: ReadonlyArray; readonly values?: ReadonlyArray; } export interface EnumValueDefinitionNode { readonly kind: Kind.ENUM_VALUE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly directives?: ReadonlyArray; } export interface InputObjectTypeDefinitionNode { readonly kind: Kind.INPUT_OBJECT_TYPE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly directives?: ReadonlyArray; readonly fields?: ReadonlyArray; } /** Directive Definitions */ export interface DirectiveDefinitionNode { readonly kind: Kind.DIRECTIVE_DEFINITION; readonly loc?: Location; readonly description?: StringValueNode; readonly name: NameNode; readonly arguments?: ReadonlyArray; readonly repeatable: boolean; readonly locations: ReadonlyArray; } /** Type System Extensions */ export declare type TypeSystemExtensionNode = | SchemaExtensionNode | TypeExtensionNode; export interface SchemaExtensionNode { readonly kind: Kind.SCHEMA_EXTENSION; readonly loc?: Location; readonly directives?: ReadonlyArray; readonly operationTypes?: ReadonlyArray; } /** Type Extensions */ export declare type TypeExtensionNode = | ScalarTypeExtensionNode | ObjectTypeExtensionNode | InterfaceTypeExtensionNode | UnionTypeExtensionNode | EnumTypeExtensionNode | InputObjectTypeExtensionNode; export interface ScalarTypeExtensionNode { readonly kind: Kind.SCALAR_TYPE_EXTENSION; readonly loc?: Location; readonly name: NameNode; readonly directives?: ReadonlyArray; } export interface ObjectTypeExtensionNode { readonly kind: Kind.OBJECT_TYPE_EXTENSION; readonly loc?: Location; readonly name: NameNode; readonly interfaces?: ReadonlyArray; readonly directives?: ReadonlyArray; readonly fields?: ReadonlyArray; } export interface InterfaceTypeExtensionNode { readonly kind: Kind.INTERFACE_TYPE_EXTENSION; readonly loc?: Location; readonly name: NameNode; readonly interfaces?: ReadonlyArray; readonly directives?: ReadonlyArray; readonly fields?: ReadonlyArray; } export interface UnionTypeExtensionNode { readonly kind: Kind.UNION_TYPE_EXTENSION; readonly loc?: Location; readonly name: NameNode; readonly directives?: ReadonlyArray; readonly types?: ReadonlyArray; } export interface EnumTypeExtensionNode { readonly kind: Kind.ENUM_TYPE_EXTENSION; readonly loc?: Location; readonly name: NameNode; readonly directives?: ReadonlyArray; readonly values?: ReadonlyArray; } export interface InputObjectTypeExtensionNode { readonly kind: Kind.INPUT_OBJECT_TYPE_EXTENSION; readonly loc?: Location; readonly name: NameNode; readonly directives?: ReadonlyArray; readonly fields?: ReadonlyArray; }