@cardano-sdk/tx-construction 0.18.7 → 0.19.1

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 (92) hide show
  1. package/dist/cjs/createTransactionInternals.d.ts +6 -2
  2. package/dist/cjs/createTransactionInternals.d.ts.map +1 -1
  3. package/dist/cjs/createTransactionInternals.js +11 -3
  4. package/dist/cjs/createTransactionInternals.js.map +1 -1
  5. package/dist/cjs/input-selection/selectionConstraints.d.ts +14 -3
  6. package/dist/cjs/input-selection/selectionConstraints.d.ts.map +1 -1
  7. package/dist/cjs/input-selection/selectionConstraints.js +61 -4
  8. package/dist/cjs/input-selection/selectionConstraints.js.map +1 -1
  9. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  10. package/dist/cjs/tx-builder/GreedyTxEvaluator.d.ts +8 -0
  11. package/dist/cjs/tx-builder/GreedyTxEvaluator.d.ts.map +1 -0
  12. package/dist/cjs/tx-builder/GreedyTxEvaluator.js +39 -0
  13. package/dist/cjs/tx-builder/GreedyTxEvaluator.js.map +1 -0
  14. package/dist/cjs/tx-builder/OutputBuilder.d.ts +2 -1
  15. package/dist/cjs/tx-builder/OutputBuilder.d.ts.map +1 -1
  16. package/dist/cjs/tx-builder/OutputBuilder.js +14 -2
  17. package/dist/cjs/tx-builder/OutputBuilder.js.map +1 -1
  18. package/dist/cjs/tx-builder/TxBuilder.d.ts +5 -1
  19. package/dist/cjs/tx-builder/TxBuilder.d.ts.map +1 -1
  20. package/dist/cjs/tx-builder/TxBuilder.js +173 -47
  21. package/dist/cjs/tx-builder/TxBuilder.js.map +1 -1
  22. package/dist/cjs/tx-builder/costModels.d.ts +11 -0
  23. package/dist/cjs/tx-builder/costModels.d.ts.map +1 -0
  24. package/dist/cjs/tx-builder/costModels.js +77 -0
  25. package/dist/cjs/tx-builder/costModels.js.map +1 -0
  26. package/dist/cjs/tx-builder/index.d.ts +1 -0
  27. package/dist/cjs/tx-builder/index.d.ts.map +1 -1
  28. package/dist/cjs/tx-builder/index.js +1 -0
  29. package/dist/cjs/tx-builder/index.js.map +1 -1
  30. package/dist/cjs/tx-builder/initializeTx.d.ts.map +1 -1
  31. package/dist/cjs/tx-builder/initializeTx.js +18 -6
  32. package/dist/cjs/tx-builder/initializeTx.js.map +1 -1
  33. package/dist/cjs/tx-builder/types.d.ts +23 -0
  34. package/dist/cjs/tx-builder/types.d.ts.map +1 -1
  35. package/dist/cjs/tx-builder/utils.d.ts +23 -0
  36. package/dist/cjs/tx-builder/utils.d.ts.map +1 -0
  37. package/dist/cjs/tx-builder/utils.js +134 -0
  38. package/dist/cjs/tx-builder/utils.js.map +1 -0
  39. package/dist/cjs/types.d.ts +9 -1
  40. package/dist/cjs/types.d.ts.map +1 -1
  41. package/dist/esm/createTransactionInternals.d.ts +7 -3
  42. package/dist/esm/createTransactionInternals.d.ts.map +1 -1
  43. package/dist/esm/createTransactionInternals.js +11 -3
  44. package/dist/esm/createTransactionInternals.js.map +1 -1
  45. package/dist/esm/fees/index.d.ts +1 -1
  46. package/dist/esm/fees/index.js +1 -1
  47. package/dist/esm/index.d.ts +8 -8
  48. package/dist/esm/index.js +8 -8
  49. package/dist/esm/input-selection/index.d.ts +1 -1
  50. package/dist/esm/input-selection/index.js +1 -1
  51. package/dist/esm/input-selection/selectionConstraints.d.ts +14 -3
  52. package/dist/esm/input-selection/selectionConstraints.d.ts.map +1 -1
  53. package/dist/esm/input-selection/selectionConstraints.js +63 -6
  54. package/dist/esm/input-selection/selectionConstraints.js.map +1 -1
  55. package/dist/esm/output-validation/index.d.ts +2 -2
  56. package/dist/esm/output-validation/index.js +2 -2
  57. package/dist/esm/output-validation/outputValidator.d.ts +1 -1
  58. package/dist/esm/output-validation/outputValidator.js +1 -1
  59. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  60. package/dist/esm/tx-builder/GreedyTxEvaluator.d.ts +8 -0
  61. package/dist/esm/tx-builder/GreedyTxEvaluator.d.ts.map +1 -0
  62. package/dist/esm/tx-builder/GreedyTxEvaluator.js +35 -0
  63. package/dist/esm/tx-builder/GreedyTxEvaluator.js.map +1 -0
  64. package/dist/esm/tx-builder/OutputBuilder.d.ts +4 -3
  65. package/dist/esm/tx-builder/OutputBuilder.d.ts.map +1 -1
  66. package/dist/esm/tx-builder/OutputBuilder.js +15 -3
  67. package/dist/esm/tx-builder/OutputBuilder.js.map +1 -1
  68. package/dist/esm/tx-builder/TxBuilder.d.ts +6 -2
  69. package/dist/esm/tx-builder/TxBuilder.d.ts.map +1 -1
  70. package/dist/esm/tx-builder/TxBuilder.js +175 -49
  71. package/dist/esm/tx-builder/TxBuilder.js.map +1 -1
  72. package/dist/esm/tx-builder/costModels.d.ts +11 -0
  73. package/dist/esm/tx-builder/costModels.d.ts.map +1 -0
  74. package/dist/esm/tx-builder/costModels.js +72 -0
  75. package/dist/esm/tx-builder/costModels.js.map +1 -0
  76. package/dist/esm/tx-builder/index.d.ts +5 -4
  77. package/dist/esm/tx-builder/index.d.ts.map +1 -1
  78. package/dist/esm/tx-builder/index.js +5 -4
  79. package/dist/esm/tx-builder/index.js.map +1 -1
  80. package/dist/esm/tx-builder/initializeTx.d.ts +2 -2
  81. package/dist/esm/tx-builder/initializeTx.d.ts.map +1 -1
  82. package/dist/esm/tx-builder/initializeTx.js +20 -8
  83. package/dist/esm/tx-builder/initializeTx.js.map +1 -1
  84. package/dist/esm/tx-builder/types.d.ts +26 -3
  85. package/dist/esm/tx-builder/types.d.ts.map +1 -1
  86. package/dist/esm/tx-builder/utils.d.ts +23 -0
  87. package/dist/esm/tx-builder/utils.d.ts.map +1 -0
  88. package/dist/esm/tx-builder/utils.js +122 -0
  89. package/dist/esm/tx-builder/utils.js.map +1 -0
  90. package/dist/esm/types.d.ts +10 -2
  91. package/dist/esm/types.d.ts.map +1 -1
  92. package/package.json +12 -13
