import { CoreGroup } from '../../../core/geometry/Group';
import { BaseOperation } from '../_Base';
import { NodeContext } from '../../../engine/poly/NodeContext';
import { ObjectType, ObjectByObjectType } from '../../../core/geometry/Constant';
import { BufferGeometry, Material, Object3D } from 'three';
import { CoreObjectType, ObjectContent } from '../../../core/geometry/ObjectContent';
export declare class BaseSopOperation extends BaseOperation<NodeContext.SOP> {
    static context(): NodeContext;
    cook(inputCoreGroups: CoreGroup[], params: any): CoreGroup | Promise<CoreGroup> | void;
    protected createCoreGroupFromObjects(objects: ObjectContent<CoreObjectType>[]): CoreGroup;
    protected createCoreGroupFromGeometry(geometry: BufferGeometry, type?: ObjectType): CoreGroup;
    protected createObject<OT extends ObjectType>(geometry: BufferGeometry, type: OT, material?: Material): ObjectByObjectType[OT];
    static createObject<OT extends ObjectType>(geometry: BufferGeometry, type: OT, material?: Material): ObjectByObjectType[OT];
    static applyObjectDefault(object: Object3D): void;
    protected createIndexIfNone(geometry: BufferGeometry): void;
    static createIndexIfNone(geometry: BufferGeometry): void;
}
