import { HttpResponse } from '@wix/sdk-types'; import { Filter } from './query-filter.js'; import { CursorBasedIterator, OffsetBasedIterator } from './query-iterators.js'; type Query = { filter?: Filter; sort?: { fieldName: string; order: any; }[]; } & (PagingMethod extends 'OFFSET' ? { paging: OffsetPaging; } : { cursorPaging: CursorPaging; }); type OffsetPaging = { offset: number; limit: number; }; type CursorPaging = { limit: number; cursor?: string; }; export type QueryBuilder = { query: Query; eq(field: string, value: unknown): QueryBuilder; ne(field: string, value: unknown): QueryBuilder; ge(field: string, value: string | number | Date): QueryBuilder; gt(field: string, value: string | number | Date): QueryBuilder; le(field: string, value: string | number | Date): QueryBuilder; lt(field: string, value: string | number | Date): QueryBuilder; startsWith(field: string, value: string): QueryBuilder; endsWith(field: string, value: string): QueryBuilder; contains(field: string, value: string): QueryBuilder; hasSome(field: string, ...values: (string | number | Date)[] | [(string | number | Date)[]]): QueryBuilder; hasAll(field: string, ...values: (string | number | Date)[] | [(string | number | Date)[]]): QueryBuilder; between(field: string, from: T, to: T): QueryBuilder; in(field: string, values: (string | number | Date)[]): QueryBuilder; exists(field: string, value?: boolean): QueryBuilder; isNotEmpty(field: string): QueryBuilder; isEmpty(field: string): QueryBuilder; or(orQuery: QueryBuilder): QueryBuilder; and(andQuery: QueryBuilder): QueryBuilder; not(notQuery: QueryBuilder): QueryBuilder; ascending(...fieldNames: string[]): QueryBuilder; descending(...fieldNames: string[]): QueryBuilder; skip(offset: number): QueryBuilder; limit(limit: number): QueryBuilder; find(): Promise : CursorBasedIterator>; skipTo(cursor: unknown): QueryBuilder; }; export interface PagingMetadataV2 { /** Number of items returned in the response. */ count?: number | null; /** Offset that was requested. */ offset?: number | null; /** Total number of items that match the query. Returned if offset paging is used, `returnTotalCount` is `true` in the request, and `tooManyToCount` is false. */ total?: number | null; /** Whether the server failed to calculate the `total` field. */ tooManyToCount?: boolean | null; /** Cursors to navigate through the result pages using `next` and `prev`. Returned if cursor paging is used. */ cursors?: Cursors; } export interface Cursors { /** Cursor pointing to next page in the list of results. */ next?: string | null; /** Cursor pointing to previous page in the list of results. */ prev?: string | null; } export declare function queryBuilder(opts: { func(payload: TRequest): Promise>; requestTransformer(query: Query): TRequest; responseTransformer(response: HttpResponse): { items?: TItem[]; pagingMetadata?: PagingMetadataV2; }; errorTransformer(error: unknown): void; pagingMethod: PagingMethod; transformationPaths: Record; }): QueryBuilder; export {};