@harmoniclabs/buildooor
Version:
Cardano transaction builder in typescript
55 lines (54 loc) • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cloneITxBuildMint = exports.normalizeITxBuildMint = void 0;
var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
var CanBeData_1 = require("../utils/CanBeData.js");
var obj_utils_1 = require("@harmoniclabs/obj-utils");
;
function normalizeITxBuildMint(_a) {
var value = _a.value, script = _a.script;
if (value instanceof cardano_ledger_ts_1.Value) {
if (value.map.length !== 2)
throw new Error("invalid mint value, only single policy allowed");
value = value.map[1];
}
if (!isNormalizedIValuePolicyEntry(value)) {
value = {
policy: new cardano_ledger_ts_1.Hash28(value.policy),
assets: value.assets.map(cardano_ledger_ts_1.normalizeIValueAsset)
};
}
if (!(0, obj_utils_1.isObject)(script) || !(0, CanBeData_1.canBeData)(script.redeemer))
throw new Error("invalid ITxBuildMint to normalize");
if ((0, cardano_ledger_ts_1.isIUTxO)(script.ref)) {
script = {
ref: new cardano_ledger_ts_1.UTxO(script.ref),
redeemer: (0, CanBeData_1.forceData)(script.redeemer)
};
}
else {
script = {
inline: script.inline.clone(),
redeemer: (0, CanBeData_1.forceData)(script.redeemer)
};
}
return {
value: value,
script: script
};
}
exports.normalizeITxBuildMint = normalizeITxBuildMint;
function isNormalizedIValuePolicyEntry(stuff) {
return (0, obj_utils_1.isObject)(stuff) && (stuff.policy instanceof cardano_ledger_ts_1.Hash28 &&
Array.isArray(stuff.assets) &&
stuff.assets.every(isIValueAssetBI));
}
function isIValueAssetBI(stuff) {
return (0, obj_utils_1.isObject)(stuff) && (stuff.name instanceof Uint8Array &&
typeof stuff.quantity === "bigint");
}
/** @deprecated use `normalizeITxBuildMint` instead */
function cloneITxBuildMint(mint) {
return normalizeITxBuildMint(mint);
}
exports.cloneITxBuildMint = cloneITxBuildMint;