UNPKG

@blockfrost/blockfrost-cardano-cli

Version:

Drop-in(ish) replacement for cardano-cli powered by Blockfrost

70 lines (69 loc) 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNetworkFromRewardAccount = exports.transformPoolUpdateCert = exports.transformPoolRelays = exports.bech32ToHex = exports.stripQuotes = exports.stringify = exports.stringToBigInt = void 0; const bech32_1 = require("bech32"); const safe_stable_stringify_1 = require("safe-stable-stringify"); const stringToBigInt = (value) => (value ? BigInt(value) : value); exports.stringToBigInt = stringToBigInt; const stringify = (obj) => { // safe-stable-stringify properly stringifies BigInt const s = safe_stable_stringify_1.default.configure({ deterministic: false }); // rely on the insertion order return s(obj, undefined, 4); }; exports.stringify = stringify; const stripQuotes = (str) => { if (typeof str === 'string' && str[0] === '"' && str[str.length - 1] === '"') { return str.slice(1, -1); } return str; }; exports.stripQuotes = stripQuotes; const bech32ToHex = (bech32Addr, stripPrefix = false) => { const decodedWords = bech32_1.bech32.decode(bech32Addr, 1000); const payload = bech32_1.bech32.fromWords(decodedWords.words); const keyHashHex = Buffer.from(payload) .toString('hex') .slice(stripPrefix ? 2 : 0); // first byte is prefix return keyHashHex; }; exports.bech32ToHex = bech32ToHex; const transformPoolRelays = (relays) => relays.map(r => r.dns ? { 'single host name': { port: r.port, dnsName: r.dns, }, } : { 'single host address': { IPv6: r.ipv6, port: r.port, IPv4: r.ipv4, }, }); exports.transformPoolRelays = transformPoolRelays; const transformPoolUpdateCert = (poolHex, cert) => { var _a, _b; return { publicKey: poolHex, cost: cert.fixed_cost, metadata: { hash: (_a = cert.metadata) === null || _a === void 0 ? void 0 : _a.hash, url: (_b = cert.metadata) === null || _b === void 0 ? void 0 : _b.url, }, vrf: cert.vrf_key, owners: cert.owners.map(o => (0, exports.bech32ToHex)(o, true)), pledge: (0, exports.stringToBigInt)(cert.pledge), rewardAccount: { network: (0, exports.getNetworkFromRewardAccount)(cert.reward_account), credential: { 'key hash': (0, exports.bech32ToHex)(cert.reward_account, true), }, }, margin: cert.margin_cost, relays: (0, exports.transformPoolRelays)(cert.relays), }; }; exports.transformPoolUpdateCert = transformPoolUpdateCert; const getNetworkFromRewardAccount = (rewardAccount) => rewardAccount.startsWith('stake_test1') ? 'Testnet' : 'Mainnet'; exports.getNetworkFromRewardAccount = getNetworkFromRewardAccount;