import '../../globals.js';
import IntentionalAny from './types/IntentionalAny.js';
type AsyncLoaderListener = () => void;
type AsyncLoaderLock = () => void;
declare class AsyncLoader {
    private pendingLocks;
    private loadComplete;
    private listeners;
    constructor();
    reset(): void;
    /**
     * @param listener - called when load is complete
     */
    addListener(listener: AsyncLoaderListener): void;
    /**
     * Attempts to proceed to the next phase if possible (otherwise it's a no-op).
     */
    private proceedIfReady;
    /**
     * Creates a lock, which is a callback that needs to be run before we can proceed.
     */
    createLock(object?: IntentionalAny): AsyncLoaderLock;
}
declare const asyncLoader: AsyncLoader;
export default asyncLoader;
export type { AsyncLoaderLock, AsyncLoaderListener };
//# sourceMappingURL=asyncLoader.d.ts.map