import { Decrement } from "./decrement"; import { IsLowerThan } from "./lower-than"; import { IsNegative } from "./number"; import { Sub } from "./sub"; import { Sum } from "./sum"; /** * Returns the fibonacci sequence number under the passed integer index. Range: `[0, 78]` * @example * ```ts * // 3 * type Case1 = Fibonacci<4> * // 102334155 * type Case2 = Fibonacci<40> * ``` */ export type Fibonacci = IsNegative extends true ? never : IsLowerThan extends true ? T : Fibonacci> extends infer NMinusOne extends number ? Fibonacci> extends infer NMinusTwo extends number ? Sum : never : never;