import { BaseSopOperation } from './_Base';
import { CoreGroup } from '../../../core/geometry/Group';
import { Vector3 } from 'three';
import { InputCloneMode } from '../../../engine/poly/InputCloneMode';
import { DefaultOperationParams } from '../../../core/operations/_Base';
export declare enum ShearMode {
    MATRIX = "matrix",
    AXIS = "axis"
}
export declare const SHEAR_MODES: ShearMode[];
export declare enum ShearCenterMode {
    BBOX_CENTER = "bbox center",
    BBOX_CENTER_OFFSET = "bbox center offset",
    CUSTOM = "custom"
}
export declare const SHEAR_CENTER_MODES: ShearCenterMode[];
interface ShearSopParams extends DefaultOperationParams {
    mode: number;
    xy: number;
    xz: number;
    yx: number;
    yz: number;
    zx: number;
    zy: number;
    centerMode: number;
    centerOffset: Vector3;
    center: Vector3;
    planeAxis: Vector3;
    axis: Vector3;
    axisAmount: number;
}
export declare class ShearSopOperation extends BaseSopOperation {
    static readonly DEFAULT_PARAMS: ShearSopParams;
    static readonly INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;
    static type(): Readonly<'shear'>;
    private _m4;
    cook(input_contents: CoreGroup[], params: ShearSopParams): CoreGroup;
    private _applyShear;
    private _applyMatrixShear;
    private _axisNormalized;
    private _center;
    private _pointPos;
    private _axisPlane;
    private _pointOnPlane;
    private _delta;
    private _deltaNormalized;
    private _offset;
    private _applyAxisShear;
    private _getAxisModeCenter;
    private _getAxisModeCenterBbox;
    private _getAxisModeCenterBboxOffset;
    private _getAxisModeCenterCustom;
}
export {};
