/**
 * @dev Helper to require at least one property between two
 */
export declare type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
    [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
}[Keys];
/**
 * Utils provider provides utilities functions
 */
export declare class UtilsProvider {
    /**
     * Wrap with override errors
     * @param handler
     * @param exception
     */
    overrideErrorWrap<T>(handler: () => Promise<T> | T, exception: RequireAtLeastOne<{
        exceptionClass?: any;
        exceptionValue?: Promise<T> | T;
        message?: string;
    }, 'exceptionClass' | 'exceptionValue'>): Promise<T>;
    /**
     * The function to provide interval operation with setTimeout behind the scene.
     * @param handler
     * @param msec
     */
    withInterval(handler: () => void | Promise<void>, msec: number): () => void;
    /**
     * The function to provide a wrapper to return null if the process duration exceeds a certain msec.
     * @param handler
     * @param msec
     */
    withTimeout<Result>(handler: () => Result | Promise<Result>, msec: number): Promise<Result | null>;
    /**
     * The function to collapse the wallet address shorter
     * @param walletAddress
     */
    makeWalletAddressShorter(walletAddress: string): string;
    /**
     * The function to randomize a string based on base58 hash algorithm
     */
    randomize(): string;
}
