@agoric/ertp
Version:
Electronic Rights Transfer Protocol (ERTP). A smart contract framework for exchanging electronic rights
33 lines (29 loc) • 591 B
JavaScript
// @ts-check
import {
keyEQ,
makeCopyBag,
fit,
M,
getCopyBagEntries,
bagIsSuperbag,
bagUnion,
bagDisjointSubtract,
} from '@agoric/store';
import '../types.js';
/** @type {CopyBagValue} */
const empty = makeCopyBag([]);
/**
* @type {CopyBagMathHelpers}
*/
export const copyBagMathHelpers = harden({
doCoerce: bag => {
fit(bag, M.bag(), 'bag of amount');
return bag;
},
doMakeEmpty: () => empty,
doIsEmpty: bag => getCopyBagEntries(bag).length === 0,
doIsGTE: bagIsSuperbag,
doIsEqual: keyEQ,
doAdd: bagUnion,
doSubtract: bagDisjointSubtract,
});