export declare function isArray(value: unknown): value is unknown[];
export declare function toMap<T extends any[], K extends keyof T[number]>(source: T, key: K): Map<T[number][K], T[number]>;
export declare const choice: <T>(list: T[] | Readonly<T[]>) => T;
export declare const range: (min: number, max: number) => number[];
export declare function unique<T>(array: T[]): T[];
export declare function isNonEmptyArray<T extends any[]>(array: T | undefined): array is T;
export declare function asArray<T>(input: T | T[] | null): T[];
export declare function isSame(arrayA: any[], arrayB: any[]): boolean;
export declare function lastItemInArray<T extends any[]>(array: T): T[number];
export declare function allButLastArrayItems<T extends any[]>(array: T): T[number][];
export declare function shuffle<T>(array: T[]): T[];
export declare function isEmptyArray(value: unknown): value is unknown[];
export declare function isStringArray(value: unknown): value is string[];
export declare function isNumberArray(value: unknown): value is number[];
export declare function asSingle<T>(value: T | T[]): T;
export declare function repeat<T>(count: number, method: (index: number) => T): T[];
export declare function some<T>(source: T[], min?: number, max?: number): T[];
export declare function intersects(first: unknown[], ...rest: unknown[][]): boolean;
export declare function groupBy<T, K extends keyof T>(source: T[], key: K): Map<T[K], T[]>;
export declare function separate<T>(source: T[], filter: (value: T) => boolean): [found: T[], notFound: T[]];
export declare function toggle<T>(source: T[], value: T, force?: boolean): T[];
