import type { IgnoreMutability, UnknownArray } from '../index.js';
/**
 * Reverses a tuple type.
 *
 * @example
 * ```
 * Reverse<[1, 2, 3]> // [3, 2, 1]
 * ```
 */
export type Reverse<T extends UnknownArray> = IgnoreMutability<T> extends T ? ReverseReadonly<T> : ReverseMutable<T>;
/**
 * @internal
 */
type ReverseMutable<T> = T extends [infer F, ...infer R] ? [...Reverse<R>, F] : [];
/**
 * @internal
 */
type ReverseReadonly<T> = T extends readonly [infer F, ...infer R] ? readonly [...ReverseReadonly<R>, F] : readonly [];
export {};
