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 {};
