import { QueryService } from '@ptc-org/nestjs-query-core'; import { DTONamesOpts } from '../common'; import { QueryResolverMethodOpts, SubscriptionResolverMethodOpts } from '../decorators'; import { GraphQLPubSub } from '../subscription'; import { PagingStrategies, QueryArgsTypeOpts } from '../types'; export type NamedEndpoint = { /** Specify to override the name of the graphql query or mutation * */ name?: string; /** Specify a description for the graphql query or mutation* */ description?: string; }; export interface ResolverOpts extends QueryResolverMethodOpts, DTONamesOpts { /** * Options for single record graphql endpoints */ one?: QueryResolverMethodOpts & NamedEndpoint; /** * Options for multiple record graphql endpoints */ many?: QueryResolverMethodOpts & NamedEndpoint; } export interface SubscriptionResolverOpts extends SubscriptionResolverMethodOpts, DTONamesOpts { one?: SubscriptionResolverMethodOpts & NamedEndpoint; many?: SubscriptionResolverMethodOpts & NamedEndpoint; } /** @internal */ export interface ServiceResolver> { service: QS; readonly pubSub?: GraphQLPubSub; } /** @internal */ export interface ResolverClass, Resolver extends ServiceResolver> { new (service: QS): Resolver; } /** * @internal * Base Resolver that takes in a service as a constructor argument. */ export declare class BaseServiceResolver { readonly service: QS; constructor(service: QS); } export type ExtractPagingStrategy> = Opts['pagingStrategy'] extends PagingStrategies ? Opts['pagingStrategy'] : PagingStrategies.CURSOR; export type MergePagingStrategyOpts, S extends PagingStrategies> = Opts['pagingStrategy'] extends PagingStrategies ? Opts : S extends PagingStrategies ? Omit & { pagingStrategy: S; } : Opts;