import { Material, Mesh } from 'three';
import { BaseSopOperation } from './_Base';
import { CoreGroup } from '../../../core/geometry/Group';
import { TypedNodePathParamValue } from '../../../core/Walker';
import { InputCloneMode } from '../../../engine/poly/InputCloneMode';
import { DefaultOperationParams } from '../../../core/operations/_Base';
import { SopType } from '../../poly/registers/nodes/types/Sop';
interface InstanceSopParams extends DefaultOperationParams {
    attributesToCopy: string;
    applyMaterial: boolean;
    material: TypedNodePathParamValue;
}
export declare class InstanceSopOperation extends BaseSopOperation {
    static readonly DEFAULT_PARAMS: InstanceSopParams;
    static readonly INPUT_CLONED_STATE: InputCloneMode[];
    static type(): Readonly<SopType.INSTANCE>;
    private _globalsHandler;
    private _geometry;
    cook(inputCoreGroups: CoreGroup[], params: InstanceSopParams): Promise<CoreGroup>;
    private _getMaterial;
    _applyMaterial(object: Mesh, material: Material): Promise<void>;
    private _createInstance;
}
export {};
