@agoric/ertp
Version:
Electronic Rights Transfer Protocol (ERTP). A smart contract framework for exchanging electronic rights
33 lines (29 loc) • 601 B
JavaScript
// @ts-check
import {
keyEQ,
makeCopySet,
fit,
M,
getCopySetKeys,
setIsSuperset,
setDisjointUnion,
setDisjointSubtract,
} from '@agoric/store';
import '../types.js';
/** @type {CopySetValue} */
const empty = makeCopySet([]);
/**
* @type {CopySetMathHelpers}
*/
export const copySetMathHelpers = harden({
doCoerce: set => {
fit(set, M.set(), 'set of amount');
return set;
},
doMakeEmpty: () => empty,
doIsEmpty: set => getCopySetKeys(set).length === 0,
doIsGTE: setIsSuperset,
doIsEqual: keyEQ,
doAdd: setDisjointUnion,
doSubtract: setDisjointSubtract,
});