@demox-labs/aleo-sdk
Version:
Wasm build for the SDK
1,522 lines (1,446 loc) • 120 kB
JavaScript
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