export interface LoaderConfig {
    cdnPath?: string;
    surveyCDNPath?: string;
    customStyles?: string[];
    customScripts?: string[];
    shadowRoot?: ShadowRoot;
}
export interface ScriptConfig {
    src: string;
    async?: boolean;
    defer?: boolean;
    type?: string;
    onLoad?: () => void;
    onError?: (error: Error) => void;
}
export interface StyleConfig {
    href: string;
    media?: string;
    onLoad?: () => void;
    onError?: (error: Error) => void;
}
export declare class ScriptStyleLoader {
    private config;
    private loadedScripts;
    private loadedStyles;
    private scriptPromises;
    private stylePromises;
    constructor(config: LoaderConfig);
    /**
     * Load a single script
     */
    loadScript(config: string | ScriptConfig): Promise<void>;
    /**
     * Load a single style
     */
    loadStyle(config: string | StyleConfig, isTheme?: boolean): Promise<void>;
    /**
     * Load multiple scripts sequentially
     */
    loadScriptsSequentially(scripts: (string | ScriptConfig)[]): Promise<void>;
    /**
     * Load multiple scripts in parallel
     */
    loadScriptsParallel(scripts: (string | ScriptConfig)[]): Promise<void>;
    /**
     * Load multiple styles in parallel
     */
    loadStyles(styles: (string | StyleConfig)[], isTheme?: boolean): Promise<void>;
    /**
     * Load all Survey.js dependencies
     */
    loadSurveyDependencies(): Promise<void>;
    /**
     * Load all default styles and scripts for ai12z-bot
     */
    loadBotAssets(): Promise<void>;
    /**
     * Load custom theme and assets based on bot settings
     */
    loadBotTheme(botSettings: any): Promise<void>;
    /**
     * Check if script is already loaded in DOM
     */
    private isScriptLoaded;
    /**
     * Check if style is already loaded in DOM
     */
    private isStyleLoaded;
    /**
     * Get loading status
     */
    getLoadingStatus(): {
        loadedScripts: string[];
        loadedStyles: string[];
        pendingScripts: string[];
        pendingStyles: string[];
    };
    /**
     * Clear all cached promises and loaded assets
     */
    reset(): void;
}
export declare function createScriptStyleLoader(config: LoaderConfig): ScriptStyleLoader;
export declare function loadBotAssets(shadowRoot: ShadowRoot): Promise<ScriptStyleLoader>;
export declare function loadBotWithTheme(shadowRoot: ShadowRoot, botSettings: any): Promise<ScriptStyleLoader>;
