import { GraphQLInputType, GraphQLOutputType, GraphQLList, GraphQLScalarType, GraphQLObjectType, GraphQLObjectTypeConfig, GraphQLUnionTypeConfig, GraphQLInputObjectType, GraphQLNonNull } from "graphql"; import { Dict, Maybe } from "./util-types"; export declare class TypeSpec { readonly name: string; readonly graphQLInputType: TGraphQLInputType; readonly graphQLOutputType: TGraphQLOutputType; constructor(name: string, graphQLInputType: TGraphQLInputType, graphQLOutputType: TGraphQLOutputType); get Type(): TBase; get GraphQLInputType(): TGraphQLInputType; get GraphQLOutputType(): TGraphQLOutputType; } export declare type AnyTypeSpec = TypeSpec; export declare class ScalarTypeSpec extends TypeSpec { readonly graphQLType: TGraphQLType; constructor(graphQLType: TGraphQLType); } export declare const wrapScalar: (scalar: TGraphQLType) => ScalarTypeSpec; declare class NonNullTypeSpec extends TypeSpec, GraphQLNonNull, GraphQLNonNull> { readonly wrapped: TypeSpec; constructor(wrapped: TypeSpec); } export declare const nonNull: (wrapped: TypeSpec) => NonNullTypeSpec; export declare const string: ScalarTypeSpec; export declare const integer: ScalarTypeSpec; export declare const float: ScalarTypeSpec; export declare const number: ScalarTypeSpec; export declare const boolean: ScalarTypeSpec, GraphQLScalarType>; export declare const isoDateStr: ScalarTypeSpec; export declare const isoTimeStr: ScalarTypeSpec; export declare const isoDateTimeStr: ScalarTypeSpec; export declare const isoDate: ScalarTypeSpec, GraphQLScalarType>; export declare const isoTime: ScalarTypeSpec, GraphQLScalarType>; export declare const isoDateTime: ScalarTypeSpec, GraphQLScalarType>; export declare const stringId: ScalarTypeSpec; export declare const intId: ScalarTypeSpec; export declare type SourceFromTypeSpecMapping>> = { [Key in keyof TSpec]: TSpec[Key]["Type"]; }; export declare type ObjectTypeSpecConfig = Omit, "name" | "fields">; export declare class ObjectTypeSpec>, TSource = SourceFromTypeSpecMapping, TContext = any> extends TypeSpec> { readonly name: string; readonly fields: TSpecMapping; readonly config?: Pick, "description" | "extensions" | "astNode" | "extensionASTNodes" | "isTypeOf" | "interfaces"> | undefined; constructor(name: string, fields: TSpecMapping, config?: Pick, "description" | "extensions" | "astNode" | "extensionASTNodes" | "isTypeOf" | "interfaces"> | undefined); get Source(): TSource; get Context(): TContext; } export declare function object>, TSource = SourceFromTypeSpecMapping, TContext = any>(name: string, typeMapping: TSpecMapping): ObjectTypeSpec; export declare class ArrayTypeSpec> extends TypeSpec, GraphQLList> { readonly type: TSpec; constructor(type: TSpec); } export declare const array: >(type: TSpec) => ArrayTypeSpec; export declare type UnionTypeSpecConfig = Omit, "name" | "fields">; export declare class UnionTypeSpec> extends TypeSpec { readonly name: string; readonly types: TSpec[]; constructor(name: string, types: TSpec[]); } export declare const union: >(name: string, types: TSpec[]) => UnionTypeSpec; export declare class ObjIntersectionTypeSpec> extends TypeSpec { readonly name: string; readonly types: TSpec[]; constructor(name: string, types: TSpec[]); } export declare const intersection: , any>>(name: string, types: TSpec[]) => ObjIntersectionTypeSpec; export {};