@harmoniclabs/plu-ts-onchain
Version:
An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript
31 lines (30 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.termTyToConstTy = void 0;
var types_1 = require("./types.js");
var unwrapAlias_1 = require("./tyArgs/unwrapAlias.js");
var uplc_1 = require("@harmoniclabs/uplc");
function termTyToConstTy(t) {
switch (t[0]) {
case types_1.PrimType.Alias: return termTyToConstTy((0, unwrapAlias_1.unwrapAlias)(t));
case types_1.PrimType.Unit: return uplc_1.constT.unit;
case types_1.PrimType.Int: return uplc_1.constT.int;
case types_1.PrimType.BS: return uplc_1.constT.byteStr;
case types_1.PrimType.bls12_381_G1_element: return uplc_1.constT.bls12_381_G1_element;
case types_1.PrimType.bls12_381_G2_element: return uplc_1.constT.bls12_381_G2_element;
case types_1.PrimType.bls12_381_MlResult: return uplc_1.constT.bls12_381_MlResult;
case types_1.PrimType.Bool: return uplc_1.constT.bool;
case types_1.PrimType.Str: return uplc_1.constT.str;
case types_1.PrimType.Struct:
case types_1.PrimType.Data:
case types_1.PrimType.AsData: return uplc_1.constT.data;
case types_1.PrimType.List: return uplc_1.constT.listOf(termTyToConstTy(t[1]));
case types_1.PrimType.Pair: return uplc_1.constT.pairOf(termTyToConstTy(t[1]), termTyToConstTy(t[2]));
case types_1.PrimType.Delayed:
case types_1.PrimType.Lambda:
case types_1.PrimType.Sop:
default:
throw new Error("unable to convert term type to uplc constant type");
}
}
exports.termTyToConstTy = termTyToConstTy;