import { ITGlueClient } from '../client'; import { JsonApiMeta, QueryParams } from '../types'; /** * Utility class for handling IT Glue API pagination. */ export declare class PaginationUtil { private client; /** * @param client ITGlueClient instance */ constructor(client: ITGlueClient); /** * Paginate through a resource endpoint. * @param path API endpoint path (e.g., '/organizations') * @param params Query parameters (filter, sort, page, etc.) * @param allPages If true, fetches all pages automatically * @returns Data and pagination metadata */ paginate(path: string, params?: QueryParams, allPages?: boolean): Promise<{ data: T[]; meta?: JsonApiMeta; }>; /** * Get the first page of results. * @param path API endpoint path * @param params Query parameters */ getFirstPage(path: string, params?: QueryParams): Promise<{ data: T[]; meta?: JsonApiMeta; }>; /** * Get a specific page of results. * @param path API endpoint path * @param pageNumber Page number to fetch * @param params Query parameters */ getPage(path: string, pageNumber: number, params?: QueryParams): Promise<{ data: T[]; meta?: JsonApiMeta; }>; /** * Get the next page of results, given current meta.pagination info. * @param path API endpoint path * @param currentPage Current page number * @param meta Pagination metadata from previous response * @param params Query parameters */ getNextPage(path: string, currentPage: number, meta: JsonApiMeta, params?: QueryParams): Promise<{ data: T[]; meta?: JsonApiMeta; }>; /** * Get the previous page of results, given current meta.pagination info. * @param path API endpoint path * @param currentPage Current page number * @param params Query parameters */ getPreviousPage(path: string, currentPage: number, params?: QueryParams): Promise<{ data: T[]; meta?: JsonApiMeta; }>; /** * Get the last page of results, given meta.pagination info. * @param path API endpoint path * @param meta Pagination metadata from previous response * @param params Query parameters */ getLastPage(path: string, meta: JsonApiMeta, params?: QueryParams): Promise<{ data: T[]; meta?: JsonApiMeta; }>; /** * Fetch all pages and return all results in a single array. * @param path API endpoint path * @param params Query parameters */ getAllPages(path: string, params?: QueryParams): Promise<{ data: T[]; meta?: JsonApiMeta; }>; }