/** Declaration file generated by dts-gen */

declare module "ffjavascript" {
    export class BigBuffer {
        constructor(...args: any[])

        set(...args: any[]): void

        slice(...args: any[]): void
    }

    export class ChaCha {
        constructor(...args: any[])

        nextBool(...args: any[]): void

        nextU32(...args: any[]): void

        nextU64(...args: any[]): void

        update(...args: any[]): void
    }

    export class EC {
        constructor(...args: any[])

        add(...args: any[]): void

        affine(...args: any[]): void

        double(...args: any[]): void

        eq(...args: any[]): void

        fromRng(...args: any[]): void

        fromRprBE(...args: any[]): void

        fromRprBEM(...args: any[]): void

        fromRprCompressed(...args: any[]): void

        fromRprLE(...args: any[]): void

        fromRprLEJM(...args: any[]): void

        fromRprLEM(...args: any[]): void

        fromRprUncompressed(...args: any[]): void

        isZero(...args: any[]): void

        mulScalar(...args: any[]): void

        multiAffine(...args: any[]): void

        neg(...args: any[]): void

        sub(...args: any[]): void

        timesScalar(...args: any[]): void

        toRprBE(...args: any[]): void

        toRprBEM(...args: any[]): void

        toRprCompressed(...args: any[]): void

        toRprLE(...args: any[]): void

        toRprLEJM(...args: any[]): void

        toRprLEM(...args: any[]): void

        toRprUncompressed(...args: any[]): void

        toString(...args: any[]): void
    }

    export class F1Field {
        constructor(...args: any[])

        e(...args: any[]): any
        add(...args: any[]): any
        sub(...args: any[]): any
        neg(...args: any[]): any
        mul(...args: any[]): any
        mulScalar(...args: any[]): any
        square(...args: any[]): any
        eq(...args: any[]): any
        neq(...args: any[]): any
        lt(...args: any[]): any
        gt(...args: any[]): any
        leq(...args: any[]): any
        geq(...args: any[]): any
        div(...args: any[]): any
        idiv(...args: any[]): any
        inv(...args: any[]): any
        mod(...args: any[]): any
        pow(...args: any[]): any
        exp(...args: any[]): any
        band(...args: any[]): any
        bor(...args: any[]): any
        bxor(...args: any[]): any
        bnot(...args: any[]): any
        shl(...args: any[]): any
        shr(...args: any[]): any
        land(...args: any[]): any
        lor(...args: any[]): any
        lnot(...args: any[]): any
        sqrt_old(...args: any[]): any
        normalize(...args: any[]): any
        random(...args: any[]): any
        toString(...args: any[]): any
        isZero(...args: any[]): any
        fromRng(...args: any[]): any

        fromRprBE(...args: any[]): void

        fromRprBEM(...args: any[]): void

        fromRprLE(...args: any[]): void

        fromRprLEM(...args: any[]): void

        toRprBE(...args: any[]): void

        toRprBEM(...args: any[]): void

        toRprLE(...args: any[]): void

        toRprLEM(...args: any[]): void
    }

    export class F2Field {
        constructor(...args: any[])

        add(...args: any[]): void

        conjugate(...args: any[]): void

        copy(...args: any[]): void

        div(...args: any[]): void

        double(...args: any[]): void

        eq(...args: any[]): void

        exp(...args: any[]): void

        fromRng(...args: any[]): void

        fromRprBE(...args: any[]): void

        fromRprBEM(...args: any[]): void

        fromRprLE(...args: any[]): void

        fromRprLEM(...args: any[]): void

        geq(...args: any[]): void

        gt(...args: any[]): void

        inv(...args: any[]): void

        isZero(...args: any[]): void

        leq(...args: any[]): void

        lt(...args: any[]): void

        mul(...args: any[]): void

        mulScalar(...args: any[]): void

        neg(...args: any[]): void

        neq(...args: any[]): void

        pow(...args: any[]): void

        random(...args: any[]): void

        square(...args: any[]): void

        sub(...args: any[]): void

        toRprBE(...args: any[]): void

        toRprBEM(...args: any[]): void

        toRprLE(...args: any[]): void

        toRprLEM(...args: any[]): void

        toString(...args: any[]): void
    }

    export class F3Field {
        constructor(...args: any[])

        add(...args: any[]): void

        affine(...args: any[]): void

        copy(...args: any[]): void

        div(...args: any[]): void

        double(...args: any[]): void

        eq(...args: any[]): void

        exp(...args: any[]): void

        fromRng(...args: any[]): void

        fromRprBE(...args: any[]): void

        fromRprBEM(...args: any[]): void

        fromRprLE(...args: any[]): void

        fromRprLEM(...args: any[]): void

        geq(...args: any[]): void

        gt(...args: any[]): void

        inv(...args: any[]): void

        isZero(...args: any[]): void

        leq(...args: any[]): void

        lt(...args: any[]): void

        mul(...args: any[]): void

        mulScalar(...args: any[]): void

        neg(...args: any[]): void

        neq(...args: any[]): void

        pow(...args: any[]): void

        random(...args: any[]): void

        square(...args: any[]): void

        sub(...args: any[]): void

        toRprBE(...args: any[]): void

        toRprBEM(...args: any[]): void

        toRprLE(...args: any[]): void

        toRprLEM(...args: any[]): void

        toString(...args: any[]): void
    }

