@harmoniclabs/plu-ts-onchain
Version:
An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript
28 lines (27 loc) • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pgreaterEqInt = exports.pgreaterInt = exports.plessEqInt = exports.plessInt = exports.peqInt = void 0;
var obj_utils_1 = require("@harmoniclabs/obj-utils");
var Term_1 = require("../../../Term/index.js");
var type_system_1 = require("../../../type_system/index.js");
var papp_1 = require("../../papp.js");
var TermBool_1 = require("../../std/UtilityTerms/TermBool.js");
var _pflipIR_1 = require("../_pflipIR.js");
var addApplications_1 = require("../addApplications.js");
var IRNative_1 = require("../../../../IR/IRNodes/IRNative/index.js");
var IRApp_1 = require("../../../../IR/IRNodes/IRApp.js");
var IRHoisted_1 = require("../../../../IR/IRNodes/IRHoisted.js");
function intBinOpToBool(builtin) {
var op = new Term_1.Term((0, type_system_1.fn)([type_system_1.int, type_system_1.int], type_system_1.bool), function (_dbn) { return builtin; });
return (0, obj_utils_1.defineReadOnlyProperty)(op, "$", function (fstIn) {
var oneIn = (0, papp_1.papp)(op, fstIn);
return (0, obj_utils_1.defineReadOnlyProperty)(oneIn, "$", function (sndIn) {
return (0, TermBool_1.addPBoolMethods)((0, papp_1.papp)(oneIn, sndIn));
});
});
}
exports.peqInt = intBinOpToBool(IRNative_1.IRNative.equalsInteger);
exports.plessInt = intBinOpToBool(IRNative_1.IRNative.lessThanInteger);
exports.plessEqInt = intBinOpToBool(IRNative_1.IRNative.lessThanEqualInteger);
exports.pgreaterInt = (0, addApplications_1.addApplications)(new Term_1.Term((0, type_system_1.fn)([type_system_1.int, type_system_1.int], type_system_1.bool), function (cfg, _dbn) { return new IRHoisted_1.IRHoisted(new IRApp_1.IRApp(_pflipIR_1._pflipIR.clone(), exports.plessInt.toIR(cfg, 0))); }));
exports.pgreaterEqInt = (0, addApplications_1.addApplications)(new Term_1.Term((0, type_system_1.fn)([type_system_1.int, type_system_1.int], type_system_1.bool), function (cfg, _dbn) { return new IRHoisted_1.IRHoisted(new IRApp_1.IRApp(_pflipIR_1._pflipIR, exports.plessEqInt.toIR(cfg, 0))); }));