import { Subject, SubjectWrapper } from "../../models/subject"; import { UrlTransformer } from "../subjectParser/subjectParser"; export interface IPageFetcherResponse { subjects: Subject[]; context: T; totalItems: number; } /** * A context object that is passed to the page fetcher function after every call * this can be used to keep track of state such as the current page, where the * page fetcher would increment the page number after every call. */ export type PageFetcherContext = Record; export type PageFetcher = ((context: T) => Promise>) & { brand?: symbol; }; export declare class GridPageFetcher { constructor(pagingCallback: PageFetcher, urlTransformer: UrlTransformer); get totalItems(): number; get subjectStream(): ReadableStream; /** * Closes the stream of subjects so that no further data can be pulled. * This is typically done when the datasource changes and the stream is no * longer needed. */ readonly abortController: AbortController; private pagingCallback; private urlTransformer; private pagingContext; private _totalItems; private _subjectStream?; private clientCacheSize; private serverCacheSize; private newSubjectStream; private clientCachePipe; private serverCachePipe; private audioCacheClient; private audioCacheServer; private fetchNextPage; }