/// <reference types="node" />
import { ICryptoLib } from './crypto-lib';
declare type CreateFn<T> = () => T;
export declare function core(crypto: ICryptoLib): {
    randomBytes: (n: number) => Buffer | DataView;
    randomBit: () => boolean;
    randomByte: () => number;
    randomInt: () => number;
    randomUInt: () => number;
    randomFloat: () => number;
    randomIn: (min: number, max: number) => number;
    randomOf: <T>(list: T[]) => T;
    roll: (n: number) => number;
    shuffle: <T>(list: T[]) => T[];
    pick: <T>(n: number, list: T[]) => T[];
    select: <T>(n: number, list: T[]) => T[];
    replace: <T>(list: T[], value: T) => T[];
    generate: <T>(len: number, create: CreateFn<T>) => T[];
};
export {};
