import { BoardEntity } from '../board-entity';
declare function partitionArray<T>(array: readonly T[], partitionSize: number): readonly T[][];
declare function sleep(ms: any): Promise<unknown>;
export declare const groupByFunction: <T>(keyExtractor: (obj: T) => string | number) => (array: readonly T[]) => {
    [key: string]: readonly T[];
};
export { partitionArray, sleep };
export declare const pickRandom: <T>(array: readonly T[]) => T;
export declare const pickMultipleRandom: <T>(array: readonly T[], quantity: number) => T[];
export declare const pickRandomAlive: (board: BoardEntity[]) => BoardEntity;
export declare const pickMultipleRandomAlive: (board: BoardEntity[], quantity: number) => BoardEntity[];
export declare const pickRandomLowestHealth: (board: BoardEntity[]) => BoardEntity;
export declare const pickRandomLowestAttack: (board: BoardEntity[]) => BoardEntity;
export declare const pickRandomHighestAttack: (board: BoardEntity[]) => BoardEntity;
export declare const pickRandomHighestHealth: (board: BoardEntity[]) => BoardEntity;
export declare const encode: (input: string) => string;
export declare const decode: (base64: string) => string;
export declare const pickMultipleRandomDifferent: <T>(list: T[], n: number) => T[];
export declare const shuffleArray: <T>(array: T[]) => T[];
export declare const findLast: <T>(array: readonly T[], predicate: (value: T, index: number, obj: readonly T[]) => unknown) => T;
export type Mutable<T> = {
    -readonly [P in keyof T]: T[P];
};
