@meshsdk/mesh-csl
Version:
Cardano Off-chain Code APIs built on cardano-serialization-lib
89 lines (88 loc) • 4.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.value = exports.tuple = exports.dict = exports.assocMap = exports.posixTime = exports.pubKeyHash = exports.paymentPubKeyHash = exports.txOutRef = exports.assetClass = exports.scriptAddress = exports.pubKeyAddress = exports.maybeStakingHash = exports.tokenName = exports.currencySymbol = exports.list = exports.integer = exports.builtinByteString = exports.bool = exports.conStr2 = exports.conStr1 = exports.conStr0 = exports.conStr = void 0;
const conStr = (constructor, fields) => ({
constructor,
fields,
});
exports.conStr = conStr;
const conStr0 = (fields) => (0, exports.conStr)(0, fields);
exports.conStr0 = conStr0;
const conStr1 = (fields) => (0, exports.conStr)(1, fields);
exports.conStr1 = conStr1;
const conStr2 = (fields) => (0, exports.conStr)(2, fields);
exports.conStr2 = conStr2;
const bool = (b) => (b ? (0, exports.conStr1)([]) : (0, exports.conStr0)([]));
exports.bool = bool;
const builtinByteString = (bytes) => ({ bytes });
exports.builtinByteString = builtinByteString;
const integer = (int) => ({ int });
exports.integer = integer;
const list = (pList) => ({ list: pList });
exports.list = list;
const currencySymbol = (bytes) => (0, exports.builtinByteString)(bytes);
exports.currencySymbol = currencySymbol;
const tokenName = (bytes) => (0, exports.builtinByteString)(bytes);
exports.tokenName = tokenName;
const maybeStakingHash = (stakeCredential) => {
if (stakeCredential === '') {
return (0, exports.conStr1)([]);
}
return (0, exports.conStr0)([
(0, exports.conStr0)([(0, exports.conStr0)([(0, exports.builtinByteString)(stakeCredential)])]),
]);
};
exports.maybeStakingHash = maybeStakingHash;
const pubKeyAddress = (bytes, stakeCredential) => (0, exports.conStr0)([(0, exports.conStr0)([(0, exports.builtinByteString)(bytes)]), (0, exports.maybeStakingHash)(stakeCredential || '')]);
exports.pubKeyAddress = pubKeyAddress;
const scriptAddress = (bytes, stakeCredential) => (0, exports.conStr0)([(0, exports.conStr1)([(0, exports.builtinByteString)(bytes)]), (0, exports.maybeStakingHash)(stakeCredential || '')]);
exports.scriptAddress = scriptAddress;
const assetClass = (policyId, assetName) => (0, exports.conStr0)([(0, exports.currencySymbol)(policyId), (0, exports.tokenName)(assetName)]);
exports.assetClass = assetClass;
const txOutRef = (txHash, index) => (0, exports.conStr0)([(0, exports.conStr0)([(0, exports.builtinByteString)(txHash)]), (0, exports.integer)(index)]);
exports.txOutRef = txOutRef;
const paymentPubKeyHash = (bytes) => (0, exports.builtinByteString)(bytes);
exports.paymentPubKeyHash = paymentPubKeyHash;
const pubKeyHash = (bytes) => (0, exports.builtinByteString)(bytes);
exports.pubKeyHash = pubKeyHash;
const posixTime = (int) => ({ int });
exports.posixTime = posixTime;
const assocMap = (itemsMap) => ({
map: itemsMap.map(([k, v]) => ({ k, v })),
});
exports.assocMap = assocMap;
const dict = (itemsMap) => ({
map: itemsMap.map(([k, v]) => ({ k, v })),
});
exports.dict = dict;
const tuple = (key, value) => (0, exports.conStr0)([key, value]);
exports.tuple = tuple;
const value = (assets) => {
const valueMapToParse = [];
const valueMap = {};
assets.forEach((asset) => {
const sanitizedName = asset.unit.replace('lovelace', '');
const policy = sanitizedName.slice(0, 56) || '';
const token = sanitizedName.slice(56) || '';
if (!valueMap[policy]) {
valueMap[policy] = {};
}
if (!valueMap[policy][token]) {
valueMap[policy][token] = Number(asset.quantity);
}
else {
valueMap[policy][token] += Number(asset.quantity);
}
});
Object.keys(valueMap).forEach((policy) => {
const policyByte = (0, exports.currencySymbol)(policy);
const tokens = Object.keys(valueMap[policy]).map((name) => [
(0, exports.tokenName)(name),
(0, exports.integer)(valueMap[policy][name]),
]);
const policyMap = (0, exports.assocMap)(tokens);
valueMapToParse.push([policyByte, policyMap]);
});
return (0, exports.assocMap)(valueMapToParse);
};
exports.value = value;