import { M as Many } from '../Many-Dnn8Ysh_.js';
import { M as Maybe } from '../Maybe-D6dwMjD9.js';

/**
 * Casts the input value to an array if it is not already an array.
 * @param value The input value to cast to an array.
 * @returns An array containing the input value, or the input value itself if it is already an array.
 * @example
 * ```ts
 * castArray('foo'); // ['foo']
 * castArray(['foo']); // ['foo']
 * castArray(null); // []
 * castArray(undefined); // []
 * ```
 */
declare function castArray<T>(value: null): T[];
/**
 * Casts the input value to an array if it is not already an array.
 * @param value The input value to cast to an array.
 * @returns An array containing the input value, or the input value itself if it is already an array.
 * @example
 * ```ts
 * castArray('foo'); // ['foo']
 * castArray(['foo']); // ['foo']
 * castArray(null); // []
 * castArray(undefined); // []
 * ```
 */
declare function castArray<T>(value: undefined): T[];
/**
 * Casts the input value to an array if it is not already an array.
 * @param value The input value to cast to an array.
 * @returns An array containing the input value, or the input value itself if it is already an array.
 * @example
 * ```ts
 * castArray('foo'); // ['foo']
 * castArray(['foo']); // ['foo']
 * castArray(null); // []
 * castArray(undefined); // []
 * ```
 */
declare function castArray<T>(value: readonly T[]): readonly T[];
/**
 * Casts the input value to an array if it is not already an array.
 * @param value The input value to cast to an array.
 * @returns An array containing the input value, or the input value itself if it is already an array.
 * @example
 * ```ts
 * castArray('foo'); // ['foo']
 * castArray(['foo']); // ['foo']
 * castArray(null); // []
 * castArray(undefined); // []
 * ```
 */
declare function castArray<T>(value: T[]): T[];
/**
 * Casts the input value to an array if it is not already an array.
 * @param value The input value to cast to an array.
 * @returns An array containing the input value, or the input value itself if it is already an array.
 * @example
 * ```ts
 * castArray('foo'); // ['foo']
 * castArray(['foo']); // ['foo']
 * castArray(null); // []
 * castArray(undefined); // []
 * ```
 */
declare function castArray<T>(value: Maybe<Many<NonNullable<T>, 'mutable'> | Many<NonNullable<T>, 'immutable'>>): T[];
/**
 * Casts the input value to an array if it is not already an array.
 * @param value The input value to cast to an array.
 * @returns An array containing the input value, or the input value itself if it is already an array.
 * @example
 * ```ts
 * castArray('foo'); // ['foo']
 * castArray(['foo']); // ['foo']
 * castArray(null); // []
 * castArray(undefined); // []
 * ```
 */
declare function castArray<T>(value: NonNullable<T>): T[];

export { castArray };
