import { QueryService } from '@nestjs-query/core'; import { DTONamesOpts } from '../common'; import { ResolverMethodOpts, SubscriptionResolverMethodOpts } from '../decorators'; import { GraphQLPubSub } from '../subscription'; import { PagingStrategies, QueryArgsTypeOpts } from '../types'; declare type NamedEndpoint = { /** Specify to override the name of the graphql query or mutation * */ name?: string; }; export interface ResolverOpts extends ResolverMethodOpts, DTONamesOpts { /** * Options for single record graphql endpoints */ one?: ResolverMethodOpts & NamedEndpoint; /** * Options for multiple record graphql endpoints */ many?: ResolverMethodOpts & 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 declare type ExtractPagingStrategy> = Opts['pagingStrategy'] extends PagingStrategies ? Opts['pagingStrategy'] : PagingStrategies.CURSOR; export declare type MergePagingStrategyOpts, S extends PagingStrategies> = Opts['pagingStrategy'] extends PagingStrategies ? Opts : S extends PagingStrategies ? Omit & { pagingStrategy: S; } : Opts; export {};