@harmoniclabs/buildooor 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +22 -0
  3. package/dist/TxBuilder/CanResolveToUTxO/CanResolveToUTxO.d.ts +5 -0
  4. package/dist/TxBuilder/CanResolveToUTxO/CanResolveToUTxO.js +62 -0
  5. package/dist/TxBuilder/CanResolveToUTxO/index.d.ts +1 -0
  6. package/dist/TxBuilder/CanResolveToUTxO/index.js +17 -0
  7. package/dist/TxBuilder/GenesisInfos.d.ts +54 -0
  8. package/dist/TxBuilder/GenesisInfos.js +56 -0
  9. package/dist/TxBuilder/IProvider/IProvider.d.ts +42 -0
  10. package/dist/TxBuilder/IProvider/IProvider.js +2 -0
  11. package/dist/TxBuilder/IProvider/index.d.ts +1 -0
  12. package/dist/TxBuilder/IProvider/index.js +17 -0
  13. package/dist/TxBuilder/TxBuilder.d.ts +106 -0
  14. package/dist/TxBuilder/TxBuilder.js +1251 -0
  15. package/dist/TxBuilder/TxBuilderProtocolParams.d.ts +42 -0
  16. package/dist/TxBuilder/TxBuilderProtocolParams.js +121 -0
  17. package/dist/TxBuilder/TxBuilderRunner/CanBePoolKeyHash.d.ts +3 -0
  18. package/dist/TxBuilder/TxBuilderRunner/CanBePoolKeyHash.js +33 -0
  19. package/dist/TxBuilder/TxBuilderRunner/CanBeStakeCreds.d.ts +3 -0
  20. package/dist/TxBuilder/TxBuilderRunner/CanBeStakeCreds.js +25 -0
  21. package/dist/TxBuilder/TxBuilderRunner/TxBuilderRunner.d.ts +280 -0
  22. package/dist/TxBuilder/TxBuilderRunner/TxBuilderRunner.js +1366 -0
  23. package/dist/TxBuilder/TxBuilderRunner/forceAddr.d.ts +2 -0
  24. package/dist/TxBuilder/TxBuilderRunner/forceAddr.js +8 -0
  25. package/dist/TxBuilder/TxBuilderRunner/index.d.ts +2 -0
  26. package/dist/TxBuilder/TxBuilderRunner/index.js +18 -0
  27. package/dist/TxBuilder/TxBuilderRunner/jsonToMetadata.d.ts +2 -0
  28. package/dist/TxBuilder/TxBuilderRunner/jsonToMetadata.js +35 -0
  29. package/dist/TxBuilder/index.d.ts +5 -0
  30. package/dist/TxBuilder/index.js +21 -0
  31. package/dist/TxBuilder/keepRelevant.d.ts +4 -0
  32. package/dist/TxBuilder/keepRelevant.js +79 -0
  33. package/dist/TxBuilder/utils.d.ts +4 -0
  34. package/dist/TxBuilder/utils.js +66 -0
  35. package/dist/index.d.ts +15 -0
  36. package/dist/index.js +31 -0
  37. package/dist/toOnChain/getSpendingPurposeData.d.ts +5 -0
  38. package/dist/toOnChain/getSpendingPurposeData.js +98 -0
  39. package/dist/toOnChain/getTxInfos.d.ts +8 -0
  40. package/dist/toOnChain/getTxInfos.js +126 -0
  41. package/dist/toOnChain/getTxIntervalData.d.ts +19 -0
  42. package/dist/toOnChain/getTxIntervalData.js +85 -0
  43. package/dist/toOnChain/index.d.ts +2 -0
  44. package/dist/toOnChain/index.js +18 -0
  45. package/dist/txBuild/ChangeInfos/ChangeInfos.d.ts +15 -0
  46. package/dist/txBuild/ChangeInfos/ChangeInfos.js +27 -0
  47. package/dist/txBuild/ITxBuildArgs.d.ts +74 -0
  48. package/dist/txBuild/ITxBuildArgs.js +71 -0
  49. package/dist/txBuild/ITxBuildCert.d.ts +13 -0
  50. package/dist/txBuild/ITxBuildCert.js +37 -0
  51. package/dist/txBuild/ITxBuildInput/ITxBuildInput.d.ts +25 -0
  52. package/dist/txBuild/ITxBuildInput/ITxBuildInput.js +70 -0
  53. package/dist/txBuild/ITxBuildInput/ITxBuildInputInlineScript.d.ts +14 -0
  54. package/dist/txBuild/ITxBuildInput/ITxBuildInputInlineScript.js +14 -0
  55. package/dist/txBuild/ITxBuildInput/ITxBuildInputRefScript.d.ts +14 -0
  56. package/dist/txBuild/ITxBuildInput/ITxBuildInputRefScript.js +15 -0
  57. package/dist/txBuild/ITxBuildMint.d.ts +30 -0
  58. package/dist/txBuild/ITxBuildMint.js +54 -0
  59. package/dist/txBuild/ITxBuildOptions.d.ts +11 -0
  60. package/dist/txBuild/ITxBuildOptions.js +2 -0
  61. package/dist/txBuild/ITxBuildOutput.d.ts +10 -0
  62. package/dist/txBuild/ITxBuildOutput.js +27 -0
  63. package/dist/txBuild/ITxBuildProposalProcedure.d.ts +11 -0
  64. package/dist/txBuild/ITxBuildProposalProcedure.js +13 -0
  65. package/dist/txBuild/ITxBuildVotingProcedure.d.ts +13 -0
  66. package/dist/txBuild/ITxBuildVotingProcedure.js +40 -0
  67. package/dist/txBuild/ITxBuildWithdrawal.d.ts +29 -0
  68. package/dist/txBuild/ITxBuildWithdrawal.js +34 -0
  69. package/dist/txBuild/ScriptWithRedeemer.d.ts +18 -0
  70. package/dist/txBuild/ScriptWithRedeemer.js +16 -0
  71. package/dist/txBuild/index.d.ts +7 -0
  72. package/dist/txBuild/index.js +23 -0
  73. package/dist/utils/CanBeData.d.ts +7 -0
  74. package/dist/utils/CanBeData.js +68 -0
  75. package/dist/utils/Rational.d.ts +8 -0
  76. package/dist/utils/Rational.js +34 -0
  77. package/dist/utils/assert.d.ts +1 -0
  78. package/dist/utils/assert.js +44 -0
  79. package/dist/utils/ints.d.ts +4 -0
  80. package/dist/utils/ints.js +25 -0
  81. package/dist/utils/stringify.d.ts +2 -0
  82. package/dist/utils/stringify.js +38 -0
  83. package/package.json +72 -0
