import { Quat } from "../math/Quat";
import { Vec3 } from "../math/Vec3";
import { TypedConstraint } from "./constaint/constraint";
import { ISolver } from "./isolver";
import { Skeleton } from "./skeleton";
/**
 * @description :
 * @param        {*}
 * @return       {*}
 * @example     :
 */
export declare class CCDSolver implements ISolver {
    constructor();
    updateTarget(): void;
    projectPlane(v: Vec3, normal: Vec3): Vec3;
    calcAngle(v1: Vec3, v2: Vec3, dir: Vec3): number;
    /**
     * @description :
     * @param        {Vec3} target 目标点
     * @param        {Vec3} zeroPos 关节原点
     * @param        {Vec3} effector 末端效应点
     * @return       {*}
     * @example     :
     */
    solveTranslate(target: Vec3, zeroPos: Vec3, effector: Vec3): void;
    /**
     * @description :
     * @param        {Vec3} target 目标点
     * @param        {Vec3} zeroPos 关节原点
     * @param        {Vec3} effector 末端效应点
     * @return       {*}
     * @example     :
     */
    solveRotation(target: Vec3, zeroPos: Vec3, effector: Vec3, contraints?: TypedConstraint[]): Quat;
    solveIK(skeleton: Skeleton, target: Vec3): void;
    solve(bones: any): void;
}
