/** * Iterates over array-like structures using forEach * @template T - Element type * @param {T[] | ArrayLike} array - Array or array-like object to iterate * @param {function(element: T, i: number): void} body - Callback executed for each element * @returns {void} - No return value */ export declare function array(array: T[] | ArrayLike, body: (element: T, i: number) => void): void; /** * Iterates over object properties * @template TIn - Object type * @param {TIn} o - Target object to iterate * @param {function(element: TIn[keyof TIn], i: keyof TIn): void} body - Callback executed for each property * @returns {void} - No return value */ export declare function object(o: TIn, body: (element: TIn[keyof TIn], i: keyof TIn) => void): void; /** * Universal iteration function for arrays/objects * @template T - Input type (array/object) * @param {T | T[]} it - Target collection to iterate * @param {function(element: any, i: any): void} body - Callback for each element/property * @overload * each(array: T[] | ArrayLike, body: (element: T, i: number) => void): void * @overload * each(o: T, body: (element: T[U], i: U) => void): void * @returns {void} - No return value */ export declare function each(array: T[] | ArrayLike, body: (element: T, i: number) => void): void; export declare function each(o: T, body: (element: T[U], i: U) => void): void; /** * Filters array-like structures * @template T - Element type * @param {T[] | ArrayLike} it - Input collection * @param {function(element: T, i: number): boolean} body - Filter predicate * @returns {T[]} - Array of matching elements */ export declare function grepArray(it: T[] | ArrayLike, body: (element: T, i: number) => boolean): T[]; /** * Type representing a projected object * @template T - Source type * @template U - Target type */ export type Proxy = { [P in keyof T]: U; }; /** * Filters object properties * @template T - Object type * @param {T} o - Target object * @param {function(element: T[keyof T], i: keyof T): boolean} body - Filter predicate * @param {boolean} asArray - Return results as array instead of object * @returns {(Partial | T[keyof T][]) - Filtered results as object or array */ export declare function grepObject(o: T, body: (element: T[keyof T], i: keyof T) => boolean, asArray?: true): T[keyof T][]; export declare function grepObject(o: T, body: (element: T[keyof T], i: keyof T) => boolean, asArray: false): Partial; export declare function grepObject(o: T, body: (element: T[keyof T], i: keyof T) => boolean, asArray: boolean): Partial | T[keyof T][]; /** * Checks if value is array-like * @template T - Element type * @param {unknown} it - Value to check * @returns {it is ArrayLike} - True if array-like */ export declare function isArrayLike(t: T[]): true; export declare function isArrayLike(t: ArrayLike): true; export declare function isArrayLike(t: unknown): t is ArrayLike; /** * Unified filter function for arrays/objects * @template T - Input type * @param {T | T[]} it - Target collection * @param {function(element: any, i: any): boolean} body - Filter predicate * @param {boolean} asArray - Return results as array * @returns {(T[] | Partial)} - Filtered results */ export declare function grep(array: T[] | ArrayLike, body: (element: T, i: number) => boolean): T[]; export declare function grep(o: T, body: (element: T[U], i: U) => boolean): Partial; export declare function grep(o: T, body: (element: T[U], i: U) => boolean, asArray: true): T[U][]; /** * Transforms array elements * @template T - Input element type * @template U - Output element type * @param {T[] | ArrayLike} it - Input collection * @param {function(element: T, i: number): U} body - Transformation function * @returns {U[]} - Transformed elements */ export declare function mapArray(it: T[] | ArrayLike, body: (element: T, i: number) => U): U[]; /** * Transforms object properties * @template TIn - Input object type * @template TResultValue - Output property type * @param {TIn} o - Target object * @param {function(element: TIn[keyof TIn], i: keyof TIn): TResultValue} body - Transformation function * @param {boolean} asArray - Return results as array * @returns {(TResultValue[] | {[P in keyof TIn]?: TResultValue})} - Transformed results */ export declare function mapObject(o: TIn, body: (element: TIn[keyof TIn], i: keyof TIn) => TResultValue, asArray: true): TResultValue[]; export declare function mapObject(o: TIn, body: (element: TIn[keyof TIn], i: keyof TIn) => TResultValue, asArray?: false): { [P in keyof TIn]?: TResultValue; }; export declare function mapObject(o: TIn, body: (element: TIn[keyof TIn], i: keyof TIn) => TResultValue, asArray?: boolean): any; /** * Unified mapping function for arrays/objects * @template T - Input type * @template U - Output type * @param {T | T[]} it - Target collection * @param {function(element: any, i: any): any} body - Transformation function * @param {boolean} asArray - Return results as array * @returns {(U[] | Proxy)} - Transformed results */ export declare function map(array: T[] | ArrayLike, body: (element: T, i: number) => U): U[]; export declare function map(o: TIn, body: (element: TIn[TKey], i: TKey) => TResultValue): Proxy; export declare function map(o: TIn, body: (element: TIn[TKey], i: TKey) => TResultValue, asArray: true): TResultValue[];