import type { Arr, Zip, ZipFill, ZipRemainderObj } from '@toolbox-ts/types/defs/array'; /** * Zips two arrays together and returns the zipped array. * The length of the returned array is equal to the length of the shorter input array and discards the remaining elements of the longer array. * * @param a - The first array to zip. * @param b - The second array to zip. * @returns The zipped array. * * @example * ```ts * zip([1, 2], ['a', 'b', 'c']) * // [[1, 'a'], [2, 'b']] * ``` */ export declare function zip(a: A, b: B): Zip; /** * Zips two arrays together and fills the shorter array with a specified value. * * @param a - The first array to zip. * @param b - The second array to zip. * @param fill - The value to fill the shorter array with. * @returns The zipped array with the shorter array filled with the specified value. * * @example * ```ts * zipFill([1, 2], ['a', 'b', 'c'], null) * // [[1, 'a'], [2, 'b'], [null, 'c']] * ``` */ export declare function zipFill(a: A, b: B, fill?: F): ZipFill; /** * Zips two arrays together and returns the zipped array along with the remainder of the longer array. * If one of the arrays is empty, the remainder will be the non-empty array. * * @param a - The first array to zip. * @param b - The second array to zip. * @returns An object containing the zipped array and the remainder of the longer array. * * @example * ```ts * zipRemainder([1, 2], ['a', 'b', 'c']) * // { zipped: [[1, 'a'], [2, 'b']], remainder: ['c'] } * ``` */ export declare function zipRemainder(a: A, b: B): ZipRemainderObj; export declare function zipWith(a: A, b: B, fn: (a: A[number], b: B[number]) => R): R[];