import { vec3 } from "./vec3"; import { vec4 } from "./vec4"; import { vec2 } from "./vec2"; import { Rect } from "./rect"; declare type vec = vec2 | vec3 | vec4; declare type Operand = vec2 | vec3 | vec4 | Readonly | Readonly | Readonly | number | ArrayLike; declare type Larger = U extends vec4 | Readonly ? vec4 : V extends vec4 | Readonly ? vec4 : U extends vec3 | Readonly ? vec3 : V extends vec3 | Readonly ? vec3 : U extends vec2 | Readonly ? vec2 : V extends vec2 | Readonly ? vec2 : V extends ArrayLike ? ArrayLike : number; declare type ArithmeticType = Larger; export declare function plus(a: U, b: V, out?: ArithmeticType & (vec | ArrayLike)): ArithmeticType; export declare function minus(a: U, b: V, out?: ArithmeticType & vec): ArithmeticType; export declare function mul(a: U, b: V, out?: ArithmeticType & vec): ArithmeticType; export declare function div(a: U, b: V, out?: ArithmeticType & vec): ArithmeticType; export declare function dot(a: vec3, b: vec3): number; export declare function dot(a: vec2, b: vec2): number; export declare function dot(a: vec4, b: vec4): number; export declare function cross(a: vec3, b: vec3): vec3; export declare function cross(a: vec3, b: vec3, out: vec3): vec3; export declare function cross(a: ArrayLike, b: ArrayLike): vec3; export declare function cross(a: ArrayLike, b: ArrayLike, out: ArrayLike): ArrayLike; export declare function distance(a: V, b: V): number; export declare function boxRaycast(box: Rect, center: vec2, direction: vec2): [boolean, number, vec2]; export declare const Deg2Rad: number; export declare const Rad2Deg: number; export {};