@@ -4,23 +4,27 @@ import { SelectionResult } from '@cardano-sdk/input-selection';
4
4
  import { TxBodyPreInputSelection } from './types';
5
5
  export declare type CreateTxInternalsProps = {
6
6
  inputSelection: SelectionResult['selection'];
7
+ referenceInputs?: Set<Cardano.TxIn>;
7
8
  validityInterval: Cardano.ValidityInterval;
8
9
  certificates?: Cardano.Certificate[];
9
10
  withdrawals?: Cardano.Withdrawal[];
10
11
  auxiliaryData?: Cardano.AuxiliaryData;
11
12
  collaterals?: Set<Cardano.TxIn>;
13
+ collateralReturn?: Cardano.TxOut;
12
14
  mint?: Cardano.TokenMap;
13
15
  scriptIntegrityHash?: Crypto.Hash32ByteBase16;
14
16
  requiredExtraSignatures?: Crypto.Ed25519KeyHashHex[];
15
17
  };
16
- export declare const createPreInputSelectionTxBody: ({ auxiliaryData, withdrawals, certificates, validityInterval, collaterals, mint, scriptIntegrityHash, requiredExtraSignatures, outputs }: Omit<CreateTxInternalsProps, "inputSelection"> & {
18
+ export declare const createPreInputSelectionTxBody: ({ auxiliaryData, withdrawals, certificates, validityInterval, collaterals, collateralReturn, mint, scriptIntegrityHash, referenceInputs, requiredExtraSignatures, outputs }: Omit<CreateTxInternalsProps, "inputSelection"> & {
17
19
  outputs?: Cardano.TxOut[] | undefined;
18
20
  }) => {
19
21
  txBody: TxBodyPreInputSelection;
20
22
  auxiliaryData?: Cardano.AuxiliaryData | undefined;
21
23
  };
22
- export declare const includeChangeAndInputs: ({ bodyPreInputSelection, inputSelection }: Pick<CreateTxInternalsProps, "inputSelection"> & {
24
+ export declare const includeChangeAndInputs: ({ bodyPreInputSelection, inputSelection, scriptVersions, witness }: Pick<CreateTxInternalsProps, "inputSelection"> & {
23
25
  bodyPreInputSelection: TxBodyPreInputSelection;
26
+ witness?: Cardano.Witness | undefined;
27
+ scriptVersions?: Set<Cardano.PlutusLanguageVersion> | undefined;
24
28
  }) => Cardano.TxBodyWithHash;
25
29
  export declare const createTransactionInternals: (props: CreateTxInternalsProps) => Cardano.TxBodyWithHash;
26
30
  //# sourceMappingURL=createTransactionInternals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createTransactionInternals.d.ts","sourceRoot":"","sources":["../../src/createTransactionInternals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAuB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,oBAAY,sBAAsB,GAAG;IACnC,cAAc,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IAC7C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IACtC,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAC9C,uBAAuB,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;CACtD,CAAC;AAGF,eAAO,MAAM,6BAA6B;;;YAWhC,uBAAuB;;CAe/B,CAAC;AAGH,eAAO,MAAM,sBAAsB;2BAIV,uBAAuB;MAC5C,QAAQ,cAeX,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAAW,sBAAsB,KAAG,QAAQ,cAGlF,CAAC"}
1
+ {"version":3,"file":"createTransactionInternals.d.ts","sourceRoot":"","sources":["../../src/createTransactionInternals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAuB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIlD,oBAAY,sBAAsB,GAAG;IACnC,cAAc,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IAC7C,eAAe,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IACtC,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAC9C,uBAAuB,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;CACtD,CAAC;AAGF,eAAO,MAAM,6BAA6B;;;YAahC,uBAAuB;;CAiB/B,CAAC;AAGH,eAAO,MAAM,sBAAsB;2BAMV,uBAAuB;;;MAG5C,QAAQ,cA0BX,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAAW,sBAAsB,KAAG,QAAQ,cAGlF,CAAC"}
@@ -26,28 +26,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.createTransactionInternals = exports.includeChangeAndInputs = exports.createPreInputSelectionTxBody = void 0;
27
27
  const Crypto = __importStar(require("@cardano-sdk/crypto"));
28
28
  const core_1 = require("@cardano-sdk/core");
29
- const createPreInputSelectionTxBody = ({ auxiliaryData, withdrawals, certificates, validityInterval, collaterals, mint, scriptIntegrityHash, requiredExtraSignatures, outputs }) => ({
29
+ const computeScriptDataHash_1 = require("./computeScriptDataHash");
30
+ const costModels_1 = require("./tx-builder/costModels");
31
+ const createPreInputSelectionTxBody = ({ auxiliaryData, withdrawals, certificates, validityInterval, collaterals, collateralReturn, mint, scriptIntegrityHash, referenceInputs, requiredExtraSignatures, outputs }) => ({
30
32
  auxiliaryData,
31
33
  txBody: {
32
34
  auxiliaryDataHash: auxiliaryData ? core_1.Cardano.computeAuxiliaryDataHash(auxiliaryData) : undefined,
33
35
  certificates,
34
36
  mint,
35
37
  outputs: outputs || [],
38
+ referenceInputs: referenceInputs ? [...referenceInputs] : undefined,
36
39
  requiredExtraSignatures,
37
40
  scriptIntegrityHash,
38
41
  validityInterval,
39
42
  ...(withdrawals?.length && { withdrawals }),
40
- ...(collaterals?.size && { collaterals: [...collaterals] })
43
+ ...(collaterals?.size && { collaterals: [...collaterals] }),
44
+ collateralReturn
41
45
  }
42
46
  });
43
47
  exports.createPreInputSelectionTxBody = createPreInputSelectionTxBody;
44
- const includeChangeAndInputs = ({ bodyPreInputSelection, inputSelection }) => {
48
+ const includeChangeAndInputs = ({ bodyPreInputSelection, inputSelection, scriptVersions, witness }) => {
45
49
  const body = {
46
50
  ...bodyPreInputSelection,
47
51
  fee: inputSelection.fee,
48
52
  inputs: [...inputSelection.inputs].map(([txIn]) => txIn),
49
53
  outputs: [...inputSelection.outputs, ...inputSelection.change]
50
54
  };
55
+ if (scriptVersions && witness) {
56
+ const costModels = (0, costModels_1.getDefaultCostModelsForVersions)([...scriptVersions]);
57
+ body.scriptIntegrityHash = (0, computeScriptDataHash_1.computeScriptDataHash)(costModels, [...scriptVersions], witness.redeemers, witness.datums);
58
+ }
51
59
  const serializableBody = core_1.Serialization.TransactionBody.fromCore(body);
52
60
  return {
53
61
  body,
@@ -1 +1 @@
1
- {"version":3,"file":"createTransactionInternals.js","sourceRoot":"","sources":["../../src/createTransactionInternals.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA8C;AAC9C,4CAAiE;AAiB1D,MAAM,6BAA6B,GAAG,CAAC,EAC5C,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,IAAI,EACJ,mBAAmB,EACnB,uBAAuB,EACvB,OAAO,EACwE,EAG/E,EAAE,CAAC,CAAC;IACJ,aAAa;IACb,MAAM,EAAE;QACN,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC,cAAO,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9F,YAAY;QACZ,IAAI;QACJ,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,uBAAuB;QACvB,mBAAmB;QACnB,gBAAgB;QAChB,GAAG,CAAC,WAAW,EAAE,MAAM,IAAI,EAAE,WAAW,EAAE,CAAC;QAC3C,GAAG,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC;KAC5D;CACF,CAAC,CAAC;AA1BU,QAAA,6BAA6B,iCA0BvC;AAGI,MAAM,sBAAsB,GAAG,CAAC,EACrC,qBAAqB,EACrB,cAAc,EAGf,EAA0B,EAAE;IAC3B,MAAM,IAAI,GAAmB;QAC3B,GAAG,qBAAqB;QACxB,GAAG,EAAE,cAAc,CAAC,GAAG;QACvB,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;QACxD,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC;KAC/D,CAAC;IACF,MAAM,gBAAgB,GAAG,oBAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEtE,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,cAAO,CAAC,aAAa,CAAC,WAAW,CACrC,WAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAClH;KACF,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,sBAAsB,0BAoBjC;AAEK,MAAM,0BAA0B,GAAG,CAAC,KAA6B,EAA0B,EAAE;IAClG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,qCAA6B,EAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC/D,OAAO,IAAA,8BAAsB,EAAC,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AACzG,CAAC,CAAC;AAHW,QAAA,0BAA0B,8BAGrC"}
1
+ {"version":3,"file":"createTransactionInternals.js","sourceRoot":"","sources":["../../src/createTransactionInternals.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA8C;AAC9C,4CAAiE;AAGjE,mEAAgE;AAChE,wDAA0E;AAiBnE,MAAM,6BAA6B,GAAG,CAAC,EAC5C,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,IAAI,EACJ,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,OAAO,EACwE,EAG/E,EAAE,CAAC,CAAC;IACJ,aAAa;IACb,MAAM,EAAE;QACN,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC,cAAO,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9F,YAAY;QACZ,IAAI;QACJ,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;QACnE,uBAAuB;QACvB,mBAAmB;QACnB,gBAAgB;QAChB,GAAG,CAAC,WAAW,EAAE,MAAM,IAAI,EAAE,WAAW,EAAE,CAAC;QAC3C,GAAG,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC;QAC3D,gBAAgB;KACjB;CACF,CAAC,CAAC;AA9BU,QAAA,6BAA6B,iCA8BvC;AAGI,MAAM,sBAAsB,GAAG,CAAC,EACrC,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,OAAO,EAKR,EAA0B,EAAE;IAC3B,MAAM,IAAI,GAAmB;QAC3B,GAAG,qBAAqB;QACxB,GAAG,EAAE,cAAc,CAAC,GAAG;QACvB,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;QACxD,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC;KAC/D,CAAC;IAEF,IAAI,cAAc,IAAI,OAAO,EAAE;QAC7B,MAAM,UAAU,GAAG,IAAA,4CAA+B,EAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,mBAAmB,GAAG,IAAA,6CAAqB,EAC9C,UAAU,EACV,CAAC,GAAG,cAAc,CAAC,EACnB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,MAAM,CACf,CAAC;KACH;IAED,MAAM,gBAAgB,GAAG,oBAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEtE,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,cAAO,CAAC,aAAa,CAAC,WAAW,CACrC,WAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAClH;KACF,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,sBAAsB,0BAmCjC;AAEK,MAAM,0BAA0B,GAAG,CAAC,KAA6B,EAA0B,EAAE;IAClG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,qCAA6B,EAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC/D,OAAO,IAAA,8BAAsB,EAAC,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AACzG,CAAC,CAAC;AAHW,QAAA,0BAA0B,8BAGrC"}
@@ -1,14 +1,25 @@
1
1
  import { Cardano } from '@cardano-sdk/core';
2
- import { ComputeMinimumCoinQuantity, ComputeSelectionLimit, EstimateTxFee, ProtocolParametersForInputSelection, ProtocolParametersRequiredByInputSelection, SelectionConstraints, SelectionSkeleton, TokenBundleSizeExceedsLimit } from '@cardano-sdk/input-selection';
2
+ import { ComputeMinimumCoinQuantity, ComputeSelectionLimit, EstimateTxCosts, ProtocolParametersForInputSelection, ProtocolParametersRequiredByInputSelection, SelectionConstraints, SelectionSkeleton, TokenBundleSizeExceedsLimit } from '@cardano-sdk/input-selection';
3
+ import { TxEvaluator, TxIdWithIndex } from '../tx-builder';
3
4
  export declare const MAX_U64 = 18446744073709551615n;
4
5
  export declare type BuildTx = (selection: SelectionSkeleton) => Promise<Cardano.Tx>;
6
+ export interface RedeemersByType {
7
+ spend?: Map<TxIdWithIndex, Cardano.Redeemer>;
8
+ mint?: Array<Cardano.Redeemer>;
9
+ certificate?: Array<Cardano.Redeemer>;
10
+ withdrawal?: Array<Cardano.Redeemer>;
11
+ propose?: Array<Cardano.Redeemer>;
12
+ vote?: Array<Cardano.Redeemer>;
13
+ }
5
14
  export interface DefaultSelectionConstraintsProps {
6
15
  protocolParameters: ProtocolParametersForInputSelection;
7
16
  buildTx: BuildTx;
17
+ redeemersByType: RedeemersByType;
18
+ txEvaluator: TxEvaluator;
8
19
  }
9
- export declare const computeMinimumCost: ({ minFeeCoefficient, minFeeConstant, prices }: Pick<ProtocolParametersRequiredByInputSelection, 'minFeeCoefficient' | 'minFeeConstant' | 'prices'>, buildTx: BuildTx) => EstimateTxFee;
20
+ export declare const computeMinimumCost: ({ minFeeCoefficient, minFeeConstant, prices }: Pick<ProtocolParametersRequiredByInputSelection, 'minFeeCoefficient' | 'minFeeConstant' | 'prices'>, buildTx: BuildTx, txEvaluator: TxEvaluator, redeemersByType: RedeemersByType) => EstimateTxCosts;
10
21
  export declare const computeMinimumCoinQuantity: (coinsPerUtxoByte: ProtocolParametersRequiredByInputSelection['coinsPerUtxoByte']) => ComputeMinimumCoinQuantity;
11
22
  export declare const tokenBundleSizeExceedsLimit: (maxValueSize: ProtocolParametersRequiredByInputSelection['maxValueSize']) => TokenBundleSizeExceedsLimit;
12
23
  export declare const computeSelectionLimit: (maxTxSize: ProtocolParametersRequiredByInputSelection['maxTxSize'], buildTx: BuildTx) => ComputeSelectionLimit;
13
- export declare const defaultSelectionConstraints: ({ protocolParameters: { coinsPerUtxoByte, maxTxSize, maxValueSize, minFeeCoefficient, minFeeConstant, prices }, buildTx }: DefaultSelectionConstraintsProps) => SelectionConstraints;
24
+ export declare const defaultSelectionConstraints: ({ protocolParameters: { coinsPerUtxoByte, maxTxSize, maxValueSize, minFeeCoefficient, minFeeConstant, prices }, buildTx, redeemersByType, txEvaluator }: DefaultSelectionConstraintsProps) => SelectionConstraints;
14
25
  //# sourceMappingURL=selectionConstraints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectionConstraints.d.ts","sourceRoot":"","sources":["../../../src/input-selection/selectionConstraints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiD,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACb,mCAAmC,EACnC,0CAA0C,EAC1C,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC5B,MAAM,8BAA8B,CAAC;AAGtC,eAAO,MAAM,OAAO,wBAA8B,CAAC;AAEnD,oBAAY,OAAO,GAAG,CAAC,SAAS,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE5E,MAAM,WAAW,gCAAgC;IAC/C,kBAAkB,EAAE,mCAAmC,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,kDAMxB,KAAK,0CAA0C,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,QAAQ,CAAC,WAC7F,OAAO,KACf,aAKF,CAAC;AAEJ,eAAO,MAAM,0BAA0B,qBAClB,0CAA0C,CAAC,kBAAkB,CAAC,KAAG,0BAElC,CAAC;AAErD,eAAO,MAAM,2BAA2B,iBACvB,0CAA0C,CAAC,cAAc,CAAC,KAAG,2BAU3E,CAAC;AAWJ,eAAO,MAAM,qBAAqB,cACpB,0CAA0C,CAAC,WAAW,CAAC,WAAW,OAAO,KAAG,qBAQvF,CAAC;AAEJ,eAAO,MAAM,2BAA2B,8HAGrC,gCAAgC,KAAG,oBAYrC,CAAC"}
1
+ {"version":3,"file":"selectionConstraints.d.ts","sourceRoot":"","sources":["../../../src/input-selection/selectionConstraints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiD,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,eAAe,EACf,mCAAmC,EACnC,0CAA0C,EAC1C,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAE5B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAsB,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/E,eAAO,MAAM,OAAO,wBAA8B,CAAC;AAEnD,oBAAY,OAAO,GAAG,CAAC,SAAS,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gCAAgC;IAC/C,kBAAkB,EAAE,mCAAmC,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAwED,eAAO,MAAM,kBAAkB,kDAMxB,KAAK,0CAA0C,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,QAAQ,CAAC,WAC7F,OAAO,eACH,WAAW,mBACP,eAAe,KAC/B,eAgBF,CAAC;AAEJ,eAAO,MAAM,0BAA0B,qBAClB,0CAA0C,CAAC,kBAAkB,CAAC,KAAG,0BAElC,CAAC;AAErD,eAAO,MAAM,2BAA2B,iBACvB,0CAA0C,CAAC,cAAc,CAAC,KAAG,2BAU3E,CAAC;AAWJ,eAAO,MAAM,qBAAqB,cACpB,0CAA0C,CAAC,WAAW,CAAC,WAAW,OAAO,KAAG,qBAQvF,CAAC;AAEJ,eAAO,MAAM,2BAA2B,4JAKrC,gCAAgC,KAAG,oBAiBrC,CAAC"}
@@ -2,11 +2,68 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defaultSelectionConstraints = exports.computeSelectionLimit = exports.tokenBundleSizeExceedsLimit = exports.computeMinimumCoinQuantity = exports.computeMinimumCost = exports.MAX_U64 = void 0;
4
4
  const core_1 = require("@cardano-sdk/core");
5
+ const input_selection_1 = require("@cardano-sdk/input-selection");
5
6
  const fees_1 = require("../fees");
6
7
  exports.MAX_U64 = 18446744073709551615n;
7
- const computeMinimumCost = ({ minFeeCoefficient, minFeeConstant, prices }, buildTx) => async (selection) => {
8
+ const updateRedeemers = (evaluation, redeemersByType, txInputs) => {
9
+ const result = [];
10
+ const redeemersMap = {
11
+ [core_1.Cardano.RedeemerPurpose.spend]: redeemersByType.spend,
12
+ [core_1.Cardano.RedeemerPurpose.mint]: redeemersByType.mint,
13
+ [core_1.Cardano.RedeemerPurpose.certificate]: redeemersByType.certificate,
14
+ [core_1.Cardano.RedeemerPurpose.withdrawal]: redeemersByType.withdrawal,
15
+ [core_1.Cardano.RedeemerPurpose.propose]: redeemersByType.propose,
16
+ [core_1.Cardano.RedeemerPurpose.vote]: redeemersByType.vote
17
+ };
18
+ for (const txEval of evaluation) {
19
+ const redeemers = redeemersMap[txEval.purpose];
20
+ if (!redeemers)
21
+ throw new Error(`No redeemers found for ${txEval.purpose} purpose`);
22
+ let knownRedeemer;
23
+ if (txEval.purpose === core_1.Cardano.RedeemerPurpose.spend) {
24
+ const input = txInputs[txEval.index];
25
+ knownRedeemer = redeemers.get(`${input.txId}#${input.index}`);
26
+ if (!knownRedeemer)
27
+ throw new Error(`Known Redeemer not found for tx id ${input.txId} and index ${input.index}`);
28
+ }
29
+ else {
30
+ const redeemerList = redeemers;
31
+ knownRedeemer = redeemerList.find((redeemer) => redeemer.index === txEval.index);
32
+ if (!knownRedeemer)
33
+ throw new Error(`Known Redeemer not found for index ${txEval.index}`);
34
+ }
35
+ result.push({ ...knownRedeemer, executionUnits: txEval.budget });
36
+ }
37
+ return result;
38
+ };
39
+ const reorgRedeemers = (redeemerByType, witness, txInputs) => {
40
+ let redeemers = [];
41
+ if (witness.redeemers) {
42
+ redeemers = witness.redeemers.filter((redeemer) => redeemer.purpose !== core_1.Cardano.RedeemerPurpose.spend);
43
+ if (redeemerByType.spend) {
44
+ for (const [key, value] of redeemerByType.spend) {
45
+ const index = txInputs.findIndex((input) => key === `${input.txId}#${input.index}`);
46
+ if (index < 0)
47
+ throw new Error(`Redeemer not found for tx id ${key}`);
48
+ value.index = index;
49
+ redeemers.push({ ...value });
50
+ }
51
+ }
52
+ }
53
+ return redeemers;
54
+ };
55
+ const computeMinimumCost = ({ minFeeCoefficient, minFeeConstant, prices }, buildTx, txEvaluator, redeemersByType) => async (selection) => {
8
56
  const tx = await buildTx(selection);
9
- return (0, fees_1.minFee)(tx, prices, (0, fees_1.MinFeeConstant)(minFeeConstant), (0, fees_1.MinFeeCoefficient)(minFeeCoefficient));
57
+ const utxos = [...selection.inputs];
58
+ const txIns = utxos.map((utxo) => utxo[0]).sort(input_selection_1.sortTxIn);
59
+ if (tx.witness && tx.witness.redeemers && tx.witness.redeemers.length > 0) {
60
+ tx.witness.redeemers = reorgRedeemers(redeemersByType, tx.witness, txIns);
61
+ tx.witness.redeemers = updateRedeemers(await txEvaluator.evaluate(tx, utxos), redeemersByType, txIns);
62
+ }
63
+ return {
64
+ fee: (0, fees_1.minFee)(tx, prices, (0, fees_1.MinFeeConstant)(minFeeConstant), (0, fees_1.MinFeeCoefficient)(minFeeCoefficient)),
65
+ redeemers: tx.witness.redeemers
66
+ };
10
67
  };
11
68
  exports.computeMinimumCost = computeMinimumCost;
12
69
  const computeMinimumCoinQuantity = (coinsPerUtxoByte) => (output) => (0, fees_1.minAdaRequired)(output, BigInt(coinsPerUtxoByte));
@@ -30,13 +87,13 @@ const computeSelectionLimit = (maxTxSize, buildTx) => async (selectionSkeleton)
30
87
  return selectionSkeleton.inputs.size - 1;
31
88
  };
32
89
  exports.computeSelectionLimit = computeSelectionLimit;
33
- const defaultSelectionConstraints = ({ protocolParameters: { coinsPerUtxoByte, maxTxSize, maxValueSize, minFeeCoefficient, minFeeConstant, prices }, buildTx }) => {
90
+ const defaultSelectionConstraints = ({ protocolParameters: { coinsPerUtxoByte, maxTxSize, maxValueSize, minFeeCoefficient, minFeeConstant, prices }, buildTx, redeemersByType, txEvaluator }) => {
34
91
  if (!coinsPerUtxoByte || !maxTxSize || !maxValueSize || !minFeeCoefficient || !minFeeConstant || !prices) {
35
92
  throw new core_1.InvalidProtocolParametersError('Missing one of: coinsPerUtxoByte, maxTxSize, maxValueSize, minFeeCoefficient, minFeeConstant, prices');
36
93
  }
37
94
  return {
38
95
  computeMinimumCoinQuantity: (0, exports.computeMinimumCoinQuantity)(coinsPerUtxoByte),
39
- computeMinimumCost: (0, exports.computeMinimumCost)({ minFeeCoefficient, minFeeConstant, prices }, buildTx),
96
+ computeMinimumCost: (0, exports.computeMinimumCost)({ minFeeCoefficient, minFeeConstant, prices }, buildTx, txEvaluator, redeemersByType),
40
97
  computeSelectionLimit: (0, exports.computeSelectionLimit)(maxTxSize, buildTx),
41
98
  tokenBundleSizeExceedsLimit: (0, exports.tokenBundleSizeExceedsLimit)(maxValueSize)
42
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"selectionConstraints.js","sourceRoot":"","sources":["../../../src/input-selection/selectionConstraints.ts"],"names":[],"mappings":";;;AAAA,4CAA2F;AAW3F,kCAAoF;AAEvE,QAAA,OAAO,GAAG,qBAA2B,CAAC;AAS5C,MAAM,kBAAkB,GAC7B,CACE,EACE,iBAAiB,EACjB,cAAc,EACd,MAAM,EAC8F,EACtG,OAAgB,EACD,EAAE,CACnB,KAAK,EAAE,SAAS,EAAE,EAAE;IAClB,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,IAAA,aAAM,EAAC,EAAE,EAAE,MAAM,EAAE,IAAA,qBAAc,EAAC,cAAc,CAAC,EAAE,IAAA,wBAAiB,EAAC,iBAAiB,CAAC,CAAC,CAAC;AAClG,CAAC,CAAC;AAbS,QAAA,kBAAkB,sBAa3B;AAEG,MAAM,0BAA0B,GACrC,CAAC,gBAAgF,EAA8B,EAAE,CACjH,CAAC,MAAM,EAAE,EAAE,CACT,IAAA,qBAAc,EAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAHxC,QAAA,0BAA0B,8BAGc;AAE9C,MAAM,2BAA2B,GACtC,CAAC,YAAwE,EAA+B,EAAE,CAC1G,CAAC,WAAW,EAAE,EAAE;IACd,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,KAAK,GAAG,IAAI,oBAAa,CAAC,KAAK,CAAC,eAAO,CAAC,CAAC;IAC/C,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAEjC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC;AAClD,CAAC,CAAC;AAXS,QAAA,2BAA2B,+BAWpC;AAEJ,MAAM,SAAS,GAAG,CAAC,EAA6B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC;AASrF,MAAM,qBAAqB,GAChC,CAAC,SAAkE,EAAE,OAAgB,EAAyB,EAAE,CAChH,KAAK,EAAE,iBAAiB,EAAE,EAAE;IAC1B,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,oBAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,IAAI,MAAM,IAAI,SAAS,EAAE;QACvB,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;KACtC;IACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;AATS,QAAA,qBAAqB,yBAS9B;AAEG,MAAM,2BAA2B,GAAG,CAAC,EAC1C,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,EAC5G,OAAO,EAC0B,EAAwB,EAAE;IAC3D,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,IAAI,CAAC,iBAAiB,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE;QACxG,MAAM,IAAI,qCAA8B,CACtC,sGAAsG,CACvG,CAAC;KACH;IACD,OAAO;QACL,0BAA0B,EAAE,IAAA,kCAA0B,EAAC,gBAAgB,CAAC;QACxE,kBAAkB,EAAE,IAAA,0BAAkB,EAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;QAC9F,qBAAqB,EAAE,IAAA,6BAAqB,EAAC,SAAS,EAAE,OAAO,CAAC;QAChE,2BAA2B,EAAE,IAAA,mCAA2B,EAAC,YAAY,CAAC;KACvE,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,2BAA2B,+BAetC"}
1
+ {"version":3,"file":"selectionConstraints.js","sourceRoot":"","sources":["../../../src/input-selection/selectionConstraints.ts"],"names":[],"mappings":"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"}