import { NanoPowOptions, WorkErrorResponse, WorkGenerateResponse, WorkValidateResponse } from '#types'
import { generate, validate } from './lib'
-export class NanoPow {
- /**
- * 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
- */
- static async work_generate (hash: bigint | string, options: NanoPowOptions): Promise<WorkGenerateResponse | WorkErrorResponse> {
- return generate(hash, options)
- }
+/**
+* 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 async function work_generate (hash: bigint | string, options: NanoPowOptions): Promise<WorkGenerateResponse | WorkErrorResponse> {
+ return generate(hash, options)
+}
- /**
- * 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
- */
- static async work_validate (work: bigint | string, hash: bigint | string, options: NanoPowOptions): Promise<WorkValidateResponse | WorkErrorResponse> {
- return validate(work, hash, options)
- }
+/**
+* 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 async function work_validate (work: bigint | string, hash: bigint | string, options: NanoPowOptions): Promise<WorkValidateResponse | WorkErrorResponse> {
+ return validate(work, hash, options)
}
-export { clearCache, stats } from '#utils'
-export { NanoPow as default }
+export const NanoPow = { work_generate, work_validate }
+export default NanoPow
+
+export { clearCache, stats } from '#utils'