import { OrderedMap } from "immutable"; import { BasicUpdater, Updater } from "../fun/domains/updater/state"; import { AsyncState } from "../async/state"; import { Unit } from "../fun/domains/unit/state"; import { BasicFun } from "../fun/state"; export type StreamingStatus = "reload" | "loadMore" | false; type Identifiable = { Id: string; }; export type StreamPosition = { chunkSize: number; chunkIndex: number; shouldLoad: StreamingStatus; lastModifiedTime: number; }; export declare const StreamPosition: { Default: (initialChunkSize: number, shouldLoad?: StreamingStatus) => StreamPosition; Updaters: { Template: { loadInitial: () => Updater; changeChunkSize: (chunkSize: number) => Updater; reload: () => Updater; loadMore: () => Updater; }; Core: { chunkSize: import("../../main").Widening; chunkIndex: import("../../main").Widening; shouldLoad: import("../../main").Widening; lastModifiedTime: import("../../main").Widening; }; Coroutine: {}; }; }; export type Chunk = { hasMoreValues: boolean; data: OrderedMap; }; export declare const Chunk: () => { Default: (hasMoreValues: boolean, data: OrderedMap) => Chunk; }; export type InfiniteStreamState = { loadingMore: AsyncState; loadedElements: OrderedMap>; position: StreamPosition; getChunk: BasicFun<[StreamPosition], Promise>>; }; export declare const InfiniteStreamState: () => { Default: (initialChunkSize: number, getChunk: InfiniteStreamState["getChunk"], shouldLoad?: StreamingStatus) => InfiniteStreamState; Operations: { shouldCoroutineRun: (current: InfiniteStreamState) => boolean; loadNextPage: (current: InfiniteStreamState) => boolean; }; Updaters: { Coroutine: { addLoadedChunk: (chunkIndex: number, newChunk: Chunk) => Updater>; }; Core: { whenNotAlreadyLoading: (_: BasicUpdater>) => Updater>; position: (positionUpdater: Updater["position"]>) => Updater>; clearLoadedElements: () => Updater>; loadedElements: import("../../main").Widening, "loadedElements">; loadingMore: import("../../main").Widening, "loadingMore">; getChunk: import("../../main").Widening, "getChunk">; }; Template: { loadInitial: () => Updater>; reload: (getChunk: InfiniteStreamState["getChunk"]) => Updater>; loadMore: () => Updater>; }; }; }; export type InfiniteStreamReadonlyState = Unit; export type InfiniteStreamWritableState = InfiniteStreamState; export {}; //# sourceMappingURL=state.d.ts.map