/** @category Values */ import type { Maybe } from "../jsutils/Maybe.js"; import type { ConstValueNode, ValueNode } from "../language/ast.js"; import type { FragmentVariableValues } from "../execution/collectFields.js"; import type { VariableValues } from "../execution/values.js"; /** * Replaces any Variables found within an AST Value literal with literals * supplied from a map of variable values, or removed if no variable replacement * exists, returning a constant value. * * Used primarily to ensure only complete constant values are used during input * coercion of custom scalars which accept complex literals. * @param valueNode - Value AST node in which variables should be replaced. * @param variableValues - Operation variable values returned by getVariableValues. * @param fragmentVariableValues - Fragment variable values for the current fragment scope. * @returns A constant value AST with variables replaced. * @example * ```ts * import assert from 'node:assert'; * import { parse, parseValue, print } from 'graphql/language'; * import { getVariableValues } from 'graphql/execution'; * import { buildSchema, replaceVariables } from 'graphql/utilities'; * * const schema = buildSchema(` * type Query { * review(stars: Int = 5): String * } * `); * const document = parse('query ($stars: Int = 5) { review(stars: $stars) }'); * const operation = document.definitions[0]; * const result = getVariableValues(schema, operation.variableDefinitions, { * stars: 4, * }); * * assert('variableValues' in result); * * const literal = replaceVariables( * parseValue('{ stars: $stars, comment: $missing }'), * result.variableValues, * ); * * print(literal); // => '{ stars: 4 }' * ``` */ export declare function replaceVariables(valueNode: ValueNode, variableValues?: Maybe, fragmentVariableValues?: Maybe): ConstValueNode;