import { LoadingManager, Texture } from 'three';
import { BaseNodeType } from '../../engine/nodes/_Base';
import { BlobsControllerFetchNodeOptions } from '../../engine/poly/BlobsController';
import type { BaseGeoLoaderOutput } from './geometry/Common';
export interface BaseLoaderLoadOptions {
    node: BaseNodeType;
}
export declare function modifyUrl(url: string): string;
export declare function createLoadingManager(): LoadingManager;
export declare const LOADING_MANAGER: LoadingManager;
interface MultipleDependenciesLoadFileOptions {
    fullUrl: string;
}
interface MultipleDependenciesLoadOptions {
    files: MultipleDependenciesLoadFileOptions[];
    error: string;
    node?: BaseNodeType;
}
type OnAssetLoadedCallback = (url: string, asset?: BaseGeoLoaderOutput | Texture) => void;
export declare class CoreBaseLoader<U extends string | Array<string>> {
    protected _url: U;
    protected _node?: BaseNodeType | undefined;
    blobOptions: BlobsControllerFetchNodeOptions;
    static readonly loadingManager: LoadingManager;
    readonly loadingManager: LoadingManager;
    constructor(_url: U, _node?: BaseNodeType | undefined, blobOptions?: BlobsControllerFetchNodeOptions);
    static extension(url: string): string;
    extension(): string;
    protected _urlToLoad(): U;
    protected static _loadMultipleUrlsGlobal(options: MultipleDependenciesLoadOptions): Promise<void>;
    private static _onAssetLoadedCallbacks;
    static onAssetLoaded(callback: OnAssetLoadedCallback): void;
    static _runOnAssetLoadedCallbacks(url: string, asset?: BaseGeoLoaderOutput | Texture): void;
}
export {};
