UNPKG

@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
"use strict"; 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))); }));