import type { ICoreResponse } from '../../core_base/types.js'; /** * Pagination strategy options */ export declare enum PaginationStrategy { OFFSET = "offset",// Uses page & limit parameters CURSOR = "cursor",// Uses a cursor/token for next page LINK_HEADER = "link",// Uses Link headers CUSTOM = "custom" } /** * Configuration for offset-based pagination */ export interface OffsetPaginationConfig { strategy: PaginationStrategy.OFFSET; pageParam?: string; limitParam?: string; startPage?: number; pageSize?: number; totalPath?: string; } /** * Configuration for cursor-based pagination */ export interface CursorPaginationConfig { strategy: PaginationStrategy.CURSOR; cursorParam?: string; cursorPath?: string; hasMorePath?: string; } /** * Configuration for Link header-based pagination */ export interface LinkPaginationConfig { strategy: PaginationStrategy.LINK_HEADER; } /** * Configuration for custom pagination */ export interface CustomPaginationConfig { strategy: PaginationStrategy.CUSTOM; hasNextPage: (response: ICoreResponse) => boolean; getNextPageParams: (response: ICoreResponse, currentParams: Record) => Record; } /** * Union type of all pagination configurations */ export type TPaginationConfig = OffsetPaginationConfig | CursorPaginationConfig | LinkPaginationConfig | CustomPaginationConfig; /** * Interface for a paginated response */ export interface TPaginatedResponse { items: T[]; hasNextPage: boolean; getNextPage: () => Promise>; getAllPages: () => Promise; response: ICoreResponse; }