UNPKG

@demox-labs/aleo-sdk

Version:
1,522 lines (1,446 loc) 120 kB
function spawnWorker(url, module, memory, address) { return new Promise((resolve) => { const worker = new Worker(url, { type: "module", }); worker.addEventListener("message", (event) => { // When running in Node, this allows the process to exit // even though the Worker is still running. if (worker.unref) { worker.unref(); } resolve(worker); }, { capture: true, once: true, }); worker.postMessage({ module, memory, address, }); }); } let wasm; const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); } let cachedUint8ArrayMemory0 = null; function getUint8ArrayMemory0() { if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) { cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); } return cachedUint8ArrayMemory0; } function getStringFromWasm0(ptr, len) { ptr = ptr >>> 0; return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len)); } function addToExternrefTable0(obj) { const idx = wasm.__externref_table_alloc(); wasm.__wbindgen_export_3.set(idx, obj); return idx; } function handleError(f, args) { try { return f.apply(this, args); } catch (e) { const idx = addToExternrefTable0(e); wasm.__wbindgen_exn_store(idx); } } let WASM_VECTOR_LEN = 0; const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); const encodeString = function (arg, view) { const buf = cachedTextEncoder.encode(arg); view.set(buf); return { read: arg.length, written: buf.length }; }; function passStringToWasm0(arg, malloc, realloc) { if (realloc === undefined) { const buf = cachedTextEncoder.encode(arg); const ptr = malloc(buf.length, 1) >>> 0; getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); WASM_VECTOR_LEN = buf.length; return ptr; } let len = arg.length; let ptr = malloc(len, 1) >>> 0; const mem = getUint8ArrayMemory0(); let offset = 0; for (; offset < len; offset++) { const code = arg.charCodeAt(offset); if (code > 0x7F) break; mem[ptr + offset] = code; } if (offset !== len) { if (offset !== 0) { arg = arg.slice(offset); } ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); offset += ret.written; ptr = realloc(ptr, len, offset, 1) >>> 0; } WASM_VECTOR_LEN = offset; return ptr; } function isLikeNone(x) { return x === undefined || x === null; } let cachedDataViewMemory0 = null; function getDataViewMemory0() { if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) { cachedDataViewMemory0 = new DataView(wasm.memory.buffer); } return cachedDataViewMemory0; } const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(state => { wasm.__wbindgen_export_7.get(state.dtor)(state.a, state.b); }); function makeMutClosure(arg0, arg1, dtor, f) { const state = { a: arg0, b: arg1, cnt: 1, dtor }; const real = (...args) => { // First up with a closure we increment the internal reference // count. This ensures that the Rust closure environment won't // be deallocated while we're invoking it. state.cnt++; const a = state.a; state.a = 0; try { return f(a, state.b, ...args); } finally { if (--state.cnt === 0) { wasm.__wbindgen_export_7.get(state.dtor)(a, state.b); CLOSURE_DTORS.unregister(state); } else { state.a = a; } } }; real.original = state; CLOSURE_DTORS.register(real, state, state); return real; } function debugString(val) { // primitive types const type = typeof val; if (type == 'number' || type == 'boolean' || val == null) { return `${val}`; } if (type == 'string') { return `"${val}"`; } if (type == 'symbol') { const description = val.description; if (description == null) { return 'Symbol'; } else { return `Symbol(${description})`; } } if (type == 'function') { const name = val.name; if (typeof name == 'string' && name.length > 0) { return `Function(${name})`; } else { return 'Function'; } } // objects if (Array.isArray(val)) { const length = val.length; let debug = '['; if (length > 0) { debug += debugString(val[0]); } for(let i = 1; i < length; i++) { debug += ', ' + debugString(val[i]); } debug += ']'; return debug; } // Test for built-in const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); let className; if (builtInMatches && builtInMatches.length > 1) { className = builtInMatches[1]; } else { // Failed to match the standard '[object ClassName]' return toString.call(val); } if (className == 'Object') { // we're a user defined class or Object // JSON.stringify avoids problems with cycles, and is generally much // easier than looping through ownProperties of `val`. try { return 'Object(' + JSON.stringify(val) + ')'; } catch (_) { return 'Object'; } } // errors if (val instanceof Error) { return `${val.name}: ${val.message}\n${val.stack}`; } // TODO we could test for more things here, like `Set`s and `Map`s. return className; } function _assertClass(instance, klass) { if (!(instance instanceof klass)) { throw new Error(`expected instance of ${klass.name}`); } } function takeFromExternrefTable0(idx) { const value = wasm.__wbindgen_export_3.get(idx); wasm.__externref_table_dealloc(idx); return value; } function passArray8ToWasm0(arg, malloc) { const ptr = malloc(arg.length * 1, 1) >>> 0; getUint8ArrayMemory0().set(arg, ptr / 1); WASM_VECTOR_LEN = arg.length; return ptr; } function getArrayU8FromWasm0(ptr, len) { ptr = ptr >>> 0; return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); } /** * @param {number} receiver */ function runRayonThread(receiver) { wasm.runRayonThread(receiver); } /** * @param {URL} url * @param {number} num_threads * @returns {Promise<void>} */ function initThreadPool(url, num_threads) { const ret = wasm.initThreadPool(url, num_threads); return ret; } function __wbg_adapter_36(arg0, arg1, arg2) { wasm.closure857_externref_shim(arg0, arg1, arg2); } function __wbg_adapter_206(arg0, arg1, arg2, arg3) { wasm.closure806_externref_shim(arg0, arg1, arg2, arg3); } const __wbindgen_enum_RequestCredentials = ["omit", "same-origin", "include"]; const __wbindgen_enum_RequestMode = ["same-origin", "no-cors", "cors", "navigate"]; const AddressFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_address_free(ptr >>> 0, 1)); /** * Public address of an Aleo account */ class Address { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(Address.prototype); obj.__wbg_ptr = ptr; AddressFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; AddressFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_address_free(ptr, 0); } /** * Derive an Aleo address from a private key * * @param {PrivateKey} private_key The private key to derive the address from * @returns {Address} Address corresponding to the private key * @param {PrivateKey} private_key * @returns {Address} */ static from_private_key(private_key) { _assertClass(private_key, PrivateKey); const ret = wasm.address_from_private_key(private_key.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Address.__wrap(ret[0]); } /** * Derive an Aleo address from a view key * * @param {ViewKey} view_key The view key to derive the address from * @returns {Address} Address corresponding to the view key * @param {ViewKey} view_key * @returns {Address} */ static from_view_key(view_key) { _assertClass(view_key, ViewKey); const ret = wasm.address_from_view_key(view_key.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Address.__wrap(ret[0]); } /** * Create an aleo address object from a string representation of an address * * @param {string} address String representation of an addressm * @returns {Address} Address * @param {string} network * @param {string} address * @returns {Address} */ static from_string(network, address) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(address, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.address_from_string(ptr0, len0, ptr1, len1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Address.__wrap(ret[0]); } /** * Get a string representation of an Aleo address object * * @param {Address} Address * @returns {string} String representation of the address * @returns {string} */ to_string() { let deferred1_0; let deferred1_1; try { const ret = wasm.address_to_string(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); } finally { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * @returns {string} */ to_x_coordinate() { let deferred2_0; let deferred2_1; try { const ret = wasm.address_to_x_coordinate(this.__wbg_ptr); var ptr1 = ret[0]; var len1 = ret[1]; if (ret[3]) { ptr1 = 0; len1 = 0; throw takeFromExternrefTable0(ret[2]); } deferred2_0 = ptr1; deferred2_1 = len1; return getStringFromWasm0(ptr1, len1); } finally { wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); } } } const DecryptTransitionFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_decrypttransition_free(ptr >>> 0, 1)); class DecryptTransition { __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; DecryptTransitionFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_decrypttransition_free(ptr, 0); } /** * @param {string} network * @param {ViewKey} view_key * @param {string} tpk_str * @param {string} tcm_str * @returns {boolean} */ static owns_transition(network, view_key, tpk_str, tcm_str) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; _assertClass(view_key, ViewKey); const ptr1 = passStringToWasm0(tpk_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ptr2 = passStringToWasm0(tcm_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; const ret = wasm.decrypttransition_owns_transition(ptr0, len0, view_key.__wbg_ptr, ptr1, len1, ptr2, len2); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return ret[0] !== 0; } /** * @param {string} network * @param {ViewKey} view_key * @param {string} ciphertext_str * @param {string} tpk_str * @param {string} program_id * @param {string} function_name_str * @param {number} index * @returns {string} */ static decrypt_ciphertext(network, view_key, ciphertext_str, tpk_str, program_id, function_name_str, index) { let deferred7_0; let deferred7_1; try { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; _assertClass(view_key, ViewKey); const ptr1 = passStringToWasm0(ciphertext_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ptr2 = passStringToWasm0(tpk_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; const ptr3 = passStringToWasm0(program_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len3 = WASM_VECTOR_LEN; const ptr4 = passStringToWasm0(function_name_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len4 = WASM_VECTOR_LEN; const ret = wasm.decrypttransition_decrypt_ciphertext(ptr0, len0, view_key.__wbg_ptr, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, index); var ptr6 = ret[0]; var len6 = ret[1]; if (ret[3]) { ptr6 = 0; len6 = 0; throw takeFromExternrefTable0(ret[2]); } deferred7_0 = ptr6; deferred7_1 = len6; return getStringFromWasm0(ptr6, len6); } finally { wasm.__wbindgen_free(deferred7_0, deferred7_1, 1); } } /** * @param {string} network * @param {ViewKey} view_key * @param {string} transition_str * @returns {string} */ static decrypt_transition(network, view_key, transition_str) { let deferred4_0; let deferred4_1; try { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; _assertClass(view_key, ViewKey); const ptr1 = passStringToWasm0(transition_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.decrypttransition_decrypt_transition(ptr0, len0, view_key.__wbg_ptr, ptr1, len1); var ptr3 = ret[0]; var len3 = ret[1]; if (ret[3]) { ptr3 = 0; len3 = 0; throw takeFromExternrefTable0(ret[2]); } deferred4_0 = ptr3; deferred4_1 = len3; return getStringFromWasm0(ptr3, len3); } finally { wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); } } /** * @param {string} network * @param {string} tvk_str * @param {string} transition_str * @returns {string} */ static decrypt_transition_with_tvk(network, tvk_str, transition_str) { let deferred5_0; let deferred5_1; try { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(tvk_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ptr2 = passStringToWasm0(transition_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; const ret = wasm.decrypttransition_decrypt_transition_with_tvk(ptr0, len0, ptr1, len1, ptr2, len2); var ptr4 = ret[0]; var len4 = ret[1]; if (ret[3]) { ptr4 = 0; len4 = 0; throw takeFromExternrefTable0(ret[2]); } deferred5_0 = ptr4; deferred5_1 = len4; return getStringFromWasm0(ptr4, len4); } finally { wasm.__wbindgen_free(deferred5_0, deferred5_1, 1); } } /** * @param {string} network * @param {ViewKey} view_key * @param {string} tpk_str * @returns {string} */ static generate_tvk(network, view_key, tpk_str) { let deferred4_0; let deferred4_1; try { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; _assertClass(view_key, ViewKey); const ptr1 = passStringToWasm0(tpk_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.decrypttransition_generate_tvk(ptr0, len0, view_key.__wbg_ptr, ptr1, len1); var ptr3 = ret[0]; var len3 = ret[1]; if (ret[3]) { ptr3 = 0; len3 = 0; throw takeFromExternrefTable0(ret[2]); } deferred4_0 = ptr3; deferred4_1 = len3; return getStringFromWasm0(ptr3, len3); } finally { wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); } } } const FieldFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_field_free(ptr >>> 0, 1)); class Field { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(Field.prototype); obj.__wbg_ptr = ptr; FieldFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; FieldFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_field_free(ptr, 0); } /** * @returns {string} */ toString() { let deferred1_0; let deferred1_1; try { const ret = wasm.field_toString(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); } finally { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * @param {string} network * @param {string} field * @returns {Field} */ static fromString(network, field) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(field, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.field_fromString(ptr0, len0, ptr1, len1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Field.__wrap(ret[0]); } /** * @param {string} network * @param {Uint8Array} hash * @returns {Field} */ static bhp256_hash_to_field(network, hash) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passArray8ToWasm0(hash, wasm.__wbindgen_malloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.field_bhp256_hash_to_field(ptr0, len0, ptr1, len1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Field.__wrap(ret[0]); } } const GroupFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_group_free(ptr >>> 0, 1)); class Group { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(Group.prototype); obj.__wbg_ptr = ptr; GroupFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; GroupFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_group_free(ptr, 0); } /** * @returns {string} */ toString() { let deferred1_0; let deferred1_1; try { const ret = wasm.group_toString(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); } finally { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * @param {string} network * @param {string} group * @returns {Group} */ static fromString(network, group) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(group, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.group_fromString(ptr0, len0, ptr1, len1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Group.__wrap(ret[0]); } } const KeyPairFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_keypair_free(ptr >>> 0, 1)); /** * Key pair object containing both the function proving and verifying keys */ class KeyPair { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(KeyPair.prototype); obj.__wbg_ptr = ptr; KeyPairFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; KeyPairFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_keypair_free(ptr, 0); } /** * Create new key pair from proving and verifying keys * * @param {ProvingKey} proving_key Proving key corresponding to a function in an Aleo program * @param {VerifyingKey} verifying_key Verifying key corresponding to a function in an Aleo program * @returns {KeyPair} Key pair object containing both the function proving and verifying keys * @param {ProvingKey} proving_key * @param {VerifyingKey} verifying_key */ constructor(proving_key, verifying_key) { _assertClass(proving_key, ProvingKey); var ptr0 = proving_key.__destroy_into_raw(); _assertClass(verifying_key, VerifyingKey); var ptr1 = verifying_key.__destroy_into_raw(); const ret = wasm.keypair_new(ptr0, ptr1); this.__wbg_ptr = ret >>> 0; KeyPairFinalization.register(this, this.__wbg_ptr, this); return this; } /** * Get the proving key. This method will remove the proving key from the key pair * * @returns {ProvingKey | Error} * @returns {ProvingKey} */ provingKey() { const ret = wasm.keypair_provingKey(this.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return ProvingKey.__wrap(ret[0]); } /** * Get the verifying key. This method will remove the verifying key from the key pair * * @returns {VerifyingKey | Error} * @returns {VerifyingKey} */ verifyingKey() { const ret = wasm.keypair_verifyingKey(this.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return VerifyingKey.__wrap(ret[0]); } } const PlaintextFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_plaintext_free(ptr >>> 0, 1)); class Plaintext { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(Plaintext.prototype); obj.__wbg_ptr = ptr; PlaintextFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; PlaintextFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_plaintext_free(ptr, 0); } /** * @returns {string} */ toString() { let deferred1_0; let deferred1_1; try { const ret = wasm.plaintext_toString(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); } finally { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * @param {string} network * @param {string} plaintext * @returns {Plaintext} */ static fromString(network, plaintext) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(plaintext, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.plaintext_fromString(ptr0, len0, ptr1, len1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Plaintext.__wrap(ret[0]); } /** * @returns {string} */ hashBhp256() { let deferred2_0; let deferred2_1; try { const ret = wasm.plaintext_hashBhp256(this.__wbg_ptr); var ptr1 = ret[0]; var len1 = ret[1]; if (ret[3]) { ptr1 = 0; len1 = 0; throw takeFromExternrefTable0(ret[2]); } deferred2_0 = ptr1; deferred2_1 = len1; return getStringFromWasm0(ptr1, len1); } finally { wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); } } /** * @returns {string} */ hashBhp256ToAddress() { let deferred2_0; let deferred2_1; try { const ret = wasm.plaintext_hashBhp256ToAddress(this.__wbg_ptr); var ptr1 = ret[0]; var len1 = ret[1]; if (ret[3]) { ptr1 = 0; len1 = 0; throw takeFromExternrefTable0(ret[2]); } deferred2_0 = ptr1; deferred2_1 = len1; return getStringFromWasm0(ptr1, len1); } finally { wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); } } } const PrivateKeyFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_privatekey_free(ptr >>> 0, 1)); /** * Private key of an Aleo account */ class PrivateKey { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(PrivateKey.prototype); obj.__wbg_ptr = ptr; PrivateKeyFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; PrivateKeyFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_privatekey_free(ptr, 0); } /** * Generate a new private key using a cryptographically secure random number generator * * @returns {PrivateKey} * @param {string} network */ constructor(network) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.privatekey_new(ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } this.__wbg_ptr = ret[0] >>> 0; PrivateKeyFinalization.register(this, this.__wbg_ptr, this); return this; } /** * Get a private key from a series of unchecked bytes * * @param {Uint8Array} seed Unchecked 32 byte long Uint8Array acting as the seed for the private key * @returns {PrivateKey} * @param {string} network * @param {Uint8Array} seed * @returns {PrivateKey} */ static from_seed_unchecked(network, seed) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passArray8ToWasm0(seed, wasm.__wbindgen_malloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.privatekey_from_seed_unchecked(ptr0, len0, ptr1, len1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return PrivateKey.__wrap(ret[0]); } /** * Get a private key from a string representation of a private key * * @param {string} seed String representation of a private key * @returns {PrivateKey} * @param {string} network * @param {string} private_key * @returns {PrivateKey} */ static from_string(network, private_key) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(private_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.privatekey_from_string(ptr0, len0, ptr1, len1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return PrivateKey.__wrap(ret[0]); } /** * Get a string representation of the private key. This function should be used very carefully * as it exposes the private key plaintext * * @returns {string} String representation of a private key * @returns {string} */ to_string() { let deferred1_0; let deferred1_1; try { const ret = wasm.privatekey_to_string(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); } finally { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * Get the view key corresponding to the private key * * @returns {ViewKey} * @returns {ViewKey} */ to_view_key() { const ret = wasm.privatekey_to_view_key(this.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return ViewKey.__wrap(ret[0]); } /** * Get the address corresponding to the private key * * @returns {Address} * @returns {Address} */ to_address() { const ret = wasm.privatekey_to_address(this.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Address.__wrap(ret[0]); } /** * Sign a message with the private key * * @param {Uint8Array} Byte array representing a message signed by the address * @returns {Signature} Signature generated by signing the message with the address * @param {Uint8Array} message * @returns {Signature} */ sign(message) { const ptr0 = passArray8ToWasm0(message, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.privatekey_sign(this.__wbg_ptr, ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Signature.__wrap(ret[0]); } } const ProgramFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_program_free(ptr >>> 0, 1)); /** * Webassembly Representation of an Aleo program */ class Program { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(Program.prototype); obj.__wbg_ptr = ptr; ProgramFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; ProgramFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_program_free(ptr, 0); } /** * Create a program from a program string * * @param {string} program Aleo program source code * @returns {Program | Error} Program object * @param {string} network * @param {string} program * @returns {Program} */ static fromString(network, program) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(program, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.program_fromString(ptr0, len0, ptr1, len1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Program.__wrap(ret[0]); } /** * Get a string representation of the program * * @returns {string} String containing the program source code * @returns {string} */ toString() { let deferred1_0; let deferred1_1; try { const ret = wasm.program_toString(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); } finally { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * @returns {string} */ toAddress() { let deferred2_0; let deferred2_1; try { const ret = wasm.program_toAddress(this.__wbg_ptr); var ptr1 = ret[0]; var len1 = ret[1]; if (ret[3]) { ptr1 = 0; len1 = 0; throw takeFromExternrefTable0(ret[2]); } deferred2_0 = ptr1; deferred2_1 = len1; return getStringFromWasm0(ptr1, len1); } finally { wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); } } /** * @param {string} network * @param {string} program_id * @returns {string} */ static programIdToAddress(network, program_id) { let deferred4_0; let deferred4_1; try { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ptr1 = passStringToWasm0(program_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.program_programIdToAddress(ptr0, len0, ptr1, len1); var ptr3 = ret[0]; var len3 = ret[1]; if (ret[3]) { ptr3 = 0; len3 = 0; throw takeFromExternrefTable0(ret[2]); } deferred4_0 = ptr3; deferred4_1 = len3; return getStringFromWasm0(ptr3, len3); } finally { wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); } } /** * Determine if a function is present in the program * * @param {string} functionName Name of the function to check for * @returns {boolean} True if the program is valid, false otherwise * @param {string} function_name * @returns {boolean} */ hasFunction(function_name) { const ptr0 = passStringToWasm0(function_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.program_hasFunction(this.__wbg_ptr, ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return ret[0] !== 0; } /** * Get javascript array of functions names in the program * * @returns {Array} Array of all function names present in the program * * @example * const expected_functions = [ * "mint", * "transfer_private", * "transfer_private_to_public", * "transfer_public", * "transfer_public_to_private", * "join", * "split", * "fee" * ] * * const credits_program = aleo_wasm.Program.getCreditsProgram(); * const credits_functions = credits_program.getFunctions(); * console.log(credits_functions === expected_functions); // Output should be "true" * @returns {Array<any>} */ getFunctions() { const ret = wasm.program_getFunctions(this.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return takeFromExternrefTable0(ret[0]); } /** * Get a javascript object representation of the function inputs and types. This can be used * to generate a web form to capture user inputs for an execution of a function. * * @param {string} function_name Name of the function to get inputs for * @returns {Array | Error} Array of function inputs * * @example * const expected_inputs = [ * { * type:"record", * visibility:"private", * record:"credits", * members:[ * { * name:"microcredits", * type:"u64", * visibility:"private" * } * ], * register:"r0" * }, * { * type:"address", * visibility:"private", * register:"r1" * }, * { * type:"u64", * visibility:"private", * register:"r2" * } * ]; * * const credits_program = aleo_wasm.Program.getCreditsProgram(); * const transfer_function_inputs = credits_program.getFunctionInputs("transfer_private"); * console.log(transfer_function_inputs === expected_inputs); // Output should be "true" * @param {string} function_name * @returns {Array<any>} */ getFunctionInputs(function_name) { const ptr0 = passStringToWasm0(function_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.program_getFunctionInputs(this.__wbg_ptr, ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return takeFromExternrefTable0(ret[0]); } /** * Get a the list of a program's mappings and the names/types of their keys and values. * * @returns {Array | Error} - An array of objects representing the mappings in the program * @example * const expected_mappings = [ * { * name: "account", * key_name: "owner", * key_type: "address", * value_name: "microcredits", * value_type: "u64" * } * ] * * const credits_program = aleo_wasm.Program.getCreditsProgram(); * const credits_mappings = credits_program.getMappings(); * console.log(credits_mappings === expected_mappings); // Output should be "true" * @returns {Array<any>} */ getMappings() { const ret = wasm.program_getMappings(this.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return takeFromExternrefTable0(ret[0]); } /** * Get a javascript object representation of a program record and its types * * @param {string} record_name Name of the record to get members for * @returns {Object | Error} Object containing the record name, type, and members * * @example * * const expected_record = { * type: "record", * record: "Credits", * members: [ * { * name: "owner", * type: "address", * visibility: "private" * }, * { * name: "microcredits", * type: "u64", * visibility: "private" * } * ]; * }; * * const credits_program = aleo_wasm.Program.getCreditsProgram(); * const credits_record = credits_program.getRecordMembers("Credits"); * console.log(credits_record === expected_record); // Output should be "true" * @param {string} record_name * @returns {object} */ getRecordMembers(record_name) { const ptr0 = passStringToWasm0(record_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.program_getRecordMembers(this.__wbg_ptr, ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return takeFromExternrefTable0(ret[0]); } /** * Get a javascript object representation of a program struct and its types * * @param {string} struct_name Name of the struct to get members for * @returns {Array | Error} Array containing the struct members * * @example * * const STRUCT_PROGRAM = "program token_issue.aleo; * * struct token_metadata: * network as u32; * version as u32; * * struct token: * token_id as u32; * metadata as token_metadata; * * function no_op: * input r0 as u64; * output r0 as u64;" * * const expected_struct_members = [ * { * name: "token_id", * type: "u32", * }, * { * name: "metadata", * type: "struct", * struct_id: "token_metadata", * members: [ * { * name: "network", * type: "u32", * } * { * name: "version", * type: "u32", * } * ] * } * ]; * * const program = aleo_wasm.Program.fromString(STRUCT_PROGRAM); * const struct_members = program.getStructMembers("token"); * console.log(struct_members === expected_struct_members); // Output should be "true" * @param {string} struct_name * @returns {Array<any>} */ getStructMembers(struct_name) { const ptr0 = passStringToWasm0(struct_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.program_getStructMembers(this.__wbg_ptr, ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return takeFromExternrefTable0(ret[0]); } /** * Get the credits.aleo program * * @returns {Program} The credits.aleo program * @param {string} network * @returns {Program} */ static getCreditsProgram(network) { const ptr0 = passStringToWasm0(network, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.program_getCreditsProgram(ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return Program.__wrap(ret[0]); } /** * Get the id of the program * * @returns {string} The id of the program * @returns {string} */ id() { let deferred2_0; let deferred2_1; try { const ret = wasm.program_id(this.__wbg_ptr); var ptr1 = ret[0]; var len1 = ret[1]; if (ret[3]) { ptr1 = 0; len1 = 0; throw takeFromExternrefTable0(ret[2]); } deferred2_0 = ptr1; deferred2_1 = len1; return getStringFromWasm0(ptr1, len1); } finally { wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); } } /** * Determine equality with another program * * @param {Program} other The other program to compare * @returns {boolean} True if the programs are equal, false otherwise * @param {Program} other * @returns {boolean} */ isEqual(other) { _assertClass(other, Program); const ret = wasm.program_isEqual(this.__wbg_ptr, other.__wbg_ptr); return ret !== 0; } /** * Get program_imports * * @returns {Array} The program imports * * @example * * const DOUBLE_TEST = "import multiply_test.aleo; * * program double_test.aleo; * * function double_it: * input r0 as u32.private; * call multiply_test.aleo/multiply 2u32 r0 into r1; * output r1 as u32.private;"; * * const expected_imports = [ * "multiply_test.aleo" * ]; * * const program = aleo_wasm.Program.fromString(DOUBLE_TEST_PROGRAM); * const imports = program.getImports(); * console.log(imports === expected_imports); // Output should be "true" * @returns {Array<any>} */ getImports() { const ret = wasm.program_getImports(this.__wbg_ptr); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return takeFromExternrefTable0(ret[0]); } } const ProgramManagerFinalization = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(ptr => wasm.__wbg_programmanager_free(ptr >>> 0, 1)); class ProgramManager { __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; ProgramManagerFinalization.unregister(this); return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_programmanager_free(ptr, 0); } /** * Estimate the component of the deployment cost which comes from the fee for the program name. * Note that this cost does not represent the entire cost of deployment. It is additional to * the cost of the size (in bytes) of the deployment. * * Disclaimer: Fee estimation is experimental and may not represent a correct estimate on any current or future network * * @param name The name of the program to be deployed * @returns {u64 | Error} * @param {string} name * @returns {bigint} */ static estimateProgramNameCost(name) { const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.programmanager_estimateProgramNameCost(ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return BigInt.asUintN(64, ret[0]); } /** * @param {PrivateKey} private_key * @param {string} program * @param {object | null | undefined} imports * @param {number} fee_credits * @param {RecordPlaintext | null | undefined} fee_record * @param {string} url * @param {ProvingKey | null | undefined} fee_proving_key * @param {VerifyingKey | null | undefined} fee_verifying_key * @param {ProvingKey} inclusion_key * @returns {Promise<Transaction>} */ static deploy_transaction(private_key, program, imports, fee_credits, fee_record, url, fee_proving_key, fee_verifying_key, inclusion_key) { _assertClass(private_key, PrivateKey); var ptr0 = private_key.__destroy_into_raw(); const ptr1 = passStringToWasm0(program, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; let ptr2 = 0; if (!isLikeNone(fee_record)) { _assertClass(fee_record, RecordPlaintext); ptr2 = fee_record.__destroy_into_raw(); } const ptr3 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len3 = WASM_VECTOR_LEN; let ptr4 = 0; if (!isLikeNone(fee_proving_key)) { _assertClass(fee_proving_key, ProvingKey); ptr4 = fee_proving_key.__destroy_into_raw(); } let ptr5 = 0; if (!isLikeNone(fee_verifying_key)) { _assertClass(fee_verifying_key, VerifyingKey); ptr5 = fee_verifying_key.__destroy_into_raw(); } _assertClass(inclusion_key, ProvingKey); var ptr6 = inclusion_key.__destroy_into_raw(); const ret = wasm.programmanager_deploy_transaction(ptr0, ptr1, len1, isLikeNone(imports) ? 0 : addToExternrefTable0(imports), fee_credits, ptr2, ptr3, len3, ptr4, ptr5, ptr6); return ret; } /** * @param {PrivateKey} private_key * @param {string} deployment * @param {number} fee_credits * @param {RecordPlaintext | null} [fee_record] * @returns {Promise<string>} */ static authorize_deploy(private_key, deployment, fee_credits, f