import { type RequestOptions, type Result } from './types.js'; export declare class PaginationLimitExceededError extends Error { constructor(limit: number); } interface PageNumberEnvelope { data: TItem[]; meta: { page: { number: number; size: number; total: number; }; }; } interface PageNumberRequest { page?: { number?: number; size?: number; }; } /** * Iterates every item of a page-number-paginated list operation, advancing * `page.number` from wherever the caller's own request starts. Every other * field on `request` — filters, sort, page.size — is sent unchanged on every * page fetch; only the page number advances. Stops on a page shorter than * the server's own reported `size` (including an empty page) or once the * running item count reaches the server's reported `total`, whichever comes * first — so a final page that exactly fills `total` does not trigger one * more, empty request. */ export declare function paginatePages(fetchPage: (req: TReq, options?: RequestOptions) => Promise>>, request: TReq, options?: RequestOptions): AsyncGenerator; interface CursorEnvelope { data: TItem[]; meta: { page: { next: string | null; }; }; } interface CursorRequest { page?: { after?: string; before?: string; size?: number; }; } /** * Iterates every item of a cursor-paginated list operation, following * `meta.page.next` until the server stops returning one. Despite carrying a * `format: uri` annotation in the spec, `next` is the opaque cursor token the * API expects back verbatim in `page.after` on the following request — not a * URI to fetch directly. Every other field on `request` is sent unchanged on * every page fetch; only `page.after` advances. */ export declare function paginateCursor(fetchPage: (req: TReq, options?: RequestOptions) => Promise>>, request: TReq, options?: RequestOptions): AsyncGenerator; export {};