import { AsyncResult, Result } from "./results.js"; import { ReactPromise } from "./promises.js"; import { ReadWriteLock } from "./locks.js"; //#region src/utils/stores.d.ts type ReadonlyStore = { get(): T; onChange(callback: (value: T, oldValue: T | undefined) => void): { unsubscribe: () => void; }; onceChange(callback: (value: T, oldValue: T | undefined) => void): { unsubscribe: () => void; }; }; type AsyncStoreStateChangeCallback = (args: { state: AsyncResult; oldState: AsyncResult; lastOkValue: T | undefined; }) => void; type ReadonlyAsyncStore = { isAvailable(): boolean; get(): AsyncResult; getOrWait(): ReactPromise; onChange(callback: (value: T, oldValue: T | undefined) => void): { unsubscribe: () => void; }; onceChange(callback: (value: T, oldValue: T | undefined) => void): { unsubscribe: () => void; }; onStateChange(callback: AsyncStoreStateChangeCallback): { unsubscribe: () => void; }; onceStateChange(callback: AsyncStoreStateChangeCallback): { unsubscribe: () => void; }; }; declare class Store implements ReadonlyStore { private _value; private readonly _callbacks; constructor(_value: T); get(): T; set(value: T): void; update(updater: (value: T) => T): T; onChange(callback: (value: T, oldValue: T | undefined) => void): { unsubscribe: () => void; }; onceChange(callback: (value: T, oldValue: T | undefined) => void): { unsubscribe: () => void; }; } declare const storeLock: ReadWriteLock; declare class AsyncStore implements ReadonlyAsyncStore { private _isAvailable; private _mostRecentOkValue; private _isRejected; private _rejectionError; private readonly _waitingRejectFunctions; private readonly _callbacks; private _updateCounter; private _lastSuccessfulUpdate; constructor(...args: [] | [T]); isAvailable(): boolean; isRejected(): boolean; get(): ({ status: "error"; error: unknown; } & { status: "error"; }) | ({ status: "ok"; data: T; } & { status: "ok"; }) | ({ status: "pending"; } & { progress: void; } & { status: "pending"; }); getOrWait(): ReactPromise; _setIfLatest(result: Result, curCounter: number): boolean; set(value: T): void; update(updater: (value: T | undefined) => T): T; setAsync(promise: Promise): Promise; setUnavailable(): void; setRejected(error: unknown): void; map(mapper: (value: T) => U): AsyncStore; onChange(callback: (value: T, oldValue: T | undefined) => void): { unsubscribe: () => void; }; onStateChange(callback: AsyncStoreStateChangeCallback): { unsubscribe: () => void; }; onceChange(callback: (value: T, oldValue: T | undefined) => void): { unsubscribe: () => void; }; onceStateChange(callback: AsyncStoreStateChangeCallback): { unsubscribe: () => void; }; } //#endregion export { AsyncStore, AsyncStoreStateChangeCallback, ReadonlyAsyncStore, ReadonlyStore, Store, storeLock }; //# sourceMappingURL=stores.d.ts.map