import type { StatementKind, TSTypeKind } from 'ast-types/lib/gen/kinds';
import * as graphql from 'graphql';
import * as recast from 'recast';
import { type Config } from '.';
import { TypeWrapper } from './graphql';
export declare function unwrappedTsTypeReference(config: Config, filepath: string, missingScalars: Set<string>, { type, wrappers, }: {
    type: graphql.GraphQLNamedType;
    wrappers: TypeWrapper[];
}, body: StatementKind[]): TSTypeKind;
export declare function tsTypeReference(config: Config, filepath: string, missingScalars: Set<string>, definition: {
    type: graphql.GraphQLScalarType | graphql.GraphQLInputType | graphql.GraphQLNamedType | graphql.TypeNode;
}, body: StatementKind[]): TSTypeKind;
export declare function enumReference(config: Config, body: StatementKind[], name: string): recast.types.namedTypes.TSTypeReference;
export declare function readonlyProperty(prop: recast.types.namedTypes.TSPropertySignature, enable?: boolean): recast.types.namedTypes.TSPropertySignature;
export declare function nullableField(inner: TSTypeKind, input?: boolean): recast.types.namedTypes.TSUnionType;
export declare function scalarPropertyValue(config: Config, filepath: string, missingScalars: Set<string>, target: graphql.GraphQLNamedType, body: StatementKind[], field: {
    parent: string;
    field: string;
} | null): TSTypeKind;