@@ -0,0 +1,2 @@
1
+ import { Address, AddressStr } from "@harmoniclabs/cardano-ledger-ts";
2
+ export declare function forceAddr(addr: Address | AddressStr): Address;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.forceAddr = void 0;
4
+ var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
5
+ function forceAddr(addr) {
6
+ return addr instanceof cardano_ledger_ts_1.Address ? addr : cardano_ledger_ts_1.Address.fromString(addr);
7
+ }
8
+ exports.forceAddr = forceAddr;
@@ -0,0 +1,2 @@
1
+ export * from "./TxBuilderRunner.js";
2
+ export * from "./jsonToMetadata.js";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./TxBuilderRunner.js"), exports);
18
+ __exportStar(require("./jsonToMetadata.js"), exports);
@@ -0,0 +1,2 @@
1
+ import { TxMetadatum } from "@harmoniclabs/cardano-ledger-ts";
2
+ export declare function jsonToMetadata(json: any, withConversion?: boolean): TxMetadatum;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonToMetadata = void 0;
4
+ var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
5
+ var obj_utils_1 = require("@harmoniclabs/obj-utils");
6
+ var uint8array_utils_1 = require("@harmoniclabs/uint8array-utils");
7
+ function jsonToMetadata(json, withConversion) {
8
+ if (withConversion === void 0) { withConversion = false; }
9
+ if (typeof json === "number" || typeof json === "bigint")
10
+ return new cardano_ledger_ts_1.TxMetadatumInt(json);
11
+ if (typeof json === "string") {
12
+ if (withConversion && json.startsWith("0x")) {
13
+ return new cardano_ledger_ts_1.TxMetadatumBytes((0, uint8array_utils_1.fromHex)(json.slice(2)));
14
+ }
15
+ return new cardano_ledger_ts_1.TxMetadatumText(json);
16
+ }
17
+ if (Array.isArray(json)) {
18
+ return new cardano_ledger_ts_1.TxMetadatumList(json.map(function (el) { return jsonToMetadata(el, withConversion); }));
19
+ }
20
+ if ((0, obj_utils_1.isObject)(json)) {
21
+ var keys = Object.keys(json);
22
+ var len = keys.length;
23
+ var entries = new Array(len);
24
+ for (var i = 0; i < len; i++) {
25
+ var ki = keys[i];
26
+ entries[i] = {
27
+ k: jsonToMetadata(ki, withConversion),
28
+ v: jsonToMetadata(json[ki], withConversion)
29
+ };
30
+ }
31
+ return new cardano_ledger_ts_1.TxMetadatumMap(entries);
32
+ }
33
+ throw new Error("unexpected tx metatada json");
34
+ }
35
+ exports.jsonToMetadata = jsonToMetadata;
@@ -0,0 +1,5 @@
1
+ export * from "./TxBuilder.js";
2
+ export * from "./TxBuilderRunner/index.js";
3
+ export * from "./GenesisInfos.js";
4
+ export * from "./IProvider/index.js";
5
+ export * from "./CanResolveToUTxO/index.js";
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./TxBuilder.js"), exports);
18
+ __exportStar(require("./TxBuilderRunner/index.js"), exports);
19
+ __exportStar(require("./GenesisInfos.js"), exports);
20
+ __exportStar(require("./IProvider/index.js"), exports);
21
+ __exportStar(require("./CanResolveToUTxO/index.js"), exports);
@@ -0,0 +1,4 @@
1
+ import { ValueUnits, Value } from "@harmoniclabs/cardano-ledger-ts";
2
+ import { ITxBuildInput } from "../txBuild/index.js";
3
+ import { CanBeUInteger } from "../utils/ints.js";
4
+ export declare function keepRelevant(requestedOutputSet: ValueUnits | Value, initialUTxOSet: ITxBuildInput[], minimumLovelaceRequired?: CanBeUInteger): ITxBuildInput[];
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keepRelevant = void 0;
4
+ var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
5
+ var txBuild_1 = require("../txBuild/index.js");
6
+ var ints_1 = require("../utils/ints.js");
7
+ function keepRelevant(requestedOutputSet, initialUTxOSet, minimumLovelaceRequired) {
8
+ if (minimumLovelaceRequired === void 0) { minimumLovelaceRequired = 5000000; }
9
+ if (requestedOutputSet instanceof cardano_ledger_ts_1.Value) {
10
+ requestedOutputSet = requestedOutputSet.toUnits();
11
+ }
12
+ var reqOutputKeys = Object.keys(requestedOutputSet);
13
+ var requestedLovelace = reqOutputKeys.includes("lovelace")
14
+ ? (0, ints_1.forceBigUInt)(BigInt(requestedOutputSet["lovelace"])) + (0, ints_1.forceBigUInt)(minimumLovelaceRequired)
15
+ : (0, ints_1.forceBigUInt)(minimumLovelaceRequired);
16
+ var multiAssetIns = initialUTxOSet.filter(function (input) {
17
+ return new cardano_ledger_ts_1.UTxO(input.utxo).resolved.value.toUnits()
18
+ // .filter(( asset ) => asset.unit !== "lovelace")
19
+ .some(function (asset) { return reqOutputKeys.includes(asset.unit); });
20
+ });
21
+ var totLovelaces = getTotLovelaces(multiAssetIns);
22
+ var lovelaceIns = totLovelaces < requestedLovelace ?
23
+ remainingLovelace(requestedLovelace - totLovelaces,
24
+ // filter out initial utxos already included trough multi asset selection
25
+ initialUTxOSet.filter(function (initialUtxo) {
26
+ var idStr = initialUtxo.utxo.utxoRef.id.toString();
27
+ return !multiAssetIns.some(function (selectedUtxo) {
28
+ return selectedUtxo.utxo.utxoRef.id.toString() === idStr;
29
+ });
30
+ }))
31
+ : [];
32
+ return lovelaceIns.concat(multiAssetIns)
33
+ .map(txBuild_1.cloneITxBuildInput);
34
+ }
35
+ exports.keepRelevant = keepRelevant;
36
+ function getTotLovelaces(multiAsset) {
37
+ return multiAsset.reduce(function (sum, input) { return sum + new cardano_ledger_ts_1.UTxO(input.utxo).resolved.value.lovelaces; }, BigInt(0));
38
+ }
39
+ ;
40
+ function remainingLovelace(quantity, initialUTxOSet) {
41
+ var sortedUTxOs = initialUTxOSet.sort(function (a, b) { return parseInt(BigInt(new cardano_ledger_ts_1.UTxO(a.utxo).resolved.value.lovelaces - new cardano_ledger_ts_1.UTxO(b.utxo).resolved.value.lovelaces).toString()); });
42
+ var requestedOutputSet = {
43
+ lovelace: quantity
44
+ };
45
+ var selection = selectValue(sortedUTxOs, requestedOutputSet);
46
+ return selection;
47
+ }
48
+ function enoughValueHasBeenSelected(selection, assets) {
49
+ return Object.keys(assets)
50
+ .every(function (unit) {
51
+ return selection
52
+ .filter(function (input) {
53
+ return new cardano_ledger_ts_1.UTxO(input.utxo).resolved.value.toUnits()
54
+ .some(function (a) { return a.unit === unit; });
55
+ })
56
+ .reduce(function (selectedQuantity, input) {
57
+ var utxoQuantity = new cardano_ledger_ts_1.UTxO(input.utxo).resolved.value.toUnits()
58
+ .reduce(function (quantity, a) { return quantity + unit === a.unit ? BigInt(a.quantity) : BigInt(0); }, BigInt(0));
59
+ return selectedQuantity + utxoQuantity;
60
+ }, BigInt(0)) < BigInt(assets[unit]) === false;
61
+ });
62
+ }
63
+ function selectValue(inputUTxO, outputSet, selection) {
64
+ if (selection === void 0) { selection = []; }
65
+ if (inputUTxO.length === 0 ||
66
+ enoughValueHasBeenSelected(selection, outputSet)) {
67
+ return selection;
68
+ }
69
+ if (canValueBeSelected(inputUTxO[0], outputSet)) {
70
+ return selectValue(inputUTxO.slice(1), outputSet, selection.concat(inputUTxO[0]));
71
+ }
72
+ return selectValue(inputUTxO.slice(1), outputSet, selection);
73
+ }
74
+ function canValueBeSelected(input, assets) {
75
+ return Object.keys(assets).some(function (unit) {
76
+ return new cardano_ledger_ts_1.UTxO(input.utxo).resolved.value.toUnits()
77
+ .some(function (asset) { return asset.unit === unit; });
78
+ });
79
+ }
@@ -0,0 +1,4 @@
1
+ import { ScriptType, Tx } from "@harmoniclabs/cardano-ledger-ts";
2
+ import type { ToDataVersion } from "@harmoniclabs/cardano-ledger-ts/dist/toData/defaultToDataVersion";
3
+ export declare function scriptTypeToDataVersion(scriptType: ScriptType): ToDataVersion | undefined;
4
+ export declare function estimateMaxSignersNeeded(tx: Tx): number;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.estimateMaxSignersNeeded = exports.scriptTypeToDataVersion = void 0;
29
+ var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
30
+ function scriptTypeToDataVersion(scriptType) {
31
+ // if( scriptType === ScriptType.NativeScript ) return undefined;
32
+ if (scriptType === cardano_ledger_ts_1.ScriptType.PlutusV1)
33
+ return "v1";
34
+ if (scriptType === cardano_ledger_ts_1.ScriptType.PlutusV2)
35
+ return "v2";
36
+ if (scriptType === cardano_ledger_ts_1.ScriptType.PlutusV3)
37
+ return "v3";
38
+ return undefined;
39
+ }
40
+ exports.scriptTypeToDataVersion = scriptTypeToDataVersion;
41
+ function estimateMaxSignersNeeded(tx) {
42
+ var _a;
43
+ var bodySigners = (0, cardano_ledger_ts_1.getAllRequiredSigners)(tx.body)
44
+ .map(function (hash) { return hash.toString(); })
45
+ .filter(function (elem, i, thisArr) { return thisArr.indexOf(elem) === i; });
46
+ var allSigners = getAllNativeScriptSigners(((_a = tx.witnesses.nativeScripts) !== null && _a !== void 0 ? _a : [])
47
+ .map(function (script) { return script.toJson(); }))
48
+ .filter(function (native) { return native.type === "sig"; })
49
+ .map(function (native) { return native.keyHash.toString(); })
50
+ .concat(bodySigners)
51
+ .filter(function (elem, i, thisArr) { return thisArr.indexOf(elem) === i; });
52
+ return allSigners.length <= 0 ? 1 : allSigners.length;
53
+ }
54
+ exports.estimateMaxSignersNeeded = estimateMaxSignersNeeded;
55
+ function getAllNativeScriptSigners(natives) {
56
+ return natives
57
+ .reduce(function (accum, native) {
58
+ if (native.type === "sig")
59
+ accum.push(native);
60
+ if (native.type === "all" ||
61
+ native.type === "any" ||
62
+ native.type === "atLeast")
63
+ accum.push.apply(accum, __spreadArray([], __read(getAllNativeScriptSigners(native.scripts)), false));
64
+ return accum;
65
+ }, []);
66
+ }
@@ -0,0 +1,15 @@
1
+ export * from "@harmoniclabs/crypto";
2
+ export * from "@harmoniclabs/uint8array-utils";
3
+ export * from "@harmoniclabs/bip32_ed25519";
4
+ export * from "@harmoniclabs/bytestring";
5
+ export * from "@harmoniclabs/cardano-costmodels-ts";
6
+ export * from "@harmoniclabs/cardano-ledger-ts";
7
+ export * from "@harmoniclabs/cbor";
8
+ export * from "@harmoniclabs/plutus-data";
9
+ export * from "@harmoniclabs/plutus-machine";
10
+ export * from "@harmoniclabs/uplc";
11
+ export * from "./TxBuilder/index.js";
12
+ export * from "./toOnChain/index.js";
13
+ export * from "./txBuild/index.js";
14
+ export * from "./utils/CanBeData.js";
15
+ export * from "./utils/ints.js";
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("@harmoniclabs/crypto"), exports);
18
+ __exportStar(require("@harmoniclabs/uint8array-utils"), exports);
19
+ __exportStar(require("@harmoniclabs/bip32_ed25519"), exports);
20
+ __exportStar(require("@harmoniclabs/bytestring"), exports);
21
+ __exportStar(require("@harmoniclabs/cardano-costmodels-ts"), exports);
22
+ __exportStar(require("@harmoniclabs/cardano-ledger-ts"), exports);
23
+ __exportStar(require("@harmoniclabs/cbor"), exports);
24
+ __exportStar(require("@harmoniclabs/plutus-data"), exports);
25
+ __exportStar(require("@harmoniclabs/plutus-machine"), exports);
26
+ __exportStar(require("@harmoniclabs/uplc"), exports);
27
+ __exportStar(require("./TxBuilder/index.js"), exports);
28
+ __exportStar(require("./toOnChain/index.js"), exports);
29
+ __exportStar(require("./txBuild/index.js"), exports);
30
+ __exportStar(require("./utils/CanBeData.js"), exports);
31
+ __exportStar(require("./utils/ints.js"), exports);
@@ -0,0 +1,5 @@
1
+ import { TxBody, TxRedeemer } from "@harmoniclabs/cardano-ledger-ts";
2
+ import type { ToDataVersion } from "@harmoniclabs/cardano-ledger-ts/dist/toData/defaultToDataVersion";
3
+ import { Data, DataConstr } from "@harmoniclabs/plutus-data";
4
+ export declare function getSpendingPurposeData(rdmr: TxRedeemer, tx: TxBody, version?: ToDataVersion): DataConstr;
5
+ export declare function getScriptInfoData(rdmr: TxRedeemer, tx: TxBody, version: ToDataVersion, datum?: Data | undefined): DataConstr;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getScriptInfoData = exports.getSpendingPurposeData = void 0;
4
+ var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
5
+ var plutus_data_1 = require("@harmoniclabs/plutus-data");
6
+ var uint8array_utils_1 = require("@harmoniclabs/uint8array-utils");
7
+ function getSpendingPurposeData(rdmr, tx, version) {
8
+ if (version === void 0) { version = "v3"; }
9
+ var scriptInfos = getScriptInfoData(rdmr, tx, version);
10
+ // for all versions, purpose has never the datum,
11
+ // only script info has the datum
12
+ if (rdmr.tag === cardano_ledger_ts_1.TxRedeemerTag.Spend)
13
+ return new plutus_data_1.DataConstr(scriptInfos.constr, [scriptInfos.fields[0]]);
14
+ return scriptInfos;
15
+ }
16
+ exports.getSpendingPurposeData = getSpendingPurposeData;
17
+ function getScriptInfoData(rdmr, tx, version, datum) {
18
+ var _a, _b, _c, _d, _e, _f;
19
+ version = version !== null && version !== void 0 ? version : "v3";
20
+ var tag = rdmr.tag;
21
+ var ctorIdx;
22
+ var purposeArgs;
23
+ if (tag === cardano_ledger_ts_1.TxRedeemerTag.Mint) {
24
+ ctorIdx = 0;
25
+ var policy = (_a = tx.mint) === null || _a === void 0 ? void 0 : _a.map[rdmr.index + 1].policy;
26
+ if (!(policy instanceof cardano_ledger_ts_1.Hash28))
27
+ throw new Error("invalid minting policy for minting redeemer " + rdmr.index.toString());
28
+ purposeArgs = [new plutus_data_1.DataB(policy.toBuffer())];
29
+ }
30
+ else if (tag === cardano_ledger_ts_1.TxRedeemerTag.Spend) {
31
+ ctorIdx = 1;
32
+ var sortedIns = tx.inputs.slice().sort(function (a, b) {
33
+ var ord = (0, uint8array_utils_1.lexCompare)(a.utxoRef.id.toBuffer(), b.utxoRef.id.toBuffer());
34
+ // if equal tx id order based on tx output index
35
+ if (ord === 0)
36
+ return a.utxoRef.index - b.utxoRef.index;
37
+ // else order by tx id
38
+ return ord;
39
+ });
40
+ var utxoRef = (_b = sortedIns[rdmr.index]) === null || _b === void 0 ? void 0 : _b.utxoRef;
41
+ if (utxoRef === undefined)
42
+ throw new Error("invalid 'Spend' redeemer index: " + rdmr.index.toString() +
43
+ "; tx.inputs.length is: " + tx.inputs.length.toString());
44
+ purposeArgs = [utxoRef.toData(version)];
45
+ if (version === "v3")
46
+ purposeArgs.push((0, plutus_data_1.isData)(datum) ?
47
+ new plutus_data_1.DataConstr(0, [datum]) : // just datum
48
+ new plutus_data_1.DataConstr(1, []) // nothing
49
+ );
50
+ }
51
+ else if (tag === cardano_ledger_ts_1.TxRedeemerTag.Withdraw) {
52
+ ctorIdx = 2;
53
+ var stakeAddr = (_d = (_c = tx.withdrawals) === null || _c === void 0 ? void 0 : _c.map[rdmr.index]) === null || _d === void 0 ? void 0 : _d.rewardAccount;
54
+ if (stakeAddr === undefined)
55
+ throw new Error("invalid stake credentials for rewarding redeemer " + rdmr.index.toString());
56
+ purposeArgs = [
57
+ new cardano_ledger_ts_1.StakeCredentials(cardano_ledger_ts_1.StakeCredentialsType.Script, new cardano_ledger_ts_1.StakeValidatorHash(stakeAddr.credentials))
58
+ .toData(version)
59
+ ];
60
+ }
61
+ else if (tag === cardano_ledger_ts_1.TxRedeemerTag.Cert) {
62
+ ctorIdx = 3;
63
+ var cert = (_e = tx.certs) === null || _e === void 0 ? void 0 : _e.at(rdmr.index);
64
+ if (cert === undefined)
65
+ throw new Error("invalid certificate for certifyng redeemer " + rdmr.index.toString());
66
+ var tmp = void 0;
67
+ tmp = cert.toData(version);
68
+ while (tmp instanceof plutus_data_1.DataList) {
69
+ tmp = tmp.list[0];
70
+ }
71
+ purposeArgs = [tmp];
72
+ if (version === "v3") {
73
+ purposeArgs.unshift(new plutus_data_1.DataI(rdmr.index));
74
+ }
75
+ }
76
+ else if (version !== "v3") {
77
+ throw new Error("voting and proposing script purpose only introduced in plutus v3");
78
+ }
79
+ else if (tag === cardano_ledger_ts_1.TxRedeemerTag.Voting) {
80
+ ctorIdx = 4;
81
+ var votingProcedure = (_f = tx.votingProcedures) === null || _f === void 0 ? void 0 : _f.procedures[rdmr.index];
82
+ if (!votingProcedure) {
83
+ throw new Error("mismatching voting redeemer, couldn't find voting procedure at index " +
84
+ rdmr.index.toString());
85
+ }
86
+ purposeArgs = [
87
+ votingProcedure.voter.toData(version)
88
+ ];
89
+ }
90
+ else if (tag === cardano_ledger_ts_1.TxRedeemerTag.Proposing) {
91
+ ctorIdx = 5;
92
+ purposeArgs = [];
93
+ }
94
+ else
95
+ throw new Error("invalid redeemer tag");
96
+ return new plutus_data_1.DataConstr(ctorIdx, purposeArgs);
97
+ }
98
+ exports.getScriptInfoData = getScriptInfoData;
@@ -0,0 +1,8 @@
1
+ import { GenesisInfos } from "../TxBuilder/GenesisInfos.js";
2
+ import { Data } from "@harmoniclabs/plutus-data";
3
+ import { Tx } from "@harmoniclabs/cardano-ledger-ts";
4
+ export declare function getTxInfos(transaction: Tx, genesisInfos: GenesisInfos | undefined): {
5
+ v1: Data | undefined;
6
+ v2: Data | undefined;
7
+ v3: Data;
8
+ };
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTxInfos = void 0;
4
+ var getTxIntervalData_1 = require("./getTxIntervalData.js");
5
+ var plutus_data_1 = require("@harmoniclabs/plutus-data");
6
+ var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
7
+ var getSpendingPurposeData_1 = require("./getSpendingPurposeData.js");
8
+ var uint8array_utils_1 = require("@harmoniclabs/uint8array-utils");
9
+ function sortUTxO(a, b) {
10
+ var ord = (0, uint8array_utils_1.lexCompare)(a.utxoRef.id.toBuffer(), b.utxoRef.id.toBuffer());
11
+ // if equal tx id order based on tx output index
12
+ if (ord === 0)
13
+ return a.utxoRef.index - b.utxoRef.index;
14
+ // else order by tx id
15
+ return ord;
16
+ }
17
+ function getTxInfos(transaction, genesisInfos) {
18
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
19
+ var tx = transaction.body, witnesses = transaction.witnesses;
20
+ function redeemerToDataPair(rdmr, version) {
21
+ return new plutus_data_1.DataPair((0, getSpendingPurposeData_1.getSpendingPurposeData)(rdmr, tx, version), rdmr.data.clone());
22
+ }
23
+ var sortedInputs = tx.inputs.slice().sort(sortUTxO);
24
+ var sortedRefInputs = (_a = tx.refInputs) === null || _a === void 0 ? void 0 : _a.slice().sort(sortUTxO);
25
+ var feeData = cardano_ledger_ts_1.Value.lovelaces(tx.fee).toData();
26
+ var mintData = ((_b = tx.mint) !== null && _b !== void 0 ? _b : cardano_ledger_ts_1.Value.lovelaces(0)).toData();
27
+ var mintDataNoLovelaces = new plutus_data_1.DataMap(mintData.map.slice(1));
28
+ var intervalData = (0, getTxIntervalData_1.getTxIntervalData)(tx.validityIntervalStart, tx.ttl, genesisInfos);
29
+ var sigsData = new plutus_data_1.DataList((_d = (_c = tx.requiredSigners) === null || _c === void 0 ? void 0 : _c.map(function (sig) { return sig.toData(); })) !== null && _d !== void 0 ? _d : []);
30
+ var datumsData = new plutus_data_1.DataMap((_f = (_e = witnesses.datums) === null || _e === void 0 ? void 0 : _e.map(function (dat) {
31
+ return new plutus_data_1.DataPair(new plutus_data_1.DataB((0, plutus_data_1.hashData)(dat)), dat);
32
+ })) !== null && _f !== void 0 ? _f : []);
33
+ var txIdData = new plutus_data_1.DataB(tx.hash.toBuffer());
34
+ var v1 = undefined;
35
+ try { // input and output to data might fail if only v2
36
+ v1 = new plutus_data_1.DataConstr(0, // PTxInfo; only costructor
37
+ [
38
+ // inputs
39
+ new plutus_data_1.DataList(sortedInputs.map(function (input) { return input.toData("v1"); })),
40
+ // outputs
41
+ new plutus_data_1.DataList(tx.outputs.map(function (out) { return out.toData("v1"); })),
42
+ // fee
43
+ feeData.clone(),
44
+ // mint
45
+ mintData.clone(),
46
+ // dCertificates
47
+ new plutus_data_1.DataList((_h = (_g = tx.certs) === null || _g === void 0 ? void 0 : _g.map(function (cert) { return cert.toData("v1"); })) !== null && _h !== void 0 ? _h : []),
48
+ // withderawals
49
+ (_k = (_j = tx.withdrawals) === null || _j === void 0 ? void 0 : _j.toData("v1")) !== null && _k !== void 0 ? _k : new plutus_data_1.DataMap([]),
50
+ // interval
51
+ intervalData.clone(),
52
+ // signatories
53
+ sigsData.clone(),
54
+ // datums
55
+ datumsData.clone(),
56
+ // id
57
+ new plutus_data_1.DataConstr(0, [txIdData.clone()])
58
+ ]);
59
+ }
60
+ catch ( // input or output can't be v1 (inline datums etc...)
61
+ _0) { // input or output can't be v1 (inline datums etc...)
62
+ v1 = undefined;
63
+ }
64
+ var v2 = undefined;
65
+ try {
66
+ v2 = new plutus_data_1.DataConstr(0, // PTxInfo; only costructor
67
+ [
68
+ // inputs
69
+ new plutus_data_1.DataList(sortedInputs.map(function (input) { return input.toData("v2"); })),
70
+ // refInputs
71
+ new plutus_data_1.DataList((_l = sortedRefInputs === null || sortedRefInputs === void 0 ? void 0 : sortedRefInputs.map(function (refIn) { return refIn.toData("v2"); })) !== null && _l !== void 0 ? _l : []),
72
+ // outputs
73
+ new plutus_data_1.DataList(tx.outputs.map(function (out) { return out.toData("v2"); })),
74
+ // fee
75
+ feeData,
76
+ // mint
77
+ mintData,
78
+ // dCertificates
79
+ new plutus_data_1.DataList((_o = (_m = tx.certs) === null || _m === void 0 ? void 0 : _m.map(function (cert) { return cert.toData("v2"); })) !== null && _o !== void 0 ? _o : []),
80
+ // withderawals
81
+ (_q = (_p = tx.withdrawals) === null || _p === void 0 ? void 0 : _p.toData("v2")) !== null && _q !== void 0 ? _q : new plutus_data_1.DataMap([]),
82
+ // interval
83
+ intervalData,
84
+ // signatories
85
+ sigsData,
86
+ // redeemers
87
+ new plutus_data_1.DataMap((_s = (_r = witnesses.redeemers) === null || _r === void 0 ? void 0 : _r.map(function (rdmr) { return redeemerToDataPair(rdmr, "v2"); })) !== null && _s !== void 0 ? _s : []),
88
+ // datums
89
+ datumsData,
90
+ // id
91
+ new plutus_data_1.DataConstr(0, [txIdData.clone()])
92
+ ]);
93
+ }
94
+ catch (_1) {
95
+ v2 = undefined;
96
+ }
97
+ var v3 = new plutus_data_1.DataConstr(0, // PTxInfo; only costructor
98
+ [
99
+ // inputs
100
+ new plutus_data_1.DataList(sortedInputs.map(function (input) { return input.toData("v3"); })),
101
+ // refInputs
102
+ new plutus_data_1.DataList((_t = sortedRefInputs === null || sortedRefInputs === void 0 ? void 0 : sortedRefInputs.map(function (refIn) { return refIn.toData("v3"); })) !== null && _t !== void 0 ? _t : []),
103
+ // outputs
104
+ new plutus_data_1.DataList(tx.outputs.map(function (out) { return out.toData("v3"); })),
105
+ // fee (only lovelaces)
106
+ new plutus_data_1.DataI(tx.fee),
107
+ // mint
108
+ mintDataNoLovelaces,
109
+ // certificates
110
+ new plutus_data_1.DataList((_v = (_u = tx.certs) === null || _u === void 0 ? void 0 : _u.map(function (cert) { return cert.toData("v3"); })) !== null && _v !== void 0 ? _v : []),
111
+ // withderawals
112
+ (_x = (_w = tx.withdrawals) === null || _w === void 0 ? void 0 : _w.toData("v3")) !== null && _x !== void 0 ? _x : new plutus_data_1.DataMap([]),
113
+ // interval
114
+ intervalData,
115
+ // signatories
116
+ sigsData,
117
+ // redeemers
118
+ new plutus_data_1.DataMap((_z = (_y = witnesses.redeemers) === null || _y === void 0 ? void 0 : _y.map(function (rdmr) { return redeemerToDataPair(rdmr, "v3"); })) !== null && _z !== void 0 ? _z : []),
119
+ // datums
120
+ datumsData,
121
+ // id
122
+ txIdData
123
+ ]);
124
+ return { v1: v1, v2: v2, v3: v3 };
125
+ }
126
+ exports.getTxInfos = getTxInfos;
@@ -0,0 +1,19 @@
1
+ import { DataConstr } from "@harmoniclabs/plutus-data";
2
+ import { GenesisInfos, NormalizedGenesisInfos } from "../TxBuilder/GenesisInfos.js";
3
+ /**
4
+ *
5
+ * @param POSIX POSIX time in milliseconds
6
+ * @param sysStartPOSIX blockchain start POSIX time in milliseconds
7
+ * @param slotLenMs milliseconds per slot
8
+ * @returns
9
+ */
10
+ export declare function POSIXToSlot(unixTime: number, gInfos: NormalizedGenesisInfos): number;
11
+ /**
12
+ *
13
+ * @param slotN number of the slot
14
+ * @param sysStartPOSIX blockchain start POSIX time in milliseconds
15
+ * @param slotLenMs milliseconds per slot
16
+ * @returns
17
+ */
18
+ export declare function slotToPOSIX(slot: number, gInfos: NormalizedGenesisInfos): number;
19
+ export declare function getTxIntervalData(startSlot: bigint | undefined, ttlSlot: bigint | undefined, geneisInfos: GenesisInfos | undefined): DataConstr;