import { NanoPowOptions } from '#lib/config';
declare global {
    interface Window {
        NanoPow: {
            work_generate: typeof work_generate;
            work_validate: typeof work_validate;
        };
    }
}
/**
 * Provide consumer with error information in response to request.
 *
 * @param {string} error - Informative message about error.
 */
export type WorkErrorResponse = {
    error: string;
};
/**
 * Structure of response to `work_generate` call.
 *
 * @param {string} hash - Hash from generate request
 * @param {string} work - Valid proof-of-work nonce generated for input hash
 * @param {string} difficulty - BLAKE2b output which met or exceeded specified minimum threshold
 */
export type WorkGenerateResponse = {
    hash: string;
    work: string;
    difficulty: string;
};
/**
 * Structure of response to `work_validate` call.
 *
 * @param {string} hash - Hash from validate request
 * @param {string} work - Nonce from validate request
 * @param {string} difficulty - BLAKE2b output of `work` + `hash` which is compared to specified minimum threshold to determine validity
 * @param {string} valid_all - 1 for true if nonce is valid for send blocks, else 0 for false
 * @param {string} valid_receive - 1 for true if nonce is valid for receive blocks, else 0 for false
 * @param {string} [valid] - Excluded if optional difficulty was not included in the request. 1 for true if nonce is valid for requested difficulty, else 0 for false
 */
export type WorkValidateResponse = {
    hash: string;
    work: string;
    difficulty: string;
    valid_all: '0' | '1';
    valid_receive: '0' | '1';
    valid?: '0' | '1';
};
/**
 * Finds a nonce that satisfies the Nano proof-of-work requirements.
 *
 * @param {bigint | string} hash - Hexadecimal hash of previous block, or public key for new accounts
 * @param {object} [options] - Used to configure execution
 * @param {string} [options.api] - Specifies how work is generated. Default: best available
 * @param {boolean} [options.debug=false] - Enables additional debug logging to the console. Default: false
 * @param {number} [options.effort=0x4] - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4
 * @param {bigint} [options.difficulty=0xfffffff800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000
 */
export declare function work_generate(hash: bigint | string, options: NanoPowOptions): Promise<WorkGenerateResponse | WorkErrorResponse>;
/**
 * Validates that a nonce satisfies Nano proof-of-work requirements.
 *
 * @param {(bigint|string)} work - Value to validate against hash and difficulty
 * @param {(bigint|string)} hash - Hash of previous block, or public key for new accounts
 * @param {object} [options] - Used to configure execution
 * @param {boolean} [options.debug=false] - Enables additional debug logging to the console. Default: false
 * @param {bigint} [options.difficulty=0xfffffff800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000
 */
export declare function work_validate(work: bigint | string, hash: bigint | string, options: NanoPowOptions): Promise<WorkValidateResponse | WorkErrorResponse>;
export declare const NanoPow: {
    work_generate: typeof work_generate;
    work_validate: typeof work_validate;
};
export default NanoPow;
