/**
 * @module viw-webgl-react
 */
import * as Core from '../../core-viewers';
import { LoadRequest } from '../helpers/loadRequest';
import { ModalRef } from '../panels/modal';
type AddSettings = {
    /**
     * Controls whether to frame the camera on a vim everytime it is updated.
     * Default: true
     */
    autoFrame?: boolean;
    /**
     * Controls whether to initially load the vim content or not.
     * Default: false
     */
    loadEmpty?: boolean;
};
export type OpenSettings = Core.Webgl.VimPartialSettings & AddSettings;
export type LoadingError = {
    url: string;
    error: string;
};
/**
 * Provides functionality for asynchronously opening sources and tracking progress.
 * Includes event emitters for progress updates and completion notifications.
 */
export declare class ComponentLoader {
    private _viewer;
    private _modal;
    constructor(viewer: Core.Webgl.Viewer, modal: React.RefObject<ModalRef>);
    /**
     * Event emitter for progress updates.
     */
    onProgress(p: Core.Webgl.IProgressLogs): void;
    /**
       * Event emitter for completion notifications.
     */
    onDone(): void;
    /**
     * Event emitter for error notifications.
     */
    onError(e: LoadingError): void;
    /**
     * Asynchronously opens a vim at source, applying the provided settings.
     * @param source The source to open, either as a string or ArrayBuffer.
     * @param settings Partial settings to apply to the opened source.
     * @param onProgress Optional callback function to track progress during opening.
     * Receives progress logs as input.
     */
    open(source: Core.Webgl.RequestSource, settings: OpenSettings, onProgress?: (p: Core.Webgl.IProgressLogs) => void): Promise<Core.Webgl.Vim>;
    /**
     * Creates a new load request for the provided source and settings.
     * @param source The url to the vim file or a buffer of the file.
     * @param settings Settings to apply to vim file.
     * @returns A new load request instance to track progress and get result.
     */
    request(source: Core.Webgl.RequestSource, settings?: Core.Webgl.VimPartialSettings): LoadRequest;
    add(vim: Core.Webgl.Vim, settings?: AddSettings): void;
    /**
     * Removes the vim from the viewer and disposes it.
     * @param vim Vim to remove from the viewer.
     */
    remove(vim: Core.Webgl.Vim): void;
    private initVim;
}
export {};
