import { StandardLibraries } from './standard-libraries.js';
import { LibraryConfiguration, ExternalLibraryConfig, LibraryLoadOptions as ConfigLoadOptions } from '../types/library-config.js';
import { MJComponentLibraryEntity } from '@memberjunction/core-entities';
import { LoadedLibraryState, DependencyResolutionOptions } from '../types/dependency-types.js';
interface LoadedResource {
    element: HTMLScriptElement | HTMLLinkElement;
    promise: Promise<any>;
}
export interface LibraryLoadOptions {
    loadCore?: boolean;
    loadUI?: boolean;
    loadCSS?: boolean;
    customLibraries?: {
        url: string;
        globalName: string;
    }[];
}
export interface LibraryLoadResult {
    React: any;
    ReactDOM: any;
    Babel: any;
    libraries: StandardLibraries;
}
export declare class LibraryLoader {
    private static loadedResources;
    private static loadedLibraryStates;
    private static dependencyResolver;
    static enableProgressiveDelay: boolean;
    static preloadCoreScripts(debug?: boolean): void;
    static loadAllLibraries(config?: LibraryConfiguration, additionalLibraries?: ExternalLibraryConfig[], options?: {
        debug?: boolean;
    }): Promise<LibraryLoadResult>;
    static loadLibrariesFromConfig(options?: ConfigLoadOptions, debug?: boolean): Promise<LibraryLoadResult>;
    static loadLibraries(options: LibraryLoadOptions): Promise<LibraryLoadResult>;
    private static loadScript;
    private static cleanupFailedScript;
    private static loadScriptFromUrl;
    private static isLibraryReady;
    private static waitForGlobalVariable;
    private static loadCSS;
    private static waitForScriptLoad;
    static getLoadedResources(): Map<string, LoadedResource>;
    static clearCache(): void;
    static loadLibraryWithDependencies(libraryName: string, allLibraries: MJComponentLibraryEntity[], requestedBy?: string, options?: DependencyResolutionOptions): Promise<any>;
    static loadLibrariesWithDependencies(libraryNames: string[], allLibraries: MJComponentLibraryEntity[], requestedBy?: string, options?: DependencyResolutionOptions): Promise<Map<string, any>>;
    static getLoadedLibraryStates(): Map<string, LoadedLibraryState>;
    static isLibraryLoaded(libraryName: string): boolean;
    static getLoadedLibraryVersion(libraryName: string): string | undefined;
}
export {};
//# sourceMappingURL=library-loader.d.ts.map