export interface FetchPaginateParamsObject { page?: boolean | string; limit?: boolean | string; offset?: boolean | string; } export type FetchPaginateParams = FetchPaginateParamsObject | boolean; export interface FetchPaginateUntilOptions<$Body, Item> { page?: $Body; response: Response; pages: $Body[]; items: Item[]; pageItems: Item[]; responses: Response[]; } export interface FetchPaginateNextOptions { url: string; response?: Response; pageItems: Item[]; page: number; limit?: number; offset: number; params?: FetchPaginateParams; isFirst: boolean; } interface FetchPaginateNext { url?: string; limit?: number; offset?: number; page?: number; } export type FetchPaginateUntilFunction<$Body, Item> = (untilOptions: FetchPaginateUntilOptions<$Body, Item>) => Promise | boolean; export type FetchPaginateItemsFunction<$Body, Item> = (body: $Body) => Item[]; export type FetchPaginateMergeFunction = (setOfSetsOfItems: (Item[] | undefined)[]) => Item[]; export type FetchPaginateParseFunction<$Body> = (response: Response) => Promise<$Body> | $Body; export type FetchPaginateNextFunction = (nextOptions: FetchPaginateNextOptions) => FetchPaginateNext; export interface FetchPaginateIteratorValue<$Body, Item> { page?: $Body; pages: $Body[]; response: Response; responses: Response[]; pageItems: Item[]; items: Item[]; } export interface FetchPaginateGetFetchArgs<$Body, Item> { url: string; fetchOptions?: ResponseInit; offset?: number; limit?: number; page?: number; prev: { url: string; offset?: number; limit?: number; page?: number; items: Item[]; pageItems: Item[]; pageBody?: $Body; pages: $Body[]; response: Response; responses: Response[]; }; } export interface FetchPaginateOptions<$Body, Item> { fetchOptions?: ResponseInit; until?: FetchPaginateUntilFunction<$Body, Item>; getItems?: FetchPaginateItemsFunction<$Body, Item>; merge?: FetchPaginateMergeFunction; parse?: FetchPaginateParseFunction<$Body>; next?: FetchPaginateNextFunction; limit?: number; offset?: number; params?: FetchPaginateParams; page?: number; getFetch?: (args: FetchPaginateGetFetchArgs<$Body, Item>) => typeof fetch; } declare const fetchPaginateIterator: <$Body, Item>($url: URL | string, options?: FetchPaginateOptions<$Body, Item>) => { getResult: () => { items: Item[]; pages: $Body[]; responses: Response[]; }; [Symbol.asyncIterator]: () => { next(): Promise<{ done: boolean; value: FetchPaginateIteratorValue<$Body, Item>; }>; }; }; declare const fetchPaginate: <$Body, Item>($url: URL | string, options?: FetchPaginateOptions<$Body, Item>) => Promise<{ items: Item[]; pages: $Body[]; responses: Response[]; }>; export { fetchPaginate, fetchPaginateIterator }; export default fetchPaginate;