import { PlainObject } from "../models.mjs"; //#region src/array/slice.d.ts /** * Drop items from the start of an array until they match a value * * @param array Original array * @param callback Callback to get an item's value for matching * @param value Value to match against * @returns New array with items dropped * * @example * ```typescript * drop( * [{id: 1}, {id: 2}, {id: 3}], * item => item.id, * 2, * ); // => [{id: 2}, {id: 3}] * ``` */ declare function drop unknown>(array: Item[], callback: Callback, value: ReturnType): Item[]; /** * Drop items from the start of an array until they match a value * * @param array Original array * @param key Key to get an item's value for matching * @param value Value to match against * @returns New array with items dropped * * @example * ```typescript * drop( * [{id: 1}, {id: 2}, {id: 3}], * 'id', * 2, * ); // => [{id: 2}, {id: 3}] * ``` */ declare function drop(array: Item[], key: ItemKey, value: Item[ItemKey]): Item[]; /** * Drop items from the start of an array while they match a filter * * @param array Original array * @param callback Filter callback to match items * @returns New array with items dropped * * @example * ```typescript * drop( * [{id: 1}, {id: 2}, {id: 3}], * item => item.id === 2, * ); // => [{id: 2}, {id: 3}] * ``` */ declare function drop(array: Item[], callback: (item: Item, index: number, array: Item[]) => boolean): Item[]; /** * Drop a specified number of items, from the start if `>= 0`, or from the end if `< 0` * * @param array Original array * @param count Number of items to drop * @returns New array with items dropped * * @example * ```typescript * drop([1, 2, 3, 4, 5], 2); // => [3, 4, 5] * drop([1, 2, 3, 4, 5], -2); // => [1, 2, 3] * ``` */ declare function drop(array: unknown[], count: number): unknown[]; /** * Slice an array _(returning a new array with a specified range of items)_ * * @param array Original array * @param start Start index _(inclusive)_ * @param end End index _(exclusive)_ * @returns New array with sliced items * * @example * ```typescript * slice([1, 2, 3, 4, 5], 1, 4); // => [2, 3, 4] * ``` */ declare function slice(array: Item[], start: number, end: number): Item[]; /** * Slice an array _(returning a new array with a specified number of items, from the start)_ * * @param array Original array * @param count Maximum size of the new array * @returns New array with sliced items * * @example * ```typescript * slice([1, 2, 3, 4, 5], 3); // => [1, 2, 3] * ``` */ declare function slice(array: Item[], count: number): Item[]; /** * Slice an array _(returning a new array with all items)_ * * @param array Array to slice * @returns Sliced array * * @example * ```typescript * slice([1, 2, 3]); // => [1, 2, 3] * ``` */ declare function slice(array: Item[]): Item[]; /** * Take items from the start of an array until they match a value * * @param array Original array * @param callback Callback to get an item's value for matching * @param value Value to match against * @returns New array with taken items * * @example * ```typescript * take( * [{id: 1}, {id: 2}, {id: 3}], * item => item.id, * 2, * ); // => [{id: 1}] * ``` */ declare function take unknown>(array: Item[], callback: Callback, value: ReturnType): Item[]; /** * Take items from the start of an array until they match a value * * @param array Original array * @param key Key to get an item's value for matching * @param value Value to match against * @returns New array with taken items * * @example * ```typescript * take( * [{id: 1}, {id: 2}, {id: 3}], * 'id', * 2, * ); // => [{id: 1}] * ``` */ declare function take(array: Item[], key: ItemKey, value: Item[ItemKey]): Item[]; /** * Take items from the start of an array while they match a filter * * @param array Original array * @param callback Filter callback to match items * @returns New array with taken items * * @example * ```typescript * take( * [{id: 1}, {id: 2}, {id: 3}], * item => item.id === 2, * ); // => [{id: 1}] * ``` */ declare function take(array: Item[], callback: (item: Item, index: number, array: Item[]) => boolean): Item[]; /** * Take a specified number of items, from the start if `>= 0`, or from the end if `< 0` * * @param array Original array * @param count Number of items to take * @returns New array with taken items * * @example * ```typescript * take([1, 2, 3, 4, 5], 2); // => [1, 2] * take([1, 2, 3, 4, 5], -2); // => [4, 5] * ``` */ declare function take(array: unknown[], count: number): unknown[]; //#endregion export { drop, slice, take };