@meshsdk/mesh-csl
Version:
Cardano Off-chain Code APIs built on cardano-serialization-lib
61 lines (60 loc) • 3.67 kB
JavaScript
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;
;