UNPKG

@harmoniclabs/plu-ts-onchain

Version:

An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript

612 lines (611 loc) 24.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.IRNative = void 0; var concatUint8Arr_1 = require("../../utils/concatUint8Arr.js"); var positiveIntAsBytes_1 = require("../../utils/positiveIntAsBytes.js"); var IRNativeTag_1 = require("./IRNativeTag.js"); var UPLCFlatUtils_1 = __importDefault(require("../../../utils/UPLCFlatUtils/index.js")); var isIRParentTerm_1 = require("../../utils/isIRParentTerm.js"); var IRHash_1 = require("../../IRHash.js"); var obj_utils_1 = require("@harmoniclabs/obj-utils"); var IRNodeKind_1 = require("../../IRNodeKind.js"); /** * we might not need all the hashes * * but one we get one for a specific tag is not worth it re calculate it */ var nativeHashesCache = {}; /** * `IRNative` ⊇ `Builtins` + `std::fn` **/ var IRNative = /** @class */ (function () { function IRNative(tag) { this._parent = undefined; this.tag = tag; } Object.defineProperty(IRNative, "kind", { get: function () { return IRNodeKind_1.IRNodeKind.Native; }, enumerable: false, configurable: true }); Object.defineProperty(IRNative.prototype, "kind", { get: function () { return IRNative.kind; }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "tag", { get: function () { return new Uint8Array([IRNative.kind]); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative.prototype, "hash", { get: function () { if (nativeHashesCache[this.tag] === undefined) { nativeHashesCache[this.tag] = (0, IRHash_1.hashIrData)((0, concatUint8Arr_1.concatUint8Arr)(IRNative.tag, (0, positiveIntAsBytes_1.positiveBigIntAsBytes)(UPLCFlatUtils_1.default.zigzagBigint(BigInt(this.tag))))); } return nativeHashesCache[this.tag]; }, enumerable: false, configurable: true }); IRNative.prototype.markHashAsInvalid = function () { throw new Error("IRNative should never be invalid; 'markHashAsInvalid' called"); }; IRNative.prototype.isHashPresent = function () { return true; }; Object.defineProperty(IRNative.prototype, "meta", { get: function () { if (!(0, obj_utils_1.isObject)(this._meta)) this._meta = {}; return this._meta; }, enumerable: false, configurable: true }); Object.defineProperty(IRNative.prototype, "parent", { get: function () { return this._parent; }, set: function (newParent) { if (!( // assert // new parent value is different than current this._parent !== newParent && ( // and the new parent value is valid newParent === undefined || (0, isIRParentTerm_1.isIRParentTerm)(newParent)))) return; this._parent = newParent; }, enumerable: false, configurable: true }); IRNative.prototype.clone = function () { return new IRNative(this.tag); }; IRNative.prototype.toJSON = function () { return this.toJson(); }; IRNative.prototype.toJson = function () { return { type: "IRNative", native: (0, IRNativeTag_1.nativeTagToString)(this.tag) }; }; Object.defineProperty(IRNative, "addInteger", { get: function () { return new IRNative(0 /* IRNativeTag.addInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "subtractInteger", { get: function () { return new IRNative(1 /* IRNativeTag.subtractInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "multiplyInteger", { get: function () { return new IRNative(2 /* IRNativeTag.multiplyInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "divideInteger", { get: function () { return new IRNative(3 /* IRNativeTag.divideInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "quotientInteger", { get: function () { return new IRNative(4 /* IRNativeTag.quotientInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "remainderInteger", { get: function () { return new IRNative(5 /* IRNativeTag.remainderInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "modInteger", { get: function () { return new IRNative(6 /* IRNativeTag.modInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "equalsInteger", { get: function () { return new IRNative(7 /* IRNativeTag.equalsInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "lessThanInteger", { get: function () { return new IRNative(8 /* IRNativeTag.lessThanInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "lessThanEqualInteger", { get: function () { return new IRNative(9 /* IRNativeTag.lessThanEqualInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "appendByteString", { get: function () { return new IRNative(10 /* IRNativeTag.appendByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "consByteString", { get: function () { return new IRNative(11 /* IRNativeTag.consByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "sliceByteString", { get: function () { return new IRNative(12 /* IRNativeTag.sliceByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "lengthOfByteString", { get: function () { return new IRNative(13 /* IRNativeTag.lengthOfByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "indexByteString", { get: function () { return new IRNative(14 /* IRNativeTag.indexByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "equalsByteString", { get: function () { return new IRNative(15 /* IRNativeTag.equalsByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "lessThanByteString", { get: function () { return new IRNative(16 /* IRNativeTag.lessThanByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "lessThanEqualsByteString", { get: function () { return new IRNative(17 /* IRNativeTag.lessThanEqualsByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "sha2_256", { get: function () { return new IRNative(18 /* IRNativeTag.sha2_256 */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "sha3_256", { get: function () { return new IRNative(19 /* IRNativeTag.sha3_256 */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "blake2b_256", { get: function () { return new IRNative(20 /* IRNativeTag.blake2b_256 */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "verifyEd25519Signature", { get: function () { return new IRNative(21 /* IRNativeTag.verifyEd25519Signature */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "appendString", { get: function () { return new IRNative(22 /* IRNativeTag.appendString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "equalsString", { get: function () { return new IRNative(23 /* IRNativeTag.equalsString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "encodeUtf8", { get: function () { return new IRNative(24 /* IRNativeTag.encodeUtf8 */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "decodeUtf8", { get: function () { return new IRNative(25 /* IRNativeTag.decodeUtf8 */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "strictIfThenElse", { get: function () { return new IRNative(26 /* IRNativeTag.strictIfThenElse */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "chooseUnit", { get: function () { return new IRNative(27 /* IRNativeTag.chooseUnit */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "trace", { get: function () { return new IRNative(28 /* IRNativeTag.trace */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "fstPair", { get: function () { return new IRNative(29 /* IRNativeTag.fstPair */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "sndPair", { get: function () { return new IRNative(30 /* IRNativeTag.sndPair */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "strictChooseList", { get: function () { return new IRNative(31 /* IRNativeTag.strictChooseList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "mkCons", { get: function () { return new IRNative(32 /* IRNativeTag.mkCons */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "headList", { get: function () { return new IRNative(33 /* IRNativeTag.headList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "tailList", { get: function () { return new IRNative(34 /* IRNativeTag.tailList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "nullList", { get: function () { return new IRNative(35 /* IRNativeTag.nullList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "chooseData", { get: function () { return new IRNative(36 /* IRNativeTag.chooseData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "constrData", { get: function () { return new IRNative(37 /* IRNativeTag.constrData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "mapData", { get: function () { return new IRNative(38 /* IRNativeTag.mapData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "listData", { get: function () { return new IRNative(39 /* IRNativeTag.listData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "iData", { get: function () { return new IRNative(40 /* IRNativeTag.iData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bData", { get: function () { return new IRNative(41 /* IRNativeTag.bData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "unConstrData", { get: function () { return new IRNative(42 /* IRNativeTag.unConstrData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "unMapData", { get: function () { return new IRNative(43 /* IRNativeTag.unMapData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "unListData", { get: function () { return new IRNative(44 /* IRNativeTag.unListData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "unIData", { get: function () { return new IRNative(45 /* IRNativeTag.unIData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "unBData", { get: function () { return new IRNative(46 /* IRNativeTag.unBData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "equalsData", { get: function () { return new IRNative(47 /* IRNativeTag.equalsData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "mkPairData", { get: function () { return new IRNative(48 /* IRNativeTag.mkPairData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "mkNilData", { get: function () { return new IRNative(49 /* IRNativeTag.mkNilData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "mkNilPairData", { get: function () { return new IRNative(50 /* IRNativeTag.mkNilPairData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "serialiseData", { get: function () { return new IRNative(51 /* IRNativeTag.serialiseData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "verifyEcdsaSecp256k1Signature", { get: function () { return new IRNative(52 /* IRNativeTag.verifyEcdsaSecp256k1Signature */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "verifySchnorrSecp256k1Signature", { get: function () { return new IRNative(53 /* IRNativeTag.verifySchnorrSecp256k1Signature */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G1_add", { get: function () { return new IRNative(54 /* IRNativeTag.bls12_381_G1_add */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G1_neg", { get: function () { return new IRNative(55 /* IRNativeTag.bls12_381_G1_neg */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G1_scalarMul", { get: function () { return new IRNative(56 /* IRNativeTag.bls12_381_G1_scalarMul */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G1_equal", { get: function () { return new IRNative(57 /* IRNativeTag.bls12_381_G1_equal */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G1_hashToGroup", { get: function () { return new IRNative(58 /* IRNativeTag.bls12_381_G1_hashToGroup */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G1_compress", { get: function () { return new IRNative(59 /* IRNativeTag.bls12_381_G1_compress */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G1_uncompress", { get: function () { return new IRNative(60 /* IRNativeTag.bls12_381_G1_uncompress */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G2_add", { get: function () { return new IRNative(61 /* IRNativeTag.bls12_381_G2_add */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G2_neg", { get: function () { return new IRNative(62 /* IRNativeTag.bls12_381_G2_neg */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G2_scalarMul", { get: function () { return new IRNative(63 /* IRNativeTag.bls12_381_G2_scalarMul */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G2_equal", { get: function () { return new IRNative(64 /* IRNativeTag.bls12_381_G2_equal */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G2_hashToGroup", { get: function () { return new IRNative(65 /* IRNativeTag.bls12_381_G2_hashToGroup */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G2_compress", { get: function () { return new IRNative(66 /* IRNativeTag.bls12_381_G2_compress */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_G2_uncompress", { get: function () { return new IRNative(67 /* IRNativeTag.bls12_381_G2_uncompress */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_millerLoop", { get: function () { return new IRNative(68 /* IRNativeTag.bls12_381_millerLoop */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_mulMlResult", { get: function () { return new IRNative(69 /* IRNativeTag.bls12_381_mulMlResult */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "bls12_381_finalVerify", { get: function () { return new IRNative(70 /* IRNativeTag.bls12_381_finalVerify */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "keccak_256", { get: function () { return new IRNative(71 /* IRNativeTag.keccak_256 */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "blake2b_224", { get: function () { return new IRNative(72 /* IRNativeTag.blake2b_224 */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "integerToByteString", { get: function () { return new IRNative(73 /* IRNativeTag.integerToByteString */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "byteStringToInteger", { get: function () { return new IRNative(74 /* IRNativeTag.byteStringToInteger */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "z_comb", { get: function () { return new IRNative(-1 /* IRNativeTag.z_comb */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_matchList", { get: function () { return new IRNative(-2 /* IRNativeTag._matchList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_recursiveList", { get: function () { return new IRNative(-3 /* IRNativeTag._recursiveList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_dropList", { get: function () { return new IRNative(-4 /* IRNativeTag._dropList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_indexList", { get: function () { return new IRNative(-5 /* IRNativeTag._indexList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_foldr", { get: function () { return new IRNative(-6 /* IRNativeTag._foldr */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_foldl", { get: function () { return new IRNative(-7 /* IRNativeTag._foldl */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_mkFindData", { get: function () { return new IRNative(-8 /* IRNativeTag._mkFindData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_length", { get: function () { return new IRNative(-9 /* IRNativeTag._length */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_some", { get: function () { return new IRNative(-10 /* IRNativeTag._some */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_every", { get: function () { return new IRNative(-11 /* IRNativeTag._every */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_mkFilter", { get: function () { return new IRNative(-12 /* IRNativeTag._mkFilter */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_id", { // static get _fstPair() { return new IRNative( IRNativeTag._fstPair ); } // static get _sndPair() { return new IRNative( IRNativeTag._sndPair ); } get: function () { return new IRNative(-15 /* IRNativeTag._id */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_not", { get: function () { return new IRNative(-16 /* IRNativeTag._not */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_strictAnd", { get: function () { return new IRNative(-17 /* IRNativeTag._strictAnd */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_and", { get: function () { return new IRNative(-18 /* IRNativeTag._and */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_strictOr", { get: function () { return new IRNative(-19 /* IRNativeTag._strictOr */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_or", { get: function () { return new IRNative(-20 /* IRNativeTag._or */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_gtBS", { get: function () { return new IRNative(-21 /* IRNativeTag._gtBS */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_gtEqBS", { get: function () { return new IRNative(-22 /* IRNativeTag._gtEqBS */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_gtInt", { get: function () { return new IRNative(-23 /* IRNativeTag._gtInt */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_gtEqInt", { get: function () { return new IRNative(-24 /* IRNativeTag._gtEqInt */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_strToData", { get: function () { return new IRNative(-25 /* IRNativeTag._strToData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_pairDataToData", { get: function () { return new IRNative(-26 /* IRNativeTag._pairDataToData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_strFromData", { get: function () { return new IRNative(-27 /* IRNativeTag._strFromData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_pairDataFromData", { get: function () { return new IRNative(-28 /* IRNativeTag._pairDataFromData */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_lazyChooseList", { get: function () { return new IRNative(-29 /* IRNativeTag._lazyChooseList */); }, enumerable: false, configurable: true }); Object.defineProperty(IRNative, "_lazyIfThenElse", { get: function () { return new IRNative(-30 /* IRNativeTag._lazyIfThenElse */); }, enumerable: false, configurable: true }); return IRNative; }()); exports.IRNative = IRNative;