UNPKG

navio-blsct

Version:

TypeScript bindings for the `libblsct` library used by the [Navio](https://nav.io/) blockchain to construct confidential transactions based on the BLS12-381 curve.

724 lines (723 loc) 28.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.genDpkWithKeysAcctAddr = exports.genDoublePubKey = exports.deserializeDpk = exports.getCTxOutViewTag = exports.getCTxOutRangeProof = exports.getCTxOutSpendingKey = exports.getCTxOutEphemeralKey = exports.getCTxOutBlindingKey = exports.getCTxOutVectorPredicate = exports.getCTxOutTokenId = exports.getCTxOutScriptPubkey = exports.getCTxOutValue = exports.getCTxInScriptWitness = exports.getCTxInSequence = exports.getCTxInScriptSig = exports.getCTxInPrevOutN = exports.getCTxInPrevOutHash = exports.serializeCTxId = exports.getCTxOutsSize = exports.getCTxOutAt = exports.getCTxOuts = exports.getCTxInsSize = exports.getCTxInAt = exports.getCTxIns = exports.getCTxId = exports.deleteCTx = exports.deleteTxOutVec = exports.deleteTxInVec = exports.createTxOutVec = exports.createTxInVec = exports.buildCTx = exports.addToTxOutVec = exports.addToTxInVec = exports.fromChildKeyToTxKey = exports.fromChildKeyToTokenKey = exports.fromChildKeyToBlindingKey = exports.fromSeedToChildKey = exports.setChain = exports.getChain = exports.Bech32M = exports.Bech32 = exports.encodeAddress = exports.decodeAddress = exports.TxOutputType = exports.BlsctChain = exports.BLSCT_OUT_AMOUNT_ERROR = exports.BLSCT_IN_AMOUNT_ERROR = exports.SCRIPT_SIZE = exports.POINT_SIZE = exports.CTX_ID_SIZE = void 0; exports.getRangeProof_s_prime = exports.getRangeProof_r_prime = exports.getRangeProof_delta_prime = exports.getRangeProof_B = exports.getRangeProof_A_wip = exports.getRangeProof_alpha_hat = exports.getRangeProof_A = exports.getAmountRecoveryResultSize = exports.getAmountRecoveryResultMsg = exports.getAmountRecoveryResultIsSucc = exports.getAmountRecoveryResultAmount = exports.genAmountRecoveryReq = exports.deleteUint64Vec = exports.deleteRangeProofVec = exports.deleteAmountsRetVal = exports.deleteAmountRecoveryReqVec = exports.deserializeRangeProof = exports.createUint64Vec = exports.createRangeProofVec = exports.createAmountRecoveryReqVec = exports.buildRangeProof = exports.addToUint64Vec = exports.addToAmountRecoveryReqVec = exports.addToRangeProofVec = exports.scalarToPubKey = exports.pointToPublicKey = exports.getPublicKeyPoint = exports.genRandomPublicKey = exports.calcNonce = exports.calcPrivSpendingKey = exports.serializePoint = exports.pointToStr = exports.pointFromScalar = exports.isValidPoint = exports.arePointEqual = exports.genRandomPoint = exports.genBasePoint = exports.deserializePoint = exports.serializeOutPoint = exports.genOutPoint = exports.deserializeOutPoint = exports.getValueAsCStr = exports.toHex = exports.runGc = exports.hexToMallocedBuf = exports.freeObj = exports.serializeKeyId = exports.deserializeKeyId = exports.calcKeyId = exports.serializeDpk = void 0; exports.castToCTxIn = exports.asString = exports.getTxOutMinStake = exports.getTxOutOutputType = exports.getTxOutTokenId = exports.getTxOutMemo = exports.getTxOutAmount = exports.getTxOutDestination = exports.buildTxOut = exports.getTxInRbf = exports.getTxInStakedCommitment = exports.getTxInOutPoint = exports.getTxInTokenId = exports.getTxInSpendingKey = exports.getTxInGamma = exports.getTxInAmount = exports.buildTxIn = exports.fromTxKeyToViewKey = exports.fromTxKeyToSpendingKey = exports.serializeTokenId = exports.getTokenIdToken = exports.getTokenIdSubid = exports.genDefaultTokenId = exports.genTokenIdWithSubid = exports.genTokenId = exports.deserializeTokenId = exports.serializeSubAddrId = exports.genSubAddrId = exports.deserializeSubAddrId = exports.serializeSubAddr = exports.dpkToSubAddr = exports.deserializeSubAddr = exports.subAddrToDpk = exports.deriveSubAddress = exports.verifyMsgSig = exports.signMessage = exports.serializeSignature = exports.deserializeSignature = exports.serializeScript = exports.deserializeScript = exports.serializeScalar = exports.scalarToUint64 = exports.areScalarEqual = exports.genScalar = exports.genRandomScalar = exports.deserializeScalar = exports.verifyRangeProofs = exports.serializeRangeProof = exports.recoverAmount = exports.getRangeProof_tau_x = void 0; exports.calcViewTag = exports.castToUint8_tPtr = exports.castToTxOut = exports.castToTxIn = exports.castToTokenId = exports.castToSubAddrId = exports.castToSubAddr = exports.castToSignature = exports.castToScript = exports.castToScalar = exports.castToRangeProof = exports.castToPubKey = exports.castToPoint = exports.castToOutPoint = exports.castToKeyId = exports.castToDpk = exports.castToCTxOut = void 0; const node_assert_1 = __importDefault(require("node:assert")); const blsct = require('../build/Release/blsct.node'); if (!blsct._initialized) { blsct.init(); blsct._initialized = true; } exports.CTX_ID_SIZE = blsct.CTX_ID_SIZE; exports.POINT_SIZE = blsct.POINT_SIZE; exports.SCRIPT_SIZE = blsct.SCRIPT_SIZE; exports.BLSCT_IN_AMOUNT_ERROR = blsct.BLSCT_IN_AMOUNT_ERROR; exports.BLSCT_OUT_AMOUNT_ERROR = blsct.BLSCT_OUT_AMOUNT_ERROR; var BlsctChain; (function (BlsctChain) { BlsctChain[BlsctChain["Mainnet"] = 0] = "Mainnet"; BlsctChain[BlsctChain["Testnet"] = 1] = "Testnet"; BlsctChain[BlsctChain["Signet"] = 2] = "Signet"; BlsctChain[BlsctChain["Regtest"] = 3] = "Regtest"; })(BlsctChain || (exports.BlsctChain = BlsctChain = {})); var TxOutputType; (function (TxOutputType) { TxOutputType[TxOutputType["Normal"] = 0] = "Normal"; TxOutputType[TxOutputType["StakedCommitment"] = 1] = "StakedCommitment"; })(TxOutputType || (exports.TxOutputType = TxOutputType = {})); // address const decodeAddress = (addrStr) => { return blsct.decode_address(addrStr); }; exports.decodeAddress = decodeAddress; const encodeAddress = (dpk, encoding) => { return blsct.encode_address(dpk, encoding); }; exports.encodeAddress = encodeAddress; exports.Bech32 = blsct.Bech32; exports.Bech32M = blsct.Bech32M; // chain const getChain = () => { return blsct.get_blsct_chain(); }; exports.getChain = getChain; const setChain = (chain) => { blsct.set_blsct_chain(chain); }; exports.setChain = setChain; // child key const fromSeedToChildKey = (seed) => { return blsct.from_seed_to_child_key(seed); }; exports.fromSeedToChildKey = fromSeedToChildKey; const fromChildKeyToBlindingKey = (childKey) => { return blsct.from_child_key_to_blinding_key(childKey); }; exports.fromChildKeyToBlindingKey = fromChildKeyToBlindingKey; const fromChildKeyToTokenKey = (childKey) => { return blsct.from_child_key_to_token_key(childKey); }; exports.fromChildKeyToTokenKey = fromChildKeyToTokenKey; const fromChildKeyToTxKey = (childKey) => { return blsct.from_child_key_to_tx_key(childKey); }; exports.fromChildKeyToTxKey = fromChildKeyToTxKey; // ctx const addToTxInVec = (vec, txIn) => { return blsct.add_to_tx_in_vec(vec, txIn); }; exports.addToTxInVec = addToTxInVec; const addToTxOutVec = (vec, txOut) => { return blsct.add_to_tx_out_vec(vec, txOut); }; exports.addToTxOutVec = addToTxOutVec; const buildCTx = (txIns, txOuts) => { return blsct.build_ctx(txIns, txOuts); }; exports.buildCTx = buildCTx; const createTxInVec = () => { return blsct.create_tx_in_vec(); }; exports.createTxInVec = createTxInVec; const createTxOutVec = () => { return blsct.create_tx_out_vec(); }; exports.createTxOutVec = createTxOutVec; const deleteTxInVec = (txInVec) => { return blsct.delete_tx_in_vec(txInVec); }; exports.deleteTxInVec = deleteTxInVec; const deleteTxOutVec = (txOutVec) => { return blsct.delete_tx_out_vec(txOutVec); }; exports.deleteTxOutVec = deleteTxOutVec; const deleteCTx = (ctx) => { return blsct.delete_ctx(ctx); }; exports.deleteCTx = deleteCTx; const getCTxId = (ctx) => { return blsct.get_ctx_id(ctx); }; exports.getCTxId = getCTxId; const getCTxIns = (ctx) => { return blsct.get_ctx_ins(ctx); }; exports.getCTxIns = getCTxIns; const getCTxInAt = (ctxIns, i) => { return blsct.get_ctx_in_at(ctxIns, i); }; exports.getCTxInAt = getCTxInAt; const getCTxInsSize = (ctxIns) => { return blsct.get_ctx_ins_size(ctxIns); }; exports.getCTxInsSize = getCTxInsSize; const getCTxOuts = (ctx) => { return blsct.get_ctx_outs(ctx); }; exports.getCTxOuts = getCTxOuts; const getCTxOutAt = (ctxOuts, i) => { return blsct.get_ctx_out_at(ctxOuts, i); }; exports.getCTxOutAt = getCTxOutAt; const getCTxOutsSize = (ctxOuts) => { return blsct.get_ctx_outs_size(ctxOuts); }; exports.getCTxOutsSize = getCTxOutsSize; // ctx id const serializeCTxId = (ctxId) => { return blsct.serialize_ctx_id(ctxId); }; exports.serializeCTxId = serializeCTxId; // ctx in const getCTxInPrevOutHash = (obj) => { return blsct.get_ctx_in_prev_out_hash(obj); }; exports.getCTxInPrevOutHash = getCTxInPrevOutHash; const getCTxInPrevOutN = (obj) => { return blsct.get_ctx_in_prev_out_n(obj); }; exports.getCTxInPrevOutN = getCTxInPrevOutN; const getCTxInScriptSig = (obj) => { return blsct.get_ctx_in_script_sig(obj); }; exports.getCTxInScriptSig = getCTxInScriptSig; const getCTxInSequence = (obj) => { return blsct.get_ctx_in_sequence(obj); }; exports.getCTxInSequence = getCTxInSequence; const getCTxInScriptWitness = (obj) => { return blsct.get_ctx_in_script_witness(obj); }; exports.getCTxInScriptWitness = getCTxInScriptWitness; // ctx out const getCTxOutValue = (obj) => { return blsct.get_ctx_out_value(obj); }; exports.getCTxOutValue = getCTxOutValue; const getCTxOutScriptPubkey = (obj) => { return blsct.get_ctx_out_script_pub_key(obj); }; exports.getCTxOutScriptPubkey = getCTxOutScriptPubkey; const getCTxOutTokenId = (obj) => { return blsct.get_ctx_out_token_id(obj); }; exports.getCTxOutTokenId = getCTxOutTokenId; const getCTxOutVectorPredicate = (obj) => { return blsct.get_ctx_out_vector_predicate(obj); }; exports.getCTxOutVectorPredicate = getCTxOutVectorPredicate; // ctx out blsct data const getCTxOutBlindingKey = (obj) => { return blsct.get_ctx_out_blinding_key(obj); }; exports.getCTxOutBlindingKey = getCTxOutBlindingKey; const getCTxOutEphemeralKey = (obj) => { return blsct.get_ctx_out_ephemeral_key(obj); }; exports.getCTxOutEphemeralKey = getCTxOutEphemeralKey; const getCTxOutSpendingKey = (obj) => { return blsct.get_ctx_out_spending_key(obj); }; exports.getCTxOutSpendingKey = getCTxOutSpendingKey; const getCTxOutRangeProof = (obj) => { return blsct.get_ctx_out_range_proof(obj); }; exports.getCTxOutRangeProof = getCTxOutRangeProof; const getCTxOutViewTag = (obj) => { return blsct.get_ctx_out_view_tag(obj); }; exports.getCTxOutViewTag = getCTxOutViewTag; // double public key const deserializeDpk = (hex) => { return blsct.deserialize_dpk(hex); }; exports.deserializeDpk = deserializeDpk; const genDoublePubKey = (pk1, pk2) => { return blsct.gen_double_pub_key(pk1, pk2); }; exports.genDoublePubKey = genDoublePubKey; const genDpkWithKeysAcctAddr = (viewKey, spendingPubKey, account, address) => { return blsct.gen_dpk_with_keys_acct_addr(viewKey, spendingPubKey, account, address); }; exports.genDpkWithKeysAcctAddr = genDpkWithKeysAcctAddr; const serializeDpk = (dpk) => { return blsct.serialize_dpk(dpk); }; exports.serializeDpk = serializeDpk; // hash id const calcKeyId = (blindingPubKey, spendingPubKey, viewKey) => { return blsct.calc_key_id(blindingPubKey, spendingPubKey, viewKey); }; exports.calcKeyId = calcKeyId; const deserializeKeyId = (hex) => { return blsct.deserialize_key_id(hex); }; exports.deserializeKeyId = deserializeKeyId; const serializeKeyId = (hashId) => { return blsct.serialize_key_id(hashId); }; exports.serializeKeyId = serializeKeyId; // misc const freeObj = (obj) => { if (obj !== null && obj !== undefined) { blsct.free_obj(obj); } }; exports.freeObj = freeObj; const hexToMallocedBuf = (hex) => { return blsct.hex_to_malloced_buf(hex); }; exports.hexToMallocedBuf = hexToMallocedBuf; const runGc = async () => { if (typeof global.gc === 'function') { ; global.gc(); await new Promise(r => setImmediate(r)); } else { console.warn('Garbage collector is not exposed. Run Node.js with --expose-gc to expose it.'); } }; exports.runGc = runGc; const toHex = (buf, size) => { return blsct.buf_to_malloced_hex_c_str(buf, size); }; exports.toHex = toHex; const getValueAsCStr = (rv) => { return blsct.cast_to_const_char_ptr(rv.value); }; exports.getValueAsCStr = getValueAsCStr; // out point const deserializeOutPoint = (hex) => { return blsct.deserialize_out_point(hex); }; exports.deserializeOutPoint = deserializeOutPoint; const genOutPoint = (serCtxId, outIndex) => { return blsct.gen_out_point(serCtxId, outIndex); }; exports.genOutPoint = genOutPoint; const serializeOutPoint = (outPoint) => { return blsct.serialize_out_point(outPoint); }; exports.serializeOutPoint = serializeOutPoint; // point const deserializePoint = (hex) => { return blsct.deserialize_point(hex); }; exports.deserializePoint = deserializePoint; const genBasePoint = () => { return blsct.gen_base_point(); }; exports.genBasePoint = genBasePoint; const genRandomPoint = () => { return blsct.gen_random_point(); }; exports.genRandomPoint = genRandomPoint; const arePointEqual = (a, b) => { return blsct.are_point_equal(a, b) !== 0; }; exports.arePointEqual = arePointEqual; const isValidPoint = (point) => { return blsct.is_valid_point(point) !== 0; }; exports.isValidPoint = isValidPoint; const pointFromScalar = (scalar) => { return blsct.point_from_scalar(scalar); }; exports.pointFromScalar = pointFromScalar; const pointToStr = (point) => { return blsct.point_to_str(point); }; exports.pointToStr = pointToStr; const serializePoint = (point) => { return blsct.serialize_point(point); }; exports.serializePoint = serializePoint; // priv spending key const calcPrivSpendingKey = (blindingPubKey, viewKey, spendingKey, account, address) => { return blsct.calc_priv_spending_key(blindingPubKey, viewKey, spendingKey, account, address); }; exports.calcPrivSpendingKey = calcPrivSpendingKey; // public key const calcNonce = (blindingPubKey, viewKey) => { return blsct.calc_nonce(blindingPubKey, viewKey); }; exports.calcNonce = calcNonce; const genRandomPublicKey = () => { return blsct.gen_random_public_key(); }; exports.genRandomPublicKey = genRandomPublicKey; const getPublicKeyPoint = (obj) => { return blsct.get_public_key_point(obj); }; exports.getPublicKeyPoint = getPublicKeyPoint; const pointToPublicKey = (point) => { return blsct.point_to_public_key(point); }; exports.pointToPublicKey = pointToPublicKey; const scalarToPubKey = (scalar) => { return blsct.scalar_to_pub_key(scalar); }; exports.scalarToPubKey = scalarToPubKey; // range proof const addToRangeProofVec = (rangeProofs, rangeProof, rangeProofSize) => { blsct.add_to_range_proof_vec(rangeProofs, rangeProof, rangeProofSize); }; exports.addToRangeProofVec = addToRangeProofVec; const addToAmountRecoveryReqVec = (reqs, req) => { blsct.add_to_amount_recovery_req_vec(reqs, req); }; exports.addToAmountRecoveryReqVec = addToAmountRecoveryReqVec; const addToUint64Vec = (vec, n) => { blsct.add_to_uint64_vec(vec, n); }; exports.addToUint64Vec = addToUint64Vec; const buildRangeProof = (amounts, nonce, msg, token_id) => { return blsct.build_range_proof(amounts, nonce, msg, token_id); }; exports.buildRangeProof = buildRangeProof; const createAmountRecoveryReqVec = () => { return blsct.create_amount_recovery_req_vec(); }; exports.createAmountRecoveryReqVec = createAmountRecoveryReqVec; const createRangeProofVec = () => { return blsct.create_range_proof_vec(); }; exports.createRangeProofVec = createRangeProofVec; const createUint64Vec = () => { return blsct.create_uint64_vec(); }; exports.createUint64Vec = createUint64Vec; const deserializeRangeProof = (hex) => { (0, node_assert_1.default)(hex.length % 2 === 0); const objSize = hex.length / 2; return blsct.deserialize_range_proof(hex, objSize); }; exports.deserializeRangeProof = deserializeRangeProof; const deleteAmountRecoveryReqVec = (reqs) => { blsct.delete_amount_recovery_req_vec(reqs); }; exports.deleteAmountRecoveryReqVec = deleteAmountRecoveryReqVec; const deleteAmountsRetVal = (rv) => { blsct.delete_amounts_ret_val(rv); }; exports.deleteAmountsRetVal = deleteAmountsRetVal; const deleteRangeProofVec = (rangeProofs) => { blsct.delete_range_proof_vec(rangeProofs); }; exports.deleteRangeProofVec = deleteRangeProofVec; const deleteUint64Vec = (vec) => { blsct.delete_uint64_vec(vec); }; exports.deleteUint64Vec = deleteUint64Vec; const genAmountRecoveryReq = (rangeProof, rangeProofSize, nonce) => { return blsct.gen_amount_recovery_req(rangeProof, rangeProofSize, nonce); }; exports.genAmountRecoveryReq = genAmountRecoveryReq; const getAmountRecoveryResultAmount = (req, i) => { return blsct.get_amount_recovery_result_amount(req, i); }; exports.getAmountRecoveryResultAmount = getAmountRecoveryResultAmount; const getAmountRecoveryResultIsSucc = (req, i) => { return blsct.get_amount_recovery_result_is_succ(req, i); }; exports.getAmountRecoveryResultIsSucc = getAmountRecoveryResultIsSucc; const getAmountRecoveryResultMsg = (req, i) => { return blsct.get_amount_recovery_result_msg(req, i); }; exports.getAmountRecoveryResultMsg = getAmountRecoveryResultMsg; const getAmountRecoveryResultSize = (resVec) => { return blsct.get_amount_recovery_result_size(resVec); }; exports.getAmountRecoveryResultSize = getAmountRecoveryResultSize; const getRangeProof_A = (rangeProof, rangeProofSize) => { return blsct.get_range_proof_A(rangeProof, rangeProofSize); }; exports.getRangeProof_A = getRangeProof_A; const getRangeProof_alpha_hat = (rangeProof, rangeProofSize) => { return blsct.get_range_proof_alpha_hat(rangeProof, rangeProofSize); }; exports.getRangeProof_alpha_hat = getRangeProof_alpha_hat; const getRangeProof_A_wip = (rangeProof, rangeProofSize) => { return blsct.get_range_proof_A_wip(rangeProof, rangeProofSize); }; exports.getRangeProof_A_wip = getRangeProof_A_wip; const getRangeProof_B = (rangeProof, rangeProofSize) => { return blsct.get_range_proof_B(rangeProof, rangeProofSize); }; exports.getRangeProof_B = getRangeProof_B; const getRangeProof_delta_prime = (rangeProof, rangeProofSize) => { return blsct.get_range_proof_delta_prime(rangeProof, rangeProofSize); }; exports.getRangeProof_delta_prime = getRangeProof_delta_prime; const getRangeProof_r_prime = (rangeProof, rangeProofSize) => { return blsct.get_range_proof_r_prime(rangeProof, rangeProofSize); }; exports.getRangeProof_r_prime = getRangeProof_r_prime; const getRangeProof_s_prime = (rangeProof, rangeProofSize) => { return blsct.get_range_proof_s_prime(rangeProof, rangeProofSize); }; exports.getRangeProof_s_prime = getRangeProof_s_prime; const getRangeProof_tau_x = (rangeProof, rangeProofSize) => { return blsct.get_range_proof_tau_x(rangeProof, rangeProofSize); }; exports.getRangeProof_tau_x = getRangeProof_tau_x; const recoverAmount = (vec) => { return blsct.recover_amount(vec); }; exports.recoverAmount = recoverAmount; const serializeRangeProof = (rangeProof, rangeProofSize) => { return blsct.serialize_range_proof(rangeProof, rangeProofSize); }; exports.serializeRangeProof = serializeRangeProof; const verifyRangeProofs = (rangeProofs) => { return blsct.verify_range_proofs(rangeProofs); }; exports.verifyRangeProofs = verifyRangeProofs; // scalar const deserializeScalar = (hex) => { return blsct.deserialize_scalar(hex); }; exports.deserializeScalar = deserializeScalar; const genRandomScalar = () => { return blsct.gen_random_scalar(); }; exports.genRandomScalar = genRandomScalar; const genScalar = (value) => { return blsct.gen_scalar(value); }; exports.genScalar = genScalar; const areScalarEqual = (a, b) => { return blsct.are_scalar_equal(a, b) !== 0; }; exports.areScalarEqual = areScalarEqual; const scalarToUint64 = (scalar) => { return blsct.scalar_to_uint64(scalar); }; exports.scalarToUint64 = scalarToUint64; const serializeScalar = (scalar) => { return blsct.serialize_scalar(scalar); }; exports.serializeScalar = serializeScalar; // script const deserializeScript = (hex) => { return blsct.deserialize_script(hex); }; exports.deserializeScript = deserializeScript; const serializeScript = (script) => { return blsct.serialize_script(script); }; exports.serializeScript = serializeScript; // signature const deserializeSignature = (hex) => { return blsct.deserialize_signature(hex); }; exports.deserializeSignature = deserializeSignature; const serializeSignature = (script) => { return blsct.serialize_signature(script); }; exports.serializeSignature = serializeSignature; const signMessage = (privKey, msg) => { return blsct.sign_message(privKey, msg); }; exports.signMessage = signMessage; const verifyMsgSig = (pubKey, msg, signature) => { return blsct.verify_msg_sig(pubKey, msg, signature); }; exports.verifyMsgSig = verifyMsgSig; // sub addr const deriveSubAddress = (viewKey, spendingPubKey, subAddrId) => { return blsct.derive_sub_address(viewKey, spendingPubKey, subAddrId); }; exports.deriveSubAddress = deriveSubAddress; const subAddrToDpk = (subAddr) => { return blsct.sub_addr_to_dpk(subAddr); }; exports.subAddrToDpk = subAddrToDpk; const deserializeSubAddr = (hex) => { return blsct.deserialize_sub_addr(hex); }; exports.deserializeSubAddr = deserializeSubAddr; const dpkToSubAddr = (dpk) => { return blsct.dpk_to_sub_addr(dpk); }; exports.dpkToSubAddr = dpkToSubAddr; const serializeSubAddr = (subAddrId) => { return blsct.serialize_sub_addr(subAddrId); }; exports.serializeSubAddr = serializeSubAddr; // sub addr id const deserializeSubAddrId = (hex) => { return blsct.deserialize_sub_addr_id(hex); }; exports.deserializeSubAddrId = deserializeSubAddrId; const genSubAddrId = (account, address) => { return blsct.gen_sub_addr_id(account, address); }; exports.genSubAddrId = genSubAddrId; const serializeSubAddrId = (subAddrId) => { return blsct.serialize_sub_addr_id(subAddrId); }; exports.serializeSubAddrId = serializeSubAddrId; // token id const deserializeTokenId = (hex) => { return blsct.deserialize_token_id(hex); }; exports.deserializeTokenId = deserializeTokenId; const genTokenId = (token) => { return blsct.gen_token_id(token); }; exports.genTokenId = genTokenId; const genTokenIdWithSubid = (token, subid) => { return blsct.gen_token_id_with_token_and_subid(token, subid); }; exports.genTokenIdWithSubid = genTokenIdWithSubid; const genDefaultTokenId = () => { return blsct.gen_default_token_id(); }; exports.genDefaultTokenId = genDefaultTokenId; const getTokenIdSubid = (tokenId) => { return blsct.get_token_id_subid(tokenId); }; exports.getTokenIdSubid = getTokenIdSubid; const getTokenIdToken = (tokenId) => { return blsct.get_token_id_token(tokenId); }; exports.getTokenIdToken = getTokenIdToken; const serializeTokenId = (tokenId) => { return blsct.serialize_token_id(tokenId); }; exports.serializeTokenId = serializeTokenId; // tx key const fromTxKeyToSpendingKey = (txKey) => { return blsct.from_tx_key_to_spending_key(txKey); }; exports.fromTxKeyToSpendingKey = fromTxKeyToSpendingKey; const fromTxKeyToViewKey = (txKey) => { return blsct.from_tx_key_to_view_key(txKey); }; exports.fromTxKeyToViewKey = fromTxKeyToViewKey; // tx in const buildTxIn = (amount, gamma, spendingKey, tokenId, outPoint, isStakedCommitment, isRbf) => { return blsct.build_tx_in(amount, gamma, spendingKey, tokenId, outPoint, isStakedCommitment, isRbf); }; exports.buildTxIn = buildTxIn; const getTxInAmount = (obj) => { return blsct.get_tx_in_amount(obj); }; exports.getTxInAmount = getTxInAmount; const getTxInGamma = (obj) => { return blsct.get_tx_in_gamma(obj); }; exports.getTxInGamma = getTxInGamma; const getTxInSpendingKey = (obj) => { return blsct.get_tx_in_spending_key(obj); }; exports.getTxInSpendingKey = getTxInSpendingKey; const getTxInTokenId = (obj) => { return blsct.get_tx_in_token_id(obj); }; exports.getTxInTokenId = getTxInTokenId; const getTxInOutPoint = (obj) => { return blsct.get_tx_in_out_point(obj); }; exports.getTxInOutPoint = getTxInOutPoint; const getTxInStakedCommitment = (obj) => { return blsct.get_tx_in_staked_commitment(obj); }; exports.getTxInStakedCommitment = getTxInStakedCommitment; const getTxInRbf = (obj) => { return blsct.get_tx_in_rbf(obj); }; exports.getTxInRbf = getTxInRbf; // tx out const buildTxOut = (subAddr, amount, memo, tokenId, outputType, minStake) => { let blsctOutputType; switch (outputType) { case TxOutputType.Normal: blsctOutputType = blsct.Normal; break; case TxOutputType.StakedCommitment: blsctOutputType = blsct.StakedCommitment; break; default: throw new Error(`Unknown output type: ${outputType}`); } return blsct.build_tx_out(subAddr, amount, memo, tokenId, blsctOutputType, minStake); }; exports.buildTxOut = buildTxOut; const getTxOutDestination = (obj) => { return blsct.get_tx_out_destination(obj); }; exports.getTxOutDestination = getTxOutDestination; const getTxOutAmount = (obj) => { return blsct.get_tx_out_amount(obj); }; exports.getTxOutAmount = getTxOutAmount; const getTxOutMemo = (obj) => { return blsct.get_tx_out_memo(obj); }; exports.getTxOutMemo = getTxOutMemo; const getTxOutTokenId = (obj) => { return blsct.get_tx_out_token_id(obj); }; exports.getTxOutTokenId = getTxOutTokenId; const getTxOutOutputType = (obj) => { const x = blsct.get_tx_out_output_type(obj); switch (x) { case blsct.Normal: return TxOutputType.Normal; case blsct.StakedCommitment: return TxOutputType.StakedCommitment; default: throw new Error(`Unknown TxOutputType ${x}`); } }; exports.getTxOutOutputType = getTxOutOutputType; const getTxOutMinStake = (obj) => { return blsct.get_tx_out_min_stake(obj); }; exports.getTxOutMinStake = getTxOutMinStake; // typecast const asString = (obj) => { return blsct.cast_to_const_char_ptr(obj); }; exports.asString = asString; const castToCTxIn = (obj) => { return blsct.cast_to_ctx_in(obj); }; exports.castToCTxIn = castToCTxIn; const castToCTxOut = (obj) => { return blsct.cast_to_ctx_out(obj); }; exports.castToCTxOut = castToCTxOut; const castToDpk = (obj) => { return blsct.cast_to_dpk(obj); }; exports.castToDpk = castToDpk; const castToKeyId = (obj) => { return blsct.cast_to_key_id(obj); }; exports.castToKeyId = castToKeyId; const castToOutPoint = (obj) => { return blsct.cast_to_out_point(obj); }; exports.castToOutPoint = castToOutPoint; const castToPoint = (obj) => { return blsct.cast_to_point(obj); }; exports.castToPoint = castToPoint; const castToPubKey = (obj) => { return blsct.cast_to_pub_key(obj); }; exports.castToPubKey = castToPubKey; const castToRangeProof = (obj) => { return blsct.cast_to_range_proof(obj); }; exports.castToRangeProof = castToRangeProof; const castToScalar = (obj) => { return blsct.cast_to_scalar(obj); }; exports.castToScalar = castToScalar; const castToScript = (obj) => { return blsct.cast_to_script(obj); }; exports.castToScript = castToScript; const castToSignature = (obj) => { return blsct.cast_to_signature(obj); }; exports.castToSignature = castToSignature; const castToSubAddr = (obj) => { return blsct.cast_to_sub_addr(obj); }; exports.castToSubAddr = castToSubAddr; const castToSubAddrId = (obj) => { return blsct.cast_to_sub_addr_id(obj); }; exports.castToSubAddrId = castToSubAddrId; const castToTokenId = (obj) => { return blsct.cast_to_token_id(obj); }; exports.castToTokenId = castToTokenId; const castToTxIn = (obj) => { return blsct.cast_to_tx_in(obj); }; exports.castToTxIn = castToTxIn; const castToTxOut = (obj) => { return blsct.cast_to_tx_out(obj); }; exports.castToTxOut = castToTxOut; const castToUint8_tPtr = (obj) => { return blsct.cast_to_uint8_t_ptr(obj); }; exports.castToUint8_tPtr = castToUint8_tPtr; // view tag const calcViewTag = (blindingPubKey, viewKey) => { return blsct.calc_view_tag(blindingPubKey, viewKey); }; exports.calcViewTag = calcViewTag;