export type EasingFunction = (valueToEase: number) => number; /** #CREDITS https://easings.net */ export declare const EasingFunction: { readonly linear: (valueToEase: number) => number; readonly easeInVeryWeak: (valueToEase: number) => number; readonly easeInWeak: (valueToEase: number) => number; readonly easeIn: (valueToEase: number) => number; readonly easeInStrong: (valueToEase: number) => number; readonly easeInVeryStrong: (valueToEase: number) => number; readonly easeOutVeryWeak: (valueToEase: number) => number; readonly easeOutWeak: (valueToEase: number) => number; readonly easeOut: (valueToEase: number) => number; readonly easeOutStrong: (valueToEase: number) => number; readonly easeOutVeryStrong: (valueToEase: number) => number; readonly easeInOutVeryWeak: (valueToEase: number) => number; readonly easeInOutWeak: (valueToEase: number) => number; readonly easeInOut: (valueToEase: number) => number; readonly easeInOutStrong: (valueToEase: number) => number; readonly easeInOutVeryStrong: (valueToEase: number) => number; }; export declare enum EasingFunctionName { LINEAR = "Linear", EASE_IN_VERY_WEAK = "Ease In Very Weak", EASE_IN_WEAK = "Ease In Weak", EASE_IN = "Ease In", EASE_IN_STRONG = "Ease In Strong", EASE_IN_VERY_STRONG = "Ease In Very Strong", EASE_OUT_VERY_WEAK = "Ease Out Very Weak", EASE_OUT_WEAK = "Ease Out Weak", EASE_OUT = "Ease Out", EASE_OUT_STRONG = "Ease Out Strong", EASE_OUT_VERY_STRONG = "Ease Out Very Strong", EASE_IN_OUT_VERY_WEAK = "Ease In/Out Very Weak", EASE_IN_OUT_WEAK = "Ease In/Out Weak", EASE_IN_OUT = "Ease In/Out", EASE_IN_OUT_STRONG = "Ease In/Out Strong", EASE_IN_OUT_VERY_STRONG = "Ease In/Out Very Strong" } export type WaveFunction = (inputValue: number) => number; export declare const WaveFunction: { readonly triangleWave: (inputValue: number) => number; readonly positiveTriangleWave: (inputValue: number) => number; }; export declare const EPSILON: number; export declare const EPSILON_SQUARED: number; export declare const EPSILON_DEGREES: number; export declare function clamp(value: number, start?: number, end?: number): number; export declare function sign(value: number, zeroSign?: number): number; export declare function toDegrees(angle: number): number; export declare function toRadians(angle: number): number; export declare function roundDecimal(number: number, decimalPlaces: number): number; /** Start range value doesn't need to be lower than the end one, so you can map from `[0, 1]` to `[3, 2]`, where `3` is greater than `2` */ export declare function mapToRange(value: number, originRangeStart: number, originRangeEnd: number, newRangeStart: number, newRangeEnd: number): number; /** Range is `[0, 1)` */ export declare function random(): number; /** Range is `[start, end)` */ export declare function random(start: number, end: number): number; /** Range is `[start, end]` */ export declare function randomInt(start: number, end: number): number; export declare function randomBool(): boolean; /** Return `1` or `-1` */ export declare function randomSign(): number; /** You give it a list of parameters and returns a random one */ export declare function randomPick(array: T[]): T | null; export declare function randomPick(...args: T[]): T | null; export declare const randomUUID: () => string; /** `[from, to]` range is mapped to an `interpolationFactor` in the range `[0, 1]` */ export declare function lerp(from: number, to: number, interpolationFactor: number): number; /** `[from, to]` range is mapped to an `interpolationFactor` in the range `[0, 1]` */ export declare function interpolate(from: number, to: number, interpolationFactor: number, easingFunction?: EasingFunction): number; /** `[from, to]` range is mapped to an `interpolationFactor` in the range `[0, 1]` `interpolationFactor` can go outside the `[0, 1]` range, periodically repeating the interpolation in the given range */ export declare function interpolatePeriodic(from: number, to: number, interpolationFactor: number, easingFunction?: EasingFunction): number; export declare function getEasingFunctionByName(easingFunctionName: EasingFunctionName): EasingFunction; export declare function getEasingFunctionNameByIndex(index: number): EasingFunctionName | null; export declare function angleDistance(from: number, to: number): number; export declare function angleDistanceDegrees(from: number, to: number): number; export declare function angleDistanceRadians(from: number, to: number): number; export declare function angleDistanceSigned(from: number, to: number): number; export declare function angleDistanceSignedDegrees(from: number, to: number): number; export declare function angleDistanceSignedRadians(from: number, to: number): number; /** Clamp the angle to `-180 / +180`, so that, for example, `270` will be `-90` If `usePositiveRange` is `true`, the angle will be clamped to `0 / 360` */ export declare function angleClamp(angle: number, usePositiveRange?: boolean): number; /** Clamp the angle to `-180 / +180`, so that, for example, `270` will be `-90` If `usePositiveRange` is `true`, the angle will be clamped to `0 / 360` */ export declare function angleClampDegrees(angle: number, usePositiveRange?: boolean): number; /** Clamp the angle to `-PI / +PI`, so that, for example, `1.5PI` will be `-0.5PI` If `usePositiveRange` is `true`, the angle will be clamped to `0 / 2PI` */ export declare function angleClampRadians(angle: number, usePositiveRange?: boolean): number; /** The range goes from `start` to `end` by going toward the positive direction (if `useShortestAngle` is `false`) `[20, 300]` is a `280` degrees range, `[300, 20]` is an `80` degrees range, `[-150, -170]` = `[210, 190]` is a `240` degrees range, `[0, -10]` = `[0, 350]` is a `350` degrees range */ export declare function isInsideAngleRange(angle: number, start: number, end: number, useShortestAngle?: boolean): boolean; export declare function isInsideAngleRangeDegrees(angle: number, start: number, end: number, useShortestAngle?: boolean): boolean; export declare function isInsideAngleRangeRadians(angle: number, start: number, end: number, useShortestAngle?: boolean): boolean; /** * How to use * * By default the rotations are in `Degrees` * * For rotations u can add a suffix like `Degrees`/`Radians` to use a specific version, example: * - `angleDistanceSignedDegrees` * - `isInsideAngleRangeRadians` */ export declare const MathUtils: { readonly EPSILON: number; readonly EPSILON_SQUARED: number; readonly EPSILON_DEGREES: number; readonly clamp: typeof clamp; readonly sign: typeof sign; readonly toDegrees: typeof toDegrees; readonly toRadians: typeof toRadians; readonly roundDecimal: typeof roundDecimal; readonly mapToRange: typeof mapToRange; readonly random: typeof random; readonly randomInt: typeof randomInt; readonly randomBool: typeof randomBool; readonly randomSign: typeof randomSign; readonly randomPick: typeof randomPick; readonly randomUUID: () => string; readonly lerp: typeof lerp; readonly interpolate: typeof interpolate; readonly interpolatePeriodic: typeof interpolatePeriodic; readonly getEasingFunctionByName: typeof getEasingFunctionByName; readonly getEasingFunctionNameByIndex: typeof getEasingFunctionNameByIndex; readonly angleDistance: typeof angleDistance; readonly angleDistanceDegrees: typeof angleDistanceDegrees; readonly angleDistanceRadians: typeof angleDistanceRadians; readonly angleDistanceSigned: typeof angleDistanceSigned; readonly angleDistanceSignedDegrees: typeof angleDistanceSignedDegrees; readonly angleDistanceSignedRadians: typeof angleDistanceSignedRadians; readonly angleClamp: typeof angleClamp; readonly angleClampDegrees: typeof angleClampDegrees; readonly angleClampRadians: typeof angleClampRadians; readonly isInsideAngleRange: typeof isInsideAngleRange; readonly isInsideAngleRangeDegrees: typeof isInsideAngleRangeDegrees; readonly isInsideAngleRangeRadians: typeof isInsideAngleRangeRadians; };