@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.
- package/dist/cjs/createTransactionInternals.d.ts +6 -2
- package/dist/cjs/createTransactionInternals.d.ts.map +1 -1
- package/dist/cjs/createTransactionInternals.js +11 -3
- package/dist/cjs/createTransactionInternals.js.map +1 -1
- package/dist/cjs/input-selection/selectionConstraints.d.ts +14 -3
- package/dist/cjs/input-selection/selectionConstraints.d.ts.map +1 -1
- package/dist/cjs/input-selection/selectionConstraints.js +61 -4
- package/dist/cjs/input-selection/selectionConstraints.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/tx-builder/GreedyTxEvaluator.d.ts +8 -0
- package/dist/cjs/tx-builder/GreedyTxEvaluator.d.ts.map +1 -0
- package/dist/cjs/tx-builder/GreedyTxEvaluator.js +39 -0
- package/dist/cjs/tx-builder/GreedyTxEvaluator.js.map +1 -0
- package/dist/cjs/tx-builder/OutputBuilder.d.ts +2 -1
- package/dist/cjs/tx-builder/OutputBuilder.d.ts.map +1 -1
- package/dist/cjs/tx-builder/OutputBuilder.js +14 -2
- package/dist/cjs/tx-builder/OutputBuilder.js.map +1 -1
- package/dist/cjs/tx-builder/TxBuilder.d.ts +5 -1
- package/dist/cjs/tx-builder/TxBuilder.d.ts.map +1 -1
- package/dist/cjs/tx-builder/TxBuilder.js +173 -47
- package/dist/cjs/tx-builder/TxBuilder.js.map +1 -1
- package/dist/cjs/tx-builder/costModels.d.ts +11 -0
- package/dist/cjs/tx-builder/costModels.d.ts.map +1 -0
- package/dist/cjs/tx-builder/costModels.js +77 -0
- package/dist/cjs/tx-builder/costModels.js.map +1 -0
- package/dist/cjs/tx-builder/index.d.ts +1 -0
- package/dist/cjs/tx-builder/index.d.ts.map +1 -1
- package/dist/cjs/tx-builder/index.js +1 -0
- package/dist/cjs/tx-builder/index.js.map +1 -1
- package/dist/cjs/tx-builder/initializeTx.d.ts.map +1 -1
- package/dist/cjs/tx-builder/initializeTx.js +18 -6
- package/dist/cjs/tx-builder/initializeTx.js.map +1 -1
- package/dist/cjs/tx-builder/types.d.ts +23 -0
- package/dist/cjs/tx-builder/types.d.ts.map +1 -1
- package/dist/cjs/tx-builder/utils.d.ts +23 -0
- package/dist/cjs/tx-builder/utils.d.ts.map +1 -0
- package/dist/cjs/tx-builder/utils.js +134 -0
- package/dist/cjs/tx-builder/utils.js.map +1 -0
- package/dist/cjs/types.d.ts +9 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/createTransactionInternals.d.ts +7 -3
- package/dist/esm/createTransactionInternals.d.ts.map +1 -1
- package/dist/esm/createTransactionInternals.js +11 -3
- package/dist/esm/createTransactionInternals.js.map +1 -1
- package/dist/esm/fees/index.d.ts +1 -1
- package/dist/esm/fees/index.js +1 -1
- package/dist/esm/index.d.ts +8 -8
- package/dist/esm/index.js +8 -8
- package/dist/esm/input-selection/index.d.ts +1 -1
- package/dist/esm/input-selection/index.js +1 -1
- package/dist/esm/input-selection/selectionConstraints.d.ts +14 -3
- package/dist/esm/input-selection/selectionConstraints.d.ts.map +1 -1
- package/dist/esm/input-selection/selectionConstraints.js +63 -6
- package/dist/esm/input-selection/selectionConstraints.js.map +1 -1
- package/dist/esm/output-validation/index.d.ts +2 -2
- package/dist/esm/output-validation/index.js +2 -2
- package/dist/esm/output-validation/outputValidator.d.ts +1 -1
- package/dist/esm/output-validation/outputValidator.js +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/tx-builder/GreedyTxEvaluator.d.ts +8 -0
- package/dist/esm/tx-builder/GreedyTxEvaluator.d.ts.map +1 -0
- package/dist/esm/tx-builder/GreedyTxEvaluator.js +35 -0
- package/dist/esm/tx-builder/GreedyTxEvaluator.js.map +1 -0
- package/dist/esm/tx-builder/OutputBuilder.d.ts +4 -3
- package/dist/esm/tx-builder/OutputBuilder.d.ts.map +1 -1
- package/dist/esm/tx-builder/OutputBuilder.js +15 -3
- package/dist/esm/tx-builder/OutputBuilder.js.map +1 -1
- package/dist/esm/tx-builder/TxBuilder.d.ts +6 -2
- package/dist/esm/tx-builder/TxBuilder.d.ts.map +1 -1
- package/dist/esm/tx-builder/TxBuilder.js +175 -49
- package/dist/esm/tx-builder/TxBuilder.js.map +1 -1
- package/dist/esm/tx-builder/costModels.d.ts +11 -0
- package/dist/esm/tx-builder/costModels.d.ts.map +1 -0
- package/dist/esm/tx-builder/costModels.js +72 -0
- package/dist/esm/tx-builder/costModels.js.map +1 -0
- package/dist/esm/tx-builder/index.d.ts +5 -4
- package/dist/esm/tx-builder/index.d.ts.map +1 -1
- package/dist/esm/tx-builder/index.js +5 -4
- package/dist/esm/tx-builder/index.js.map +1 -1
- package/dist/esm/tx-builder/initializeTx.d.ts +2 -2
- package/dist/esm/tx-builder/initializeTx.d.ts.map +1 -1
- package/dist/esm/tx-builder/initializeTx.js +20 -8
- package/dist/esm/tx-builder/initializeTx.js.map +1 -1
- package/dist/esm/tx-builder/types.d.ts +26 -3
- package/dist/esm/tx-builder/types.d.ts.map +1 -1
- package/dist/esm/tx-builder/utils.d.ts +23 -0
- package/dist/esm/tx-builder/utils.d.ts.map +1 -0
- package/dist/esm/tx-builder/utils.js +122 -0
- package/dist/esm/tx-builder/utils.js.map +1 -0
- package/dist/esm/types.d.ts +10 -2
- package/dist/esm/types.d.ts.map +1 -1
- 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;
|
|
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
|
|
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;
|
|
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,
|
|
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) =>
|
|
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,
|
|
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
|
|
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
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"selectionConstraints.js","sourceRoot":"","sources":["../../../src/input-selection/selectionConstraints.ts"],"names":[],"mappings":";;;AAAA,4CAA2F;AAC3F,kEAUsC;AACtC,kCAAoF;AAGvE,QAAA,OAAO,GAAG,qBAA2B,CAAC;AAoBnD,MAAM,eAAe,GAAG,CACtB,UAA8B,EAC9B,eAAgC,EAChC,QAA6B,EACJ,EAAE;IAC3B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAG3C,MAAM,YAAY,GAA8F;QAC9G,CAAC,cAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK;QACtD,CAAC,cAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI;QACpD,CAAC,cAAO,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC,WAAW;QAClE,CAAC,cAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,UAAU;QAChE,CAAC,cAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO;QAC1D,CAAC,cAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI;KACrD,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC/B,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;QAEpF,IAAI,aAAa,CAAC;QAClB,IAAI,MAAM,CAAC,OAAO,KAAK,cAAO,CAAC,eAAe,CAAC,KAAK,EAAE;YACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAErC,aAAa,GAAI,SAA2C,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAEjG,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;SAClH;aAAM;YACL,MAAM,YAAY,GAAG,SAA+B,CAAC;YAErD,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;YAEjF,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SAC3F;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;KAClE;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,cAA+B,EAC/B,OAAwB,EACxB,QAA6B,EACT,EAAE;IACtB,IAAI,SAAS,GAAuB,EAAE,CAAC;IAEvC,IAAI,OAAO,CAAC,SAAS,EAAE;QAErB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,cAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAGvG,IAAI,cAAc,CAAC,KAAK,EAAE;YACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE;gBAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAEpF,IAAI,KAAK,GAAG,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;gBAEtE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;gBAEpB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;aAC9B;SACF;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAC7B,CACE,EACE,iBAAiB,EACjB,cAAc,EACd,MAAM,EAC8F,EACtG,OAAgB,EAChB,WAAwB,EACxB,eAAgC,EACf,EAAE,CACrB,KAAK,EAAE,SAAS,EAAE,EAAE;IAClB,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAAQ,CAAC,CAAC;IAE1D,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QAEzE,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,eAAe,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1E,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;KACvG;IAED,OAAO;QACL,GAAG,EAAE,IAAA,aAAM,EAAC,EAAE,EAAE,MAAM,EAAE,IAAA,qBAAc,EAAC,cAAc,CAAC,EAAE,IAAA,wBAAiB,EAAC,iBAAiB,CAAC,CAAC;QAC7F,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS;KAChC,CAAC;AACJ,CAAC,CAAC;AA1BS,QAAA,kBAAkB,sBA0B3B;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,EACP,eAAe,EACf,WAAW,EACsB,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,EACpC,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,EAC7C,OAAO,EACP,WAAW,EACX,eAAe,CAChB;QACD,qBAAqB,EAAE,IAAA,6BAAqB,EAAC,SAAS,EAAE,OAAO,CAAC;QAChE,2BAA2B,EAAE,IAAA,mCAA2B,EAAC,YAAY,CAAC;KACvE,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,2BAA2B,+BAsBtC"}
|