export type Nullable = { [P in keyof T]?: T[P] | null } export interface Take { default: number min: number max: number } export type OrderBy = { [TKey in keyof TEntity]?: boolean } export type Cursor = { [TKey in keyof TEntity]?: any } export interface CursorPagination { readonly count: number readonly nodes: TEntity[] readonly hasPrev: boolean readonly hasNext: boolean readonly prevCursor: string | null readonly nextCursor: string | null } export interface PromiseCursorPagination { readonly count: Promise readonly nodes: Promise readonly hasPrev: Promise readonly hasNext: Promise readonly prevCursor: Promise readonly nextCursor: Promise } export interface CursorTransformer { parse(text: string): Cursor stringify(cursor: Cursor): string } export interface PagePagination { readonly count: number readonly nodes: TEntity[] readonly hasNext: boolean } export interface PromisePagePagination { readonly count: Promise readonly nodes: Promise readonly hasNext: Promise }