    export class PolField {
        constructor(...args: any[])

        add(...args: any[]): void

        computeVanishingPolinomial(...args: any[]): void

        div(...args: any[]): void

        double(...args: any[]): void

        eq(...args: any[]): void

        eval(...args: any[]): void

        eval2(...args: any[]): void

        evaluateLagrangePolynomials(...args: any[]): void

        extend(...args: any[]): void

        fft(...args: any[]): void

        fft2(...args: any[]): void

        ifft(...args: any[]): void

        ifft2(...args: any[]): void

        lagrange(...args: any[]): void

        log2(...args: any[]): void

        mul(...args: any[]): void

        mulFFT(...args: any[]): void

        mulNormal(...args: any[]): void

        mulScalar(...args: any[]): void

        normalize(...args: any[]): void

        oneRoot(...args: any[]): void

        reduce(...args: any[]): void

        ruffini(...args: any[]): void

        scaleX(...args: any[]): void

        square(...args: any[]): void

        sub(...args: any[]): void

        toString(...args: any[]): void
    }

    export class ZqField {
        constructor(...args: any[])

        e(...args: any[]): any
        add(...args: any[]): any
        sub(...args: any[]): any
        neg(...args: any[]): any
        mul(...args: any[]): any
        mulScalar(...args: any[]): any
        square(...args: any[]): any
        eq(...args: any[]): any
        neq(...args: any[]): any
        lt(...args: any[]): any
        gt(...args: any[]): any
        leq(...args: any[]): any
        geq(...args: any[]): any
        div(...args: any[]): any
        idiv(...args: any[]): any
        inv(...args: any[]): any
        mod(...args: any[]): any
        pow(...args: any[]): any
        exp(...args: any[]): any
        band(...args: any[]): any
        bor(...args: any[]): any
        bxor(...args: any[]): any
        bnot(...args: any[]): any
        shl(...args: any[]): any
        shr(...args: any[]): any
        land(...args: any[]): any
        lor(...args: any[]): any
        lnot(...args: any[]): any
        sqrt_old(...args: any[]): any
        normalize(...args: any[]): any
        random(...args: any[]): any
        toString(...args: any[]): any
        isZero(...args: any[]): any
        fromRng(...args: any[]): any

        fromRprBE(...args: any[]): void

        fromRprBEM(...args: any[]): void

        fromRprLE(...args: any[]): void

        fromRprLEM(...args: any[]): void

        toRprBE(...args: any[]): void

        toRprBEM(...args: any[]): void

        toRprLE(...args: any[]): void

        toRprLEM(...args: any[]): void
    }

    export function buildBls12381(singleThread: any, plugins: any): any

    export function buildBn128(singleThread: any, plugins: any): any

    export function getCurveFromName(name: any, singleThread?: any, plugins?: any): any

    export function getCurveFromQ(q: any, singleThread: any, plugins: any): any

    export function getCurveFromR(r: any, singleThread: any, plugins: any): any

    export namespace Scalar {
        const one: any

        const zero: any

        function abs(a: any): any

        function add(a: any, b: any): any

        function band(a: any, b: any): any

        function bitLength(a: any): any

        function bits(n: any): any

        function bor(a: any, b: any): any

        function bxor(a: any, b: any): any

        function div(a: any, b: any): any

        function e(s: any, radix: any): any

        function eq(a: any, b: any): any

        function exp(a: any, b: any): any

        function fromArray(a: any, radix: any): any

        function fromRprBE(buff: any, o: any, n8: any): any

        function fromRprLE(buff: any, o: any, n8: any): any

        function fromString(s: any, radix: any): any

        function geq(a: any, b: any): any

        function gt(a: any, b: any): any

        function isNegative(a: any): any

        function isOdd(a: any): any

        function isZero(a: any): any

        function land(a: any, b: any): any

        function leq(a: any, b: any): any

        function lnot(a: any): any

        function lor(a: any, b: any): any

        function lt(a: any, b: any): any

        function mod(a: any, b: any): any

        function mul(a: any, b: any): any

        function naf(n: any): any

        function neg(a: any): any

        function neq(a: any, b: any): any

        function pow(a: any, b: any): any

        function shiftLeft(a: any, n: any): any

        function shiftRight(a: any, n: any): any

        function shl(a: any, n: any): any

        function shr(a: any, n: any): any

        function square(a: any): any

        function sub(a: any, b: any): any

        function toArray(s: any, radix: any): any

        function toLEBuff(a: any): any

        function toNumber(s: any): any

        function toRprBE(buff: any, o: any, e: any, n8: any): void

        function toRprLE(buff: any, o: any, e: any, n8: any): void

        function toString(a: any, radix: any): any
    }

    export namespace utils {
        function array2buffer(arr: any, sG: any): any

        function beBuff2int(buff: any): any

        function beInt2Buff(n: any, len: any): any

        function bitReverse(idx: any, bits: any): any

        function buffReverseBits(buff: any, eSize: any): void

        function buffer2array(buff: any, sG: any): any

        function leBuff2int(buff: any): any

        function leInt2Buff(n: any, len: any): any

        function log2(V: any): any

        function stringifyBigInts(o: any): any

        function stringifyFElements(F: any, o: any): any

        function unstringifyBigInts(o: any): any

        function unstringifyFElements(F: any, o: any): any
    }
}
