import { Class, Filter, Query } from '@nestjs-query/core'; import { ReturnTypeFuncValue } from '@nestjs/graphql'; import { ConnectionCursorType } from '../cursor.scalar'; import { PagingStrategies } from '../query'; interface BaseConnectionOptions { enableTotalCount?: boolean; connectionName?: string; disableKeySetPagination?: boolean; } export interface CursorConnectionOptions extends BaseConnectionOptions { pagingStrategy?: PagingStrategies.CURSOR; } export interface OffsetConnectionOptions extends BaseConnectionOptions { pagingStrategy: PagingStrategies.OFFSET; } export interface ArrayConnectionOptions extends BaseConnectionOptions { pagingStrategy: PagingStrategies.NONE; } export declare type ConnectionOptions = CursorConnectionOptions | OffsetConnectionOptions | ArrayConnectionOptions; export interface EdgeType { node: DTO; cursor: ConnectionCursorType; } export interface PageInfoType { hasNextPage: boolean; hasPreviousPage: boolean; startCursor?: ConnectionCursorType | undefined; endCursor?: ConnectionCursorType | undefined; } export declare type CursorConnectionType = { pageInfo: PageInfoType; edges: EdgeType[]; totalCount?: Promise; }; export interface OffsetPageInfoType { hasNextPage: boolean; hasPreviousPage: boolean; } export declare type OffsetConnectionType = { pageInfo: OffsetPageInfoType; totalCount?: Promise; nodes: DTO[]; }; export declare type ArrayConnectionType = DTO[]; export declare type ConnectionType = OffsetConnectionType | CursorConnectionType | ArrayConnectionType; export declare type InferConnectionTypeFromStrategy = S extends PagingStrategies.NONE ? ArrayConnectionType : S extends PagingStrategies.OFFSET ? OffsetConnectionType : S extends PagingStrategies.CURSOR ? CursorConnectionType : never; export declare type QueryMany> = (query: Q) => Promise; export declare type Count = (filter: Filter) => Promise; export declare type CountFn = () => Promise; export declare type PagerResult = { totalCount: CountFn; }; export interface Pager { page>(queryMany: QueryMany, query: Q, count: Count): Promise; } export interface StaticConnectionType extends Class> { resolveType: ReturnTypeFuncValue; createFromPromise>(queryMany: QueryMany, query: Q, count?: Count): Promise>; } export {};