import { Enum } from './enum';
/**
 * @param start {number} inclusive
 * @param end {number} exclusive
 * */
export declare function genStringRange(start: number, end: number): string;
/** @description from '0' to '9' */
export declare const digits: string;
/** @description from 'A' to 'Z' */
export declare const upperCaseLetters: string;
/** @description from 'a' to 'z' */
export declare const lowerCaseLetters: string;
/** @description visible characters only in ascii range */
export declare const visibleLetters: string;
/** @description base58btc format, removed '0OIl' and '+/' */
export declare const base58Letters = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
export declare const symbolLetters: string;
/** @description upperCaseLetters + lowerCaseLetters + digits */
export declare const alphabetNumLetters: string;
export declare namespace Random {
    /**
     * @param {number} upper defaults to Number.MAX_SAFE_INTEGER
     * @param {number} lower defaults to 0
     * @returns {number} integer, lower <= value < upper
     */
    function nextInt(upper?: number, lower?: number): number;
    /**
     * @param {number} upper defaults to Number.MAX_VALUE
     * @param {number} lower defaults to 0
     * @param {number} decimal defaults to 2
     * @returns {number} integer or float, lower <= value < upper
     */
    function nextFloat(upper?: number, lower?: number, decimal?: number): number;
    /**
     * @param {number} prob defaults to 0.5
     * @returns {boolean} boolean with prob chance being true
     */
    function nextBool(prob?: number): boolean;
    function probablyRun<T>(prop: number, run: () => T): T | undefined;
    /** @returns real number : -1 .. 1 */
    function nextNP1(): number;
    /**
     * @description random pick one element from array or string
     * @throws Error if given empty array or empty string
     * */
    function element<A>(xs: A[]): A;
    function element(s: string): string;
    function nextDate(after?: Date, before?: Date): Date;
    /**
     * @return value of enum (not key of enum)
     * */
    function nextEnum<E>(e: Enum<E>): E;
    function nextEnumKey<E>(e: Enum<E>): string & keyof E;
    function nextBuffer(n: number): Buffer;
    /**
     * @param {number} n length of string to be generated
     * @param {string} pool candidate characters, defaults to visibleLetters
     * @returns string random generated characters, possible to have repeating characters
     */
    function nextString(n: number, pool?: string): string;
}
