{
  "version": 3,
  "sources": ["../../core/dist/abi/types.js", "../../core/dist/abi/validations.js", "../../core/dist/abi.js", "../../../node_modules/@scure/base/lib/esm/index.js", "../../core/dist/support/base.js", "../../../node_modules/@noble/hashes/src/_assert.ts", "../../../node_modules/@noble/hashes/src/_u64.ts", "../../../node_modules/@noble/hashes/src/crypto.ts", "../../../node_modules/@noble/hashes/src/utils.ts", "../../../node_modules/@noble/hashes/src/_blake2.ts", "../../../node_modules/@noble/hashes/src/blake2s.ts", "../../../node_modules/@noble/hashes/src/blake3.ts", "../../core/dist/support/blake3.js", "../../core/dist/support/util.js", "../../../node_modules/@noble/ed25519/index.js", "../../core/dist/address.js", "../../core/dist/keypair.js", "../../core/dist/support/ed25519.js", "../../core/dist/support/x25519.js", "../../core/dist/hd-privkey.js", "../../core/dist/hd-pubkey.js", "../../core/dist/lock.js", "../../core/dist/abi/query.js", "../../core/dist/output.js", "../../core/dist/pointer.js", "../../core/dist/privkey.js", "../../core/dist/pubkey.js", "../../core/dist/tx.js", "../../core/dist/instruction.js", "../../core/dist/instructions/import.js", "../../core/dist/instructions/load.js", "../../core/dist/instructions/loadbyorigin.js", "../../core/dist/instructions/new.js", "../../core/dist/instructions/call.js", "../../core/dist/instructions/exec.js", "../../core/dist/instructions/fund.js", "../../core/dist/instructions/lock.js", "../../core/dist/instructions/deploy.js", "../../core/dist/instructions/sign.js", "../../core/dist/instructions/signto.js", "../../core/dist/instructions/unknown.js", "../../core/dist/bcs/uleb.js", "../../core/dist/bcs/buf-reader.js", "../../core/dist/bcs/buf-writer.js", "../../core/dist/bcs/schemas.js", "../../core/dist/bcs.js", "../../sdk/dist/tx-builder.js", "../src/constants.ts", "../src/wallet.ts", "../src/hd-wallet.ts", "../src/single-key-wallet.ts", "../../../node_modules/lowdb/lib/adapters/Memory.js", "../../../node_modules/lowdb/lib/core/Low.js", "../src/storage/lowdb-storage.ts", "../src/storage/memory-storage.ts"],
  "sourcesContent": ["/**\n * Code kind\n */\nexport var CodeKind;\n(function (CodeKind) {\n    CodeKind[CodeKind[\"CLASS\"] = 0] = \"CLASS\";\n    CodeKind[CodeKind[\"FUNCTION\"] = 1] = \"FUNCTION\";\n    CodeKind[CodeKind[\"INTERFACE\"] = 2] = \"INTERFACE\";\n    CodeKind[CodeKind[\"OBJECT\"] = 3] = \"OBJECT\";\n    //ENUM,\n    CodeKind[CodeKind[\"PROXY_CLASS\"] = 100] = \"PROXY_CLASS\";\n    CodeKind[CodeKind[\"PROXY_FUNCTION\"] = 101] = \"PROXY_FUNCTION\";\n    CodeKind[CodeKind[\"PROXY_INTERFACE\"] = 102] = \"PROXY_INTERFACE\";\n})(CodeKind || (CodeKind = {}));\n/**\n * Method kind\n */\nexport var MethodKind;\n(function (MethodKind) {\n    MethodKind[MethodKind[\"PUBLIC\"] = 0] = \"PUBLIC\";\n    MethodKind[MethodKind[\"PROTECTED\"] = 1] = \"PROTECTED\";\n})(MethodKind || (MethodKind = {}));\n", "import { CodeKind, } from './types.js';\n/**\n * Validates the given object implements the ABI interface\n */\nexport function validateAbi(obj) {\n    return typeof obj?.version === 'number' &&\n        Array.isArray(obj.exports) && obj.exports.every((v) => typeof v === 'number') &&\n        Array.isArray(obj.imports) && obj.imports.every((v) => typeof v === 'number') &&\n        Array.isArray(obj.defs) && obj.defs.every(validateCodeDef) &&\n        Array.isArray(obj.typeIds) && obj.typeIds.every(validateTypeIdNode);\n}\n// Validates the given object implements the ExportNode interface\nfunction validateCodeDef(obj) {\n    switch (obj?.kind) {\n        case CodeKind.CLASS: return validateClassNode(obj);\n        case CodeKind.FUNCTION: return validateFunctionNode(obj);\n        case CodeKind.INTERFACE: return validateInterfaceNode(obj);\n        case CodeKind.OBJECT: return validateObjectNode(obj);\n        case CodeKind.PROXY_CLASS:\n        case CodeKind.PROXY_FUNCTION:\n        case CodeKind.PROXY_INTERFACE:\n            return validateProxyNode(obj);\n        default:\n            return false;\n    }\n}\n// TODO\nfunction validateProxyNode(obj) {\n    return typeof obj?.name === 'string' &&\n        typeof obj?.pkg === 'string';\n}\n// Validates the given object implements the ClassNode interface\nfunction validateClassNode(obj) {\n    return typeof obj?.name === 'string' &&\n        typeof obj?.extends === 'string' &&\n        Array.isArray(obj.implements) && obj.implements.every((v) => typeof v === 'string') &&\n        Array.isArray(obj.fields) && obj.fields.every(validateFieldNode) &&\n        Array.isArray(obj.methods) && obj.methods.every(validateMethodNode);\n}\n// Validates the given object implements the FunctionNode interface\nfunction validateFunctionNode(obj) {\n    return typeof obj?.name === 'string' &&\n        Array.isArray(obj.args) && obj.args.every(validateArgNode) &&\n        'rtype' in obj && validateTypeNode(obj.rtype);\n}\n// Validates the given object implements the InterfaceNode interface\nfunction validateInterfaceNode(obj) {\n    return typeof obj?.name === 'string' &&\n        Array.isArray(obj.extends) && obj.extends.every((v) => typeof v === 'string') &&\n        Array.isArray(obj.fields) && obj.fields.every(validateFieldNode) &&\n        Array.isArray(obj.methods) && obj.methods.every(validateFunctionNode);\n}\n// Validates the given object implements the ObjectNode interface\nfunction validateObjectNode(obj) {\n    return typeof obj?.name === 'string' &&\n        Array.isArray(obj.fields) && obj.fields.every(validateFieldNode);\n}\n// Validates the given object implements the FieldNode interface\nfunction validateFieldNode(obj) {\n    return typeof obj?.name === 'string' &&\n        'type' in obj && validateTypeNode(obj.type);\n}\n// Validates the given object implements the MethodNode interface\nfunction validateMethodNode(obj) {\n    return typeof obj?.kind === 'number' &&\n        typeof obj?.name === 'string' &&\n        Array.isArray(obj.args) && obj.args.every(validateArgNode) &&\n        'rtype' in obj && (obj.rtype === null || validateTypeNode(obj.rtype));\n}\n// Validates the given object implements the FieldNode interface\nfunction validateArgNode(obj) {\n    return typeof obj?.name === 'string' &&\n        'type' in obj && validateTypeNode(obj.type);\n}\n// Validates the given object implements the TypeNode interface\nfunction validateTypeNode(obj) {\n    return typeof obj?.name === 'string' &&\n        Array.isArray(obj.args) && obj.args.every(validateTypeNode);\n}\n// Validates the given entry is a valid TypeId\nfunction validateTypeIdNode(obj) {\n    return typeof obj?.id === 'number' && typeof obj?.name === 'string';\n}\n", "import { BCS } from './internal.js';\nimport { validateAbi } from './abi/validations.js';\n/**\n * Parses the given binary data to an ABI interface.\n */\nexport function abiFromBin(data) {\n    const bcs = new BCS({ addAbiTypes: true });\n    const abi = bcs.decode('abi', data);\n    if (validateAbi(abi)) {\n        return abi;\n    }\n    else {\n        throw new Error('invalid abi binary data');\n    }\n}\n/**\n * Parses the given JSON data to an ABI interface.\n */\nexport function abiFromJson(json) {\n    const abi = JSON.parse(json);\n    if (validateAbi(abi)) {\n        return abi;\n    }\n    else {\n        throw new Error('invalid abi json string');\n    }\n}\n/**\n * Serializes the given ABI interface to binary data.\n */\nexport function abiToBin(abi) {\n    const bcs = new BCS({ addAbiTypes: true });\n    return bcs.encode('abi', abi);\n}\n/**\n * Serializes the given ABI interface to JSON data.\n */\nexport function abiToJson(abi, space = 0) {\n    const isImport = (val) => {\n        return typeof val.kind === 'number' && typeof val.pkg === 'string';\n    };\n    return JSON.stringify(abi, function (key, val) {\n        if (key === 'node' || key === 'source' || (key === 'code' && isImport(this))) {\n            return undefined;\n        }\n        else {\n            return val;\n        }\n    }, space);\n}\n", "/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nexport function assertNumber(n) {\n    if (!Number.isSafeInteger(n))\n        throw new Error(`Wrong integer: ${n}`);\n}\nfunction chain(...args) {\n    const wrap = (a, b) => (c) => a(b(c));\n    const encode = Array.from(args)\n        .reverse()\n        .reduce((acc, i) => (acc ? wrap(acc, i.encode) : i.encode), undefined);\n    const decode = args.reduce((acc, i) => (acc ? wrap(acc, i.decode) : i.decode), undefined);\n    return { encode, decode };\n}\nfunction alphabet(alphabet) {\n    return {\n        encode: (digits) => {\n            if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n                throw new Error('alphabet.encode input should be an array of numbers');\n            return digits.map((i) => {\n                assertNumber(i);\n                if (i < 0 || i >= alphabet.length)\n                    throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n                return alphabet[i];\n            });\n        },\n        decode: (input) => {\n            if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n                throw new Error('alphabet.decode input should be array of strings');\n            return input.map((letter) => {\n                if (typeof letter !== 'string')\n                    throw new Error(`alphabet.decode: not string element=${letter}`);\n                const index = alphabet.indexOf(letter);\n                if (index === -1)\n                    throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n                return index;\n            });\n        },\n    };\n}\nfunction join(separator = '') {\n    if (typeof separator !== 'string')\n        throw new Error('join separator should be string');\n    return {\n        encode: (from) => {\n            if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n                throw new Error('join.encode input should be array of strings');\n            for (let i of from)\n                if (typeof i !== 'string')\n                    throw new Error(`join.encode: non-string input=${i}`);\n            return from.join(separator);\n        },\n        decode: (to) => {\n            if (typeof to !== 'string')\n                throw new Error('join.decode input should be string');\n            return to.split(separator);\n        },\n    };\n}\nfunction padding(bits, chr = '=') {\n    assertNumber(bits);\n    if (typeof chr !== 'string')\n        throw new Error('padding chr should be string');\n    return {\n        encode(data) {\n            if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n                throw new Error('padding.encode input should be array of strings');\n            for (let i of data)\n                if (typeof i !== 'string')\n                    throw new Error(`padding.encode: non-string input=${i}`);\n            while ((data.length * bits) % 8)\n                data.push(chr);\n            return data;\n        },\n        decode(input) {\n            if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n                throw new Error('padding.encode input should be array of strings');\n            for (let i of input)\n                if (typeof i !== 'string')\n                    throw new Error(`padding.decode: non-string input=${i}`);\n            let end = input.length;\n            if ((end * bits) % 8)\n                throw new Error('Invalid padding: string should have whole number of bytes');\n            for (; end > 0 && input[end - 1] === chr; end--) {\n                if (!(((end - 1) * bits) % 8))\n                    throw new Error('Invalid padding: string has too much padding');\n            }\n            return input.slice(0, end);\n        },\n    };\n}\nfunction normalize(fn) {\n    if (typeof fn !== 'function')\n        throw new Error('normalize fn should be function');\n    return { encode: (from) => from, decode: (to) => fn(to) };\n}\nfunction convertRadix(data, from, to) {\n    if (from < 2)\n        throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n    if (to < 2)\n        throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n    if (!Array.isArray(data))\n        throw new Error('convertRadix: data should be array');\n    if (!data.length)\n        return [];\n    let pos = 0;\n    const res = [];\n    const digits = Array.from(data);\n    digits.forEach((d) => {\n        assertNumber(d);\n        if (d < 0 || d >= from)\n            throw new Error(`Wrong integer: ${d}`);\n    });\n    while (true) {\n        let carry = 0;\n        let done = true;\n        for (let i = pos; i < digits.length; i++) {\n            const digit = digits[i];\n            const digitBase = from * carry + digit;\n            if (!Number.isSafeInteger(digitBase) ||\n                (from * carry) / from !== carry ||\n                digitBase - digit !== from * carry) {\n                throw new Error('convertRadix: carry overflow');\n            }\n            carry = digitBase % to;\n            digits[i] = Math.floor(digitBase / to);\n            if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase)\n                throw new Error('convertRadix: carry overflow');\n            if (!done)\n                continue;\n            else if (!digits[i])\n                pos = i;\n            else\n                done = false;\n        }\n        res.push(carry);\n        if (done)\n            break;\n    }\n    for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n        res.push(0);\n    return res.reverse();\n}\nconst gcd = (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = (from, to) => from + (to - gcd(from, to));\nfunction convertRadix2(data, from, to, padding) {\n    if (!Array.isArray(data))\n        throw new Error('convertRadix2: data should be array');\n    if (from <= 0 || from > 32)\n        throw new Error(`convertRadix2: wrong from=${from}`);\n    if (to <= 0 || to > 32)\n        throw new Error(`convertRadix2: wrong to=${to}`);\n    if (radix2carry(from, to) > 32) {\n        throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n    }\n    let carry = 0;\n    let pos = 0;\n    const mask = 2 ** to - 1;\n    const res = [];\n    for (const n of data) {\n        assertNumber(n);\n        if (n >= 2 ** from)\n            throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n        carry = (carry << from) | n;\n        if (pos + from > 32)\n            throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n        pos += from;\n        for (; pos >= to; pos -= to)\n            res.push(((carry >> (pos - to)) & mask) >>> 0);\n        carry &= 2 ** pos - 1;\n    }\n    carry = (carry << (to - pos)) & mask;\n    if (!padding && pos >= from)\n        throw new Error('Excess padding');\n    if (!padding && carry)\n        throw new Error(`Non-zero padding: ${carry}`);\n    if (padding && pos > 0)\n        res.push(carry >>> 0);\n    return res;\n}\nfunction radix(num) {\n    assertNumber(num);\n    return {\n        encode: (bytes) => {\n            if (!(bytes instanceof Uint8Array))\n                throw new Error('radix.encode input should be Uint8Array');\n            return convertRadix(Array.from(bytes), 2 ** 8, num);\n        },\n        decode: (digits) => {\n            if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n                throw new Error('radix.decode input should be array of strings');\n            return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n        },\n    };\n}\nfunction radix2(bits, revPadding = false) {\n    assertNumber(bits);\n    if (bits <= 0 || bits > 32)\n        throw new Error('radix2: bits should be in (0..32]');\n    if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n        throw new Error('radix2: carry overflow');\n    return {\n        encode: (bytes) => {\n            if (!(bytes instanceof Uint8Array))\n                throw new Error('radix2.encode input should be Uint8Array');\n            return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n        },\n        decode: (digits) => {\n            if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n                throw new Error('radix2.decode input should be array of strings');\n            return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n        },\n    };\n}\nfunction unsafeWrapper(fn) {\n    if (typeof fn !== 'function')\n        throw new Error('unsafeWrapper fn should be function');\n    return function (...args) {\n        try {\n            return fn.apply(null, args);\n        }\n        catch (e) { }\n    };\n}\nfunction checksum(len, fn) {\n    assertNumber(len);\n    if (typeof fn !== 'function')\n        throw new Error('checksum fn should be function');\n    return {\n        encode(data) {\n            if (!(data instanceof Uint8Array))\n                throw new Error('checksum.encode: input should be Uint8Array');\n            const checksum = fn(data).slice(0, len);\n            const res = new Uint8Array(data.length + len);\n            res.set(data);\n            res.set(checksum, data.length);\n            return res;\n        },\n        decode(data) {\n            if (!(data instanceof Uint8Array))\n                throw new Error('checksum.decode: input should be Uint8Array');\n            const payload = data.slice(0, -len);\n            const newChecksum = fn(payload).slice(0, len);\n            const oldChecksum = data.slice(-len);\n            for (let i = 0; i < len; i++)\n                if (newChecksum[i] !== oldChecksum[i])\n                    throw new Error('Invalid checksum');\n            return payload;\n        },\n    };\n}\nexport const utils = { alphabet, chain, checksum, radix, radix2, join, padding };\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexport const base64 = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexport const base64url = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexport const base58xmr = {\n    encode(data) {\n        let res = '';\n        for (let i = 0; i < data.length; i += 8) {\n            const block = data.subarray(i, i + 8);\n            res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n        }\n        return res;\n    },\n    decode(str) {\n        let res = [];\n        for (let i = 0; i < str.length; i += 11) {\n            const slice = str.slice(i, i + 11);\n            const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n            const block = base58.decode(slice);\n            for (let j = 0; j < block.length - blockLen; j++) {\n                if (block[j] !== 0)\n                    throw new Error('base58xmr: wrong padding');\n            }\n            res = res.concat(Array.from(block.slice(block.length - blockLen)));\n        }\n        return Uint8Array.from(res);\n    },\n};\nexport const base58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n    const b = pre >> 25;\n    let chk = (pre & 0x1ffffff) << 5;\n    for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n        if (((b >> i) & 1) === 1)\n            chk ^= POLYMOD_GENERATORS[i];\n    }\n    return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n    const len = prefix.length;\n    let chk = 1;\n    for (let i = 0; i < len; i++) {\n        const c = prefix.charCodeAt(i);\n        if (c < 33 || c > 126)\n            throw new Error(`Invalid prefix (${prefix})`);\n        chk = bech32Polymod(chk) ^ (c >> 5);\n    }\n    chk = bech32Polymod(chk);\n    for (let i = 0; i < len; i++)\n        chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n    for (let v of words)\n        chk = bech32Polymod(chk) ^ v;\n    for (let i = 0; i < 6; i++)\n        chk = bech32Polymod(chk);\n    chk ^= encodingConst;\n    return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\nfunction genBech32(encoding) {\n    const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n    const _words = radix2(5);\n    const fromWords = _words.decode;\n    const toWords = _words.encode;\n    const fromWordsUnsafe = unsafeWrapper(fromWords);\n    function encode(prefix, words, limit = 90) {\n        if (typeof prefix !== 'string')\n            throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n        if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n            throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n        const actualLength = prefix.length + 7 + words.length;\n        if (limit !== false && actualLength > limit)\n            throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n        prefix = prefix.toLowerCase();\n        return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`;\n    }\n    function decode(str, limit = 90) {\n        if (typeof str !== 'string')\n            throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n        if (str.length < 8 || (limit !== false && str.length > limit))\n            throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n        const lowered = str.toLowerCase();\n        if (str !== lowered && str !== str.toUpperCase())\n            throw new Error(`String must be lowercase or uppercase`);\n        str = lowered;\n        const sepIndex = str.lastIndexOf('1');\n        if (sepIndex === 0 || sepIndex === -1)\n            throw new Error(`Letter \"1\" must be present between prefix and data only`);\n        const prefix = str.slice(0, sepIndex);\n        const _words = str.slice(sepIndex + 1);\n        if (_words.length < 6)\n            throw new Error('Data must be at least 6 characters long');\n        const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n        const sum = bechChecksum(prefix, words, ENCODING_CONST);\n        if (!_words.endsWith(sum))\n            throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n        return { prefix, words };\n    }\n    const decodeUnsafe = unsafeWrapper(decode);\n    function decodeToBytes(str) {\n        const { prefix, words } = decode(str, false);\n        return { prefix, words, bytes: fromWords(words) };\n    }\n    return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexport const bech32 = genBech32('bech32');\nexport const bech32m = genBech32('bech32m');\nexport const utf8 = {\n    encode: (data) => new TextDecoder().decode(data),\n    decode: (str) => new TextEncoder().encode(str),\n};\nexport const hex = chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n    if (typeof s !== 'string' || s.length % 2)\n        throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n    return s.toLowerCase();\n}));\nconst CODERS = {\n    utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = `Invalid encoding type. Available types: ${Object.keys(CODERS).join(', ')}`;\nexport const bytesToString = (type, bytes) => {\n    if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n        throw new TypeError(coderTypeError);\n    if (!(bytes instanceof Uint8Array))\n        throw new TypeError('bytesToString() expects Uint8Array');\n    return CODERS[type].encode(bytes);\n};\nexport const str = bytesToString;\nexport const stringToBytes = (type, str) => {\n    if (!CODERS.hasOwnProperty(type))\n        throw new TypeError(coderTypeError);\n    if (typeof str !== 'string')\n        throw new TypeError('stringToBytes() expects string');\n    return CODERS[type].decode(str);\n};\nexport const bytes = stringToBytes;\n", "import { hex as b16, base64 as b64, bech32m as b32m } from '@scure/base';\n/**\n * Interface for encoding two and from base16 / hex.\n */\nexport var base16;\n(function (base16) {\n    /**\n     * Encodes the given bytes as a hex string.\n     */\n    function encode(data) {\n        return b16.encode(data);\n    }\n    base16.encode = encode;\n    /**\n     * Decodes the given hex string to bytes.\n     */\n    function decode(str) {\n        return b16.decode(str);\n    }\n    base16.decode = decode;\n})(base16 || (base16 = {}));\n/**\n * Interface for encoding two and from base64.\n */\nexport var base64;\n(function (base64) {\n    /**\n     * Encodes the given bytes as a base64 string.\n     */\n    function encode(data) {\n        return b64.encode(data);\n    }\n    base64.encode = encode;\n    /**\n     * Decodes the given base64 string to bytes.\n     */\n    function decode(str) {\n        return b64.decode(str);\n    }\n    base64.decode = decode;\n})(base64 || (base64 = {}));\n/**\n * Interface for encoding two and from bech32m.\n */\nexport var bech32m;\n(function (bech32m) {\n    /**\n     * Encodes the given bytes as a bech32 string with the specified prefix.\n     */\n    function encode(data, prefix = '') {\n        const words = b32m.toWords(data);\n        return b32m.encode(prefix, words, 192);\n    }\n    bech32m.encode = encode;\n    /**\n     * Decodes the given bech32 string to bytes, ensuring a matching prefix.\n     */\n    function decode(str, prefix = '') {\n        const result = b32m.decode(str, 192);\n        if (result.prefix === prefix) {\n            return b32m.fromWords(result.words);\n        }\n        else {\n            throw Error(`invalid prefix: ${prefix}`);\n        }\n    }\n    bech32m.decode = decode;\n})(bech32m || (bech32m = {}));\n", "export function number(n: number) {\n  if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nexport function bool(b: boolean) {\n  if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nexport function bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n  if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array');\n  if (lengths.length > 0 && !lengths.includes(b.length))\n    throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n  (data: Uint8Array): Uint8Array;\n  blockLen: number;\n  outputLen: number;\n  create: any;\n};\nexport function hash(hash: Hash) {\n  if (typeof hash !== 'function' || typeof hash.create !== 'function')\n    throw new Error('Hash should be wrapped by utils.wrapConstructor');\n  number(hash.outputLen);\n  number(hash.blockLen);\n}\n\nexport function exists(instance: any, checkFinished = true) {\n  if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n  if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nexport function output(out: any, instance: any) {\n  bytes(out);\n  const min = instance.outputLen;\n  if (out.length < min) {\n    throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n  }\n}\n\nconst assert = {\n  number,\n  bool,\n  bytes,\n  hash,\n  exists,\n  output,\n};\n\nexport default assert;\n", "const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nexport function fromBig(n: bigint, le = false) {\n  if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n  return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nexport function split(lst: bigint[], le = false) {\n  let Ah = new Uint32Array(lst.length);\n  let Al = new Uint32Array(lst.length);\n  for (let i = 0; i < lst.length; i++) {\n    const { h, l } = fromBig(lst[i], le);\n    [Ah[i], Al[i]] = [h, l];\n  }\n  return [Ah, Al];\n}\n\nexport const toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (h: number, l: number) => l;\nconst rotr32L = (h: number, l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\n// Removing \"export\" has 5% perf penalty -_-\nexport function add(Ah: number, Al: number, Bh: number, Bl: number) {\n  const l = (Al >>> 0) + (Bl >>> 0);\n  return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n  (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n  (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n  (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nconst u64 = {\n  fromBig, split, toBig,\n  shrSH, shrSL,\n  rotrSH, rotrSL, rotrBH, rotrBL,\n  rotr32H, rotr32L,\n  rotlSH, rotlSL, rotlBH, rotlBL,\n  add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n", "// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record<string, any> | undefined;\nexport const crypto =\n  typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n", "/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n  Uint16Array | Int16Array | Uint32Array | Int32Array;\n\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n  new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n  new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n  if (!u8a(bytes)) throw new Error('Uint8Array expected');\n  // pre-caching improves the speed 6x\n  let hex = '';\n  for (let i = 0; i < bytes.length; i++) {\n    hex += hexes[bytes[i]];\n  }\n  return hex;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n  if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n  const len = hex.length;\n  if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n  const array = new Uint8Array(len / 2);\n  for (let i = 0; i < array.length; i++) {\n    const j = i * 2;\n    const hexByte = hex.slice(j, j + 2);\n    const byte = Number.parseInt(hexByte, 16);\n    if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n    array[i] = byte;\n  }\n  return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n  let ts = Date.now();\n  for (let i = 0; i < iters; i++) {\n    cb(i);\n    // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n    const diff = Date.now() - ts;\n    if (diff >= 0 && diff < tick) continue;\n    await nextTick();\n    ts += diff;\n  }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n  if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n  return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n  if (typeof data === 'string') data = utf8ToBytes(data);\n  if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n  return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n  const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n  let pad = 0; // walk through each item, ensure they have proper type\n  arrays.forEach((a) => {\n    if (!u8a(a)) throw new Error('Uint8Array expected');\n    r.set(a, pad);\n    pad += a.length;\n  });\n  return r;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash<T extends Hash<T>> {\n  abstract blockLen: number; // Bytes per block\n  abstract outputLen: number; // Bytes in output\n  abstract update(buf: Input): this;\n  // Writes digest into buf\n  abstract digestInto(buf: Uint8Array): void;\n  abstract digest(): Uint8Array;\n  /**\n   * Resets internal state. Makes Hash instance unusable.\n   * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n   * by user, they will need to manually call `destroy()` when zeroing is necessary.\n   */\n  abstract destroy(): void;\n  /**\n   * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n   * when no options are passed.\n   * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n   * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n   * There are no guarantees for clean-up because it's impossible in JS.\n   */\n  abstract _cloneInto(to?: T): T;\n  // Safe version that clones internal state\n  clone(): T {\n    return this._cloneInto();\n  }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n  xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n  xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj: any) =>\n  Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n  defaults: T1,\n  opts?: T2\n): T1 & T2 {\n  if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n    throw new Error('Options should be object or undefined');\n  const merged = Object.assign(defaults, opts);\n  return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType<typeof wrapConstructor>;\n\nexport function wrapConstructor<T extends Hash<T>>(hashCons: () => Hash<T>) {\n  const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n  const tmp = hashCons();\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = () => hashCons();\n  return hashC;\n}\n\nexport function wrapConstructorWithOpts<H extends Hash<H>, T extends Object>(\n  hashCons: (opts?: T) => Hash<H>\n) {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts: T) => hashCons(opts);\n  return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts<H extends HashXOF<H>, T extends Object>(\n  hashCons: (opts?: T) => HashXOF<H>\n) {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts: T) => hashCons(opts);\n  return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n  if (crypto && typeof crypto.getRandomValues === 'function') {\n    return crypto.getRandomValues(new Uint8Array(bytesLength));\n  }\n  throw new Error('crypto.getRandomValues must be defined');\n}\n", "import assert from './_assert.js';\nimport { Hash, Input, toBytes, u32 } from './utils.js';\n// For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1].\n// prettier-ignore\nexport const SIGMA = new Uint8Array([\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n  11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n  7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n  9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n  2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n  12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n  13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n  6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n  10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n]);\n\nexport type BlakeOpts = {\n  dkLen?: number;\n  key?: Input;\n  salt?: Input;\n  personalization?: Input;\n};\n\nexport abstract class BLAKE2<T extends BLAKE2<T>> extends Hash<T> {\n  protected abstract compress(msg: Uint32Array, offset: number, isLast: boolean): void;\n  protected abstract get(): number[];\n  protected abstract set(...args: number[]): void;\n  abstract destroy(): void;\n  protected buffer: Uint8Array;\n  protected buffer32: Uint32Array;\n  protected length: number = 0;\n  protected pos: number = 0;\n  protected finished = false;\n  protected destroyed = false;\n\n  constructor(\n    readonly blockLen: number,\n    public outputLen: number,\n    opts: BlakeOpts = {},\n    keyLen: number,\n    saltLen: number,\n    persLen: number\n  ) {\n    super();\n    assert.number(blockLen);\n    assert.number(outputLen);\n    assert.number(keyLen);\n    if (outputLen < 0 || outputLen > keyLen) throw new Error('outputLen bigger than keyLen');\n    if (opts.key !== undefined && (opts.key.length < 1 || opts.key.length > keyLen))\n      throw new Error(`key must be up 1..${keyLen} byte long or undefined`);\n    if (opts.salt !== undefined && opts.salt.length !== saltLen)\n      throw new Error(`salt must be ${saltLen} byte long or undefined`);\n    if (opts.personalization !== undefined && opts.personalization.length !== persLen)\n      throw new Error(`personalization must be ${persLen} byte long or undefined`);\n    this.buffer32 = u32((this.buffer = new Uint8Array(blockLen)));\n  }\n  update(data: Input) {\n    assert.exists(this);\n    // Main difference with other hashes: there is flag for last block,\n    // so we cannot process current block before we know that there\n    // is the next one. This significantly complicates logic and reduces ability\n    // to do zero-copy processing\n    const { blockLen, buffer, buffer32 } = this;\n    data = toBytes(data);\n    const len = data.length;\n    const offset = data.byteOffset;\n    const buf = data.buffer;\n    for (let pos = 0; pos < len; ) {\n      // If buffer is full and we still have input (don't process last block, same as blake2s)\n      if (this.pos === blockLen) {\n        this.compress(buffer32, 0, false);\n        this.pos = 0;\n      }\n      const take = Math.min(blockLen - this.pos, len - pos);\n      const dataOffset = offset + pos;\n      // full block && aligned to 4 bytes && not last in input\n      if (take === blockLen && !(dataOffset % 4) && pos + take < len) {\n        const data32 = new Uint32Array(buf, dataOffset, Math.floor((len - pos) / 4));\n        for (let pos32 = 0; pos + blockLen < len; pos32 += buffer32.length, pos += blockLen) {\n          this.length += blockLen;\n          this.compress(data32, pos32, false);\n        }\n        continue;\n      }\n      buffer.set(data.subarray(pos, pos + take), this.pos);\n      this.pos += take;\n      this.length += take;\n      pos += take;\n    }\n    return this;\n  }\n  digestInto(out: Uint8Array) {\n    assert.exists(this);\n    assert.output(out, this);\n    const { pos, buffer32 } = this;\n    this.finished = true;\n    // Padding\n    this.buffer.subarray(pos).fill(0);\n    this.compress(buffer32, 0, true);\n    const out32 = u32(out);\n    this.get().forEach((v, i) => (out32[i] = v));\n  }\n  digest() {\n    const { buffer, outputLen } = this;\n    this.digestInto(buffer);\n    const res = buffer.slice(0, outputLen);\n    this.destroy();\n    return res;\n  }\n  _cloneInto(to?: T): T {\n    const { buffer, length, finished, destroyed, outputLen, pos } = this;\n    to ||= new (this.constructor as any)({ dkLen: outputLen }) as T;\n    to.set(...this.get());\n    to.length = length;\n    to.finished = finished;\n    to.destroyed = destroyed;\n    to.outputLen = outputLen;\n    to.buffer.set(buffer);\n    to.pos = pos;\n    return to;\n  }\n}\n", "import { BLAKE2, BlakeOpts, SIGMA } from './_blake2.js';\nimport u64 from './_u64.js';\nimport { rotr, toBytes, wrapConstructorWithOpts, u32 } from './utils.js';\n\n// Initial state:\n// first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19)\n// same as SHA-256\n// prettier-ignore\nexport const IV = new Uint32Array([\n  0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n// Mixing function G splitted in two halfs\nfunction G1(a: number, b: number, c: number, d: number, x: number) {\n  a = (a + b + x) | 0;\n  d = rotr(d ^ a, 16);\n  c = (c + d) | 0;\n  b = rotr(b ^ c, 12);\n  return { a, b, c, d };\n}\n\nfunction G2(a: number, b: number, c: number, d: number, x: number) {\n  a = (a + b + x) | 0;\n  d = rotr(d ^ a, 8);\n  c = (c + d) | 0;\n  b = rotr(b ^ c, 7);\n  return { a, b, c, d };\n}\n// prettier-ignore\nexport function compress(s: Uint8Array, offset: number, msg: Uint32Array, rounds: number,\n  v0: number, v1: number,  v2: number,  v3: number,  v4: number,  v5: number,  v6: number,  v7: number,\n  v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number,\n) {\n  let j = 0;\n  for (let i = 0; i < rounds; i++) {\n    ({ a: v0, b: v4, c: v8, d: v12 } = G1(v0, v4, v8, v12, msg[offset + s[j++]]));\n    ({ a: v0, b: v4, c: v8, d: v12 } = G2(v0, v4, v8, v12, msg[offset + s[j++]]));\n    ({ a: v1, b: v5, c: v9, d: v13 } = G1(v1, v5, v9, v13, msg[offset + s[j++]]));\n    ({ a: v1, b: v5, c: v9, d: v13 } = G2(v1, v5, v9, v13, msg[offset + s[j++]]));\n    ({ a: v2, b: v6, c: v10, d: v14 } = G1(v2, v6, v10, v14, msg[offset + s[j++]]));\n    ({ a: v2, b: v6, c: v10, d: v14 } = G2(v2, v6, v10, v14, msg[offset + s[j++]]));\n    ({ a: v3, b: v7, c: v11, d: v15 } = G1(v3, v7, v11, v15, msg[offset + s[j++]]));\n    ({ a: v3, b: v7, c: v11, d: v15 } = G2(v3, v7, v11, v15, msg[offset + s[j++]]));\n\n    ({ a: v0, b: v5, c: v10, d: v15 } = G1(v0, v5, v10, v15, msg[offset + s[j++]]));\n    ({ a: v0, b: v5, c: v10, d: v15 } = G2(v0, v5, v10, v15, msg[offset + s[j++]]));\n    ({ a: v1, b: v6, c: v11, d: v12 } = G1(v1, v6, v11, v12, msg[offset + s[j++]]));\n    ({ a: v1, b: v6, c: v11, d: v12 } = G2(v1, v6, v11, v12, msg[offset + s[j++]]));\n    ({ a: v2, b: v7, c: v8, d: v13 } = G1(v2, v7, v8, v13, msg[offset + s[j++]]));\n    ({ a: v2, b: v7, c: v8, d: v13 } = G2(v2, v7, v8, v13, msg[offset + s[j++]]));\n    ({ a: v3, b: v4, c: v9, d: v14 } = G1(v3, v4, v9, v14, msg[offset + s[j++]]));\n    ({ a: v3, b: v4, c: v9, d: v14 } = G2(v3, v4, v9, v14, msg[offset + s[j++]]));\n  }\n  return { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 };\n}\n\nclass BLAKE2s extends BLAKE2<BLAKE2s> {\n  // Internal state, same as SHA-256\n  private v0 = IV[0] | 0;\n  private v1 = IV[1] | 0;\n  private v2 = IV[2] | 0;\n  private v3 = IV[3] | 0;\n  private v4 = IV[4] | 0;\n  private v5 = IV[5] | 0;\n  private v6 = IV[6] | 0;\n  private v7 = IV[7] | 0;\n\n  constructor(opts: BlakeOpts = {}) {\n    super(64, opts.dkLen === undefined ? 32 : opts.dkLen, opts, 32, 8, 8);\n    const keyLength = opts.key ? opts.key.length : 0;\n    this.v0 ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n    if (opts.salt) {\n      const salt = u32(toBytes(opts.salt));\n      this.v4 ^= salt[0];\n      this.v5 ^= salt[1];\n    }\n    if (opts.personalization) {\n      const pers = u32(toBytes(opts.personalization));\n      this.v6 ^= pers[0];\n      this.v7 ^= pers[1];\n    }\n    if (opts.key) {\n      // Pad to blockLen and update\n      const tmp = new Uint8Array(this.blockLen);\n      tmp.set(toBytes(opts.key));\n      this.update(tmp);\n    }\n  }\n  protected get(): [number, number, number, number, number, number, number, number] {\n    const { v0, v1, v2, v3, v4, v5, v6, v7 } = this;\n    return [v0, v1, v2, v3, v4, v5, v6, v7];\n  }\n  // prettier-ignore\n  protected set(\n    v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number\n  ) {\n    this.v0 = v0 | 0;\n    this.v1 = v1 | 0;\n    this.v2 = v2 | 0;\n    this.v3 = v3 | 0;\n    this.v4 = v4 | 0;\n    this.v5 = v5 | 0;\n    this.v6 = v6 | 0;\n    this.v7 = v7 | 0;\n  }\n  protected compress(msg: Uint32Array, offset: number, isLast: boolean) {\n    const { h, l } = u64.fromBig(BigInt(this.length));\n    // prettier-ignore\n    const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } =\n      compress(\n        SIGMA, offset, msg, 10,\n        this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7,\n        IV[0], IV[1], IV[2], IV[3], l ^ IV[4], h ^ IV[5], isLast ? ~IV[6] : IV[6], IV[7]\n      );\n    this.v0 ^= v0 ^ v8;\n    this.v1 ^= v1 ^ v9;\n    this.v2 ^= v2 ^ v10;\n    this.v3 ^= v3 ^ v11;\n    this.v4 ^= v4 ^ v12;\n    this.v5 ^= v5 ^ v13;\n    this.v6 ^= v6 ^ v14;\n    this.v7 ^= v7 ^ v15;\n  }\n  destroy() {\n    this.destroyed = true;\n    this.buffer32.fill(0);\n    this.set(0, 0, 0, 0, 0, 0, 0, 0);\n  }\n}\n\n/**\n * BLAKE2s - optimized for 32-bit platforms. JS doesn't have uint64, so it's faster than BLAKE2b.\n * @param msg - message that would be hashed\n * @param opts - dkLen, key, salt, personalization\n */\nexport const blake2s = wrapConstructorWithOpts<BLAKE2s, BlakeOpts>((opts) => new BLAKE2s(opts));\n", "import assert from './_assert.js';\nimport u64 from './_u64.js';\nimport { BLAKE2 } from './_blake2.js';\nimport { compress, IV } from './blake2s.js';\nimport { Input, u8, u32, toBytes, HashXOF, wrapXOFConstructorWithOpts } from './utils.js';\n\n// Flag bitset\nenum Flags {\n  CHUNK_START = 1 << 0,\n  CHUNK_END = 1 << 1,\n  PARENT = 1 << 2,\n  ROOT = 1 << 3,\n  KEYED_HASH = 1 << 4,\n  DERIVE_KEY_CONTEXT = 1 << 5,\n  DERIVE_KEY_MATERIAL = 1 << 6,\n}\n\nconst SIGMA: Uint8Array = (() => {\n  const Id = Array.from({ length: 16 }, (_, i) => i);\n  const permute = (arr: number[]) =>\n    [2, 6, 3, 10, 7, 0, 4, 13, 1, 11, 12, 5, 9, 14, 15, 8].map((i) => arr[i]);\n  const res: number[] = [];\n  for (let i = 0, v = Id; i < 7; i++, v = permute(v)) res.push(...v);\n  return Uint8Array.from(res);\n})();\n\n// - key: is 256-bit key\n// - context: string should be hardcoded, globally unique, and application - specific.\n//   A good default format for the context string is \"[application] [commit timestamp] [purpose]\"\n// - Only one of 'key' (keyed mode) or 'context' (derive key mode) can be used at same time\nexport type Blake3Opts = { dkLen?: number; key?: Input; context?: Input };\n\n// Why is this so slow? It should be 6x faster than blake2b.\n// - There is only 30% reduction in number of rounds from blake2s\n// - This function uses tree mode to achive parallelisation via SIMD and threading,\n//   however in JS we don't have threads and SIMD, so we get only overhead from tree structure\n// - It is possible to speed it up via Web Workers, hovewer it will make code singnificantly more\n//   complicated, which we are trying to avoid, since this library is intended to be used\n//   for cryptographic purposes. Also, parallelization happens only on chunk level (1024 bytes),\n//   which won't really benefit small inputs.\nclass BLAKE3 extends BLAKE2<BLAKE3> implements HashXOF<BLAKE3> {\n  private IV: Uint32Array;\n  private flags = 0 | 0;\n  private state: Uint32Array;\n  private chunkPos = 0; // Position of current block in chunk\n  private chunksDone = 0; // How many chunks we already have\n  private stack: Uint32Array[] = [];\n  // Output\n  private posOut = 0;\n  private bufferOut32 = new Uint32Array(16);\n  private bufferOut: Uint8Array;\n  private chunkOut = 0; // index of output chunk\n  private enableXOF = true;\n\n  constructor(opts: Blake3Opts = {}, flags = 0) {\n    super(64, opts.dkLen === undefined ? 32 : opts.dkLen, {}, Number.MAX_SAFE_INTEGER, 0, 0);\n    this.outputLen = opts.dkLen === undefined ? 32 : opts.dkLen;\n    assert.number(this.outputLen);\n    if (opts.key !== undefined && opts.context !== undefined)\n      throw new Error('Blake3: only key or context can be specified at same time');\n    else if (opts.key !== undefined) {\n      const key = toBytes(opts.key).slice();\n      if (key.length !== 32) throw new Error('Blake3: key should be 32 byte');\n      this.IV = u32(key);\n      this.flags = flags | Flags.KEYED_HASH;\n    } else if (opts.context !== undefined) {\n      const context_key = new BLAKE3({ dkLen: 32 }, Flags.DERIVE_KEY_CONTEXT)\n        .update(opts.context)\n        .digest();\n      this.IV = u32(context_key);\n      this.flags = flags | Flags.DERIVE_KEY_MATERIAL;\n    } else {\n      this.IV = IV.slice();\n      this.flags = flags;\n    }\n    this.state = this.IV.slice();\n    this.bufferOut = u8(this.bufferOut32);\n  }\n  // Unused\n  protected get() {\n    return [];\n  }\n  protected set() {}\n  private b2Compress(counter: number, flags: number, buf: Uint32Array, bufPos: number = 0) {\n    const { state: s, pos } = this;\n    const { h, l } = u64.fromBig(BigInt(counter), true);\n    // prettier-ignore\n    const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } =\n      compress(\n        SIGMA, bufPos, buf, 7,\n        s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7],\n        IV[0], IV[1], IV[2], IV[3], h, l, pos, flags\n      );\n    s[0] = v0 ^ v8;\n    s[1] = v1 ^ v9;\n    s[2] = v2 ^ v10;\n    s[3] = v3 ^ v11;\n    s[4] = v4 ^ v12;\n    s[5] = v5 ^ v13;\n    s[6] = v6 ^ v14;\n    s[7] = v7 ^ v15;\n  }\n  protected compress(buf: Uint32Array, bufPos: number = 0, isLast: boolean = false) {\n    // Compress last block\n    let flags = this.flags;\n    if (!this.chunkPos) flags |= Flags.CHUNK_START;\n    if (this.chunkPos === 15 || isLast) flags |= Flags.CHUNK_END;\n    if (!isLast) this.pos = this.blockLen;\n    this.b2Compress(this.chunksDone, flags, buf, bufPos);\n    this.chunkPos += 1;\n    // If current block is last in chunk (16 blocks), then compress chunks\n    if (this.chunkPos === 16 || isLast) {\n      let chunk = this.state;\n      this.state = this.IV.slice();\n      // If not the last one, compress only when there are trailing zeros in chunk counter\n      // chunks used as binary tree where current stack is path. Zero means current leaf is finished and can be compressed.\n      // 1 (001) - leaf not finished (just push current chunk to stack)\n      // 2 (010) - leaf finished at depth=1 (merge with last elm on stack and push back)\n      // 3 (011) - last leaf not finished\n      // 4 (100) - leafs finished at depth=1 and depth=2\n      for (let last, chunks = this.chunksDone + 1; isLast || !(chunks & 1); chunks >>= 1) {\n        if (!(last = this.stack.pop())) break;\n        this.buffer32.set(last, 0);\n        this.buffer32.set(chunk, 8);\n        this.pos = this.blockLen;\n        this.b2Compress(0, this.flags | Flags.PARENT, this.buffer32, 0);\n        chunk = this.state;\n        this.state = this.IV.slice();\n      }\n      this.chunksDone++;\n      this.chunkPos = 0;\n      this.stack.push(chunk);\n    }\n    this.pos = 0;\n  }\n  _cloneInto(to?: BLAKE3): BLAKE3 {\n    to = super._cloneInto(to) as BLAKE3;\n    const { IV, flags, state, chunkPos, posOut, chunkOut, stack, chunksDone } = this;\n    to.state.set(state.slice());\n    to.stack = stack.map((i) => Uint32Array.from(i));\n    to.IV.set(IV);\n    to.flags = flags;\n    to.chunkPos = chunkPos;\n    to.chunksDone = chunksDone;\n    to.posOut = posOut;\n    to.chunkOut = chunkOut;\n    to.enableXOF = this.enableXOF;\n    to.bufferOut32.set(this.bufferOut32);\n    return to;\n  }\n  destroy() {\n    this.destroyed = true;\n    this.state.fill(0);\n    this.buffer32.fill(0);\n    this.IV.fill(0);\n    this.bufferOut32.fill(0);\n    for (let i of this.stack) i.fill(0);\n  }\n  // Same as b2Compress, but doesn't modify state and returns 16 u32 array (instead of 8)\n  private b2CompressOut() {\n    const { state: s, pos, flags, buffer32, bufferOut32: out32 } = this;\n    const { h, l } = u64.fromBig(BigInt(this.chunkOut++));\n    // prettier-ignore\n    const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } =\n      compress(\n        SIGMA, 0, buffer32, 7,\n        s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7],\n        IV[0], IV[1], IV[2], IV[3], l, h, pos, flags\n      );\n    out32[0] = v0 ^ v8;\n    out32[1] = v1 ^ v9;\n    out32[2] = v2 ^ v10;\n    out32[3] = v3 ^ v11;\n    out32[4] = v4 ^ v12;\n    out32[5] = v5 ^ v13;\n    out32[6] = v6 ^ v14;\n    out32[7] = v7 ^ v15;\n    out32[8] = s[0] ^ v8;\n    out32[9] = s[1] ^ v9;\n    out32[10] = s[2] ^ v10;\n    out32[11] = s[3] ^ v11;\n    out32[12] = s[4] ^ v12;\n    out32[13] = s[5] ^ v13;\n    out32[14] = s[6] ^ v14;\n    out32[15] = s[7] ^ v15;\n    this.posOut = 0;\n  }\n  protected finish() {\n    if (this.finished) return;\n    this.finished = true;\n    // Padding\n    this.buffer.fill(0, this.pos);\n    // Process last chunk\n    let flags = this.flags | Flags.ROOT;\n    if (this.stack.length) {\n      flags |= Flags.PARENT;\n      this.compress(this.buffer32, 0, true);\n      this.chunksDone = 0;\n      this.pos = this.blockLen;\n    } else {\n      flags |= (!this.chunkPos ? Flags.CHUNK_START : 0) | Flags.CHUNK_END;\n    }\n    this.flags = flags;\n    this.b2CompressOut();\n  }\n  private writeInto(out: Uint8Array) {\n    assert.exists(this, false);\n    assert.bytes(out);\n    this.finish();\n    const { blockLen, bufferOut } = this;\n    for (let pos = 0, len = out.length; pos < len; ) {\n      if (this.posOut >= blockLen) this.b2CompressOut();\n      const take = Math.min(blockLen - this.posOut, len - pos);\n      out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n      this.posOut += take;\n      pos += take;\n    }\n    return out;\n  }\n  xofInto(out: Uint8Array): Uint8Array {\n    if (!this.enableXOF) throw new Error('XOF is not possible after digest call');\n    return this.writeInto(out);\n  }\n  xof(bytes: number): Uint8Array {\n    assert.number(bytes);\n    return this.xofInto(new Uint8Array(bytes));\n  }\n  digestInto(out: Uint8Array) {\n    assert.output(out, this);\n    if (this.finished) throw new Error('digest() was already called');\n    this.enableXOF = false;\n    this.writeInto(out);\n    this.destroy();\n    return out;\n  }\n  digest() {\n    return this.digestInto(new Uint8Array(this.outputLen));\n  }\n}\n\n/**\n * BLAKE3 hash function.\n * @param msg - message that would be hashed\n * @param opts - dkLen, key, context\n */\nexport const blake3 = wrapXOFConstructorWithOpts<BLAKE3, Blake3Opts>((opts) => new BLAKE3(opts));\n", "import { blake3 } from '@noble/hashes/blake3';\n/**\n * Returns a digest of the given data using the Blake3 algorithm.\n */\nexport function hash(data, bytes = 32) {\n    return blake3(data, { dkLen: bytes });\n}\n/**\n * Returns a keyed hash of the given data using the Blake3 algorithm. The key\n * must be 32 bytes.\n */\nexport function keyedHash(data, key, bytes = 64) {\n    // todo - workaround for this bug: https://github.com/paulmillr/noble-hashes/issues/50\n    const keyCopy = typeof key === 'string' ? key : new Uint8Array(key);\n    return blake3(data, { dkLen: bytes, key: keyCopy });\n}\n/**\n * Derives a 32 byte key from the given key material and context string.\n */\nexport function deriveKey(data, ctx) {\n    return blake3(data, { dkLen: 32, context: ctx });\n}\n", "import { etc } from '@noble/ed25519';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { base16 } from './base.js';\n/**\n * Check if 2 Uint8Arrays are equal\n * // TODO - review function name\n */\nexport function buffEquals(a, b) {\n    return a.length === b.length && a.every((byte, i) => byte === b[i]);\n}\n/**\n * Encodes the given bigint as a little-endian Uint8Array.\n */\nexport function bnToBytes(num, len = 32) {\n    let hex = num.toString(16);\n    if (hex.length % 2)\n        hex = '0' + hex;\n    const buf = base16.decode(hex.padStart(len * 2, '0'));\n    buf.reverse();\n    return buf;\n}\nexport function bnToShortestBytes(num) {\n    const nums = [];\n    let next = num > 0n ? num : -num;\n    while (next > 0) {\n        nums.push(Number(next % 256n));\n        next = next >> 8n;\n    }\n    return new Uint8Array(nums);\n}\n/**\n * Decodes the given Uint8Array as a little-endian bigint.\n */\nexport function bytesToBn(data) {\n    const buf = new Uint8Array(data);\n    buf.reverse();\n    return BigInt(`0x${base16.encode(buf)}`);\n}\n/**\n * Encodes the given string as utf8 Uint8Array.\n */\nexport function bytesToStr(data) {\n    return new TextDecoder().decode(data);\n}\n/**\n * Decodes the given utf8 Uint8Array as a string.\n */\nexport function strToBytes(str) {\n    return new TextEncoder().encode(str);\n}\n/**\n * Computes `x ^ (2 ^ power) mod p`\n */\nexport function pow2(x, power, modulo) {\n    let res = x;\n    while (power-- > 0n) {\n        res *= res;\n        res %= modulo;\n    }\n    return res;\n}\nconst { bytesToHex, hexToBytes, concatBytes, mod, invert, } = etc;\nexport { bytesToHex, hexToBytes, concatBytes, randomBytes, mod, invert, };\n", "/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nconst P = 2n ** 255n - 19n; // ed25519 is twisted edwards curve\nconst N = 2n ** 252n + 27742317777372353535851937790883648493n; // curve's (group) order\nconst Gx = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an; // base point x\nconst Gy = 0x6666666666666666666666666666666666666666666666666666666666666658n; // base point y\nconst CURVE = {\n    a: -1n,\n    d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n,\n    p: P, n: N, h: 8, Gx, Gy // field prime, curve (group) order, cofactor\n};\nconst err = (m = '') => { throw new Error(m); }; // error helper, messes-up stack trace\nconst str = (s) => typeof s === 'string'; // is string\nconst au8 = (a, l) => // is Uint8Array (of specific length)\n !(a instanceof Uint8Array) || (typeof l === 'number' && l > 0 && a.length !== l) ?\n    err('Uint8Array expected') : a;\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst toU8 = (a, len) => au8(str(a) ? h2b(a) : u8n(a), len); // norm(hex/u8a) to u8a\nconst mod = (a, b = P) => { let r = a % b; return r >= 0n ? r : b + r; }; // mod division\nconst isPoint = (p) => (p instanceof Point ? p : err('Point expected')); // is xyzt point\nlet Gpows = undefined; // precomputes for base point G\nclass Point {\n    constructor(ex, ey, ez, et) {\n        this.ex = ex;\n        this.ey = ey;\n        this.ez = ez;\n        this.et = et;\n    }\n    static fromAffine(p) { return new Point(p.x, p.y, 1n, mod(p.x * p.y)); }\n    static fromHex(hex, strict = true) {\n        const { d } = CURVE;\n        hex = toU8(hex, 32);\n        const normed = hex.slice(); // copy the array to not mess it up\n        normed[31] = hex[31] & ~0x80; // adjust first LE byte = last BE byte\n        const y = b2n_LE(normed); // decode as little-endian, convert to num\n        if (y === 0n) { // y=0 is valid, proceed\n        }\n        else {\n            if (strict && !(0n < y && y < P))\n                err('bad y coord 1'); // strict=true [1..P-1]\n            if (!strict && !(0n < y && y < 2n ** 256n))\n                err('bad y coord 2'); // strict=false [1..2^256-1]\n        }\n        const y2 = mod(y * y); // y\u00B2\n        const u = mod(y2 - 1n); // u=y\u00B2-1\n        const v = mod(d * y2 + 1n); // v=dy\u00B2+1\n        let { isValid, value: x } = uvRatio(u, v); // (uv\u00B3)(uv\u2077)^(p-5)/8; square root\n        if (!isValid)\n            err('bad y coordinate 3'); // not square root: bad point\n        const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n        const isHeadOdd = (hex[31] & 0x80) !== 0;\n        if (isHeadOdd !== isXOdd)\n            x = mod(-x);\n        return new Point(x, y, 1n, mod(x * y)); // Z=1, T=xy\n    }\n    get x() { return this.toAffine().x; } // .x, .y will call expensive toAffine.\n    get y() { return this.toAffine().y; } // Should be used with care.\n    equals(other) {\n        const { ex: X1, ey: Y1, ez: Z1 } = this;\n        const { ex: X2, ey: Y2, ez: Z2 } = isPoint(other); // isPoint() checks class equality\n        const X1Z2 = mod(X1 * Z2), X2Z1 = mod(X2 * Z1);\n        const Y1Z2 = mod(Y1 * Z2), Y2Z1 = mod(Y2 * Z1);\n        return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n    }\n    is0() { return this.equals(I); }\n    negate() {\n        return new Point(mod(-this.ex), this.ey, this.ez, mod(-this.et));\n    }\n    double() {\n        const { ex: X1, ey: Y1, ez: Z1 } = this; // Cost: 4M + 4S + 1*a + 6add + 1*2\n        const { a } = CURVE; // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n        const A = mod(X1 * X1);\n        const B = mod(Y1 * Y1);\n        const C = mod(2n * mod(Z1 * Z1));\n        const D = mod(a * A);\n        const x1y1 = X1 + Y1;\n        const E = mod(mod(x1y1 * x1y1) - A - B);\n        const G = D + B;\n        const F = G - C;\n        const H = D - B;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new Point(X3, Y3, Z3, T3);\n    }\n    add(other) {\n        const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this; // Cost: 8M + 1*k + 8add + 1*2.\n        const { ex: X2, ey: Y2, ez: Z2, et: T2 } = isPoint(other); // doesn't check if other on-curve\n        const { a, d } = CURVE; // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n        const A = mod(X1 * X2);\n        const B = mod(Y1 * Y2);\n        const C = mod(T1 * d * T2);\n        const D = mod(Z1 * Z2);\n        const E = mod((X1 + Y1) * (X2 + Y2) - A - B);\n        const F = mod(D - C);\n        const G = mod(D + C);\n        const H = mod(B - a * A);\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new Point(X3, Y3, Z3, T3);\n    }\n    mul(n, safe = true) {\n        if (n === 0n)\n            return safe === true ? err('cannot multiply by 0') : I;\n        if (!(typeof n === 'bigint' && 0n < n && n < N))\n            err('invalid scalar, must be < L');\n        if (!safe && this.is0() || n === 1n)\n            return this; // safe=true bans 0. safe=false allows 0.\n        if (this.equals(G))\n            return wNAF(n).p; // use wNAF precomputes for base points\n        let p = I, f = G; // init result point & fake point\n        for (let d = this; n > 0n; d = d.double(), n >>= 1n) { // double-and-add ladder\n            if (n & 1n)\n                p = p.add(d); // if bit is present, add to point\n            else if (safe)\n                f = f.add(d); // if not, add to fake for timing safety\n        }\n        return p;\n    }\n    multiply(scalar) { return this.mul(scalar); } // Aliases for compatibilty\n    clearCofactor() { return this.mul(BigInt(CURVE.h), false); } // multiply by cofactor\n    isSmallOrder() { return this.clearCofactor().is0(); } // check if P is small order\n    isTorsionFree() {\n        let p = this.mul(N / 2n, false).double(); // ensures the point is not \"bad\".\n        if (N % 2n)\n            p = p.add(this); // P^(N+1)             // P*N == (P*(N/2))*2+P\n        return p.is0();\n    }\n    toAffine() {\n        const { ex: x, ey: y, ez: z } = this; // (x, y, z, t) \u220B (x=x/z, y=y/z, t=xy)\n        if (this.is0())\n            return { x: 0n, y: 0n }; // fast-path for zero point\n        const iz = invert(z); // z^-1: invert z\n        if (mod(z * iz) !== 1n)\n            err('invalid inverse'); // (z * z^-1) must be 1, otherwise bad math\n        return { x: mod(x * iz), y: mod(y * iz) }; // x = x*z^-1; y = y*z^-1\n    }\n    toRawBytes() {\n        const { x, y } = this.toAffine(); // convert to affine 2d point\n        const b = n2b_32LE(y); // encode number to 32 bytes\n        b[31] |= x & 1n ? 0x80 : 0; // store sign in first LE byte\n        return b;\n    }\n    toHex() { return b2h(this.toRawBytes()); } // encode to hex string\n}\nPoint.BASE = new Point(Gx, Gy, 1n, mod(Gx * Gy)); // Generator / Base point\nPoint.ZERO = new Point(0n, 1n, 1n, 0n); // Identity / Zero point\nconst { BASE: G, ZERO: I } = Point; // Generator, identity points\nconst padh = (num, pad) => num.toString(16).padStart(pad, '0');\nconst b2h = (b) => Array.from(b).map(e => padh(e, 2)).join(''); // bytes to hex\nconst h2b = (hex) => {\n    const l = hex.length; // error if not string,\n    if (!str(hex) || l % 2)\n        err('hex invalid 1'); // or has odd length like 3, 5.\n    const arr = u8n(l / 2); // create result array\n    for (let i = 0; i < arr.length; i++) {\n        const j = i * 2;\n        const h = hex.slice(j, j + 2); // hexByte. slice is faster than substr\n        const b = Number.parseInt(h, 16); // byte, created from string part\n        if (Number.isNaN(b) || b < 0)\n            err('hex invalid 2'); // byte must be valid 0 <= byte < 256\n        arr[i] = b;\n    }\n    return arr;\n};\nconst n2b_32LE = (num) => h2b(padh(num, 32 * 2)).reverse(); // number to bytes LE\nconst b2n_LE = (b) => BigInt('0x' + b2h(u8n(au8(b)).reverse())); // bytes LE to num\nconst concatB = (...arrs) => {\n    const r = u8n(arrs.reduce((sum, a) => sum + au8(a).length, 0)); // create u8a of summed length\n    let pad = 0; // walk through each array,\n    arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n    return r;\n};\nconst invert = (num, md = P) => {\n    if (num === 0n || md <= 0n)\n        err('no inverse n=' + num + ' mod=' + md); // no neg exponent for now\n    let a = mod(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n    while (a !== 0n) { // uses euclidean gcd algorithm\n        const q = b / a, r = b % a; // not constant-time\n        const m = x - u * q, n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    return b === 1n ? mod(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst pow2 = (x, power) => {\n    let r = x;\n    while (power-- > 0n) {\n        r *= r;\n        r %= P;\n    }\n    return r;\n};\nconst pow_2_252_3 = (x) => {\n    const x2 = (x * x) % P; // x^2,       bits 1\n    const b2 = (x2 * x) % P; // x^3,       bits 11\n    const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n    const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n    const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n    const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n    const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n    const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n    const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n    const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n    const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n    const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n    return { pow_p_5_8, b2 };\n};\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // \u221A-1\nconst uvRatio = (u, v) => {\n    const v3 = mod(v * v * v); // v\u00B3\n    const v7 = mod(v3 * v3 * v); // v\u2077\n    const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv\u2077)^(p-5)/8\n    let x = mod(u * v3 * pow); // (uv\u00B3)(uv\u2077)^(p-5)/8\n    const vx2 = mod(v * x * x); // vx\u00B2\n    const root1 = x; // First root candidate\n    const root2 = mod(x * RM1); // Second root candidate; RM1 is \u221A-1\n    const useRoot1 = vx2 === u; // If vx\u00B2 = u (mod p), x is a square root\n    const useRoot2 = vx2 === mod(-u); // If vx\u00B2 = -u, set x <-- x * 2^((p-1)/4)\n    const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx\u00B2 = -u\u221A-1\n    if (useRoot1)\n        x = root1;\n    if (useRoot2 || noRoot)\n        x = root2; // We return root2 anyway, for const-time\n    if ((mod(x) & 1n) === 1n)\n        x = mod(-x); // edIsNegative\n    return { isValid: useRoot1 || useRoot2, value: x };\n};\nconst modL_LE = (hash) => mod(b2n_LE(hash), N); // modulo L; but little-endian\nlet _shaS;\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => // Sync SHA512, not set by default\n typeof _shaS === 'function' ? _shaS(...m) : err('etc.sha512Sync not set');\nconst hash2extK = (hashed) => {\n    const head = hashed.slice(0, 32); // slice creates a copy, unlike subarray\n    head[0] &= 248; // Clamp bits: 0b1111_1000,\n    head[31] &= 127; // 0b0111_1111,\n    head[31] |= 64; // 0b0100_0000\n    const prefix = hashed.slice(32, 64); // private key \"prefix\"\n    const scalar = modL_LE(head); // modular division over curve order\n    const point = G.mul(scalar); // public key point\n    const pointBytes = point.toRawBytes(); // point serialized to Uint8Array\n    return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, 32)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, 32)));\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then(p => p.pointBytes);\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nfunction hashFinish(asynchronous, res) {\n    if (asynchronous)\n        return sha512a(res.hashable).then(res.finish);\n    return res.finish(sha512s(res.hashable));\n}\nconst _sign = (e, rBytes, msg) => {\n    const { pointBytes: P, scalar: s } = e;\n    const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n    const R = G.mul(r).toRawBytes(); // R = [r]B\n    const hashable = concatB(R, P, msg); // dom2(F, C) || R || A || PH(M)\n    const finish = (hashed) => {\n        const S = mod(r + modL_LE(hashed) * s, N); // S = (r + k * s) mod L; 0 <= s < l\n        return au8(concatB(R, n2b_32LE(S)), 64); // 64-byte sig: 32b R.x + 32b LE(S)\n    };\n    return { hashable, finish };\n};\nconst signAsync = async (msg, privKey) => {\n    const m = toU8(msg); // RFC8032 5.1.6: sign msg with key async\n    const e = await getExtendedPublicKeyAsync(privKey); // pub,prfx\n    const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n    return hashFinish(true, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst sign = (msg, privKey) => {\n    const m = toU8(msg); // RFC8032 5.1.6: sign msg with key sync\n    const e = getExtendedPublicKey(privKey); // pub,prfx\n    const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n    return hashFinish(false, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst _verify = (sig, msg, pub) => {\n    msg = toU8(msg); // Message hex str/Bytes\n    sig = toU8(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n    const A = Point.fromHex(pub, false); // public key A decoded\n    const R = Point.fromHex(sig.slice(0, 32), false); // 0 <= R < 2^256: ZIP215 R can be >= P\n    const s = b2n_LE(sig.slice(32, 64)); // Decode second half as an integer S\n    const SB = G.mul(s, false); // in the range 0 <= s < L\n    const hashable = concatB(R.toRawBytes(), A.toRawBytes(), msg); // dom2(F, C) || R || A || PH(M)\n    const finish = (hashed) => {\n        const k = modL_LE(hashed); // decode in little-endian, modulo L\n        const RkA = R.add(A.mul(k, false)); // [8]R + [8][k]A'\n        return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n    };\n    return { hashable, finish };\n};\n// RFC8032 5.1.7: verification async, sync\nconst verifyAsync = async (s, m, p) => hashFinish(true, _verify(s, m, p));\nconst verify = (s, m, p) => hashFinish(false, _verify(s, m, p));\nconst cr = () => // We support: 1) browsers 2) node.js 19+\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\nconst etc = {\n    bytesToHex: b2h, hexToBytes: h2b, concatBytes: concatB,\n    mod, invert,\n    randomBytes: (len) => {\n        const crypto = cr(); // Can be shimmed in node.js <= 18 to prevent error:\n        // import { webcrypto } from 'node:crypto';\n        // if (!globalThis.crypto) globalThis.crypto = webcrypto;\n        if (!crypto)\n            err('crypto.getRandomValues must be defined');\n        return crypto.getRandomValues(u8n(len));\n    },\n    sha512Async: async (...messages) => {\n        const crypto = cr();\n        if (!crypto)\n            err('crypto.subtle or etc.sha512Async must be defined');\n        const m = concatB(...messages);\n        return u8n(await crypto.subtle.digest('SHA-512', m.buffer));\n    },\n    sha512Sync: undefined, // Actual logic below\n};\nObject.defineProperties(etc, { sha512Sync: {\n        configurable: false, get() { return _shaS; }, set(f) { if (!_shaS)\n            _shaS = f; },\n    } });\nconst utils = {\n    getExtendedPublicKeyAsync, getExtendedPublicKey,\n    randomPrivateKey: () => etc.randomBytes(32),\n    precompute(w = 8, p = G) { p.multiply(3n); return p; }, // no-op\n};\nconst W = 8; // Precomputes-related code. W = window size\nconst precompute = () => {\n    const points = []; // 10x sign(), 2x verify(). To achieve this,\n    const windows = 256 / W + 1; // app needs to spend 40ms+ to calculate\n    let p = G, b = p; // a lot of points related to base point G.\n    for (let w = 0; w < windows; w++) { // Points are stored in array and used\n        b = p; // any time Gx multiplication is done.\n        points.push(b); // They consume 16-32 MiB of RAM.\n        for (let i = 1; i < 2 ** (W - 1); i++) {\n            b = b.add(p);\n            points.push(b);\n        }\n        p = b.double(); // Precomputes don't speed-up getSharedKey,\n    } // which multiplies user point by scalar,\n    return points; // when precomputes are using base point\n};\nconst wNAF = (n) => {\n    // Compared to other point mult methods,\n    const comp = Gpows || (Gpows = precompute()); // stores 2x less points using subtraction\n    const neg = (cnd, p) => { let n = p.negate(); return cnd ? n : p; }; // negate\n    let p = I, f = G; // f must be G, or could become I in the end\n    const windows = 1 + 256 / W; // W=8 17 windows\n    const wsize = 2 ** (W - 1); // W=8 128 window size\n    const mask = BigInt(2 ** W - 1); // W=8 will create mask 0b11111111\n    const maxNum = 2 ** W; // W=8 256\n    const shiftBy = BigInt(W); // W=8 8\n    for (let w = 0; w < windows; w++) {\n        const off = w * wsize;\n        let wbits = Number(n & mask); // extract W bits.\n        n >>= shiftBy; // shift number by W bits.\n        if (wbits > wsize) {\n            wbits -= maxNum;\n            n += 1n;\n        } // split if bits > max: +224 => 256-32\n        const off1 = off, off2 = off + Math.abs(wbits) - 1; // offsets, evaluate both\n        const cnd1 = w % 2 !== 0, cnd2 = wbits < 0; // conditions, evaluate both\n        if (wbits === 0) {\n            f = f.add(neg(cnd1, comp[off1])); // bits are 0: add garbage to fake point\n        }\n        else { //          ^ can't add off2, off2 = I\n            p = p.add(neg(cnd2, comp[off2])); // bits are 1: add to result point\n        }\n    }\n    return { p, f }; // return both real and fake points for JIT\n}; // !! you can disable precomputes by commenting-out call of the wNAF() inside Point#mul()\nexport { getPublicKey, getPublicKeyAsync, sign, verify, // Remove the export to easily use in REPL\nsignAsync, verifyAsync, CURVE, etc, utils, Point as ExtendedPoint }; // envs like browser console\n", "import { PubKey } from './internal.js';\nimport { bech32m } from './support/base.js';\nimport { hash } from './support/blake3.js';\nimport { buffEquals } from \"./support/util.js\";\nconst PREFIX = 'addr';\n/**\n * Aldea address\n *\n * An address is a 20 byte blake3 hash of a public key. It is encoded as a\n * string using Bech32m with the prefix `addr`.\n *\n * Example:\n *\n *     addr1w9er02jhjq5yxzuc9n6fjqqq8nhqpuhsxe2kfp\n */\nexport class Address {\n    hash;\n    constructor(hash) {\n        if (hash.length !== 20)\n            throw new Error('invalid hash length');\n        this.hash = hash;\n    }\n    /**\n     * Returns an Address from the given PubKey.\n     */\n    static fromPubKey(pubKey) {\n        if (!(pubKey instanceof PubKey)) {\n            throw Error('The first argument to `Address.fromPubKey()` must be a `PubKey`');\n        }\n        const pkh = hash(pubKey.toBytes(), 20);\n        return new Address(pkh);\n    }\n    /**\n     * Returns an Address from the encoded string.\n     */\n    static fromString(str) {\n        const hash = bech32m.decode(str, PREFIX);\n        return new Address(hash);\n    }\n    /**\n     * Encodes the Address into a string.\n     */\n    toString() {\n        return bech32m.encode(this.hash, PREFIX);\n    }\n    equals(other) {\n        return buffEquals(this.hash, other.hash);\n    }\n}\n", "import { PrivKey, } from './internal.js';\n/**\n * Aldea Key Pair\n *\n * Convinience wrapper around a PrivKey and PubKey pair.\n */\nexport class KeyPair {\n    privKey;\n    pubKey;\n    constructor(privKey, pubKey) {\n        this.privKey = privKey;\n        this.pubKey = pubKey;\n    }\n    /**\n     * Generates and returns a new random KeyPair.\n     */\n    static fromRandom() {\n        const privKey = PrivKey.fromRandom();\n        return KeyPair.fromPrivKey(privKey);\n    }\n    /**\n     * Returns a KeyPair from the given PrivKey.\n     */\n    static fromPrivKey(privKey) {\n        if (!(privKey instanceof PrivKey)) {\n            throw Error('The first argument to `KeyPair.fromPrivKey()` must be a `PrivKey`');\n        }\n        const pubKey = privKey.toPubKey();\n        return new KeyPair(privKey, pubKey);\n    }\n}\n", "import { ExtendedPoint as Point, sign as _sign, verify as _verify, CURVE, etc, utils, } from '@noble/ed25519';\nimport { hash } from './blake3.js';\nimport { bnToBytes, bytesToBn, concatBytes } from './util.js';\nimport { scalarMult, toMontgomeryPriv, toMongomeryPub } from './x25519.js';\n// Internally we replace nobles sha512Sync function with our own blake3\n// function. As long as we use the sync methods, we are now using\n// blake3-flavoured ed25519 - just like magic!\netc.sha512Sync = (...m) => {\n    return hash(concatBytes(...m), 64);\n};\n/**\n * Calculates the EdDSA Point (public key) from the given bytes (private key).\n */\nexport function calcPoint(bytes) {\n    return utils.getExtendedPublicKey(bytes).point;\n}\n/**\n * Calculates a shared secret between an Ed25519 privkey and pubkey. It first\n * converts the keys to the Montgomery X25519 curve.\n */\nexport function getSharedSecret(privKey, pubKey) {\n    return scalarMult(toMongomeryPub(pubKey), toMontgomeryPriv(privKey));\n}\n/**\n * Returns a point from the given bytes (compressed public key).\n */\nexport function pointFromBytes(bytes) {\n    return Point.fromHex(bytes);\n}\n/**\n * Converts a point to bytes (compressed public key).\n */\nexport function pointToBytes(point) {\n    if (!(point instanceof Point)) {\n        throw Error('The first argument to `pointToBytes()` must be a `Point`');\n    }\n    return point.toRawBytes();\n}\n/**\n * Signs the given message with the PrivKey and returns a 64 byte signature.\n */\nexport function sign(msg, privKey) {\n    if (!(privKey instanceof Uint8Array)) {\n        privKey = privKey.toBytes();\n    }\n    return privKey.length >= 64 ? _signExt(msg, privKey) : _sign(msg, privKey);\n}\n/**\n * Verifies the given signature using the specified message and Public Key.\n */\nexport function verify(sig, msg, pubKey) {\n    if (!(pubKey instanceof Uint8Array)) {\n        if ('toPubKey' in pubKey)\n            pubKey = pubKey.toPubKey();\n        pubKey = pubKey.toBytes();\n    }\n    return _verify(sig, msg, pubKey);\n}\n// Special signing function for handling extended public keys\nfunction _signExt(msg, k) {\n    const kl = k.slice(0, 32);\n    const kr = k.slice(32, 64);\n    const aBuf = Point.BASE._scalarMult(bytesToBn(kl)).toRawBytes();\n    const r = etc.mod(bytesToBn(hash(concatBytes(kr, msg), 64)), CURVE.n);\n    const rBuf = Point.BASE.mul(r).toRawBytes();\n    const x = bytesToBn(hash(concatBytes(rBuf, aBuf, msg), 64));\n    const sBuf = bnToBytes(etc.mod(r + (x * bytesToBn(kl)), CURVE.n));\n    return concatBytes(rBuf, sBuf);\n}\n/**\n * PATCH Same as `mul()` method but without validation on `n` size.\n */\nPoint.prototype._scalarMult = function (n) {\n    if (n === 0n)\n        return this.mul(n);\n    let p = Point.ZERO;\n    for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n        if (n & 1n)\n            p = p.add(d);\n    }\n    return p;\n};\nexport { Point };\n", "import { CURVE } from '@noble/ed25519';\nimport { hash } from './blake3.js';\nimport { bnToBytes, bytesToBn, invert, mod, pow2 } from './util.js';\n// The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519\nconst A_24 = 121665n;\nconst P = CURVE.p;\n/**\n * Flips the bits of 32 random bytes in order to ensure a x25519 interger scalar.\n */\nexport function adjustScalarBytes(bytes) {\n    // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n    // set the three least significant bits of the first byte\n    // and the most significant bit of the last to zero,\n    // set the second most significant bit of the last byte to 1\n    bytes[0] &= 248; // 0b1111_1000\n    bytes[31] &= 127; // 0b0111_1111\n    bytes[31] |= 64; // 0b0100_0000\n    return bytes;\n}\n/**\n * Calculates a shared secret between an X25519 privkey and pubkey.\n */\nexport function getSharedSecret(privKey, pubKey) {\n    return scalarMult(pubKey, privKey);\n}\n/**\n * Mutiplies an X25519 point with the given scalar.\n */\nexport function scalarMult(pubKey, privKey) {\n    const u = decodeU(pubKey);\n    const scalar = decodeScalar(privKey);\n    const pu = mongomeryLadder(u, scalar);\n    if (pu === 0n)\n        throw new Error('Invalid private or public key received');\n    return encodeU(pu);\n}\n/**\n * Converts an Ed25519 privkey to X25519.\n */\nexport function toMontgomeryPriv(privKey) {\n    return adjustScalarBytes(hash(privKey.toBytes(), 32));\n}\n/**\n  Converts an Ed25519 pubkey to X25519.\n */\nexport function toMongomeryPub(pubKey) {\n    const u = mod((1n + pubKey.y) * invert(1n - pubKey.y));\n    return bnToBytes(u);\n}\n// Asserts the given scalar is valid for X25519.\nfunction assertValidScalar(n) {\n    if (typeof n !== 'bigint' || n < 0n || n >= P) {\n        throw new Error('invalid scalar. must be 0 < scalar < CURVE.P');\n    }\n}\nfunction cswap(swap, x_2, x_3) {\n    const dummy = mod(swap * (x_2 - x_3));\n    x_2 = mod(x_2 - dummy);\n    x_3 = mod(x_3 + dummy);\n    return [x_2, x_3];\n}\nfunction decodeScalar(scalar) {\n    if (scalar.length !== 32) {\n        throw new Error('invalid u scalar length. must be 32 bytes');\n    }\n    return bytesToBn(adjustScalarBytes(scalar));\n}\nfunction decodeU(u) {\n    if (u.length !== 32) {\n        throw new Error('invalid u coordinate length. must be 32 bytes');\n    }\n    u[31] &= 127; // 0b0111_1111\n    return bytesToBn(u);\n}\nfunction encodeU(u) {\n    return bnToBytes(mod(u));\n}\nfunction mongomeryLadder(u, k) {\n    assertValidScalar(u);\n    assertValidScalar(k);\n    const x_1 = u;\n    let x_2 = 1n;\n    let z_2 = 0n;\n    let x_3 = u;\n    let z_3 = 1n;\n    let swap = 0n;\n    let sw;\n    for (let t = 254n; t >= 0n; t--) {\n        const k_t = (k >> t) & 1n;\n        swap ^= k_t;\n        sw = cswap(swap, x_2, x_3);\n        x_2 = sw[0];\n        x_3 = sw[1];\n        sw = cswap(swap, z_2, z_3);\n        z_2 = sw[0];\n        z_3 = sw[1];\n        swap = k_t;\n        const A = x_2 + z_2;\n        const AA = mod(A * A);\n        const B = x_2 - z_2;\n        const BB = mod(B * B);\n        const E = AA - BB;\n        const C = x_3 + z_3;\n        const D = x_3 - z_3;\n        const DA = mod(D * A);\n        const CB = mod(C * B);\n        const dacb = DA + CB;\n        const da_cb = DA - CB;\n        x_3 = mod(dacb * dacb);\n        z_3 = mod(x_1 * mod(da_cb * da_cb));\n        x_2 = mod(AA * BB);\n        z_2 = mod(E * (AA + mod(A_24 * E)));\n    }\n    sw = cswap(swap, x_2, x_3);\n    x_2 = sw[0];\n    sw = cswap(swap, z_2, z_3);\n    z_2 = sw[0];\n    const [pow_p58, b2] = pow_2_252_3(z_2);\n    const z2 = mod(pow2(pow_p58, 3n, P) * b2);\n    return mod(x_2 * z2);\n}\nfunction pow_2_252_3(x) {\n    const x2 = (x * x) % P;\n    const b2 = (x2 * x) % P;\n    const b4 = (pow2(b2, 2n, P) * b2) % P;\n    const b5 = (pow2(b4, 1n, P) * x) % P;\n    const b10 = (pow2(b5, 5n, P) * b5) % P;\n    const b20 = (pow2(b10, 10n, P) * b10) % P;\n    const b40 = (pow2(b20, 20n, P) * b20) % P;\n    const b80 = (pow2(b40, 40n, P) * b40) % P;\n    const b160 = (pow2(b80, 80n, P) * b80) % P;\n    const b240 = (pow2(b160, 80n, P) * b80) % P;\n    const b250 = (pow2(b240, 10n, P) * b10) % P;\n    return [(pow2(b250, 2n, P) * x) % P, b2];\n}\n", "import { HDPubKey, PubKey } from './internal.js';\nimport { base16, bech32m } from './support/base.js';\nimport { hash, keyedHash, deriveKey } from './support/blake3.js';\nimport { Point } from './support/ed25519.js';\nimport { bnToBytes, bytesToBn, concatBytes, randomBytes } from './support/util.js';\nconst MASTER_SECRET = 'ed25519 seed';\nconst HARDENED_OFFSET = 0x80000000;\nconst PREFIX = 'xsec';\n/**\n * Hierarchical deterministic private key\n *\n * Implements [BIP32-ed25519](https://github.com/LedgerHQ/orakolo/blob/master/papers/Ed25519_BIP%20Final.pdf)\n * with hashing primitives swapped out for BLAKE3.\n *\n * To use with BIP39, we recommend using [@scure/bip39](https://github.com/paulmillr/scure-bip39).\n *\n * ```ts\n * import { generateMnemonic, mnemonicToSeedSync } from '@scure/bip39'\n * import { wordlist } from '@scure/bip39/wordlists/english'\n * import { HDPrivKey } from '@aldea/core'\n *\n * const mnemonic = generateMnemonic(wordlist)\n * const seed = mnemonicToSeedSync(mnemonic)\n * const rootKey = HDPrivKey.fromSeed(seed)\n * const childKey = rootKey.derive('m/1/2/3')\n * ```\n */\nexport class HDPrivKey {\n    k;\n    chainCode;\n    constructor(k, chainCode) {\n        if (k.length !== 64)\n            throw new Error('invalid extended key length');\n        if (chainCode.length !== 32)\n            throw new Error('invalid chainCode length');\n        this.k = k;\n        this.chainCode = chainCode;\n    }\n    /**\n     * Returns a HDPrivKey from the given bytes.\n     *\n     * HD Private Keys are 96 bytes.\n     */\n    static fromBytes(bytes) {\n        if (!ArrayBuffer.isView(bytes)) {\n            throw Error('The first argument to `HDPrivKey.fromBytes()` must be a `Uint8Array`');\n        }\n        return new HDPrivKey(bytes.slice(0, 64), bytes.slice(64));\n    }\n    /**\n     * Returns a HDPrivKey from the given hex-encoded string.\n     */\n    static fromHex(str) {\n        if (typeof str !== 'string') {\n            throw Error('The first argument to `HDPrivKey.fromHex()` must be a `string`');\n        }\n        const bytes = base16.decode(str);\n        return HDPrivKey.fromBytes(bytes);\n    }\n    /**\n     * Returns a HDPrivKey from the given bech32m-encoded string.\n     */\n    static fromString(str) {\n        if (typeof str !== 'string') {\n            throw Error('The first argument to `HDPrivKey.fromString()` must be a `string`');\n        }\n        const bytes = bech32m.decode(str, PREFIX);\n        return HDPrivKey.fromBytes(bytes);\n    }\n    /**\n     * Generates and returns a new random HDPrivKey.\n     */\n    static fromRandom() {\n        return HDPrivKey.fromSeed(randomBytes(32));\n    }\n    /**\n     * Generates and returns an HDPrivKey from the given seed bytes.\n     */\n    static fromSeed(seed) {\n        if (!ArrayBuffer.isView(seed)) {\n            throw Error('The first argument to `HDPrivKey.fromSeed()` must be a `Uint8Array`');\n        }\n        if (![16, 32, 64].includes(seed.length)) {\n            throw new Error(`invalid seed length: ${seed.length}`);\n        }\n        const key = deriveKey(seed, MASTER_SECRET);\n        let block = seed;\n        while (true) {\n            block = keyedHash(block, key);\n            const extended = hash(block.slice(0, 32), 64);\n            if ((extended[31] & 0b00100000) === 0) {\n                extended[0] &= ~0b00000111;\n                extended[31] &= ~0b10000000;\n                extended[31] |= 0b01000000;\n                return new HDPrivKey(extended, block.slice(32, 64));\n            }\n        }\n    }\n    /**\n     * Derives a new HD key from the given derivation path. Returns either a\n     * HDPrivKey or HDPubKey.\n     *\n     * The derivation path must of the format described in [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki).\n     * All of the following examples are valid derivation paths:\n     *\n     * ```text\n     * m/1/2/3 - derives HDPrivkey\n     * M/1/2/3 - derives HDPubkey\n     * m/1'/200 - derives hardened HDPrivkey\n     * m/1h/200 - equivalent\n     * m/1H/200 - equivalent\n     * ```\n     */\n    derive(path) {\n        if (!(typeof path === 'string' && /^[mM]['hH]?(\\/\\d+['hH]?)+/.test(path))) {\n            throw new Error('invalid derivation path');\n        }\n        const parts = path.replace(/^[mM]['hH]?\\//, '')\n            .split('/')\n            .filter(p => !!p)\n            .map(toIndex);\n        let child = this;\n        if (path[0] === 'M')\n            child = child.toHDPubKey();\n        for (const idx of parts) {\n            child = child.deriveChild(idx);\n        }\n        return child;\n    }\n    /**\n     * Derives new HDPrivKey from the given index integer.\n     */\n    deriveChild(idx) {\n        if (!(typeof idx === 'number' && idx >= 0)) {\n            throw new Error(`invalid child index: ${idx}`);\n        }\n        const kl = this.k.slice(0, 32);\n        const kr = this.k.slice(32, 64);\n        const ch = hash(this.chainCode, 32);\n        const pk = this.pubkeyBytes();\n        const iBuf = new Uint8Array(4);\n        const iBufView = new DataView(iBuf.buffer);\n        iBufView.setUint32(0, idx, true);\n        let z, c;\n        if (idx < HARDENED_OFFSET) {\n            z = keyedHash(concatBytes(new Uint8Array([2]), pk, iBuf), ch);\n            c = keyedHash(concatBytes(new Uint8Array([3]), pk, iBuf), ch).slice(32, 64);\n        }\n        else {\n            z = keyedHash(concatBytes(new Uint8Array([0]), this.k, iBuf), ch);\n            c = keyedHash(concatBytes(new Uint8Array([1]), this.k, iBuf), ch).slice(32, 64);\n        }\n        const zl = z.slice(0, 28);\n        const zr = z.slice(32, 64);\n        const left = bnToBytes((bytesToBn(zl) * BigInt(8)) + bytesToBn(kl));\n        const right = bnToBytes((bytesToBn(zr) + bytesToBn(kr)) % (BigInt(2) ** BigInt(256)));\n        return new HDPrivKey(concatBytes(left, right), c);\n    }\n    /**\n     * Returns the HDPrivKey as bytes.\n     *\n     * HD Private Keys are 96 bytes.\n     */\n    toBytes() {\n        return concatBytes(this.k, this.chainCode);\n    }\n    /**\n     * Returns the HDPrivKey as hex-encoded string.\n     */\n    toHex() {\n        return base16.encode(this.toBytes());\n    }\n    /**\n     * Returns the HDPrivKey as bech32m-encoded string.\n     */\n    toString() {\n        return bech32m.encode(this.toBytes(), PREFIX);\n    }\n    /**\n     * Returns the HDPrivKey's corresponding HDPubKey.\n     */\n    toHDPubKey() {\n        return new HDPubKey(this.pubkeyBytes(), this.chainCode);\n    }\n    /**\n     * Returns the HDPrivKey's corresponding normal PubKey.\n     */\n    toPubKey() {\n        return PubKey.fromBytes(this.pubkeyBytes());\n    }\n    // Calculates and returns the HDPrivKey's corresponding 32 byte public key\n    pubkeyBytes() {\n        return Point.BASE._scalarMult(bytesToBn(this.k.slice(0, 32))).toRawBytes();\n    }\n}\n// Maps the derivation path part to an index number\nfunction toIndex(part) {\n    const m = /^(\\d+)(['hH])?$/.exec(part);\n    if (!m || m.length !== 3) {\n        throw new Error(`invalid child index: ${part}`);\n    }\n    let idx = +m[1];\n    if (idx < 0 || idx >= HARDENED_OFFSET) {\n        throw new Error(`invalid child index: ${part}`);\n    }\n    if (typeof m[2] !== 'undefined')\n        idx += HARDENED_OFFSET;\n    return idx;\n}\n", "import { PubKey } from './internal.js';\nimport { base16, bech32m } from './support/base.js';\nimport { hash, keyedHash } from './support/blake3.js';\nimport { Point } from './support/ed25519.js';\nimport { bytesToBn, concatBytes } from './support/util.js';\nconst HARDENED_OFFSET = 0x80000000;\nconst PREFIX = 'xpub';\n/**\n * Hierarchical deterministic public key\n *\n * Implements [BIP32-ed25519](https://github.com/LedgerHQ/orakolo/blob/master/papers/Ed25519_BIP%20Final.pdf)\n * with hashing primitives swapped out for BLAKE3.\n */\nexport class HDPubKey {\n    k;\n    chainCode;\n    constructor(k, chainCode) {\n        if (k.length !== 32)\n            throw new Error('invalid extended key length');\n        if (chainCode.length !== 32)\n            throw new Error('invalid chainCode length');\n        this.k = k;\n        this.chainCode = chainCode;\n    }\n    /**\n     * Returns a HDPubKey from the given bytes.\n     *\n     * HD Public Keys are 64 bytes.\n     */\n    static fromBytes(bytes) {\n        if (!ArrayBuffer.isView(bytes)) {\n            throw Error('The first argument to `HDPubKey.fromBytes()` must be a `Uint8Array`');\n        }\n        return new HDPubKey(bytes.slice(0, 32), bytes.slice(32));\n    }\n    /**\n     * Returns a HDPubKey from the given hex-encoded string.\n     */\n    static fromHex(str) {\n        if (typeof str !== 'string') {\n            throw Error('The first argument to `HDPubKey.fromHex()` must be a `string`');\n        }\n        const bytes = base16.decode(str);\n        return HDPubKey.fromBytes(bytes);\n    }\n    /**\n     * Returns a HDPubKey from the given bech32m-encoded string.\n     */\n    static fromString(str) {\n        if (typeof str !== 'string') {\n            throw Error('The first argument to `HDPubKey.fromString()` must be a `string`');\n        }\n        const bytes = bech32m.decode(str, PREFIX);\n        return HDPubKey.fromBytes(bytes);\n    }\n    /**\n     * Derives a new HDPubKey from the given derivation path.\n     *\n     * The derivation path must of the format described in [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki).\n     */\n    derive(path) {\n        if (!(typeof path === 'string' && /^[mM]['hH]?(\\/\\d+['hH]?)+/.test(path))) {\n            throw new Error('invalid derivation path');\n        }\n        const parts = path.replace(/^[mM]['hH]?/, '')\n            .split('/')\n            .filter(p => !!p)\n            .map(toIndex);\n        let child = this;\n        if (path[0] === 'm')\n            throw new Error('cannot derive private child key');\n        for (const idx of parts) {\n            child = child.deriveChild(idx);\n        }\n        return child;\n    }\n    /**\n     * Derives new HDPubKey from the given index integer.\n     */\n    deriveChild(idx) {\n        if (!(typeof idx === 'number' && idx >= 0)) {\n            throw new Error(`invalid child index: ${idx}`);\n        }\n        if (idx >= HARDENED_OFFSET) {\n            throw new Error('can not derive hardened child key');\n        }\n        const ch = hash(this.chainCode, 32);\n        const iBuf = new Uint8Array(4);\n        const iBufView = new DataView(iBuf.buffer);\n        iBufView.setUint32(0, idx, true);\n        const z = keyedHash(concatBytes(new Uint8Array([2]), this.k, iBuf), ch);\n        const c = keyedHash(concatBytes(new Uint8Array([3]), this.k, iBuf), ch).slice(32, 64);\n        const zl = z.slice(0, 28);\n        const left = bytesToBn(zl) * BigInt(8);\n        const point = this.toPubKey().point.add(Point.BASE.mul(left));\n        return new HDPubKey(point.toRawBytes(), c);\n    }\n    /**\n     * Returns the HDPubKey as bytes.\n     *\n     * HD Public Keys are 64 bytes.\n     */\n    toBytes() {\n        return concatBytes(this.k, this.chainCode);\n    }\n    /**\n     * Returns the HDPubKey as hex-encoded string.\n     */\n    toHex() {\n        return base16.encode(this.toBytes());\n    }\n    /**\n     * Returns the HDPubKey as bech32m-encoded string.\n     */\n    toString() {\n        return bech32m.encode(this.toBytes(), PREFIX);\n    }\n    /**\n     * Returns the HDPubKey's normal PubKey.\n     */\n    toPubKey() {\n        return PubKey.fromBytes(this.k.slice(0, 32));\n    }\n}\n// Maps the derivation path part to an index number\nfunction toIndex(part) {\n    const m = /^(\\d+)(['hH])?$/.exec(part);\n    if (!m || m.length !== 3) {\n        throw new Error(`invalid child index: ${part}`);\n    }\n    let idx = +m[1];\n    if (idx < 0 || idx >= HARDENED_OFFSET) {\n        throw new Error(`invalid child index: ${part}`);\n    }\n    if (typeof m[2] !== 'undefined')\n        idx += HARDENED_OFFSET;\n    return idx;\n}\n", "import { BufReader, BufWriter, } from './internal.js';\nimport { base16 } from './support/base.js';\n/**\n * Lock Types\n *\n * - Frozen     - can't be called; can't be locked; (can be loaded?)\n * - None       - anyone can call; anyone can lock; (default type)\n * - Address    - requires sig to call; requires sig to lock;\n * - Caller     - caller must be parent; new lock must be set by parent;\n * - Anyone     - anyone can call; can't be locked; (must be set in own constructor)\n */\nexport var LockType;\n(function (LockType) {\n    LockType[LockType[\"FROZEN\"] = -1] = \"FROZEN\";\n    LockType[LockType[\"NONE\"] = 0] = \"NONE\";\n    LockType[LockType[\"ADDRESS\"] = 1] = \"ADDRESS\";\n    LockType[LockType[\"JIG\"] = 2] = \"JIG\";\n    LockType[LockType[\"PUBLIC\"] = 3] = \"PUBLIC\";\n})(LockType || (LockType = {}));\n/**\n * Output Lock\n *\n * Every output has a Lock which determines who can call methods and update the\n * instance.\n */\nexport class Lock {\n    type;\n    data;\n    constructor(type, data) {\n        this.type = type;\n        this.data = data;\n    }\n    static fromBytes(bytes) {\n        if (!ArrayBuffer.isView(bytes)) {\n            throw Error('The first argument to `Lock.fromBytes()` must be a `Uint8Array`');\n        }\n        const buf = new BufReader(bytes);\n        return buf.read(LockSerializer);\n    }\n    static fromJson(json) {\n        return new Lock(json.type, base16.decode(json.data));\n    }\n    toBytes() {\n        const buf = new BufWriter();\n        buf.write(LockSerializer, this);\n        return buf.data;\n    }\n    toHex() {\n        return base16.encode(this.toBytes());\n    }\n    toJson() {\n        return { type: this.type, data: base16.encode(this.data) };\n    }\n}\n/**\n * Lock Serializer object - implements the Serializable interface.\n */\nexport const LockSerializer = {\n    read(buf) {\n        const type = buf.readU8();\n        let data;\n        if (type === LockType.ADDRESS) {\n            data = buf.readFixedBytes(20);\n        }\n        else if (type == LockType.JIG) {\n            data = buf.readFixedBytes(34);\n        }\n        else {\n            data = buf.readFixedBytes(0);\n        }\n        return new Lock(type, data);\n    },\n    write(buf, lock) {\n        buf.writeU8(lock.type);\n        buf.writeFixedBytes(lock.data);\n        return buf;\n    }\n};\n", "import { CodeKind, MethodKind, } from \"./types.js\";\nexport class AbiQuery {\n    abi;\n    #scope;\n    #target;\n    constructor(abi) {\n        this.abi = abi;\n        this.#scope = abi.defs;\n    }\n    get hasResult() {\n        return !!this.#target;\n    }\n    allCode() {\n        return this.#scope;\n    }\n    getCode() {\n        assertExists(this.#target);\n        return this.#target;\n    }\n    getClass() {\n        assertClass(this.#target);\n        return this.#target;\n    }\n    getClassFull() {\n        const node = this.getClass();\n        const parents = this.getClassParents();\n        const fields = parents.flatMap(p => p.fields).concat(node.fields);\n        const methods = parents.flatMap(p => p.methods).concat(node.methods);\n        return { ...node, extends: 'Jig', fields, methods };\n    }\n    getFunction() {\n        assertFunction(this.#target);\n        return this.#target;\n    }\n    getInterface() {\n        assertInterface(this.#target);\n        return this.#target;\n    }\n    getInterfaceFull() {\n        const node = this.getInterface();\n        const parents = this.getInterfaceParents();\n        const fields = parents.flatMap(p => p.fields).concat(node.fields);\n        const methods = parents.flatMap(p => p.methods).concat(node.methods);\n        return { ...node, fields, methods };\n    }\n    getObject() {\n        assertObject(this.#target);\n        return this.#target;\n    }\n    getField(q) {\n        const fields = this.getFieldsFull();\n        const field = typeof q === 'string' ? fields.find(n => n.name === q) : fields[q];\n        assertExists(field, 'field');\n        return field;\n    }\n    getFieldIdx(name) {\n        const fields = this.getFieldsFull();\n        const idx = fields.findIndex(f => f.name === name);\n        assertExists(idx >= 0, 'field');\n        return idx;\n    }\n    getFieldsFull() {\n        assertNodeKind(this.#target, ['fields']);\n        let fields;\n        switch (this.#target.kind) {\n            case CodeKind.CLASS:\n                fields = this.getClassFull().fields;\n                break;\n            case CodeKind.INTERFACE:\n                fields = this.getInterfaceFull().fields;\n            default:\n                fields = this.#target.fields;\n        }\n        // Filter out dupes\n        return [...new Set(fields)];\n    }\n    getMethod(q) {\n        const methods = this.getMethodsFull();\n        const method = typeof q === 'string' ?\n            methods.findLast(n => n.name === q) :\n            methods.filter(publicMethodsOnly)[q];\n        assertExists(method, 'method');\n        return method;\n    }\n    getMethodIdx(name) {\n        const methods = this.getMethodsFull();\n        const idx = methods.filter(publicMethodsOnly).findLastIndex(m => m.name === name);\n        assertExists(idx >= 0, 'method');\n        return idx;\n    }\n    getMethodsFull() {\n        assertNodeKind(this.#target, ['methods']);\n        return isClass(this.#target) ?\n            this.getClassFull().methods :\n            this.getInterfaceFull().methods;\n    }\n    getClassInterfaces() {\n        assertClass(this.#target);\n        const query = new AbiQuery(this.abi).byKind([CodeKind.INTERFACE, CodeKind.PROXY_INTERFACE]);\n        return this.#target.implements.map(name => {\n            return query.byName(name).getCode();\n        });\n    }\n    getClassParents() {\n        assertClass(this.#target);\n        const parents = [];\n        while (isClass(this.#target)) {\n            this.toClassParent();\n            if (isClass(this.#target))\n                parents.push(this.getClass());\n        }\n        return parents.reverse();\n    }\n    getInterfaceParents() {\n        assertInterface(this.#target);\n        const query = new AbiQuery(this.abi).byKind([CodeKind.INTERFACE, CodeKind.PROXY_INTERFACE]);\n        return this.#target.extends.map(name => {\n            return query.byName(name).getInterface();\n        });\n    }\n    getIndex() {\n        assertExists(this.#target);\n        const idx = this.#scope.indexOf(this.#target);\n        assertExists(idx >= 0);\n        return idx;\n    }\n    byKind(kind) {\n        this.#scope = this.#scope.filter(c => {\n            return Array.isArray(kind) ? kind.includes(c.kind) : kind === c.kind;\n        });\n        this.#target = undefined;\n        return this;\n    }\n    byIndex(idx) {\n        this.#target = this.#scope[idx];\n        return this;\n    }\n    byName(name) {\n        this.#target = this.#scope.find(n => n.name === name);\n        return this;\n    }\n    fromExports() {\n        this.reset();\n        this.#scope = this.abi.exports.map(i => this.abi.defs[i]);\n        return this;\n    }\n    fromImports() {\n        this.reset();\n        this.#scope = this.abi.imports.map(i => this.abi.defs[i]);\n        return this;\n    }\n    toClassParent() {\n        assertClass(this.#target);\n        const parentName = this.#target.extends;\n        return this.fromExports().byName(parentName);\n    }\n    search(name) {\n        this.reset();\n        const match = name.match(/^(\\w+)(_|\\.)(\\w+)$/);\n        if (match?.length === 4) {\n            const [_str, codeName, sep, propName] = match;\n            this.byName(codeName);\n            return sep === '_' ?\n                this.getMethod(propName) :\n                this.getField(propName);\n        }\n        else {\n            return this.byName(name).getCode();\n        }\n    }\n    reset() {\n        this.#scope = this.abi.defs;\n        this.#target = undefined;\n        return this;\n    }\n}\nexport function assertExists(bool, msg = 'subject') {\n    if (!bool)\n        throw new Error(`not found: the ${msg} does not exist`);\n}\nexport function assertNodeKind(node, keys, kind) {\n    assertExists(node);\n    if (!keys.every(k => k in node)) {\n        throw new Error(`invalid type, keys not found: ${keys.join(', ')}`);\n    }\n    if (typeof kind !== 'undefined' && !('kind' in node && node.kind === kind)) {\n        throw new Error(`invalid type, kind not matching: ${kind}`);\n    }\n}\nexport function assertClass(node) {\n    assertNodeKind(node, ['fields', 'methods'], CodeKind.CLASS);\n}\nexport function assertFunction(node) {\n    assertNodeKind(node, ['args', 'rtype'], CodeKind.FUNCTION);\n}\nexport function assertInterface(node) {\n    assertNodeKind(node, ['fields', 'methods'], CodeKind.INTERFACE);\n}\nexport function assertObject(node) {\n    assertNodeKind(node, ['fields'], CodeKind.OBJECT);\n}\nexport function assertProxy(node) {\n    assertNodeKind(node, ['kind', 'pkg']);\n}\nexport function assertClassLike(node) {\n    assertNodeKind(node, ['methods', 'fields']);\n}\nexport function assertFunctionLike(node) {\n    assertNodeKind(node, ['args', 'rtype']);\n}\nexport function assertField(node) {\n    assertNodeKind(node, ['name', 'type']);\n}\nexport function assertMethod(node) {\n    assertNodeKind(node, ['kind', 'args', 'rtype']);\n}\nexport function isNodeKind(node, keys, kind) {\n    return !!node &&\n        keys.every(k => k in node) && (typeof kind !== 'undefined' ? 'kind' in node && node.kind === kind : true);\n}\nexport function isClass(node) {\n    return isNodeKind(node, ['fields', 'methods'], CodeKind.CLASS);\n}\nexport function isFunction(node) {\n    return isNodeKind(node, ['args', 'rtype'], CodeKind.FUNCTION);\n}\nexport function isInterface(node) {\n    return isNodeKind(node, ['fields', 'methods'], CodeKind.INTERFACE);\n}\nexport function isObject(node) {\n    return isNodeKind(node, ['fields'], CodeKind.OBJECT);\n}\nexport function isProxy(node) {\n    return isNodeKind(node, ['kind', 'pkg']);\n}\nexport function isClassLike(node) {\n    return isNodeKind(node, ['fields']);\n}\nexport function isFunctionLike(node) {\n    return isNodeKind(node, ['args', 'rtype']);\n}\nexport function isField(node) {\n    return isNodeKind(node, ['name', 'type']);\n}\nexport function isMethod(node) {\n    return isNodeKind(node, ['kind', 'args', 'rtype']);\n}\nfunction publicMethodsOnly(m) {\n    return (typeof m.kind === 'undefined' || m.kind === MethodKind.PUBLIC) && m.name !== 'constructor';\n}\n", "import { AbiQuery } from './abi/query.js';\nimport { validateAbi } from './abi/validations.js';\nimport { base16 } from './support/base.js';\nimport { hash } from './support/blake3.js';\nimport { BCS, BufReader, BufWriter, Lock, LockSerializer, Pointer, PointerSerializer } from './internal.js';\n/**\n * Transaction Execution Output\n *\n * When a transaction is executed it creates one or more outputs. An output\n * has the following fields:\n *\n * - `origin`: a 36-byte pointer to the transaction the instance was first instantiated\n * - `location`: a 36-byte pointer to the transaction of the current state of the instance\n * - `class`: a 36-byte pointer to the package the class is found in\n * - `lock`: the Lock type and data\n * - `state`: BCS encoded output state\n *\n * The Output class is a generic wrapper for any output, and provides a way to\n * access the parsed state as a JavaScript object.\n */\nexport class Output {\n    origin;\n    location;\n    classPtr;\n    lock;\n    stateBuf;\n    #abi;\n    #bcs;\n    #classNode;\n    #props;\n    constructor(origin, location, classPtr, lock, stateBuf, abi) {\n        this.origin = origin;\n        this.location = location;\n        this.classPtr = classPtr;\n        this.lock = lock;\n        this.stateBuf = stateBuf;\n        if (typeof abi !== 'undefined') {\n            this.abi = abi;\n        }\n    }\n    static fromBytes(bytes, abi) {\n        if (!ArrayBuffer.isView(bytes)) {\n            throw Error('The first argument to `Output.fromBytes()` must be a `Uint8Array`');\n        }\n        const buf = new BufReader(bytes);\n        const output = buf.read(OutputSerializer);\n        if (typeof abi !== 'undefined') {\n            output.abi = abi;\n        }\n        return output;\n    }\n    static fromHex(hex, abi) {\n        let buff = base16.decode(hex);\n        return this.fromBytes(buff, abi);\n    }\n    static fromJson(data, abi) {\n        const output = new Output(Pointer.fromString(data.origin), Pointer.fromString(data.location), Pointer.fromString(data.class), Lock.fromJson(data.lock), base16.decode(data.state));\n        if (data.id !== output.id) {\n            throw Error('invalid id. the given id does not match the computed id.');\n        }\n        if (typeof abi !== 'undefined') {\n            output.abi = abi;\n        }\n        return output;\n    }\n    set abi(abi) {\n        if (typeof abi === 'undefined') {\n            this.#abi = undefined;\n            this.#bcs = undefined;\n            this.#classNode = undefined;\n        }\n        else if (validateAbi(abi)) {\n            this.#abi = abi;\n            this.#bcs = new BCS(abi);\n            this.#classNode = new AbiQuery(abi).fromExports().byIndex(this.classPtr.idx).getClass();\n        }\n    }\n    get abi() {\n        return this.#abi;\n    }\n    get id() {\n        return base16.encode(this.hash);\n    }\n    get hash() {\n        return hash(this.toBytes());\n    }\n    get className() {\n        if (this.#classNode) {\n            return this.#classNode.name;\n        }\n    }\n    get classNode() {\n        return this.#classNode;\n    }\n    get props() {\n        if (this.#bcs && this.#classNode && typeof this.#props === 'undefined') {\n            const state = this.#bcs.decode(this.#classNode.name, this.stateBuf);\n            const props = this.#classNode.fields.reduce((props, f, i) => {\n                props[f.name] = state[i];\n                return props;\n            }, {});\n            this.#props = Object.freeze(props);\n        }\n        return this.#props;\n    }\n    toBytes() {\n        const buf = new BufWriter();\n        buf.write(OutputSerializer, this);\n        return buf.data;\n    }\n    toHex() {\n        return base16.encode(this.toBytes());\n    }\n    toJson() {\n        return {\n            id: this.id,\n            origin: this.origin.toString(),\n            location: this.location.toString(),\n            class: this.classPtr.toString(),\n            lock: this.lock.toJson(),\n            state: base16.encode(this.stateBuf)\n        };\n    }\n}\n/**\n * Output Serializer object - implements the Serializable interface.\n */\nexport const OutputSerializer = {\n    read(buf) {\n        const origin = buf.read(PointerSerializer);\n        const location = buf.read(PointerSerializer);\n        const classPtr = buf.read(PointerSerializer);\n        const lock = buf.read(LockSerializer);\n        const stateBuf = buf.readBytes();\n        return new Output(origin, location, classPtr, lock, stateBuf);\n    },\n    write(buf, output) {\n        buf.write(PointerSerializer, output.origin);\n        buf.write(PointerSerializer, output.location);\n        buf.write(PointerSerializer, output.classPtr);\n        buf.write(LockSerializer, output.lock);\n        buf.writeBytes(output.stateBuf);\n        return buf;\n    }\n};\n", "import { BufReader, BufWriter, } from './internal.js';\nimport { base16 } from './support/base.js';\nimport { buffEquals } from \"./support/util.js\";\nconst POINTER_STR_REGX = /^[a-f0-9]{64}_\\d+$/i;\n/**\n * Aldea Pointer\n *\n * A consists of a 32 byte ID and an index integer which points to the location\n * of an object within a larger data structure.\n *\n * A Pointer is encoded as a string by concatentating the hex encoded ID with\n * the index.\n *\n * Example:\n *\n *     3b2af88dad7f1847f5b333852b71ac6fd2ae519ba2d359e8ce07b071aad30e80_1\n */\nexport class Pointer {\n    idBuf;\n    idx;\n    constructor(id, idx) {\n        this.idBuf = typeof id === 'string' ? base16.decode(id) : id;\n        this.idx = idx;\n    }\n    static fromBytes(bytes) {\n        if (!ArrayBuffer.isView(bytes)) {\n            throw Error('The first argument to `Pointer.fromBytes()` must be a `Uint8Array`');\n        }\n        const buf = new BufReader(bytes);\n        return buf.read(PointerSerializer);\n    }\n    static fromString(str) {\n        if (typeof str !== 'string' || !POINTER_STR_REGX.test(str)) {\n            throw Error('invalid pointer. must be a pointer string.');\n        }\n        const [idStr, idxStr] = str.split('_');\n        return new Pointer(base16.decode(idStr), Number(idxStr));\n    }\n    get id() {\n        return base16.encode(this.idBuf);\n    }\n    equals(ptr) {\n        return this.idx === ptr.idx && buffEquals(this.idBuf, ptr.idBuf);\n    }\n    toBytes() {\n        const buf = new BufWriter();\n        buf.write(PointerSerializer, this);\n        return buf.data;\n    }\n    toString() {\n        return `${this.id}_${this.idx}`;\n    }\n}\n/**\n * Pointer Serializer object - implements the Serializable interface.\n */\nexport const PointerSerializer = {\n    read(buf) {\n        const id = buf.readFixedBytes(32);\n        const idx = buf.readU16();\n        return new Pointer(id, idx);\n    },\n    write(buf, ptr) {\n        buf.writeFixedBytes(ptr.idBuf);\n        buf.writeU16(ptr.idx);\n        return buf;\n    }\n};\n", "import { KeyPair, PubKey } from './internal.js';\nimport { base16, bech32m } from './support/base.js';\nimport { randomBytes } from './support/util.js';\nconst PREFIX = 'asec';\n/**\n * Aldea private key\n *\n * A private key is a 32 byte random key.\n */\nexport class PrivKey {\n    d;\n    constructor(d) {\n        if (d.length !== 32)\n            throw new Error('PrivKey must be 32 bytes');\n        this.d = d;\n    }\n    /**\n     * Returns a PrivKey from the given bytes.\n     */\n    static fromBytes(bytes) {\n        if (!ArrayBuffer.isView(bytes)) {\n            throw Error('The first argument to `PrivKey.fromBytes()` must be a `Uint8Array`');\n        }\n        return new PrivKey(bytes);\n    }\n    /**\n     * Returns a PrivKey from the given hex-encoded string.\n     */\n    static fromHex(str) {\n        if (typeof str !== 'string') {\n            throw Error('The first argument to `PrivKey.fromHex()` must be a `string`');\n        }\n        const d = base16.decode(str);\n        return new PrivKey(d);\n    }\n    /**\n     * Returns a PrivKey from the given bech32m-encoded string.\n     */\n    static fromString(str) {\n        if (typeof str !== 'string') {\n            throw Error('The first argument to `PrivKey.fromString()` must be a `string`');\n        }\n        const d = bech32m.decode(str, PREFIX);\n        return new PrivKey(d);\n    }\n    /**\n     * Generates and returns a new random PrivKey.\n     */\n    static fromRandom() {\n        const d = randomBytes(32);\n        return new PrivKey(d);\n    }\n    /**\n     * Returns the PrivKey as bytes.\n     */\n    toBytes() {\n        return this.d;\n    }\n    /**\n     * Returns the PrivKey as hex-encoded string.\n     */\n    toHex() {\n        return base16.encode(this.d);\n    }\n    /**\n     * Returns the PrivKey as bech32m-encoded string.\n     */\n    toString() {\n        return bech32m.encode(this.d, PREFIX);\n    }\n    /**\n     * Returns a KeyPair from the PrivKey.\n     */\n    toKeyPair() {\n        return KeyPair.fromPrivKey(this);\n    }\n    /**\n     * Returns the PrivKey's corresponding PubKey.\n     */\n    toPubKey() {\n        return PubKey.fromPrivKey(this);\n    }\n}\n", "import { Address, PrivKey } from './internal.js';\nimport { base16, bech32m } from './support/base.js';\nimport { calcPoint, pointFromBytes, pointToBytes } from './support/ed25519.js';\nconst PREFIX = 'apub';\n/**\n * Aldea public key\n *\n * A public key is the X and Y coordinates of a point on  Ed25519 curve. It is\n * serialized as the 32 byte Y coordinate, with the last byte encoding the sign\n * of X.\n */\nexport class PubKey {\n    point;\n    constructor(point) {\n        this.point = point;\n    }\n    /**\n     * Returns a PubKey from the given bytes.\n     */\n    static fromBytes(bytes) {\n        if (!ArrayBuffer.isView(bytes)) {\n            throw Error('The first argument to `PubKey.fromBytes()` must be a `Uint8Array`');\n        }\n        const point = pointFromBytes(bytes);\n        return new PubKey(point);\n    }\n    /**\n     * Returns a PubKey from the given hex-encoded string.\n     */\n    static fromHex(str) {\n        if (typeof str !== 'string') {\n            throw Error('The first argument to `PubKey.fromHex()` must be a `string`');\n        }\n        const bytes = base16.decode(str);\n        return PubKey.fromBytes(bytes);\n    }\n    /**\n     * Returns a PubKey from the given bech32m-encoded string.\n     */\n    static fromString(str) {\n        if (typeof str !== 'string') {\n            throw Error('The first argument to `PubKey.fromString()` must be a `string`');\n        }\n        const bytes = bech32m.decode(str, PREFIX);\n        return PubKey.fromBytes(bytes);\n    }\n    /**\n     * Returns a the giveb PrivKey's corresponding PubKey.\n     */\n    static fromPrivKey(privKey) {\n        if (!(privKey instanceof PrivKey)) {\n            throw Error('The first argument to `PubKey.fromPrivKey()` must be a `PrivKey`');\n        }\n        const point = calcPoint(privKey.toBytes());\n        return new PubKey(point);\n    }\n    /**\n     * Point X coordiante\n     */\n    get x() { return this.point.x; }\n    /**\n     * Point Y coordiante\n     */\n    get y() { return this.point.y; }\n    /**\n     * checks if 2 pubkey objects represent the same point\n     */\n    equals(another) {\n        return this.x === another.x && this.y === another.y;\n    }\n    /**\n     * Returns the PubKey's Address.\n     */\n    toAddress() {\n        return Address.fromPubKey(this);\n    }\n    /**\n     * Returns the PubKey as bytes.\n     */\n    toBytes() {\n        return pointToBytes(this.point);\n    }\n    /**\n     * Returns the PubKey as hex-encoded string.\n     */\n    toHex() {\n        return base16.encode(this.toBytes());\n    }\n    /**\n     * Returns the PubKey as bech32m-encoded string.\n     */\n    toString() {\n        return bech32m.encode(this.toBytes(), PREFIX);\n    }\n}\n", "import { BufReader, BufWriter, InstructionSerializer, OpCode, PubKey, SignInstruction, SignToInstruction, } from './internal.js';\nimport { base16 } from './support/base.js';\nimport { sign, verify } from './support/ed25519.js';\nimport { hash } from './support/blake3.js';\nconst TX_VERSION = 1;\n/**\n * Aldea Transaction\n *\n * A transaction is simply a list of instructions. When a transaction is\n * processed, the instructions are executed in the order they appear in the\n * transaction.\n *\n * This class is primarily for working with the underlying data structure of\n * a transaction. To build a transaction, use the TxBuilder class instaed.\n */\nexport class Tx {\n    version;\n    instructions;\n    constructor(version = TX_VERSION, instructions = []) {\n        this.version = version;\n        this.instructions = instructions;\n    }\n    /**\n     * Transaction ID\n     */\n    get id() {\n        return base16.encode(this.hash);\n    }\n    /**\n     * Transaction hash\n     */\n    get hash() {\n        return hash(this.toBytes(), 32);\n    }\n    /**\n     * Returns a Transaction from the given bytes.\n     */\n    static fromBytes(bytes) {\n        if (!ArrayBuffer.isView(bytes)) {\n            throw Error('The first argument to `Tx.fromBytes()` must be a `Uint8Array`');\n        }\n        const buf = new BufReader(bytes);\n        return buf.read(TxSerializer);\n    }\n    /**\n     * Returns a Transaction from the given hex-encoded string.\n     */\n    static fromHex(str) {\n        const bytes = base16.decode(str);\n        return Tx.fromBytes(bytes);\n    }\n    /**\n     * Pushes an Instruction onto the transaction.\n     */\n    push(instruction) {\n        this.instructions.push(instruction);\n        return this;\n    }\n    /**\n     * Returns the sighash of the current transaction. Can optionally be passed\n     * an index to return the sighash upto a given instruction.\n     */\n    sighash(to = this.instructions.length) {\n        const buf = new BufWriter();\n        const instructions = this.instructions.slice(0, to);\n        for (let i = 0; i < instructions.length; i++) {\n            const { opcode } = instructions[i];\n            if (opcode === OpCode.SIGN || opcode === OpCode.SIGNTO) {\n                buf.writeU8(opcode);\n                buf.writeFixedBytes(instructions[i].pubkey);\n            }\n            else {\n                buf.write(InstructionSerializer, instructions[i]);\n            }\n        }\n        return hash(buf.data, 32);\n    }\n    /**\n     * Returns a valid signature for the current tx using the given key.\n     */\n    createSignature(privKey, to = this.instructions.length) {\n        const msg = this.sighash(to);\n        return sign(msg, privKey);\n    }\n    isSignedBy(addr, index) {\n        let i = 0;\n        for (const inst of this.instructions) {\n            if (inst instanceof SignInstruction && PubKey.fromBytes(inst.pubkey).toAddress().equals(addr)) {\n                return true;\n            }\n            if (inst instanceof SignToInstruction && PubKey.fromBytes(inst.pubkey).toAddress().equals(addr) && index <= i) {\n                return true;\n            }\n            i++;\n        }\n        return false;\n    }\n    /**\n     * Returns the Transaction as bytes.\n     */\n    toBytes() {\n        const buf = new BufWriter();\n        buf.write(TxSerializer, this);\n        return buf.data;\n    }\n    /**\n     * Returns the Transaction as hex-encoded string.\n     */\n    toHex() {\n        return base16.encode(this.toBytes());\n    }\n    signers() {\n        const signToSigners = this.instructions.filter(i => [OpCode.SIGNTO].includes(i.opcode))\n            .map((i) => {\n            let sign = i;\n            return PubKey.fromBytes(sign.pubkey);\n        });\n        const signSigners = this.instructions.filter(i => [OpCode.SIGN].includes(i.opcode))\n            .map((i) => {\n            let sign = i;\n            return PubKey.fromBytes(sign.pubkey);\n        });\n        return [...signToSigners, ...signSigners];\n    }\n    /**\n     * Verifies any signatures in the transaction and returns a boolean.\n     *\n     * Not that this only verifies the signatures. It does not otherwise verify\n     * the transaction is valid. That is done at execution time.\n     */\n    verify() {\n        return this.instructions\n            .every((i, idx) => {\n            if (i.opcode === OpCode.SIGN || i.opcode === OpCode.SIGNTO) {\n                const inst = i;\n                const msg = i.opcode === OpCode.SIGNTO\n                    ? this.sighash(idx)\n                    : this.sighash();\n                return verify(inst.sig, msg, inst.pubkey);\n            }\n            else {\n                return true;\n            }\n        });\n    }\n}\n/**\n * Tx Serializer object - implements the Serializable interface.\n */\nexport const TxSerializer = {\n    read(buf) {\n        const version = buf.readU16();\n        const instructions = buf.readSeq((reader) => {\n            return reader.read(InstructionSerializer);\n        });\n        return new Tx(version, instructions);\n    },\n    write(buf, tx) {\n        buf.writeU16(tx.version);\n        buf.writeSeq(tx.instructions, (writer, inst) => {\n            writer.write(InstructionSerializer, inst);\n        });\n        return buf;\n    }\n};\n", "import { BufReader, BufWriter, ImportArgsSerializer, LoadArgsSerializer, LoadByOriginArgsSerializer, NewArgsSerializer, CallArgsSerializer, ExecArgsSerializer, FundArgsSerializer, LockArgsSerializer, DeployArgsSerializer, SignArgsSerializer, SignToArgsSerializer, UnknownInstruction } from './internal.js';\n/**\n * All OpCode bytes.\n */\nexport var OpCode;\n(function (OpCode) {\n    // Loading\n    OpCode[OpCode[\"IMPORT\"] = 161] = \"IMPORT\";\n    OpCode[OpCode[\"LOAD\"] = 162] = \"LOAD\";\n    OpCode[OpCode[\"LOADBYORIGIN\"] = 163] = \"LOADBYORIGIN\";\n    // Calling\n    OpCode[OpCode[\"NEW\"] = 177] = \"NEW\";\n    OpCode[OpCode[\"CALL\"] = 178] = \"CALL\";\n    OpCode[OpCode[\"EXEC\"] = 179] = \"EXEC\";\n    // Output\n    OpCode[OpCode[\"FUND\"] = 193] = \"FUND\";\n    OpCode[OpCode[\"LOCK\"] = 194] = \"LOCK\";\n    // Code\n    OpCode[OpCode[\"DEPLOY\"] = 209] = \"DEPLOY\";\n    // Cryptography\n    OpCode[OpCode[\"SIGN\"] = 225] = \"SIGN\";\n    OpCode[OpCode[\"SIGNTO\"] = 226] = \"SIGNTO\";\n})(OpCode || (OpCode = {}));\n/**\n * Instruction base class.\n *\n * An Instruction is Aldea's smallest contiguous unit of execution. A\n * transaction consists of a `OpCode` byte and a number of arguments, depending\n * on the `OpCode`.\n */\nexport class Instruction {\n    opcode;\n    constructor(opcode) {\n        this.opcode = opcode;\n    }\n    static fromBytes(bytes) {\n        const buf = new BufReader(bytes);\n        return buf.read(InstructionSerializer);\n    }\n    toBytes() {\n        const buf = new BufWriter();\n        buf.write(InstructionSerializer, this);\n        return buf.data;\n    }\n}\n/**\n * InstructionRef class - just a wrapper around number\n */\nexport class InstructionRef {\n    idx;\n    constructor(idx) {\n        if (!Number.isInteger(idx))\n            throw new Error('invalid ref. must be an integer.');\n        this.idx = idx;\n    }\n    get [Symbol.toStringTag]() { return `InstructionRef`; }\n    toString() { return `${this[Symbol.toStringTag]}<${this.idx}>`; }\n}\n/**\n * Wrap a number with InstructionRef\n */\nexport function ref(idx) {\n    return new InstructionRef(idx);\n}\n/**\n * Instruction Serializer object - implements the Serializable interface.\n */\nexport const InstructionSerializer = {\n    read(buf) {\n        const opcode = buf.readU8();\n        const argsBuf = buf.readBytes();\n        const args = new BufReader(argsBuf);\n        switch (opcode) {\n            case OpCode.IMPORT:\n                return args.read(ImportArgsSerializer);\n            case OpCode.LOAD:\n                return args.read(LoadArgsSerializer);\n            case OpCode.LOADBYORIGIN:\n                return args.read(LoadByOriginArgsSerializer);\n            case OpCode.NEW:\n                return args.read(NewArgsSerializer);\n            case OpCode.CALL:\n                return args.read(CallArgsSerializer);\n            case OpCode.EXEC:\n                return args.read(ExecArgsSerializer);\n            case OpCode.FUND:\n                return args.read(FundArgsSerializer);\n            case OpCode.LOCK:\n                return args.read(LockArgsSerializer);\n            case OpCode.DEPLOY:\n                return args.read(DeployArgsSerializer);\n            case OpCode.SIGN:\n                return args.read(SignArgsSerializer);\n            case OpCode.SIGNTO:\n                return args.read(SignToArgsSerializer);\n            default: return new UnknownInstruction(opcode, argsBuf);\n        }\n    },\n    write(buf, inst) {\n        const args = new BufWriter();\n        switch (inst.opcode) {\n            case OpCode.IMPORT:\n                args.write(ImportArgsSerializer, inst);\n                break;\n            case OpCode.LOAD:\n                args.write(LoadArgsSerializer, inst);\n                break;\n            case OpCode.LOADBYORIGIN:\n                args.write(LoadByOriginArgsSerializer, inst);\n                break;\n            case OpCode.NEW:\n                args.write(NewArgsSerializer, inst);\n                break;\n            case OpCode.CALL:\n                args.write(CallArgsSerializer, inst);\n                break;\n            case OpCode.EXEC:\n                args.write(ExecArgsSerializer, inst);\n                break;\n            case OpCode.FUND:\n                args.write(FundArgsSerializer, inst);\n                break;\n            case OpCode.LOCK:\n                args.write(LockArgsSerializer, inst);\n                break;\n            case OpCode.DEPLOY:\n                args.write(DeployArgsSerializer, inst);\n                break;\n            case OpCode.SIGN:\n                args.write(SignArgsSerializer, inst);\n                break;\n            case OpCode.SIGNTO:\n                args.write(SignToArgsSerializer, inst);\n                break;\n            default:\n                args.writeFixedBytes(inst.argsBuf);\n        }\n        const argsBuf = args.data;\n        buf.writeU8(inst.opcode);\n        buf.writeBytes(argsBuf);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode } from '../internal.js';\n/**\n * Import Instruction.\n *\n * Imports code by the given pakcage ID.\n */\nexport class ImportInstruction extends Instruction {\n    pkgId;\n    constructor(pkgId) {\n        super(OpCode.IMPORT);\n        this.pkgId = pkgId;\n    }\n}\n/**\n * Import Args Serializer object - implements the Serializable interface.\n */\nexport const ImportArgsSerializer = {\n    read(buf) {\n        const pkgId = buf.readFixedBytes(32);\n        return new ImportInstruction(pkgId);\n    },\n    write(buf, inst) {\n        buf.writeFixedBytes(inst.pkgId);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode } from '../internal.js';\n/**\n * Load By Ref Instruction.\n *\n * Loads an instance by the given Jig Ref.\n */\nexport class LoadInstruction extends Instruction {\n    outputId;\n    constructor(outputId) {\n        super(OpCode.LOAD);\n        this.outputId = outputId;\n    }\n}\n/**\n * Load Args Serializer object - implements the Serializable interface.\n */\nexport const LoadArgsSerializer = {\n    read(buf) {\n        const outputId = buf.readFixedBytes(32);\n        return new LoadInstruction(outputId);\n    },\n    write(buf, instruction) {\n        buf.writeFixedBytes(instruction.outputId);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode } from '../internal.js';\n/**\n * Load By Id Instruction.\n *\n * Loads an instance by the given Jig Id.\n */\nexport class LoadByOriginInstruction extends Instruction {\n    origin;\n    constructor(origin) {\n        super(OpCode.LOADBYORIGIN);\n        this.origin = origin;\n    }\n}\n/**\n * Load By Origin Args Serializer object - implements the Serializable interface.\n */\nexport const LoadByOriginArgsSerializer = {\n    read(buf) {\n        const origin = buf.readFixedBytes(34);\n        return new LoadByOriginInstruction(origin);\n    },\n    write(buf, instruction) {\n        buf.writeFixedBytes(instruction.origin);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode, } from '../internal.js';\n/**\n * New Instruction.\n *\n * Instantiates a new instance of a class. Args are passwed to the constructor.\n */\nexport class NewInstruction extends Instruction {\n    idx;\n    exportIdx;\n    argsBuf;\n    constructor(idx, exportIdx, argsBuf) {\n        super(OpCode.NEW);\n        this.idx = idx;\n        this.exportIdx = exportIdx;\n        this.argsBuf = argsBuf;\n    }\n}\n/**\n * New Args Serializer object - implements the Serializable interface.\n */\nexport const NewArgsSerializer = {\n    read(buf) {\n        const idx = buf.readU16();\n        const exportIdx = buf.readU16();\n        const argsBuf = buf.readFixedBytes(buf.remaining);\n        return new NewInstruction(idx, exportIdx, argsBuf);\n    },\n    write(buf, instruction) {\n        buf.writeU16(instruction.idx);\n        buf.writeU16(instruction.exportIdx);\n        buf.writeFixedBytes(instruction.argsBuf);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode, } from '../internal.js';\n/**\n * Call Instruction.\n *\n * Calls an instance method on a Jig. Args are passwed to the constructor.\n */\nexport class CallInstruction extends Instruction {\n    idx;\n    methodIdx;\n    argsBuf;\n    constructor(idx, methodIdx, argsBuf) {\n        super(OpCode.CALL);\n        this.idx = idx;\n        this.methodIdx = methodIdx;\n        this.argsBuf = argsBuf;\n    }\n}\n/**\n * Call Args Serializer object - implements the Serializable interface.\n */\nexport const CallArgsSerializer = {\n    read(buf) {\n        const idx = buf.readU16();\n        const methodIdx = buf.readU16();\n        const argsBuf = buf.readFixedBytes(buf.remaining);\n        return new CallInstruction(idx, methodIdx, argsBuf);\n    },\n    write(buf, instruction) {\n        buf.writeU16(instruction.idx);\n        buf.writeU16(instruction.methodIdx);\n        buf.writeFixedBytes(instruction.argsBuf);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode, } from '../internal.js';\n/**\n * Exec Instruction.\n *\n * Calls a static function. Args are passed to the constructor.\n */\nexport class ExecInstruction extends Instruction {\n    idx;\n    exportIdx;\n    argsBuf;\n    constructor(idx, exportIdx, argsBuf) {\n        super(OpCode.EXEC);\n        this.idx = idx;\n        this.exportIdx = exportIdx;\n        this.argsBuf = argsBuf;\n    }\n}\n/**\n * Exec Args Serializer object - implements the Serializable interface.\n */\nexport const ExecArgsSerializer = {\n    read(buf) {\n        const idx = buf.readU16();\n        const exportIdx = buf.readU16();\n        const argsBuf = buf.readFixedBytes(buf.remaining);\n        return new ExecInstruction(idx, exportIdx, argsBuf);\n    },\n    write(buf, instruction) {\n        buf.writeU16(instruction.idx);\n        buf.writeU16(instruction.exportIdx);\n        buf.writeFixedBytes(instruction.argsBuf);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode } from '../internal.js';\n/**\n * Fund Instruction.\n *\n * Marks a Coin UTXO to be used for the transaction fee. All of the coin's\n * motos will be consumed and the coin will be destroyed.\n */\nexport class FundInstruction extends Instruction {\n    idx;\n    constructor(idx) {\n        super(OpCode.FUND);\n        this.idx = idx;\n    }\n}\n/**\n * Fund Args Serializer object - implements the Serializable interface.\n */\nexport const FundArgsSerializer = {\n    read(buf) {\n        const idx = buf.readU16();\n        return new FundInstruction(idx);\n    },\n    write(buf, instruction) {\n        buf.writeU16(instruction.idx);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode } from '../internal.js';\n/**\n * Lock Instruction.\n *\n * Locks a instance to the given pubkeyHash.\n */\nexport class LockInstruction extends Instruction {\n    idx;\n    pubkeyHash;\n    constructor(idx, pubkeyHash) {\n        super(OpCode.LOCK);\n        this.idx = idx;\n        this.pubkeyHash = pubkeyHash;\n    }\n}\n/**\n * Lock Args Serializer object - implements the Serializable interface.\n */\nexport const LockArgsSerializer = {\n    read(buf) {\n        const idx = buf.readU16();\n        const pubkeyHash = buf.readFixedBytes(20);\n        return new LockInstruction(idx, pubkeyHash);\n    },\n    write(buf, instruction) {\n        buf.writeU16(instruction.idx);\n        buf.writeFixedBytes(instruction.pubkeyHash);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode } from '../internal.js';\n/**\n * Deploy Instruction.\n *\n * Deploys a code bundle. The code bundle must be a map of filename => content.\n */\nexport class DeployInstruction extends Instruction {\n    pkgBuf;\n    constructor(pkgBuf) {\n        super(OpCode.DEPLOY);\n        this.pkgBuf = pkgBuf;\n    }\n}\n/**\n * Deploy Args Serializer object - implements the Serializable interface.\n */\nexport const DeployArgsSerializer = {\n    read(buf) {\n        const pkgBuf = buf.readFixedBytes(buf.remaining);\n        return new DeployInstruction(pkgBuf);\n    },\n    write(buf, inst) {\n        buf.writeFixedBytes(inst.pkgBuf);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode } from '../internal.js';\n/**\n * Sign Instruction.\n *\n * The given signature and pubkey signs ALL the transaction instructions.\n */\nexport class SignInstruction extends Instruction {\n    sig;\n    pubkey;\n    constructor(sig, pubkey) {\n        super(OpCode.SIGN);\n        this.sig = sig;\n        this.pubkey = pubkey;\n    }\n}\n/**\n * Sign Args Serializer object - implements the Serializable interface.\n */\nexport const SignArgsSerializer = {\n    read(buf) {\n        const sig = buf.readFixedBytes(64);\n        const pubkey = buf.readFixedBytes(32);\n        return new SignInstruction(sig, pubkey);\n    },\n    write(buf, instruction) {\n        buf.writeFixedBytes(instruction.sig);\n        buf.writeFixedBytes(instruction.pubkey);\n        return buf;\n    }\n};\n", "import { Instruction, OpCode } from '../internal.js';\n/**\n * Sign To Instruction.\n *\n * The given signature and pubkey signs the transaction instructions before this\n * instruction.\n */\nexport class SignToInstruction extends Instruction {\n    sig;\n    pubkey;\n    constructor(sig, pubkey) {\n        super(OpCode.SIGNTO);\n        this.sig = sig;\n        this.pubkey = pubkey;\n    }\n}\n/**\n * Sign To Args Serializer object - implements the Serializable interface.\n */\nexport const SignToArgsSerializer = {\n    read(buf) {\n        const sig = buf.readFixedBytes(64);\n        const pubkey = buf.readFixedBytes(32);\n        return new SignToInstruction(sig, pubkey);\n    },\n    write(buf, instruction) {\n        buf.writeFixedBytes(instruction.sig);\n        buf.writeFixedBytes(instruction.pubkey);\n        return buf;\n    }\n};\n", "import { Instruction } from '../internal.js';\n/**\n * Unknown Instruction.\n */\nexport class UnknownInstruction extends Instruction {\n    argsBuf;\n    constructor(opcode, argsBuf) {\n        super(opcode);\n        this.argsBuf = argsBuf;\n    }\n}\n", "/**\n * Original code (public domain) is taken from: https://www.npmjs.com/package/uleb128\n */\n/**\n * Encodes the given number into a ULEB encoded byte array.\n */\nexport function ulebEncode(num) {\n    let arr = [];\n    if (num === 0) {\n        return [0];\n    }\n    while (num > 0) {\n        let temp = num & 0x7f;\n        num = num >>> 7;\n        if (num) {\n            temp = temp | 0x80;\n        }\n        arr.push(temp);\n    }\n    return arr;\n}\n/**\n * Decode the given ULEB encoded byte array into a number.\n */\nexport function ulebDecode(arr) {\n    let total = 0;\n    let shift = 0;\n    let len = 0;\n    while (true) {\n        let byte = arr[len];\n        let data = byte & 0b01111111; // keep everything but most significant bit\n        data = data * (2 ** shift); // Avoid shifting. Causes issues in big numbers\n        total = total + data;\n        len++;\n        shift += 7;\n        if ((byte & 0x80) === 0) { // check if the most significat bit is 0. If its 0 the number finished.\n            break;\n        }\n    }\n    return {\n        value: total,\n        length: len,\n    };\n}\n", "import { ulebDecode } from './uleb.js';\n/**\n * BufReader.\n *\n * Class used for reading encoded data chunk by chunk. Normally used with the\n * BCS wrapper, but can also be used as a gerneal purpose Buffer reader.\n */\nexport class BufReader {\n    cursor = 0;\n    view;\n    constructor(data) {\n        this.view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n    }\n    get remaining() {\n        return this.view.byteLength - this.cursor;\n    }\n    readBool() {\n        return !!this.readU8();\n    }\n    readF32() {\n        return this.pull(4, (view, cursor) => view.getFloat32(cursor, true));\n    }\n    readF64() {\n        return this.pull(8, (view, cursor) => view.getFloat64(cursor, true));\n    }\n    readI8() {\n        return this.pull(1, (view, cursor) => view.getInt8(cursor));\n    }\n    readI16() {\n        return this.pull(2, (view, cursor) => view.getInt16(cursor, true));\n    }\n    readI32() {\n        return this.pull(4, (view, cursor) => view.getInt32(cursor, true));\n    }\n    readI64() {\n        return this.pull(8, (view, cursor) => view.getBigInt64(cursor, true));\n    }\n    readU8() {\n        return this.pull(1, (view, cursor) => view.getUint8(cursor));\n    }\n    readU16() {\n        return this.pull(2, (view, cursor) => view.getUint16(cursor, true));\n    }\n    readU32() {\n        return this.pull(4, (view, cursor) => view.getUint32(cursor, true));\n    }\n    readU64() {\n        return this.pull(8, (view, cursor) => view.getBigUint64(cursor, true));\n    }\n    readULEB() {\n        const ulebBuf = new Uint8Array(this.view.buffer, this.view.byteOffset + this.cursor);\n        const { value, length } = ulebDecode(ulebBuf);\n        this.cursor += length;\n        return value;\n    }\n    readFixedBytes(length) {\n        return this.pull(length, (view, cursor) => {\n            return new Uint8Array(view.buffer, view.byteOffset + cursor, length);\n        });\n    }\n    readBytes() {\n        const length = this.readULEB();\n        return this.readFixedBytes(length);\n    }\n    readFixedSeq(length, cb) {\n        const result = [];\n        for (let i = 0; i < length; i++) {\n            result.push(cb(this, i, length));\n        }\n        return result;\n    }\n    readSeq(cb) {\n        const length = this.readULEB();\n        return this.readFixedSeq(length, cb);\n    }\n    read(serializer) {\n        return serializer.read(this);\n    }\n    // Retained in case we prefer to use varints over uleb in future\n    _readVarInt() {\n        const prefix = this.readU8();\n        switch (prefix) {\n            case 255: return this.readU64();\n            case 254: return this.readU32();\n            case 253: return this.readU16();\n            default: return prefix;\n        }\n    }\n    pull(bytes, cb) {\n        const val = cb(this.view, this.cursor);\n        this.cursor += bytes;\n        return val;\n    }\n}\n", "import { ulebEncode } from './uleb.js';\n/**\n * BufWriter.\n *\n * Class used for writing BCS data chunk by chunk. Normally this is used via\n * the BCS wrapper, but can also be used as a general purpose Buffer writer.\n */\nexport class BufWriter {\n    cursor = 0;\n    size;\n    chunkSize;\n    maxSize;\n    view;\n    constructor({ size = 1024, maxSize } = {}) {\n        this.size = size;\n        this.chunkSize = size;\n        this.maxSize = maxSize || size * 64;\n        this.view = new DataView(new ArrayBuffer(this.size));\n    }\n    get data() {\n        return this.toBytes();\n    }\n    writeBool(val) {\n        return this.writeU8(val ? 1 : 0);\n    }\n    writeF32(val) {\n        return this.push(4, (view, cursor) => view.setFloat32(cursor, val, true));\n    }\n    writeF64(val) {\n        return this.push(8, (view, cursor) => view.setFloat64(cursor, val, true));\n    }\n    writeI8(val) {\n        return this.push(1, (view, cursor) => view.setInt8(cursor, Number(val)));\n    }\n    writeI16(val) {\n        return this.push(2, (view, cursor) => view.setInt16(cursor, Number(val), true));\n    }\n    writeI32(val) {\n        return this.push(4, (view, cursor) => view.setInt32(cursor, Number(val), true));\n    }\n    writeI64(val) {\n        return this.push(8, (view, cursor) => view.setBigInt64(cursor, BigInt(val), true));\n    }\n    writeU8(val) {\n        return this.push(1, (view, cursor) => view.setUint8(cursor, Number(val)));\n    }\n    writeU16(val) {\n        return this.push(2, (view, cursor) => view.setUint16(cursor, Number(val), true));\n    }\n    writeU32(val) {\n        return this.push(4, (view, cursor) => view.setUint32(cursor, Number(val), true));\n    }\n    writeU64(val) {\n        return this.push(8, (view, cursor) => view.setBigUint64(cursor, BigInt(val), true));\n    }\n    writeULEB(val) {\n        ulebEncode(val).forEach((el) => this.writeU8(el));\n        return this;\n    }\n    writeFixedBytes(val) {\n        return this.push(val.length, (view, cursor) => new Uint8Array(view.buffer).set(val, cursor));\n    }\n    writeBytes(val) {\n        this.writeULEB(val.length);\n        return this.writeFixedBytes(val);\n    }\n    writeFixedSeq(seq, cb) {\n        for (let i = 0; i < seq.length; i++) {\n            cb(this, seq[i], i, seq.length);\n        }\n        return this;\n    }\n    writeSeq(seq, cb) {\n        this.writeULEB(seq.length);\n        return this.writeFixedSeq(seq, cb);\n    }\n    write(serializer, item) {\n        return serializer.write(this, item);\n    }\n    // Retained in case we prefer to use varints over uleb in future\n    _writeVarInt(int) {\n        switch (true) {\n            case int >= 0x100000000:\n                this.writeU8(255);\n                this.writeU64(int);\n                break;\n            case int >= 0x10000:\n                this.writeU8(254);\n                this.writeU32(int);\n                break;\n            case int >= 253:\n                this.writeU8(253);\n                this.writeU16(int);\n                break;\n            default:\n                this.writeU8(int);\n        }\n        return this;\n    }\n    toBytes() {\n        return new Uint8Array(this.view.buffer.slice(0, this.cursor));\n    }\n    push(bytes, cb) {\n        const requiredSize = this.cursor + bytes;\n        if (requiredSize > this.size) {\n            this.expand(requiredSize);\n        }\n        cb(this.view, this.cursor);\n        this.cursor += bytes;\n        return this;\n    }\n    expand(requiredSize) {\n        const chunks = Math.ceil(requiredSize / this.chunkSize);\n        const nextSize = this.size + (chunks * this.chunkSize);\n        if (nextSize > this.maxSize) {\n            throw new Error('BCSWiter: max buffer size overflow');\n        }\n        this.size = nextSize;\n        const nextBuffer = new ArrayBuffer(this.size);\n        new Uint8Array(nextBuffer).set(new Uint8Array(this.view.buffer));\n        this.view = new DataView(nextBuffer);\n    }\n}\n", "/**\n * It's basically, an ABI of the ABI.\n */\nexport const AbiSchema = {\n    abi: [\n        { name: 'version', type: type('u16') },\n        { name: 'exports', type: type('Array', [type('u16')]) },\n        { name: 'imports', type: type('Array', [type('u16')]) },\n        { name: 'defs', type: type('Array', [type('abi_code_def')]) },\n        { name: 'typeIds', type: type('Array', [type('abi_type_id')]) },\n    ],\n    abi_class_node: [\n        { name: 'name', type: type('string') },\n        { name: 'extends', type: type('string') },\n        { name: 'implements', type: type('Array', [type('string')]) },\n        { name: 'fields', type: type('Array', [type('abi_field_node')]) },\n        { name: 'methods', type: type('Array', [type('abi_method_node')]) },\n    ],\n    abi_function_node: [\n        { name: 'name', type: type('string') },\n        { name: 'args', type: type('Array', [type('abi_arg_node')]) },\n        { name: 'rtype', type: type('abi_type_node') },\n    ],\n    abi_interface_node: [\n        { name: 'name', type: type('string') },\n        { name: 'extends', type: type('Array', [type('string')]) },\n        { name: 'fields', type: type('Array', [type('abi_field_node')]) },\n        { name: 'methods', type: type('Array', [type('abi_function_node')]) },\n    ],\n    abi_object_node: [\n        { name: 'name', type: type('string') },\n        { name: 'fields', type: type('Array', [type('abi_field_node')]) },\n    ],\n    abi_proxy_node: [\n        { name: 'name', type: type('string') },\n        { name: 'pkg', type: type('string') },\n    ],\n    abi_field_node: [\n        { name: 'name', type: type('string') },\n        { name: 'type', type: type('abi_type_node') },\n    ],\n    abi_method_node: [\n        { name: 'kind', type: type('u8') },\n        { name: 'name', type: type('string') },\n        { name: 'args', type: type('Array', [type('abi_arg_node')]) },\n        { name: 'rtype', type: type('abi_type_node', [], true) },\n    ],\n    abi_arg_node: [\n        { name: 'name', type: type('string') },\n        { name: 'type', type: type('abi_type_node') },\n    ],\n    abi_type_node: [\n        { name: 'name', type: type('string') },\n        { name: 'nullable', type: type('bool') },\n        { name: 'args', type: type('Array', [type('abi_type_node')]) },\n    ],\n    abi_type_id: [\n        { name: 'id', type: type('u32') },\n        { name: 'name', type: type('string') },\n    ],\n};\nexport const PkgSchema = [\n    type('Array', [type('string')]),\n    type('Map', [type('string'), type('string')]),\n];\nfunction type(name, args = [], nullable = false) {\n    return { name, nullable, args };\n}\n", "import { CodeKind, } from './abi/types.js';\nimport { AbiQuery, isClassLike, isFunctionLike } from './abi/query.js';\nimport { AbiSchema, PkgSchema } from './bcs/schemas.js';\nimport { BufReader, BufWriter, Pointer, ref, } from './internal.js';\nimport { strToBytes, bytesToStr, bytesToBn, bnToShortestBytes } from './support/util.js';\n/**\n * BCS implementation for Aldea builtins and types as defined in an ABI.\n *\n * ## Usage\n *\n * Instantitate BCS with an ABI document. From then, any Jig or function/method\n * args can be encoded/decoded. Methods can be matched using the `<JIG_NAME>($|_)<METHOD_NAME>`\n * convention, where `$` matches an instance method and `_` matches a static method.\n * ```\n * const bcs = new BCS(abi)\n *\n * // Encoding Jig state\n * const encoded = bcs.encode('MyJig', values)\n * const decoded = bcs.decode('MyJig', encoded)\n *\n * // Encoding method args\n * const encoded = bcs.encode('MyJig$update', args)\n * const decoded = bcs.decode('MyJig$update', encoded)\n * ```\n *\n * Optionally a BCS instance can be instantiated with support for serializing\n * and deserializing ABI documents and Package bundles.\n *\n * ```\n * const bcs = new BCS({ addAbiTypes: true, addPkgTypes: true })\n * const encodedAbi = bcs.encode('abi', abi)\n * const encodedPkg = bcs.encode('pkg', pkg)\n * ```\n */\nexport class BCS {\n    static pkg = (() => {\n        const bcs = new BCS({ addPkgTypes: true });\n        return {\n            decode: (data) => bcs.decode('pkg', data),\n            encode: (pkg) => bcs.encode('pkg', pkg),\n        };\n    })();\n    abi;\n    jigNames = ['Coin', 'Jig'];\n    typeEncoders = new Map();\n    constructor(abiOrOpts, options) {\n        // Handle overloading\n        if (isAbi(abiOrOpts)) {\n            this.abi = typeof structuredClone === 'function' ?\n                structuredClone(abiOrOpts) :\n                JSON.parse(JSON.stringify(abiOrOpts));\n        }\n        else {\n            options = abiOrOpts;\n        }\n        // Merge options with defaults\n        const opts = {\n            addAbiTypes: false,\n            addPkgTypes: false,\n            addPrimitives: true,\n            ...options,\n        };\n        if (opts.addPrimitives) {\n            this.registerPrimitiveTypes();\n        }\n        if (opts.addAbiTypes) {\n            this.registerAbiTypes();\n        }\n        if (opts.addPkgTypes) {\n            this.registerPkgTypes();\n        }\n        this.registerMagicTypes();\n        if (this.abi) {\n            for (let code of this.abi.defs) {\n                if (code.kind === CodeKind.OBJECT) {\n                    this.registerObjectType(code.name, code.fields);\n                }\n                if (code.kind === CodeKind.CLASS || code.kind === CodeKind.INTERFACE) {\n                    this.jigNames.push(code.name);\n                }\n                if (code.kind === CodeKind.PROXY_CLASS) {\n                    this.jigNames.push(code.name);\n                }\n            }\n        }\n    }\n    /**\n     * Decodes the given data using the specified type encoder.\n     */\n    decode(name, data) {\n        const reader = new BufReader(data);\n        const encoder = this.typeEncoders.get(name);\n        if (encoder) {\n            const res = encoder.decode.call(this, reader, encoder.type);\n            encoder.assert(res);\n            return res;\n        }\n        else {\n            const query = new AbiQuery(this.abi);\n            const res = query.search(name);\n            if (isClassLike(res)) {\n                const types = this.collectJigFieldTypes(query.getFieldsFull());\n                return this.decodeTypes(types, reader);\n            }\n            else if (isFunctionLike(res)) {\n                const idxEnc = this.typeEncoders.get('_RefIndexes');\n                const idxs = this.decodeType(idxEnc.type, reader);\n                const types = this.collectMethodArgTypes(res, idxs);\n                return this.decodeTypes(types, reader);\n            }\n            else {\n                throw new Error(`unable to decode for ${name}`);\n            }\n        }\n    }\n    /**\n     * Encoders the given value(s) using the specified type encoder.\n     */\n    encode(name, val, writer = new BufWriter()) {\n        const encoder = this.typeEncoders.get(name);\n        if (encoder) {\n            encoder.assert(val);\n            encoder.encode.call(this, writer, val, encoder.type);\n        }\n        else {\n            const query = new AbiQuery(this.abi);\n            const res = query.search(name);\n            if (isClassLike(res)) {\n                const types = this.collectJigFieldTypes(query.getFieldsFull());\n                this.encodeTypes(types, val, writer);\n            }\n            else if (isFunctionLike(res)) {\n                const idxs = refIndexes(val);\n                const types = this.collectMethodArgTypes(res, idxs);\n                const idxEnc = this.typeEncoders.get('_RefIndexes');\n                this.encodeType(idxEnc.type, idxs, writer);\n                this.encodeTypes(types, val, writer);\n            }\n            else {\n                throw new Error(`unable to encode for ${name}`);\n            }\n        }\n        return writer.toBytes();\n    }\n    /**\n     * Returns the registered `BCSEncoder` for the given type name.\n     */\n    getTypeEncoder(name) {\n        const encoder = this.typeEncoders.get(name);\n        if (!encoder) {\n            throw new Error(`no encoder found for: ${name}`);\n        }\n        return encoder;\n    }\n    /**\n     * Registers the given type encoder.\n     */\n    registerType(name, encoder) {\n        encoder.assert = encoder.assert || (() => { });\n        encoder.type = encoder.type || { name, nullable: false, args: [] };\n        this.typeEncoders.set(name, encoder);\n    }\n    /**\n     * Registers the given array of FieldNode's as an object type encoder.\n     */\n    registerObjectType(name, fields) {\n        const types = fields.map(f => nullableType(f.type));\n        this.registerType(name, {\n            assert: (val) => assert(typeof val === 'object', `object expected. recieved: ${val}`),\n            decode: (reader) => {\n                let obj = {};\n                for (let i = 0; i < fields.length; i++) {\n                    const key = fields[i].name;\n                    obj[key] = this.decodeType(types[i], reader);\n                }\n                return obj;\n            },\n            encode: (writer, val) => {\n                for (let i = 0; i < fields.length; i++) {\n                    const key = fields[i].name;\n                    this.encodeType(types[i], val[key], writer);\n                }\n            },\n            type: types\n        });\n    }\n    /**\n     * Registers the given array of TypeNode's as a tuple type encoder.\n     *\n     * The work tuple is used here to describe a fixed length list of variable\n     * types. In terms of Aldea, this would apple to function/method arguments.\n     */\n    registerTupleType(name, types) {\n        types = types.map(nullableType);\n        this.registerType(name, {\n            assert: (val) => assert(Array.isArray(val), `Array expected. recieved: ${val}`),\n            decode: (reader) => {\n                return this.decodeTypes(types, reader);\n            },\n            encode: (writer, val) => {\n                this.encodeTypes(types, val, writer);\n            }\n        });\n    }\n    // Decodes the array of types.\n    decodeTypes(types, reader) {\n        const result = [];\n        for (let i = 0; i < types.length; i++) {\n            const val = this.decodeType(types[i], reader);\n            result.push(val);\n        }\n        return result;\n    }\n    // Decodes the given type.\n    decodeType(type, reader) {\n        const encoder = this.getTypeEncoder(type.name);\n        const res = encoder.decode.call(this, reader, type);\n        encoder.assert(res);\n        return res;\n    }\n    // Encodes the array of types and values.\n    encodeTypes(types, vals, writer) {\n        if (types.length !== vals.length) {\n            throw new Error(`expected ${types.length} values, recieved: ${vals.length}`);\n        }\n        for (let i = 0; i < types.length; i++) {\n            this.encodeType(types[i], vals[i], writer);\n        }\n    }\n    // Encodes the given type and value.\n    encodeType(type, val, writer) {\n        const encoder = this.getTypeEncoder(type.name);\n        encoder.assert(val);\n        encoder.encode.call(this, writer, val, type);\n    }\n    // Collects a list of field types for the given Jig ClassNode.\n    // Iterates over parents to include inherited fields too.\n    collectJigFieldTypes(fields) {\n        // Recursively replace jig types with pointer types\n        const types = fields.map(f => jigToPointerType(f.type, this.jigNames));\n        return types.map(nullableType);\n    }\n    // Collects list of type fields for the given MethodNode or FunctionNode.\n    // Wraps each type as a refType which prefixes each value with a boolean to\n    // determine if it is an InstructionRef\n    collectMethodArgTypes(method, idxs) {\n        const types = method.args.map(a => jigToRefType(a.type, this.jigNames));\n        for (let i of idxs) {\n            if (types[i].name === '_Ref') {\n                // If type is already a _Ref, remove index\n                idxs.splice(i, 1);\n            }\n            else {\n                // Otherwise replace the type with a _Ref\n                types[i] = { name: '_Ref', nullable: types[i].nullable, args: [] };\n            }\n        }\n        return types.map(nullableType);\n    }\n    // Registers the Aldea primitive types.\n    registerPrimitiveTypes() {\n        this.registerType('bool', {\n            assert: (val) => assert(typeof val === 'boolean', `boolean expected. recieved: ${val}`),\n            decode: (reader) => reader.readBool(),\n            encode: (writer, val) => writer.writeBool(val),\n        });\n        this.registerType('f32', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readF32(),\n            encode: (writer, val) => writer.writeF32(val),\n        });\n        this.registerType('f64', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readF64(),\n            encode: (writer, val) => writer.writeF64(val),\n        });\n        this.registerType('i8', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readI8(),\n            encode: (writer, val) => writer.writeI8(val),\n        });\n        this.registerType('i16', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readI16(),\n            encode: (writer, val) => writer.writeI16(val),\n        });\n        this.registerType('i32', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readI32(),\n            encode: (writer, val) => writer.writeI32(val),\n        });\n        this.registerType('i64', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readI64(),\n            encode: (writer, val) => writer.writeI64(val),\n        });\n        this.registerType('u8', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readU8(),\n            encode: (writer, val) => writer.writeU8(val),\n        });\n        this.registerType('u16', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readU16(),\n            encode: (writer, val) => writer.writeU16(val),\n        });\n        this.registerType('u32', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readU32(),\n            encode: (writer, val) => writer.writeU32(val),\n        });\n        this.registerType('u64', {\n            assert: (val) => assert(isNumber(val), `number expected. recieved: ${val}`),\n            decode: (reader) => reader.readU64(),\n            encode: (writer, val) => writer.writeU64(val),\n        });\n        this.registerType('BigInt', {\n            assert: (val) => assert(typeof val === 'bigint', `bigint expected. recieved: ${val}`),\n            decode: (reader) => {\n                const isNeg = reader.readBool();\n                const bytes = reader.readBytes();\n                const bigInt = bytesToBn(bytes);\n                return isNeg ? bigInt * -1n : bigInt;\n            },\n            encode: (writer, val) => {\n                const isNeg = val < 0n;\n                const buf = bnToShortestBytes(val);\n                writer.writeBool(isNeg);\n                writer.writeBytes(buf);\n            },\n        });\n        this.registerType('string', {\n            assert: (val) => assert(typeof val === 'string', `string expected. recieved: ${val}`),\n            decode: (reader) => bytesToStr(reader.readBytes()),\n            encode: (writer, val) => writer.writeBytes(strToBytes(val)),\n        });\n        this.registerType('ArrayBuffer', {\n            assert: (val) => assert(val.constructor.name === 'ArrayBuffer', `ArrayBuffer expected. recieved: ${val}`),\n            decode(reader) {\n                const bytes = reader.readSeq(reader => reader.readU8());\n                return Uint8Array.from(bytes).buffer;\n            },\n            encode(writer, val) {\n                const bytes = new Uint8Array(val);\n                writer.writeSeq([...bytes], (writer, byte) => { writer.writeU8(byte); });\n            }\n        });\n        this.registerType('Array', {\n            assert: (val) => assert(Array.isArray(val), `Array expected. recieved: ${val}`),\n            decode: (reader, type) => {\n                assertTypeNode(type, 1);\n                return reader.readSeq(reader => this.decodeType(type.args[0], reader));\n            },\n            encode: (writer, val, type) => {\n                assertTypeNode(type, 1);\n                writer.writeSeq(val, (writer, el) => {\n                    this.encodeType(type.args[0], el, writer);\n                });\n            }\n        });\n        this.registerType('StaticArray', {\n            assert: (val) => assert(Array.isArray(val), `Array expected. recieved: ${val}`),\n            decode: (reader, type) => {\n                assertTypeNode(type, 1);\n                return reader.readSeq(reader => this.decodeType(type.args[0], reader));\n            },\n            encode: (writer, val, type) => {\n                assertTypeNode(type, 1);\n                writer.writeSeq(val, (writer, el) => {\n                    this.encodeType(type.args[0], el, writer);\n                });\n            }\n        });\n        this.registerType('Set', {\n            assert: (val) => assert(val.constructor.name === 'Set', `Set expected. recieved: ${val}`),\n            decode: (reader, type) => {\n                assertTypeNode(type, 1);\n                const set = new Set();\n                reader.readSeq(reader => {\n                    set.add(this.decodeType(type.args[0], reader));\n                });\n                return set;\n            },\n            encode: (writer, val, type) => {\n                assertTypeNode(type, 1);\n                writer.writeSeq([...val], (writer, el) => {\n                    this.encodeType(type.args[0], el, writer);\n                });\n            }\n        });\n        this.registerType('Map', {\n            assert: (val) => assert(val.constructor.name === 'Map', `Map expected. recieved: ${val}`),\n            decode: (reader, type) => {\n                assertTypeNode(type, 2);\n                const map = new Map();\n                reader.readSeq(reader => {\n                    map.set(this.decodeType(type.args[0], reader), this.decodeType(type.args[1], reader));\n                });\n                return map;\n            },\n            encode: (writer, val, type) => {\n                assertTypeNode(type, 2);\n                const canonicalKeys = [...val.keys()].sort();\n                writer.writeSeq(canonicalKeys, (writer, key) => {\n                    this.encodeType(type.args[0], key, writer);\n                    this.encodeType(type.args[1], val.get(key), writer);\n                });\n            }\n        });\n        this.registerType('Pointer', {\n            assert: (val) => {\n                const bool = typeof val === 'object' && val.idBuf?.length === 32;\n                return assert(bool, `Pointer expected. recieved: ${val}`);\n            },\n            decode: (reader) => {\n                const bytes = reader.readFixedSeq(34, reader => reader.readU8());\n                return Pointer.fromBytes(Uint8Array.from(bytes));\n            },\n            encode: (writer, val) => {\n                writer.writeFixedSeq([...val.toBytes()], (writer, byte) => writer.writeU8(byte));\n            }\n        });\n        this.registerType('Int64Array', createTypedArrayEncoder(BigInt64Array));\n        this.registerType('Uint64Array', createTypedArrayEncoder(BigUint64Array));\n        this.registerType('Float32Array', createTypedArrayEncoder(Float32Array));\n        this.registerType('Float64Array', createTypedArrayEncoder(Float64Array));\n        this.registerType('Int8Array', createTypedArrayEncoder(Int8Array));\n        this.registerType('Int16Array', createTypedArrayEncoder(Int16Array));\n        this.registerType('Int32Array', createTypedArrayEncoder(Int32Array));\n        this.registerType('Uint8Array', createTypedArrayEncoder(Uint8Array));\n        this.registerType('Uint16Array', createTypedArrayEncoder(Uint16Array));\n        this.registerType('Uint32Array', createTypedArrayEncoder(Uint32Array));\n    }\n    // Registers Aldea types\n    registerMagicTypes() {\n        this.registerType('_Option', {\n            decode: (reader, type) => {\n                assertTypeNode(type, 1);\n                return reader.readBool() ? this.decodeType(type.args[0], reader) : null;\n            },\n            encode: (writer, val, type) => {\n                assertTypeNode(type, 1);\n                writer.writeBool(!!val);\n                if (!!val)\n                    this.encodeType(type.args[0], val, writer);\n            }\n        });\n        this.registerType('_Ref', {\n            assert: (val) => assert(isRef(val), `InstructionRef expected. recieved: ${val}`),\n            decode: (reader) => ref(reader.readU16()),\n            encode: (writer, val) => writer.writeU16(val.idx),\n        });\n        this.registerType('_RefIndexes', {\n            decode: (reader) => {\n                return reader.readSeq(reader => reader.readU8());\n            },\n            encode: (writer, val) => {\n                writer.writeSeq(val, (writer, v) => writer.writeU8(v));\n            }\n        });\n    }\n    // Registers types for an ABI (an ABI of the ABI)\n    registerAbiTypes() {\n        for (let [name, fields] of Object.entries(AbiSchema)) {\n            this.registerObjectType(name, fields);\n        }\n        this.registerType('abi_code_def', {\n            assert: (val) => typeof val === 'object',\n            decode: (reader) => {\n                const kind = reader.readU8();\n                const name = getCodeKindNodeName(kind);\n                const encoder = this.getTypeEncoder(name);\n                const code = encoder.decode.call(this, reader, encoder.type);\n                encoder.assert(code);\n                return { kind, ...code };\n            },\n            encode: (writer, val) => {\n                writer.writeU8(val.kind);\n                const name = getCodeKindNodeName(val.kind);\n                const encoder = this.getTypeEncoder(name);\n                encoder.assert(val);\n                encoder.encode.call(this, writer, val, encoder.type);\n            },\n        });\n    }\n    // Registers types for a code package.\n    registerPkgTypes() {\n        this.registerTupleType('pkg', PkgSchema);\n    }\n}\n// Asserts the given bool is true.\nfunction assert(bool, msg = 'invalid type for encoder') {\n    if (!bool)\n        throw new Error(msg);\n}\n// Asserts the given TypeNode is not an array of TypeNodes.\n// Optionally can be given a number to assert the length of type arguments.\nfunction assertTypeNode(type, n) {\n    if (Array.isArray(type)) {\n        throw new Error('expected TypeNode');\n    }\n    const args = type?.args || [];\n    if (typeof n === 'number' && args.length !== n) {\n        throw new Error(`expected ${n} type arguments, recieved: ${args.length}`);\n    }\n}\n// Helper function to create an encoder for the given TypedArray class.\nfunction createTypedArrayEncoder(TypedArray) {\n    return {\n        assert: (val) => assert(val instanceof TypedArray, `TypedArray expected. recieved: ${val}`),\n        decode: (reader) => {\n            const bytes = Uint8Array.from(reader.readSeq(reader => reader.readU8()));\n            return new TypedArray(bytes.buffer);\n        },\n        encode(writer, val) {\n            const abv = val;\n            const bytes = new Uint8Array(abv.buffer, abv.byteOffset, abv.byteLength);\n            writer.writeSeq([...bytes], (writer, byte) => writer.writeU8(byte));\n        }\n    };\n}\n// Returns type name for the given code kind.\nfunction getCodeKindNodeName(kind) {\n    switch (kind) {\n        case CodeKind.CLASS: return 'abi_class_node';\n        case CodeKind.FUNCTION: return 'abi_function_node';\n        case CodeKind.INTERFACE: return 'abi_interface_node';\n        case CodeKind.OBJECT: return 'abi_object_node';\n        case CodeKind.PROXY_CLASS:\n        case CodeKind.PROXY_FUNCTION:\n        case CodeKind.PROXY_INTERFACE:\n            return 'abi_proxy_node';\n        default: throw new Error(`invalid ABI code kind: ${kind}`);\n    }\n}\n// Returns true if the given value is an ABI object.\nfunction isAbi(obj) {\n    return typeof obj === 'object' &&\n        ['version', 'exports', 'imports', 'defs', 'typeIds'].every(k => k in obj);\n}\n// Returns true if the given val is a number or bigint.\nfunction isNumber(val) {\n    return typeof val === 'number' || typeof val === 'bigint';\n}\n// Returns true if the given val is an InstructionRef instance.\nfunction isRef(val) {\n    return val && typeof val === 'object' && isNumber(val.idx) && val[Symbol.toStringTag] === 'InstructionRef';\n}\n// If the type is a jig, replace with `Pointer` type node.\nfunction jigToPointerType(type, jigNames) {\n    if (jigNames.includes(type.name)) {\n        return { name: 'Pointer', nullable: type.nullable, args: [] };\n    }\n    else {\n        const copy = { ...type };\n        copy.args = type.args.map(t => jigToPointerType(t, jigNames));\n        return copy;\n    }\n}\n// If the type is a jig, replace with `_Ref` type node\nfunction jigToRefType(type, jigNames) {\n    if (jigNames.includes(type.name)) {\n        return { name: '_Ref', nullable: type.nullable, args: [] };\n    }\n    else {\n        const copy = { ...type };\n        copy.args = type.args.map(t => jigToRefType(t, jigNames));\n        return copy;\n    }\n}\n// Wraps the given type in an `_Option` if it is nullable.\nfunction nullableType(type) {\n    if (type.nullable) {\n        const copy = { ...type, nullable: false };\n        return { name: '_Option', nullable: false, args: [copy] };\n    }\n    else {\n        return type;\n    }\n}\n// Returns a list of indexes of InstructionRef instances in the give list of args.\nfunction refIndexes(args) {\n    return args.reduce((idxs, arg, i) => {\n        if (isRef(arg)) {\n            idxs.push(i);\n        }\n        return idxs;\n    }, []);\n}\n", "import { Address, base16, BCS, ed25519, HDPrivKey, OpCode, Pointer, PrivKey, ref, Tx, util, } from '@aldea/core';\nimport { AbiQuery, assertClassLike, assertProxy, } from '@aldea/core/abi';\nimport { CallInstruction, DeployInstruction, ExecInstruction, FundInstruction, ImportInstruction, LoadByOriginInstruction, LoadInstruction, LockInstruction, NewInstruction, SignInstruction, SignToInstruction, } from '@aldea/core/instructions';\n/**\n * Transaction Builder\n *\n * A simple API for building transactions.\n */\nexport class TxBuilder {\n    aldea;\n    buildSteps = new Array();\n    buildHooks = new Array();\n    afterHooks = new Array();\n    results = new Array();\n    isBuilding = false;\n    _tx = new Tx();\n    constructor(aldea, opts = {}) {\n        this.aldea = aldea;\n        if (opts.extend) {\n            for (let instruction of opts.extend.instructions) {\n                this.push(instruction);\n            }\n        }\n        if (opts.onBuild) {\n            for (let hook of Array.isArray(opts.onBuild) ? opts.onBuild : [opts.onBuild]) {\n                this.buildHooks.push(hook);\n            }\n        }\n        if (opts.afterBuild) {\n            for (let hook of Array.isArray(opts.afterBuild) ? opts.afterBuild : [opts.afterBuild]) {\n                this.afterHooks.push(hook);\n            }\n        }\n        if (opts.updateSigs) {\n            for (let privKey of Array.isArray(opts.updateSigs) ? opts.updateSigs : [opts.updateSigs]) {\n                this.afterHooks.push(createSigHook(privKey, opts.extend?.instructions.length));\n            }\n        }\n    }\n    /**\n     * Builds the transaction. Executes the build steps and returns the Tx.\n     */\n    async build() {\n        this.refuteBuilding('build');\n        this.isBuilding = true;\n        this._tx = new Tx();\n        this.results = [];\n        for (let i = 0; i < this.buildSteps.length; i++) {\n            const txid = this._tx.id;\n            const [step, args] = this.buildSteps[i];\n            const instruction = await this.applyHooks(this.buildHooks, step(this, ...args), i);\n            this.refuteMutation(txid);\n            this._tx.push(instruction);\n            this.results[i] = await this.resultFromInstruction(instruction);\n        }\n        for (let i = 0; i < this._tx.instructions.length; i++) {\n            if (this._tx.instructions[i].opcode === OpCode.SIGN) {\n                const inst = this._tx.instructions[i];\n                const [privKey] = this.buildSteps[i][1];\n                if ((privKey instanceof PrivKey || privKey instanceof HDPrivKey) && inst.sig.every(b => b === 0)) {\n                    this._tx.instructions[i] = TxBuilder.signInstruction(this, privKey);\n                }\n            }\n            this._tx.instructions[i] = await this.applyHooks(this.afterHooks, this._tx.instructions[i], i);\n        }\n        this.isBuilding = false;\n        return this._tx;\n    }\n    /**\n     * Gets an InstructionResult from the stack of results.\n     */\n    getResult(ref, type) {\n        const res = this.results[ref.idx];\n        if (!res) {\n            throw new Error(`intruction result not found: ${ref.idx}`);\n        }\n        else if (res.type !== type) {\n            const expected = ResultType[type];\n            const actual = ResultType[res.type];\n            throw new Error(`wrong instruction result: ${expected} expected, got ${actual}`);\n        }\n        return res;\n    }\n    /**\n     * Returns the transaction being built. Can only be accessed during building.\n     */\n    get tx() {\n        if (!this.isBuilding)\n            throw new Error('TxBuilder.tx can only be accessed during build');\n        return this._tx;\n    }\n    /**\n     * Pushes an IMPORT instruction onto the Transaction.\n     */\n    import(pkgId) {\n        if (typeof pkgId === 'string')\n            pkgId = base16.decode(pkgId);\n        return this.push(TxBuilder.importInstruction, pkgId);\n    }\n    /**\n     * Pushes a LOAD instruction onto the Transaction.\n     */\n    load(outputId) {\n        if (typeof outputId === 'string')\n            outputId = base16.decode(outputId);\n        return this.push(TxBuilder.loadInstruction, outputId);\n    }\n    /**\n     * Pushes a LOADBYORIGIN instruction onto the Transaction.\n     */\n    loadByOrigin(origin) {\n        if (typeof origin === 'string')\n            origin = Pointer.fromString(origin);\n        return this.push(TxBuilder.loadByOriginInstruction, origin);\n    }\n    /**\n     * Pushes a NEW instruction onto the Transaction. Accepts an InstructionRef\n     * (which must refer to a PkgResult), a class name and a list of args.\n     */\n    new(ref, className, args = []) {\n        return this.push(TxBuilder.newInstruction, ref, className, args);\n    }\n    /**\n     * Pushes a CALL instruction onto the Transaction. Accepts an InstructionRef\n     * (which must refer to a JigResult), a method name and a list of args.\n     */\n    call(ref, methodName, args = []) {\n        return this.push(TxBuilder.callInstruction, ref, methodName, args);\n    }\n    /**\n     * Pushes an EXEC instruction onto the Transaction. Accepts an InstructionRef\n     * (which must refer to a PkgResult), a function name and a list of args.\n     */\n    exec(ref, functionName, args = []) {\n        return this.push(TxBuilder.execInstruction, ref, functionName, args);\n    }\n    /**\n     * Pushes a FUND instruction onto the Transaction. Accepts an InstructionRef\n     * (which must refer to a JigResult).\n     */\n    fund(ref) {\n        return this.push(TxBuilder.fundInstruction, ref);\n    }\n    /**\n     * Pushes a LOCK instruction onto the Transaction. Accepts an InstructionRef\n     * (which must refer to a JigResult), and an address instance of string.\n     */\n    lock(ref, address) {\n        if (typeof address === 'string')\n            address = Address.fromString(address);\n        return this.push(TxBuilder.lockInstruction, ref, address);\n    }\n    deploy(entryOrCode, code) {\n        let entry;\n        let pkg;\n        if (code instanceof Map) {\n            entry = Array.isArray(entryOrCode) ? entryOrCode : [entryOrCode];\n            pkg = code;\n        }\n        else if (entryOrCode instanceof Map) {\n            entry = Array.from(entryOrCode.keys());\n            pkg = entryOrCode;\n        }\n        else {\n            throw new Error('invalid deploy params');\n        }\n        return this.push(TxBuilder.deployInstruction, entry, pkg);\n    }\n    /**\n     * Pushes a SIGN instruction onto the Transaction. The given PrivKey is used\n     * to create the signature used in the instruction.\n     */\n    sign(privKey) {\n        return this.push(TxBuilder.signInstruction, privKey, true);\n    }\n    /**\n     * Pushes a SIGNTO instruction onto the Transaction. The given PrivKey is used\n     * to create the signature used in the instruction.\n     */\n    signTo(privKey) {\n        return this.push(TxBuilder.signToInstruction, privKey);\n    }\n    /**\n     * Pushes a build step onto the stack of steps. The build step must return an\n     * instruction.\n     */\n    push(instruction, ...args) {\n        this.refuteBuilding('push');\n        const step = typeof instruction === 'function' ? instruction : () => instruction;\n        const len = this.buildSteps.push([step, args]);\n        return ref(len - 1);\n    }\n    // Applies the list of hooks on the given instruction.\n    async applyHooks(hooks, instruction, idx) {\n        return hooks.reduce(async (instP, hook) => {\n            const inst = await instP;\n            const repl = await hook(this, inst, idx);\n            if (typeof repl?.opcode === 'number') {\n                if (repl.opcode !== inst.opcode) {\n                    throw new Error(`TxBuilder hook instruction mismatch. ${OpCode[inst.opcode]} expected, ${OpCode[repl.opcode]} received.`);\n                }\n                return repl;\n            }\n            return inst;\n        }, instruction);\n    }\n    // Returns the instruction result for the given instruction.\n    async resultFromInstruction(instruction) {\n        switch (instruction.opcode) {\n            case OpCode.IMPORT: {\n                const i = instruction;\n                const pkgId = base16.encode(i.pkgId);\n                const abi = await this.aldea.getPackageAbi(pkgId);\n                return pkgResult(abi);\n            }\n            case OpCode.LOAD: {\n                const i = instruction;\n                const outputId = base16.encode(i.outputId);\n                const output = await this.aldea.getOutput(outputId);\n                const pkgPtr = Pointer.fromString(output.class);\n                const abi = await this.aldea.getPackageAbi(pkgPtr.id);\n                return jigResult(abi, pkgPtr.idx);\n            }\n            case OpCode.LOADBYORIGIN: {\n                const i = instruction;\n                const origin = Pointer.fromBytes(i.origin);\n                const output = await this.aldea.getOutputByOrigin(origin.toString());\n                const pkgPtr = Pointer.fromString(output.class);\n                const abi = await this.aldea.getPackageAbi(pkgPtr.id);\n                return jigResult(abi, pkgPtr.idx);\n            }\n            case OpCode.NEW: {\n                const i = instruction;\n                const res = this.getResult(ref(i.idx), ResultType.PKG);\n                return jigResult(res.abi, i.exportIdx);\n            }\n            case OpCode.CALL: {\n                const i = instruction;\n                const res = this.getResult(ref(i.idx), ResultType.JIG);\n                const method = new AbiQuery(res.abi).fromExports().byIndex(res.exportIdx).getMethod(i.methodIdx);\n                return this.resultFromReturnType(res.abi, method.rtype);\n            }\n            case OpCode.EXEC: {\n                const i = instruction;\n                const res = this.getResult(ref(i.idx), ResultType.PKG);\n                const func = new AbiQuery(res.abi).fromExports().byIndex(i.exportIdx).getFunction();\n                return this.resultFromReturnType(res.abi, func.rtype);\n            }\n            case OpCode.FUND:\n                return noResult();\n            case OpCode.LOCK:\n                return noResult();\n            case OpCode.DEPLOY:\n                // todo - can return a PkgResult if we compile the code here and get the ABI?\n                return noResult();\n            case OpCode.SIGN:\n                return noResult();\n            case OpCode.SIGNTO:\n                return noResult();\n            default:\n                throw new Error(`unrecognized instruction opcode: ${instruction.opcode}`);\n        }\n    }\n    // Returns a typed instruction result from a method/function call\n    async resultFromReturnType(abi, rtype) {\n        if (rtype) {\n            let exported;\n            let imported;\n            //let interfaceNode: InterfaceNode | undefined\n            const query = new AbiQuery(abi);\n            if (rtype.name === 'Coin') {\n                const coinAbi = await this.aldea.getPackageAbi('0000000000000000000000000000000000000000000000000000000000000000');\n                const coinQuery = new AbiQuery(coinAbi);\n                const exportIdx = coinQuery.fromExports().byName('Coin').getIndex();\n                return jigResult(coinAbi, exportIdx);\n            }\n            if (query.fromExports().byName(rtype.name).hasResult) {\n                exported = query.getCode();\n                assertClassLike(exported);\n                const exportIdx = query.getIndex();\n                return jigResult(abi, exportIdx);\n            }\n            if (query.fromImports().byName(rtype.name).hasResult) {\n                imported = query.getCode();\n                assertProxy(imported);\n                const remoteAbi = await this.aldea.getPackageAbi(imported.pkg);\n                const exportIdx = new AbiQuery(remoteAbi).fromExports().byName(imported.name).getIndex();\n                return jigResult(remoteAbi, exportIdx);\n            }\n        }\n        // todo - can return a \"typed result\" when we know the type\n        return noResult();\n    }\n    // Throws if the TxBuilder is currently building\n    refuteBuilding(name) {\n        if (this.isBuilding) {\n            name = name ? `TxBuilder.${name}()` : 'TxBuilder method';\n            throw new Error(`cannot call ${name} whilst is building`);\n        }\n    }\n    // Throws if the txid does not match the tx being built\n    refuteMutation(txid) {\n        if (this.tx.id !== txid) {\n            throw new Error('cannot mutate the Tx object whilst TxBuilder is building');\n        }\n    }\n}\n/**\n * The TxBuilder namespace also exports a number of static functions for\n * creating individual instructions. These are used internally by the TxBuilder\n * but exposed as can be useful when overriding and customising the TxBuilder.\n */\n(function (TxBuilder) {\n    /**\n     * Creates and returns an IMPORT instruction.\n     */\n    function importInstruction(_txb, pkgId) {\n        return new ImportInstruction(pkgId);\n    }\n    TxBuilder.importInstruction = importInstruction;\n    /**\n     * Creates and returns a LOAD instruction.\n     */\n    function loadInstruction(_txb, outputId) {\n        return new LoadInstruction(outputId);\n    }\n    TxBuilder.loadInstruction = loadInstruction;\n    /**\n     * Creates and returns a LOADBYORIGIN instruction.\n     */\n    function loadByOriginInstruction(_txb, origin) {\n        return new LoadByOriginInstruction(origin.toBytes());\n    }\n    TxBuilder.loadByOriginInstruction = loadByOriginInstruction;\n    /**\n     * Creates and returns a NEW instruction.\n     */\n    function newInstruction(txb, ref, className, args) {\n        const res = txb.getResult(ref, ResultType.PKG);\n        const exportIdx = new AbiQuery(res.abi).fromExports().byName(className).getIndex();\n        const argsBuf = new BCS(res.abi).encode(`${className}_constructor`, args);\n        return new NewInstruction(ref.idx, exportIdx, argsBuf);\n    }\n    TxBuilder.newInstruction = newInstruction;\n    /**\n     * Creates and returns a CALL instruction.\n     */\n    function callInstruction(txb, ref, methodName, args) {\n        const res = txb.getResult(ref, ResultType.JIG);\n        const query = new AbiQuery(res.abi).fromExports().byIndex(res.exportIdx);\n        const klass = query.getCode();\n        assertClassLike(klass);\n        const methodIdx = query.getMethodIdx(methodName);\n        const argsBuf = new BCS(res.abi).encode(`${klass.name}_${methodName}`, args);\n        return new CallInstruction(ref.idx, methodIdx, argsBuf);\n    }\n    TxBuilder.callInstruction = callInstruction;\n    /**\n     * Creates and returns an EXEC instruction.\n     */\n    function execInstruction(txb, ref, functionName, args) {\n        const res = txb.getResult(ref, ResultType.PKG);\n        const funcIdx = new AbiQuery(res.abi).fromExports().byName(functionName).getIndex();\n        const argsBuf = new BCS(res.abi).encode(functionName, args);\n        return new ExecInstruction(ref.idx, funcIdx, argsBuf);\n    }\n    TxBuilder.execInstruction = execInstruction;\n    /**\n     * Creates and returns a FUND instruction.\n     */\n    function fundInstruction(txb, ref) {\n        txb.getResult(ref, ResultType.JIG); // pull the index to check type\n        return new FundInstruction(ref.idx);\n    }\n    TxBuilder.fundInstruction = fundInstruction;\n    /**\n     * Creates and returns a LOCK instruction.\n     */\n    function lockInstruction(txb, ref, address) {\n        txb.getResult(ref, ResultType.JIG); // pull the index to check type\n        return new LockInstruction(ref.idx, address.hash);\n    }\n    TxBuilder.lockInstruction = lockInstruction;\n    /**\n     * Creates and returns a DEPLOY instruction.\n     */\n    function deployInstruction(_txb, entry, code) {\n        const pkg = BCS.pkg.encode([entry, code]);\n        return new DeployInstruction(pkg);\n    }\n    TxBuilder.deployInstruction = deployInstruction;\n    /**\n     * Creates and returns a SIGN instruction.\n     *\n     * The last arg allows the signature to be fakes with 64 empty bytes. The\n     * TxBuilder will fake the signature on first pass, and when the entire TX is\n     * built will re-sign and blanked sigs.\n     */\n    function signInstruction(txb, privKey, fakeIt = false) {\n        let sig;\n        if (fakeIt) {\n            sig = new Uint8Array(64);\n        }\n        else {\n            const msg = txb.tx.sighash();\n            sig = ed25519.sign(msg, privKey);\n        }\n        return new SignInstruction(sig, privKey.toPubKey().toBytes());\n    }\n    TxBuilder.signInstruction = signInstruction;\n    /**\n     * Creates and returns a SIGNTO instruction.\n     */\n    function signToInstruction(txb, privKey) {\n        const msg = txb.tx.sighash(txb.tx.instructions.length);\n        const sig = ed25519.sign(msg, privKey);\n        return new SignToInstruction(sig, privKey.toPubKey().toBytes());\n    }\n    TxBuilder.signToInstruction = signToInstruction;\n})(TxBuilder || (TxBuilder = {}));\n// Helper for generating a hook function that will resign any signatures that\n// match the given private key.\n// Only matches SIGN instructions as it should be unnecessary to resign SIGNTO. \nfunction createSigHook(privKey, len) {\n    const pubKey = privKey.toPubKey();\n    return function sigHook(txb, instruction, idx) {\n        if (instruction.opcode === OpCode.SIGN &&\n            util.buffEquals(instruction.pubkey, pubKey.toBytes()) &&\n            (typeof len === 'undefined' || idx < len)) {\n            return TxBuilder.signInstruction(txb, privKey);\n        }\n    };\n}\n// InstructionResult type\nvar ResultType;\n(function (ResultType) {\n    ResultType[ResultType[\"NONE\"] = 0] = \"NONE\";\n    ResultType[ResultType[\"PKG\"] = 1] = \"PKG\";\n    ResultType[ResultType[\"JIG\"] = 2] = \"JIG\";\n})(ResultType || (ResultType = {}));\n// generates a NoResult\nfunction noResult() {\n    return { type: ResultType.NONE };\n}\n// generates a PkgResult\nfunction pkgResult(abi) {\n    return { type: ResultType.PKG, abi };\n}\n// generates a JigResult\nfunction jigResult(abi, exportIdx) {\n    return { type: ResultType.JIG, abi, exportIdx };\n}\nfunction isFakedSignInstruction(instruction) {\n    return instruction.opcode === OpCode.SIGN && instruction.sig.every(b => b === 0);\n}\n", "import {Pointer} from \"@aldea/sdk\";\n\nexport const COIN_CLASS_PTR = Pointer.fromString(\"0000000000000000000000000000000000000000000000000000000000000000_0\")\nexport const PATH_PREFIX = \"/0/\"\nexport const MAX_GAP_SIZE = 20\n", "import { LoadByOriginInstruction, LoadInstruction } from \"@aldea/core/instructions\";\nimport {\n  Address,\n  CommitTxResponse,\n  CreateTxCallback,\n  HDPrivKey,\n  OpCode,\n  Output,\n  Pointer,\n  PrivKey,\n  Tx,\n  TxBuilderOpts, \n  base16, \n} from \"@aldea/sdk\"\n\nimport {COIN_CLASS_PTR} from \"./constants.js\";\nimport {AldeaClient} from \"./aldea-client.js\";\n\n\nexport abstract class Wallet {\n  protected client: AldeaClient\n  constructor (client: AldeaClient) {\n    this.client = client\n  }\n\n  abstract getNextAddress(): Promise<Address>\n  abstract getInventory(): Promise<Array<Output>>\n  abstract signTx(partialTx: Tx, updateSigs?: PrivKey | HDPrivKey | Array<PrivKey | HDPrivKey>): Promise<Tx>\n  abstract saveTxExec(tx: Tx, outputList: Output[]): Promise<void>\n  abstract addUtxo(output: Output): Promise<void>\n  abstract sync(): Promise<void>\n\n  async fundTx(partialTx: Tx): Promise<Tx> {\n    const outputs = await this.getInventory()\n    const coinOutputs = outputs.filter(o => {\n      return o.classPtr.equals(COIN_CLASS_PTR) && !partialTx.instructions.some(i => {\n        return (\n          i.opcode === OpCode.LOAD && o.id === base16.encode((<LoadInstruction>i).outputId)\n        ) || (\n          i.opcode === OpCode.LOADBYORIGIN && o.origin.equals(Pointer.fromBytes((<LoadByOriginInstruction>i).origin))\n        )\n      })\n    })\n\n    return await this.client.createTx({ extend: partialTx }, async (txb) => {\n      let motosIn = 0n\n\n      for (const coin of coinOutputs) {\n        if (coin.props?.amount) {\n          const coinRef = txb.load(coin.id)\n          motosIn += coin.props.amount\n\n          if (motosIn > 100n) {\n            const changeAddr = await this.getNextAddress()\n            const changeRef = txb.call(coinRef, 'send', [motosIn - 100n])\n            txb.lock(changeRef, changeAddr)\n            motosIn = 100n\n          }\n          txb.fund(coinRef)\n        }  \n  \n        if (motosIn === 100n) {\n          break\n        }\n      }\n    })\n  }\n\n  async commitTx(tx: Tx): Promise<CommitTxResponse> {\n    const response = await this.client.commitTx(tx)\n    const outputs = response.outputs.map(o =>Output.fromJson(o))\n    await this.saveTxExec(tx, outputs)\n    return response\n  }\n\n  async createFundedTx(builder: CreateTxCallback): Promise<Tx>;\n  async createFundedTx(opts: TxBuilderOpts, builder: CreateTxCallback): Promise<Tx>;\n  async createFundedTx(optsOrBuilder: TxBuilderOpts | CreateTxCallback, builder?: CreateTxCallback): Promise<Tx> {\n    let opts: TxBuilderOpts\n    if (typeof optsOrBuilder === 'function') {\n      opts = {}\n      builder = optsOrBuilder as CreateTxCallback\n    } else {\n      opts = optsOrBuilder\n      builder = builder as CreateTxCallback\n    }\n    const userTx = await this.client.createTx(opts, builder)\n    const fundedTx = await this.fundTx(userTx)\n    return this.signTx(fundedTx, opts.updateSigs)\n  }\n}\n", "import {\n  Address,\n  base16,\n  HDPrivKey,\n  instructions,\n  LockType,\n  OpCode,\n  Output,\n  Pointer,\n  PrivKey,\n  Tx,\n} from '@aldea/sdk'\nimport {Wallet} from \"./wallet.js\";\nimport {WalletStorage} from \"./storage/index.js\";\nimport {MAX_GAP_SIZE, PATH_PREFIX} from \"./constants.js\";\nimport {AldeaClient} from \"./aldea-client.js\";\n\n\nexport class HdWallet extends Wallet {\n  private hd: HDPrivKey;\n  private storage: WalletStorage;\n  constructor(hd: HDPrivKey, storage: WalletStorage, client: AldeaClient) {\n    super(client)\n    this.hd = hd\n    this.storage = storage\n  }\n\n  async getInventory(): Promise<Array<Output>> {\n    return this.storage.allUtxos()\n  }\n\n  async signTx(partialTx: Tx, updateSigs?: PrivKey | HDPrivKey | Array<PrivKey | HDPrivKey>): Promise<Tx> {\n    const outputIds = partialTx.instructions\n      .filter(i => i.opcode === OpCode.LOAD)\n      .map(i => {\n        const inst = i as instructions.LoadInstruction\n        return inst.outputId\n      })\n      .map(base16.encode)\n\n    const originPtrs = partialTx.instructions\n      .filter(i => i.opcode === OpCode.LOADBYORIGIN)\n      .map(i => {\n        const inst = i as instructions.LoadByOriginInstruction\n        return Pointer.fromBytes(inst.origin)\n      })\n\n    const paths: string[] = []\n\n    for (const outputId of outputIds) {\n      const ownedOutput = await this.storage.utxoById(outputId)\n      if (ownedOutput) {\n        paths.push(ownedOutput.path)\n      }\n    }\n\n    for (const ptr of originPtrs) {\n      const ownedOutput = await this.storage.utxoByOrigin(ptr)\n      if (ownedOutput) {\n        paths.push(ownedOutput.path)\n      }\n    }\n\n    return this.client.createTx({ extend: partialTx, updateSigs }, txb => {\n      for (const path of paths) {\n        const priv = this.hd.derive(path.replace('M', 'm')) as HDPrivKey\n        txb.sign(priv)\n      }\n    })\n  }\n\n  async saveTxExec(tx: Tx, outputs: Output[]): Promise<void> {\n    await this.storage.saveTx(tx)\n    for (const output of outputs) {\n      await this.addUtxo(output)\n    }\n  }\n\n  async getNextAddress(): Promise<Address> {\n    const index = await this.storage.currentIndex()\n    const lastUsed = await this.storage.latestUsedIndex()\n\n    const next = index - lastUsed > MAX_GAP_SIZE\n      ? lastUsed\n      : index\n\n    const path = `M${PATH_PREFIX}${index}`; // Derive pubkey\n    const hdPub = this.hd.derive(path);\n    const address = hdPub.toPubKey().toAddress();\n    await this.storage.saveAddress(address, path)\n    await this.storage.changeCurrentIndex(_ => next + 1)\n    return address\n  }\n\n  async sync(): Promise<void> {\n    let lastIndexUsed = await this.storage.latestUsedIndex()\n    let current = lastIndexUsed\n    while (current < lastIndexUsed + MAX_GAP_SIZE) {\n      const path = `M${PATH_PREFIX}${current}`;\n      const address = this.hd.derive(path).toPubKey().toAddress()\n      await this.storage.saveAddress(address, path)\n      const utxos = await this.client.getUtxosByAddress(address)\n      if (utxos.length > 0) {\n        lastIndexUsed = current\n        await this.storage.changeLastUsedIndex(() => current)\n        await this.storage.changeCurrentIndex(() => current)\n      }\n      await Promise.all(utxos.map(async (utxo) => {\n        await this.addUtxo(utxo)\n      }))\n      current++\n    }\n    return Promise.resolve()\n  }\n\n  async addUtxo (output: Output): Promise<void> {\n    if (output.lock.type !== LockType.ADDRESS) return\n    let addressOrNull = await this.storage.addressByPubKeyHash(base16.encode(output.lock.data))\n    if (addressOrNull === null) { // address does not belong to wallet.\n      return\n    }\n\n    if (!output.abi) {\n      output.abi = await this.client.getPackageAbi(output.classPtr.id)\n    }\n\n    await this.storage.addAbi(output.classPtr.id, output.abi)\n    await this.storage.removeUtxoByOrigin(output.origin)\n    await this.storage.saveUtxo(output, addressOrNull.path)\n  }\n}\n", "import {\n  Address,\n  HDPrivKey,\n  LockType,\n  Output,\n  PrivKey,\n  Tx,\n  util,\n} from '@aldea/sdk'\nimport {Wallet} from \"./wallet.js\";\nimport {WalletStorage} from \"./storage/index.js\";\nimport {AldeaClient} from \"./aldea-client.js\";\n\nexport class SingleKeyWallet extends Wallet {\n  private storage: WalletStorage\n  private readonly privKey: PrivKey\n\n  constructor(pk: PrivKey, storage: WalletStorage, client: AldeaClient) {\n    super(client)\n    this.privKey = pk\n    this.storage = storage\n  }\n\n  async addUtxo(output: Output): Promise<void> {\n    if (output.lock.type !== LockType.ADDRESS) return\n\n    if (!util.buffEquals(output.lock.data, this.address().hash)) return\n\n    if (!output.abi) {\n      output.abi = await this.fetchAbi(output.classPtr.id)\n    }\n\n    await this.storage.addAbi(output.classPtr.id, output.abi)\n    await this.storage.removeUtxoByOrigin(output.origin)\n    await this.storage.saveUtxo(output, '')\n  }\n\n\n\n  async getInventory(): Promise<Array<Output>> {\n    return this.storage.allUtxos()\n  }\n\n  async getNextAddress(): Promise<Address> {\n    return this.privKey.toPubKey().toAddress()\n  }\n\n  async saveTxExec(tx: Tx, outputList: Output[]): Promise<void> {\n    await Promise.all(outputList.map(output => this.addUtxo(output)))\n    await this.storage.saveTx(tx)\n  }\n\n  async signTx(partialTx: Tx, updateSigs?: PrivKey | HDPrivKey | Array<PrivKey | HDPrivKey>): Promise<Tx> {\n    return this.client.createTx({ extend: partialTx, updateSigs }, txb => {\n      txb.sign(this.privKey)\n    })\n  }\n\n  async sync(): Promise<void> {\n    const outputs = await this.client.getUtxosByAddress(this.address())\n    for (const output of outputs) {\n      await this.addUtxo(output)\n    }\n  }\n\n  private address() {\n    return this.privKey.toPubKey().toAddress()\n  }\n\n  private async fetchAbi(pkgId: string) {\n    let abi = await this.storage.abiByPkgId(pkgId)\n    if (!abi) {\n      const newAbi = await this.client.getPackageAbi(pkgId)\n      await this.storage.addAbi(pkgId, newAbi)\n      abi = newAbi\n    }\n    return abi\n  }\n}\n", "var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Memory_data, _MemorySync_data;\nexport class Memory {\n    constructor() {\n        _Memory_data.set(this, null);\n    }\n    read() {\n        return Promise.resolve(__classPrivateFieldGet(this, _Memory_data, \"f\"));\n    }\n    write(obj) {\n        __classPrivateFieldSet(this, _Memory_data, obj, \"f\");\n        return Promise.resolve();\n    }\n}\n_Memory_data = new WeakMap();\nexport class MemorySync {\n    constructor() {\n        _MemorySync_data.set(this, null);\n    }\n    read() {\n        return __classPrivateFieldGet(this, _MemorySync_data, \"f\") || null;\n    }\n    write(obj) {\n        __classPrivateFieldSet(this, _MemorySync_data, obj, \"f\");\n    }\n}\n_MemorySync_data = new WeakMap();\n", "function checkArgs(adapter, defaultData) {\n    if (adapter === undefined)\n        throw new Error('lowdb: missing adapter');\n    if (defaultData === undefined)\n        throw new Error('lowdb: missing default data');\n}\nexport class Low {\n    constructor(adapter, defaultData) {\n        Object.defineProperty(this, \"adapter\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        checkArgs(adapter, defaultData);\n        this.adapter = adapter;\n        this.data = defaultData;\n    }\n    async read() {\n        const data = await this.adapter.read();\n        if (data)\n            this.data = data;\n    }\n    async write() {\n        if (this.data)\n            await this.adapter.write(this.data);\n    }\n}\nexport class LowSync {\n    constructor(adapter, defaultData) {\n        Object.defineProperty(this, \"adapter\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        checkArgs(adapter, defaultData);\n        this.adapter = adapter;\n        this.data = defaultData;\n    }\n    read() {\n        const data = this.adapter.read();\n        if (data)\n            this.data = data;\n    }\n    write() {\n        if (this.data)\n            this.adapter.write(this.data);\n    }\n}\n", "import {Adapter, Low} from 'lowdb'\nimport {Address, base16, instructions, OpCode, Output, Pointer, Tx, abiFromBin, abiToBin} from '@aldea/sdk'\nimport {Abi} from \"@aldea/core/abi\";\nimport {OwnedAddress, OwnedOutput, WalletStorage} from \"./wallet-storage.js\";\n\n\ntype OutputItem = {\n  origin: string,\n  id: string,\n  outputHex: string\n  path: string\n}\n\ntype AddressItem = {\n  addrStr: string,\n  hash: string,\n  path: string\n}\n\ntype AbiItem = {\n  abiStr: string,\n  pkgId: string\n}\n\ntype TxItem = {\n  id: string,\n  txHex: string\n}\n\nexport interface LowDbData {\n  utxos: OutputItem[]\n  addresses: AddressItem[]\n  abis: AbiItem[]\n  currentIndex: number\n  latestUsedIndex: number\n  txs: TxItem[]\n}\n\nexport class LowDbStorage implements WalletStorage {\n  db: Low<LowDbData>\n  constructor(adapter: Adapter<LowDbData>, LowConstructor: typeof Low = Low) {\n    this.db = new LowConstructor(adapter, {\n      utxos: [],\n      txs: [],\n      addresses: [],\n      abis: [],\n      currentIndex: 0,\n      latestUsedIndex: 0\n    })\n  }\n\n  private data (): LowDbData {\n    return this.db.data\n  }\n\n  async allUtxos(): Promise<Array<Output>> {\n    this.data().utxos.map(o => o)\n    return this.data().utxos.map(ownedUtxo => {\n      const output = Output.fromHex(ownedUtxo.outputHex)\n      const abi = this.data().abis.find(u => u.pkgId === output.classPtr.id)\n      if (abi === undefined) {\n        throw new Error('abi should be present')\n      }\n      output.abi = abiFromBin(base16.decode(abi.abiStr))\n      return output\n    })\n  }\n\n  async saveUtxo(output: Output, path: string): Promise<void> {\n    this.data().utxos.push({\n      id: output.id,\n      origin: output.origin.toString(),\n      outputHex: output.toHex(),\n      path: path\n    })\n\n    await this.db.write()\n  }\n\n  async saveAddress(address: Address, path: string): Promise<void> {\n    this.data().addresses.push({\n      addrStr: address.toString(),\n      hash: base16.encode(address.hash),\n      path: path\n    })\n    await this.db.write()\n  }\n\n  async changeCurrentIndex(f: (newIndex: number) => number): Promise<number> {\n    this.data().currentIndex = f(this.data().currentIndex)\n    await this.db.write()\n    return this.data().currentIndex\n  }\n\n  async changeLastUsedIndex(f: (newIndex: number) => number): Promise<number> {\n    this.data().latestUsedIndex = f(this.data().latestUsedIndex)\n    await this.db.write()\n    return this.data().latestUsedIndex\n  }\n\n  async currentIndex(): Promise<number> {\n    return this.data().currentIndex\n  }\n\n  async latestUsedIndex(): Promise<number> {\n    return this.data().latestUsedIndex\n  }\n\n  async utxoById(outputId: string): Promise<OwnedOutput | null> {\n    const outputItem = this.data().utxos.find(u => u.id === outputId);\n    if (!outputItem) {\n      return null\n    }\n    const output = Output.fromHex(outputItem.outputHex)\n    const abiItem = this.data().abis.find(a => a.pkgId === output.classPtr.id)\n    if (!abiItem) {\n      throw new Error('abi should be present')\n    }\n    output.abi = abiFromBin(base16.decode(abiItem.abiStr))\n    return {\n      output: output,\n      path: outputItem.path\n    }\n  }\n\n  async utxoByOrigin(origin: Pointer): Promise<OwnedOutput | null> {\n    const outputItem = this.data().utxos.find(u => u.origin === origin.toString());\n    if (!outputItem) {\n      return null\n    }\n    const output = Output.fromHex(outputItem.outputHex)\n    const abiItem = this.data().abis.find(a => a.pkgId === output.classPtr.id)\n    if (!abiItem) {\n      throw new Error('abi should be present')\n    }\n    output.abi = abiFromBin(base16.decode(abiItem.abiStr))\n    return {\n      output: output,\n      path: outputItem.path\n    }\n  }\n\n  async saveTx (tx: Tx): Promise<void> {\n    const loadInputs = tx.instructions\n      .filter(inst => inst.opcode === OpCode.LOAD)\n      .map(inst => {\n        const casted = inst as instructions.LoadInstruction\n        return base16.encode(casted.outputId)\n      })\n    const originInputs = tx.instructions\n      .filter(inst => inst.opcode === OpCode.LOADBYORIGIN)\n      .map(inst => {\n        const casted = inst as instructions.LoadByOriginInstruction\n        return base16.encode(casted.origin)\n      })\n\n    this.data().utxos = this.data().utxos.filter(u =>\n      !loadInputs.some(outputId => outputId === u.id) &&\n      !originInputs.some(origin => origin === u.origin)\n    )\n\n    this.data().txs.push({\n      id: tx.id,\n      txHex: tx.toHex()\n    })\n    await this.db.write()\n  }\n\n  async removeUtxoByOrigin(origin: Pointer): Promise<void> {\n    this.data().utxos = this.data().utxos.filter(u => u.origin !== origin.toString())\n    await this.db.write()\n  }\n\n  async removeUtxoByOutputId(id: string): Promise<void> {\n    this.data().utxos = this.data().utxos.filter(u => u.id !== id)\n    await this.db.write()\n  }\n\n  async addressByPubKeyHash(pubKeHashStr: string): Promise<OwnedAddress | null> {\n    let addr = this.db.data.addresses.find(a => a.hash === pubKeHashStr)\n    if (!addr) return null\n    return {\n      address: Address.fromString(addr.addrStr),\n      path: addr.path\n    }\n  }\n\n  async addAbi(pkgId: string, abi: Abi): Promise<void> {\n    const exists = this.data().abis.some(a => a.pkgId === pkgId)\n    if (!exists) {\n      this.data().abis.push({\n        abiStr: base16.encode(abiToBin(abi)),\n        pkgId\n      })\n      return Promise.resolve(undefined);\n    }\n  }\n\n  async abiByPkgId(pkgId: string): Promise<Abi | null> {\n    const abiItem = this.data().abis.find(a => a.pkgId === pkgId);\n    if (!abiItem) {\n      return null\n    }\n    return abiFromBin(base16.decode(abiItem.abiStr))\n  }\n}\n\n", "import {OwnedAddress, OwnedOutput, WalletStorage} from \"./wallet-storage.js\";\nimport {Address, base16, instructions, OpCode, Output, Pointer, Tx} from \"@aldea/sdk\";\nimport {Abi} from \"@aldea/core/abi\";\n\ntype AbiItem = {\n  abi: Abi,\n  pkgId: string\n}\n\nexport class MemoryStorage implements WalletStorage {\n  utxos: OwnedOutput[]\n  addresses: OwnedAddress[]\n  abis: AbiItem[]\n  txs: Tx[]\n  _currentIndex: number\n  _latestUsedIndex: number\n\n  constructor() {\n    this.utxos = []\n    this.addresses = []\n    this.abis = []\n    this.txs = []\n    this._currentIndex = 0\n    this._latestUsedIndex = 0\n  }\n  async abiByPkgId(pkgId: string): Promise<Abi | null> {\n    const res = this.abis.find(a => a.pkgId === pkgId)\n    if (!res) return null\n    return res.abi\n  }\n\n  async addAbi(pkgId: string, abi: Abi): Promise<void> {\n    const exists = this.abis.some(a => a.pkgId === pkgId)\n    if (!exists) {\n      this.abis.push({ pkgId, abi })\n    }\n  }\n\n  async addressByPubKeyHash(pubKeHashStr: string): Promise<OwnedAddress | null> {\n    let addr = this.addresses.find(a => base16.encode(a.address.hash) === pubKeHashStr)\n    if (!addr) return null\n    return addr\n  }\n\n  async allUtxos(): Promise<Output[]> {\n    return this.utxos.map(u => u.output);\n  }\n\n  async changeCurrentIndex(f: (newIndex: number) => number): Promise<number> {\n    return this._currentIndex;\n  }\n\n  async changeLastUsedIndex(f: (newIndex: number) => number): Promise<number> {\n    this._latestUsedIndex = f(this._latestUsedIndex)\n    return this._latestUsedIndex\n  }\n\n  async currentIndex(): Promise<number> {\n    return this._currentIndex;\n  }\n\n  async latestUsedIndex(): Promise<number> {\n    return this._latestUsedIndex\n  }\n\n  async removeUtxoByOrigin(origin: Pointer): Promise<void> {\n    this.utxos = this.utxos.filter(u => !u.output.origin.equals(origin))\n  }\n\n  async removeUtxoByOutputId(id: string): Promise<void> {\n    this.utxos = this.utxos.filter(u => u.output.id !== id)\n  }\n\n\n  async saveAddress(address: Address, path: string): Promise<void> {\n    this.addresses.push({ address, path })\n  }\n\n  async saveTx(tx: Tx): Promise<void> {\n    const loadInputs = tx.instructions\n      .filter(inst => inst.opcode === OpCode.LOAD)\n      .map(inst => {\n        const casted = inst as instructions.LoadInstruction\n        return base16.encode(casted.outputId)\n      })\n    const originInputs = tx.instructions\n      .filter(inst => inst.opcode === OpCode.LOADBYORIGIN)\n      .map(inst => {\n        const casted = inst as instructions.LoadByOriginInstruction\n        return base16.encode(casted.origin)\n      })\n\n    this.utxos = this.utxos.filter(u =>\n      !loadInputs.some(outputId => outputId === u.output.id) &&\n      !originInputs.some(origin => origin === u.output.origin.toString())\n    )\n\n    this.txs.push(tx)\n  }\n\n  async saveUtxo(output: Output, path: string): Promise<void> {\n    this.utxos.push({ output, path })\n  }\n\n  async utxoById(outputId: string): Promise<OwnedOutput | null> {\n    const res = this.utxos.find(u => u.output.id === outputId)\n    if (!res) return null\n    return res\n  }\n\n  async utxoByOrigin(origin: Pointer): Promise<OwnedOutput | null> {\n    const res = this.utxos.find(u => u.output.origin.equals(origin) )\n    if (!res) return null\n    return res\n  }\n}\n"],
  "mappings": "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",
  "names": ["CodeKind", "MethodKind", "alphabet", "padding", "bytes", "str", "str", "_words", "base16", "str", "base64", "bech32m", "hash", "str", "Flags", "SIGMA", "IV", "bytes", "hash", "bytes", "invert", "mod", "pow2", "hex", "G", "hash", "P", "crypto", "p", "n", "hex", "base16", "str", "pow2", "mod", "invert", "hash", "str", "bech32m", "sign", "verify", "P", "bytes", "hash", "mod", "invert", "P", "pow_2_252_3", "pow2", "hash", "bytes", "sign", "verify", "PREFIX", "bytes", "str", "base16", "bech32m", "hash", "HARDENED_OFFSET", "PREFIX", "bytes", "str", "base16", "bech32m", "toIndex", "hash", "LockType", "type", "bytes", "base16", "bool", "bytes", "output", "hex", "base16", "hash", "props", "base16", "bytes", "str", "PREFIX", "bytes", "str", "base16", "bech32m", "PREFIX", "bytes", "str", "base16", "bech32m", "instructions", "base16", "hash", "bytes", "str", "sign", "verify", "OpCode", "bytes", "bytes", "bytes", "assert", "type", "bytes", "reader", "writer", "bool", "ref", "type", "base16", "output", "TxBuilder", "ResultType", "base16", "base16", "output", "output", "output", "base16", "exists", "exists", "base16", "output"]
}
