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';
interface MaterialSopParams extends DefaultOperationParams {
    group: string;
    assignMat: boolean;
    material: TypedNodePathParamValue;
    cloneMat: boolean;
    shareCustomUniforms: boolean;
    swapCurrentTex: boolean;
    texSrc0: string;
    texDest0: string;
}
export declare class MaterialSopOperation extends BaseSopOperation {
    private _materialSopOperationId;
    static readonly DEFAULT_PARAMS: MaterialSopParams;
    static readonly INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;
    static type(): Readonly<'material'>;
    private _globalsHandler;
    cook(inputCoreGroups: CoreGroup[], params: MaterialSopParams): Promise<CoreGroup>;
    private _getMaterial;
    private _watchedMaterialNode;
    private _watchedMaterialNodeMaterial;
    private _watchMaterialNode;
    private _onMaterialUpdateBound;
    private _onMaterialUpdate;
    private _watchHookName;
    private _applyMaterials;
    private _oldMatByOldNewId;
    private _materialByUuid;
    private _swapTextures;
    private _applyMaterial;
    private _swapTexture;
}
export {};
