@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
JavaScript
;
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;