nano-pow
Version:
Proof-of-work generation and validation with WebGPU/WebGL/WASM for Nano cryptocurrency.
50 lines (49 loc) • 2.16 kB
TypeScript
import { ApiSupport } from '#utils';
type ApiSupportedTypes = keyof typeof ApiSupport;
/**
* Input for configuring NanoPow. Must be validated prior to usage, so types are
* `unknown`, but JSDoc indicates expected data types.
*
* @param {string} [api=cpu] - Specifies how work is generated. Default: cpu
* @param {boolean} [debug=false] - Enables additional debug logging to the console. Default: false
* @param {(bigint|string)} [difficulty=0xFFFFFFF800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000
* @param {number} [effort=0x4] - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4
*/
export type NanoPowOptions = {
api?: unknown;
debug?: unknown;
difficulty?: unknown;
effort?: unknown;
};
declare class NanoPowConfigConstructor implements NanoPowOptions {
#private;
static get isInternal(): boolean;
api: ApiSupportedTypes;
debug: boolean;
difficulty: bigint;
effort: number;
toJSON(): {
api: "cpu" | "webgl" | "webgpu" | "wasm";
debug: boolean;
difficulty: string;
effort: number;
};
constructor(api: ApiSupportedTypes, debug: boolean, difficulty: bigint, effort: number);
static create(options: {
api: unknown;
debug: unknown;
difficulty: unknown;
effort: unknown;
} | unknown): Promise<NanoPowConfigConstructor>;
}
/**
* Validated NanoPowOptions object used to guarantee values and types.
* Attempting to call using `new` with throw a TypeError.
*
* @param {string} api - Specifies how work is generated. Default: best available
* @param {boolean} debug - Enables additional debug logging to the console. Default: false
* @param {bigint} difficulty - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000
* @param {number} effort - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4
*/
export declare const NanoPowConfig: (options: any) => Promise<NanoPowConfigConstructor>;
export {};