import type { GQLSubscriptionAlgebra } from './algebra'; import type { AURItoFieldAlgebra, AURItoInputAlgebra, FieldAURIS, InputAURIS } from './HKT'; import type { TypeResolver } from './Resolver'; import type { _I, _O, ParseLiteralF, ScalarConfig, ScalarFunctions } from './Scalar'; import type { AnyObjectType, FieldRecord, InputRecord } from './types'; import type { __A, __E, __R } from './util'; import type { Compute } from '@principia/base/util/compute'; import type { _A, _E, _R, UnionToIntersection } from '@principia/base/util/types'; import type { Schema } from '@principia/schema'; import type { CoreURIS } from '@principia/schema/Modules'; import * as Sy from '@principia/base/Sync'; import { GQLExtendObject, GQLInputObject, GQLInterface, GQLObject, GQLScalar, GQLSubscription, GQLUnion } from './types'; interface ObjectTypeConfig { implements?: ReadonlyArray>; } declare type BaseQuery = GQLObject<'Query', {}, {}, unknown, never, {}>; export declare const BaseQuery: BaseQuery; declare type BaseMutation = GQLObject<'Mutation', {}, {}, unknown, never, {}>; export declare const BaseMutation: BaseMutation; declare type BaseSubscription = GQLObject<'Subscription', {}, {}, unknown, never, {}>; export declare const BaseSubscription: BaseSubscription; export interface ObjectTypeBuilder { , C extends ObjectTypeConfig>(name: Name, fields: (t: AURItoFieldAlgebra<{}, Ctx>[FieldURI] & AURItoInputAlgebra[InputURI]) => Fields, config?: C): GQLObject, __E, Compute, 'flat'>>; } export declare function makeObjectTypeBuilder(interpreters: AURItoFieldAlgebra[FieldURI] & AURItoInputAlgebra[InputURI]): () => ObjectTypeBuilder; export interface ExtendObjectTypeBuilder { , Fields extends FieldRecord>(type: () => Type, fields: (t: AURItoFieldAlgebra[FieldAURI] & AURItoInputAlgebra[InputAURI]) => Fields): GQLExtendObject & __R, _E & __E, _A & __A>; } export declare function makeExtendObjectTypeBuilder(interpreters: AURItoFieldAlgebra[FieldAURI] & AURItoInputAlgebra[InputAURI]): ExtendObjectTypeBuilder; export interface QueryTypeBuilder { >(fields: (t: AURItoFieldAlgebra<{}, Ctx>[FieldURI] & AURItoInputAlgebra[InputURI]) => Fields): GQLExtendObject, __E, __A>; } export declare function makeQueryTypeBuilder(interpreters: AURItoFieldAlgebra[FieldURI] & AURItoInputAlgebra[InputURI]): () => QueryTypeBuilder; export interface MutationTypeBuilder { >(fields: (t: AURItoFieldAlgebra<{}, Ctx>[FieldURI] & AURItoInputAlgebra[InputURI]) => Fields): GQLExtendObject, __E, __A>; } export declare function makeMutationTypeBuilder(interpreters: AURItoFieldAlgebra[FieldURI] & AURItoInputAlgebra[InputURI]): () => MutationTypeBuilder; export interface UnionTypeBuilder { , AnyObjectType, ...ReadonlyArray>]>(...types: Types): (name: N, resolveType: TypeResolver>) => GQLUnion>; } export declare function makeUnionTypeBuilder(): UnionTypeBuilder; export interface InterfaceTypeBuilder { >(name: N, fields: (t: AURItoFieldAlgebra[FieldURI] & AURItoInputAlgebra[InputURI]) => Fields, resolveType: TypeResolver>): GQLInterface, __E, __A>; } export declare function makeInterfaceTypeBuilder(interpreters: AURItoFieldAlgebra[FieldURI] & AURItoInputAlgebra[InputURI]): () => InterfaceTypeBuilder; export interface SubscriptionTypeBuilder { >(fields: (t: AURItoFieldAlgebra<{}, Ctx>[FieldURI] & AURItoInputAlgebra[InputURI] & GQLSubscriptionAlgebra) => Fields): GQLSubscription<__R, __A>; } export declare function makeSubscriptionTypeBuilder(interpreters: AURItoFieldAlgebra[FieldURI] & AURItoInputAlgebra[InputURI] & GQLSubscriptionAlgebra): () => SubscriptionTypeBuilder; export interface InputObjectTypeBuilder { (name: Name, fields: (t: AURItoInputAlgebra[InputAURI]) => Fields): GQLInputObject; }>; } export declare function makeInputObjectTypeBuilder(interpreters: AURItoInputAlgebra[InputAURI]): InputObjectTypeBuilder; export interface ScalarTypeBuilder { >(name: Name, definition: Funcs, config?: ScalarConfig): GQLScalar any ? [ReturnType] extends [Sy.Sync] ? R : unknown : unknown; }[keyof Funcs]>, _I, _O>; } export interface ScalarTypeFromModelBuilder { , O, A>(name: Name, model: Schema, config?: Config): GQLScalar; } export declare const makeScalarTypeBuilder: ScalarTypeBuilder; interface ScalarTypeFromModelConfig extends ScalarConfig { message?: string; parseLiteral?: ParseLiteralF; } export declare const makeScalarTypeFromModelBuilder: ScalarTypeFromModelBuilder; export {}; //# sourceMappingURL=SchemaBuilder.d.ts.map