UNPKG

@meshsdk/mesh-csl

Version:

Cardano Off-chain Code APIs built on cardano-serialization-lib

61 lines (60 loc) 3.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.v2ScriptToBech32 = exports.scriptHashToBech32 = exports.serializeBech32Address = exports.parsePlutusAddressToBech32 = exports.parsePlutusAddressObjToBech32 = exports.addrBech32ToObj = exports.addrBech32ToHex = void 0; const csl_1 = require("../../csl"); const scripts_1 = require("./scripts"); const addrBech32ToHex = (bech32) => { const hexAddress = csl_1.csl.Address.from_bech32(bech32).to_hex(); const cslAddress = csl_1.csl.Address.from_hex(hexAddress); const hex = csl_1.csl.PlutusData.from_address(cslAddress).to_hex(); return hex; }; exports.addrBech32ToHex = addrBech32ToHex; const addrBech32ToObj = (bech32) => { const hexAddress = csl_1.csl.Address.from_bech32(bech32).to_hex(); const cslAddress = csl_1.csl.Address.from_hex(hexAddress); const json = JSON.parse(csl_1.csl.PlutusData.from_address(cslAddress).to_json(1)); return json; }; exports.addrBech32ToObj = addrBech32ToObj; const parsePlutusAddressObjToBech32 = (plutusDataAddressObject, networkId = 0) => { const plutusDataPaymentKeyObject = plutusDataAddressObject.fields[0]; const plutusDataStakeKeyObject = plutusDataAddressObject.fields[1]; const cslPaymentKeyHash = plutusDataPaymentKeyObject.fields[0].bytes; // Take into account whether the hash is a PubKeyHash or ScriptHash const cslPaymentCredential = plutusDataPaymentKeyObject.constructor === 0 ? csl_1.csl.StakeCredential.from_keyhash(csl_1.csl.Ed25519KeyHash.from_hex(cslPaymentKeyHash)) : csl_1.csl.StakeCredential.from_scripthash(csl_1.csl.ScriptHash.from_hex(cslPaymentKeyHash)); let bech32Addr = ''; // Parsing address according to whether it has a stake key if (plutusDataStakeKeyObject.constructor === 0) { const cslStakeKeyHash = csl_1.csl.Ed25519KeyHash.from_hex(plutusDataStakeKeyObject.fields[0].fields[0].fields[0].bytes); const cslBaseAddress = csl_1.csl.BaseAddress.new(networkId, cslPaymentCredential, csl_1.csl.StakeCredential.from_keyhash(cslStakeKeyHash)); bech32Addr = cslBaseAddress.to_address().to_bech32(); } else { const cslEnterpriseAddress = csl_1.csl.EnterpriseAddress.new(networkId, cslPaymentCredential); bech32Addr = cslEnterpriseAddress.to_address().to_bech32(); } return bech32Addr; }; exports.parsePlutusAddressObjToBech32 = parsePlutusAddressObjToBech32; const parsePlutusAddressToBech32 = (plutusHex, networkId = 0) => { const cslPlutusDataAddress = csl_1.csl.PlutusData.from_hex(plutusHex); const plutusDataAddressObject = JSON.parse(cslPlutusDataAddress.to_json(csl_1.csl.PlutusDatumSchema.DetailedSchema)); return (0, exports.parsePlutusAddressObjToBech32)(plutusDataAddressObject, networkId); }; exports.parsePlutusAddressToBech32 = parsePlutusAddressToBech32; const serializeBech32Address = (bech32Addr) => { const serializedAddress = csl_1.csl.serialize_bech32_address(bech32Addr); return { pubKeyHash: serializedAddress.get_pub_key_hash(), scriptHash: serializedAddress.get_script_hash(), stakeCredential: serializedAddress.get_stake_key_hash(), }; }; exports.serializeBech32Address = serializeBech32Address; const scriptHashToBech32 = (scriptHash, stakeCredential, networkId = 0) => csl_1.csl.script_to_address(networkId, scriptHash, stakeCredential); exports.scriptHashToBech32 = scriptHashToBech32; const v2ScriptToBech32 = (scriptCbor, stakeCredential, networkId = 0) => (0, exports.scriptHashToBech32)((0, scripts_1.getV2ScriptHash)(scriptCbor), stakeCredential, networkId); exports.v2ScriptToBech32 = v2ScriptToBech32;