export declare function forEach<V>(array: V[], callback: (value: V, index: number) => void): void;
export declare function reduce<V, A>(array: V[], acc: A, callback: (acc: A, value: V, index: number) => A): A;
export declare function rotate<T>(array: T[], count: number): T[];
export declare function at<T>(array: T[], index: number): T;
export declare function removeAt<T>(array: T[], index: number): void;
export declare function remove<T>(array: T[], element: T): void;
export declare function pull<T>(array: T[], element: T): void;
export declare function push<T>(array: T[], element: T): void;
export declare function insert<T>(array: T[], element: T, at: number): T[];
export declare function unshift<T>(array: T[], ...elements: T[]): number;
export declare function lastIndex<T>(array: T[]): number;
export declare function last<T>(array: T[], offset?: number): T;
export declare function butLast<T>(array: T[]): T[];
export declare function pop<T>(array: T[]): [T, T[]];
export declare function rangeArray(n: any): number[];
export declare function repeatArray<T>(n: any, value: T): T[];
export declare function matchAll<T>(a: T[], b: T[], match: (ai: T, bi: T) => boolean): [number, number][];
export declare function matchAllExc<T>(a: T[], b: T[], match: (ai: T, bi: T) => boolean): [number, number][][];
export declare function _matchAllExc<T>(a: T[], b: T[], _a: Set<number>, _b: Set<number>, _all: [number, number][], match: (ai: T, bi: T) => boolean): [number, number][][];
export declare function reorder<A>(array: A[], element: A, to: number): void;
export declare function sum(array: number[]): number;
export declare function min(array: number[]): number;
export declare function max(array: number[]): number;
export declare function shuffleInplace(array: any): void;
export declare function shuffle(array: any): any[];
