/** * @typedef {import("../view/view.js").default} View * @typedef {import("../types/viewContext.js").DataLoadingStatus} DataLoadingStatus * @typedef {{ status: DataLoadingStatus, detail?: string }} LoadingStatus * @typedef {{ view: View, status: DataLoadingStatus, detail?: string }} LoadingStatusChange */ /** * Central registry for per-view loading status that decouples data sources * from UI rendering. Consumers can subscribe to changes and query the current * status map when needed (e.g., for overlay rendering). */ export default class LoadingStatusRegistry { /** * @param {View} view * @param {DataLoadingStatus} status * @param {string} [detail] */ set(view: View, status: DataLoadingStatus, detail?: string): void; /** * @param {View} view */ delete(view: View): void; /** * @param {View} view * @returns {LoadingStatus | undefined} */ get(view: View): LoadingStatus | undefined; /** * @returns {IterableIterator<[View, LoadingStatus]>} */ entries(): IterableIterator<[View, LoadingStatus]>; /** * Subscribe to status changes. * * @param {(change: LoadingStatusChange) => void} listener * @returns {() => void} Unsubscribe callback */ subscribe(listener: (change: LoadingStatusChange) => void): () => void; #private; } export type View = import("../view/view.js").default; export type DataLoadingStatus = import("../types/viewContext.js").DataLoadingStatus; export type LoadingStatus = { status: DataLoadingStatus; detail?: string; }; export type LoadingStatusChange = { view: View; status: DataLoadingStatus; detail?: string; }; //# sourceMappingURL=loadingStatusRegistry.d.ts.map