export function b2Min(a: any, b: any): any;
export function b2Max(a: any, b: any): any;
export function b2Clamp(a: any, lo: any, hi: any): any;
export function b2Swap(a: any, b: any): void;
export function b2Sq(n: any): number;
export function b2InvSqrt(n: any): number;
export function b2DegToRad(degrees: any): number;
export function b2RadToDeg(radians: any): number;
export function b2NextPowerOfTwo(x: any): any;
export function b2IsPowerOfTwo(x: any): boolean;
export function b2Random(): number;
export function b2RandomRange(lo: any, hi: any): any;
export const b2_pi_over_180: number;
export const b2_180_over_pi: number;
export const b2_two_pi: number;
export const b2Abs: (x: number) => number;
export const b2IsValid: typeof isFinite;
export const b2Sqrt: (x: number) => number;
export const b2Pow: (x: number, y: number) => number;
export const b2Cos: (x: number) => number;
export const b2Sin: (x: number) => number;
export const b2Acos: (x: number) => number;
export const b2Asin: (x: number) => number;
export const b2Atan2: (y: number, x: number) => number;
export class b2Vec2 {
    static MakeArray(length: any): b2Vec2[];
    static AbsV(v: any, out: any): any;
    static MinV(a: any, b: any, out: any): any;
    static MaxV(a: any, b: any, out: any): any;
    static ClampV(v: any, lo: any, hi: any, out: any): any;
    static RotateV(v: any, radians: any, out: any): any;
    static DotVV(a: any, b: any): number;
    static CrossVV(a: any, b: any): number;
    static CrossVS(v: any, s: any, out: any): any;
    static CrossVOne(v: any, out: any): any;
    static CrossSV(s: any, v: any, out: any): any;
    static CrossOneV(v: any, out: any): any;
    static AddVV(a: any, b: any, out: any): any;
    static SubVV(a: any, b: any, out: any): any;
    static MulSV(s: any, v: any, out: any): any;
    static MulVS(v: any, s: any, out: any): any;
    static AddVMulSV(a: any, s: any, b: any, out: any): any;
    static SubVMulSV(a: any, s: any, b: any, out: any): any;
    static AddVCrossSV(a: any, s: any, v: any, out: any): any;
    static MidVV(a: any, b: any, out: any): any;
    static ExtVV(a: any, b: any, out: any): any;
    static IsEqualToV(a: any, b: any): boolean;
    static DistanceVV(a: any, b: any): number;
    static DistanceSquaredVV(a: any, b: any): number;
    static NegV(v: any, out: any): any;
    constructor(x?: number, y?: number);
    x: number;
    y: number;
    Clone(): b2Vec2;
    SetZero(): b2Vec2;
    Set(x: any, y: any): b2Vec2;
    Copy(other: any): b2Vec2;
    SelfAdd(v: any): b2Vec2;
    SelfAddXY(x: any, y: any): b2Vec2;
    SelfSub(v: any): b2Vec2;
    SelfSubXY(x: any, y: any): b2Vec2;
    SelfMul(s: any): b2Vec2;
    SelfMulAdd(s: any, v: any): b2Vec2;
    SelfMulSub(s: any, v: any): b2Vec2;
    Dot(v: any): number;
    Cross(v: any): number;
    Length(): number;
    LengthSquared(): number;
    Normalize(): number;
    SelfNormalize(): b2Vec2;
    SelfRotate(radians: any): b2Vec2;
    SelfRotateCosSin(c: any, s: any): b2Vec2;
    IsValid(): boolean;
    SelfCrossVS(s: any): b2Vec2;
    SelfCrossSV(s: any): b2Vec2;
    SelfMinV(v: any): b2Vec2;
    SelfMaxV(v: any): b2Vec2;
    SelfAbs(): b2Vec2;
    SelfNeg(): b2Vec2;
    SelfSkew(): b2Vec2;
}
export namespace b2Vec2 {
    const ZERO: b2Vec2;
    const UNITX: b2Vec2;
    const UNITY: b2Vec2;
    const s_t0: b2Vec2;
    const s_t1: b2Vec2;
    const s_t2: b2Vec2;
    const s_t3: b2Vec2;
}
export const b2Vec2_zero: b2Vec2;
export class b2TypedVec2 {
    constructor(...args: any[]);
    data: Float32Array;
    set x(arg: number);
    get x(): number;
    set y(arg: number);
    get y(): number;
    Clone(): b2TypedVec2;
    SetZero(): b2TypedVec2;
    Set(x: any, y: any): b2TypedVec2;
    Copy(other: any): b2TypedVec2;
    SelfAdd(v: any): b2TypedVec2;
    SelfAddXY(x: any, y: any): b2TypedVec2;
    SelfSub(v: any): b2TypedVec2;
    SelfSubXY(x: any, y: any): b2TypedVec2;
    SelfMul(s: any): b2TypedVec2;
    SelfMulAdd(s: any, v: any): b2TypedVec2;
    SelfMulSub(s: any, v: any): b2TypedVec2;
    Dot(v: any): number;
    Cross(v: any): number;
    Length(): number;
    LengthSquared(): number;
    Normalize(): number;
    SelfNormalize(): b2TypedVec2;
    SelfRotate(radians: any): b2TypedVec2;
    SelfRotateCosSin(c: any, s: any): b2TypedVec2;
    IsValid(): boolean;
    SelfCrossVS(s: any): b2TypedVec2;
    SelfCrossSV(s: any): b2TypedVec2;
    SelfMinV(v: any): b2TypedVec2;
    SelfMaxV(v: any): b2TypedVec2;
    SelfAbs(): b2TypedVec2;
    SelfNeg(): b2TypedVec2;
    SelfSkew(): b2TypedVec2;
}
export class b2Vec3 {
    static DotV3V3(a: any, b: any): number;
    static CrossV3V3(a: any, b: any, out: any): any;
    constructor(...args: any[]);
    data: Float32Array;
    set x(arg: number);
    get x(): number;
    set y(arg: number);
    get y(): number;
    set z(arg: number);
    get z(): number;
    Clone(): b2Vec3;
    SetZero(): b2Vec3;
    SetXYZ(x: any, y: any, z: any): b2Vec3;
    Copy(other: any): b2Vec3;
    SelfNeg(): b2Vec3;
    SelfAdd(v: any): b2Vec3;
    SelfAddXYZ(x: any, y: any, z: any): b2Vec3;
    SelfSub(v: any): b2Vec3;
    SelfSubXYZ(x: any, y: any, z: any): b2Vec3;
    SelfMul(s: any): b2Vec3;
}
export namespace b2Vec3 {
    const ZERO_1: b2Vec3;
    export { ZERO_1 as ZERO };
    const s_t0_1: b2Vec3;
    export { s_t0_1 as s_t0 };
}
export class b2Mat22 {
    static FromVV(c1: any, c2: any): b2Mat22;
    static FromSSSS(r1c1: any, r1c2: any, r2c1: any, r2c2: any): b2Mat22;
    static FromAngle(radians: any): b2Mat22;
    static AbsM(M: any, out: any): any;
    static MulMV(M: any, v: any, out: any): any;
    static MulTMV(M: any, v: any, out: any): any;
    static AddMM(A: any, B: any, out: any): any;
    static MulMM(A: any, B: any, out: any): any;
    static MulTMM(A: any, B: any, out: any): any;
    ex: b2Vec2;
    ey: b2Vec2;
    Clone(): b2Mat22;
    SetSSSS(r1c1: any, r1c2: any, r2c1: any, r2c2: any): b2Mat22;
    SetVV(c1: any, c2: any): b2Mat22;
    SetAngle(radians: any): b2Mat22;
    Copy(other: any): b2Mat22;
    SetIdentity(): b2Mat22;
    SetZero(): b2Mat22;
    GetAngle(): number;
    GetInverse(out: any): any;
    Solve(b_x: any, b_y: any, out: any): any;
    SelfAbs(): b2Mat22;
    SelfInv(): b2Mat22;
    SelfAddM(M: any): b2Mat22;
    SelfSubM(M: any): b2Mat22;
}
export namespace b2Mat22 {
    const IDENTITY: b2Mat22;
}
export class b2Mat33 {
    static MulM33V3(A: any, v: any, out: any): any;
    static MulM33XYZ(A: any, x: any, y: any, z: any, out: any): any;
    static MulM33V2(A: any, v: any, out: any): any;
    static MulM33XY(A: any, x: any, y: any, out: any): any;
    data: Float32Array;
    ex: b2Vec3;
    ey: b2Vec3;
    ez: b2Vec3;
    Clone(): b2Mat33;
    SetVVV(c1: any, c2: any, c3: any): b2Mat33;
    Copy(other: any): b2Mat33;
    SetIdentity(): b2Mat33;
    SetZero(): b2Mat33;
    SelfAddM(M: any): b2Mat33;
    Solve33(b_x: any, b_y: any, b_z: any, out: any): any;
    Solve22(b_x: any, b_y: any, out: any): any;
    GetInverse22(M: any): void;
    GetSymInverse33(M: any): void;
}
export namespace b2Mat33 {
    const IDENTITY_1: b2Mat33;
    export { IDENTITY_1 as IDENTITY };
}
export class b2Rot {
    static MulRR(q: any, r: any, out: any): any;
    static MulTRR(q: any, r: any, out: any): any;
    static MulRV(q: any, v: any, out: any): any;
    static MulTRV(q: any, v: any, out: any): any;
    constructor(angle?: number);
    s: number;
    c: number;
    Clone(): b2Rot;
    Copy(other: any): b2Rot;
    SetAngle(angle: any): b2Rot;
    SetIdentity(): b2Rot;
    GetAngle(): number;
    GetXAxis(out: any): any;
    GetYAxis(out: any): any;
}
export namespace b2Rot {
    const IDENTITY_2: b2Rot;
    export { IDENTITY_2 as IDENTITY };
}
export class b2Transform {
    static MulXV(T: any, v: any, out: any): any;
    static MulTXV(T: any, v: any, out: any): any;
    static MulXX(A: any, B: any, out: any): any;
    static MulTXX(A: any, B: any, out: any): any;
    p: b2Vec2;
    q: b2Rot;
    Clone(): b2Transform;
    Copy(other: any): b2Transform;
    SetIdentity(): b2Transform;
    SetPositionRotation(position: any, q: any): b2Transform;
    SetPositionAngle(pos: any, a: any): b2Transform;
    SetPosition(position: any): b2Transform;
    SetPositionXY(x: any, y: any): b2Transform;
    SetRotation(rotation: any): b2Transform;
    SetRotationAngle(radians: any): b2Transform;
    GetPosition(): b2Vec2;
    GetRotation(): b2Rot;
    GetRotationAngle(): number;
    GetAngle(): number;
}
export namespace b2Transform {
    const IDENTITY_3: b2Transform;
    export { IDENTITY_3 as IDENTITY };
}
export class b2Sweep {
    localCenter: b2Vec2;
    c0: b2Vec2;
    c: b2Vec2;
    a0: number;
    a: number;
    alpha0: number;
    Clone(): b2Sweep;
    Copy(other: any): b2Sweep;
    GetTransform(xf: any, beta: any): any;
    Advance(alpha: any): void;
    Normalize(): void;
}
