import { TypedSopNode } from './../../_Base';
import { NodeParamsConfig } from '../../../utils/params/ParamsConfig';
import { CoreGroup } from '../../../../../core/geometry/Group';
import { Object3D } from 'three';
import type { BaseGeoLoaderOutput } from '../../../../../core/loader/geometry/Common';
import { BaseObject3DLoaderHandler } from '../../../../../core/loader/geometry/_BaseLoaderHandler';
declare class BaseFileMultiParamsConfigResult extends NodeParamsConfig {
    url: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.STRING>;
    matrixAutoUpdate: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.BOOLEAN>;
    reload: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.BUTTON>;
}
export declare class BaseFileMultiSopNodeFactoryResult extends TypedSopNode<BaseFileMultiParamsConfigResult> {
}
export declare class BaseFileMultiParamsConfig extends NodeParamsConfig {
    /** @param url to load the geometry from */
    url: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.STRING>;
    /** @param sets the matrixAutoUpdate attribute for the objects loaded */
    matrixAutoUpdate: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.BOOLEAN>;
    /** @param reload the geometry */
    reload: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.BUTTON>;
}
export declare abstract class BaseFileMultiSopNode<O extends BaseGeoLoaderOutput, K extends BaseFileMultiParamsConfig> extends TypedSopNode<K> {
    protected abstract _createLoader(url: string): BaseObject3DLoaderHandler<O>;
    dispose(): void;
    initializeNode(): void;
    private _instancer;
    private _instanceMatrix;
    cook(inputCoreGroups: CoreGroup[]): Promise<void>;
    private static _incrementUrlUsageCount;
    private _loadFromUrlPromises;
    private _loadObject;
    protected _loadWithLoader(loader: BaseObject3DLoaderHandler<O>): Promise<Object3D<import("three").Object3DEventMap>[] | undefined>;
    static PARAM_CALLBACK_reload(node: BaseFileMultiSopNode<BaseGeoLoaderOutput, BaseFileMultiParamsConfig>): void;
    private _paramCallbackReload;
}
export {};
