/**
 * @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