@cardano-sdk/input-selection 0.9.5 → 0.10.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.
- package/dist/cjs/GreedySelection/GreedyInputSelector.d.ts +11 -0
- package/dist/cjs/GreedySelection/GreedyInputSelector.d.ts.map +1 -0
- package/dist/cjs/GreedySelection/GreedyInputSelector.js +114 -0
- package/dist/cjs/GreedySelection/GreedyInputSelector.js.map +1 -0
- package/dist/cjs/GreedySelection/index.d.ts +3 -0
- package/dist/cjs/GreedySelection/index.d.ts.map +1 -0
- package/dist/cjs/GreedySelection/index.js +19 -0
- package/dist/cjs/GreedySelection/index.js.map +1 -0
- package/dist/cjs/GreedySelection/util.d.ts +4 -0
- package/dist/cjs/GreedySelection/util.d.ts.map +1 -0
- package/dist/cjs/GreedySelection/util.js +61 -0
- package/dist/cjs/GreedySelection/util.js.map +1 -0
- package/dist/cjs/RoundRobinRandomImprove/change.d.ts +1 -1
- package/dist/cjs/RoundRobinRandomImprove/change.d.ts.map +1 -1
- package/dist/cjs/RoundRobinRandomImprove/change.js +2 -3
- package/dist/cjs/RoundRobinRandomImprove/change.js.map +1 -1
- package/dist/cjs/RoundRobinRandomImprove/index.d.ts +3 -1
- package/dist/cjs/RoundRobinRandomImprove/index.d.ts.map +1 -1
- package/dist/cjs/RoundRobinRandomImprove/index.js +14 -6
- package/dist/cjs/RoundRobinRandomImprove/index.js.map +1 -1
- package/dist/cjs/RoundRobinRandomImprove/roundRobin.d.ts +1 -1
- package/dist/cjs/RoundRobinRandomImprove/roundRobin.d.ts.map +1 -1
- package/dist/cjs/RoundRobinRandomImprove/roundRobin.js +1 -1
- package/dist/cjs/RoundRobinRandomImprove/roundRobin.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +1 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/{RoundRobinRandomImprove/util.d.ts → util.d.ts} +9 -2
- package/dist/cjs/util.d.ts.map +1 -0
- package/dist/cjs/{RoundRobinRandomImprove/util.js → util.js} +111 -3
- package/dist/cjs/util.js.map +1 -0
- package/dist/esm/GreedySelection/GreedyInputSelector.d.ts +11 -0
- package/dist/esm/GreedySelection/GreedyInputSelector.d.ts.map +1 -0
- package/dist/esm/GreedySelection/GreedyInputSelector.js +110 -0
- package/dist/esm/GreedySelection/GreedyInputSelector.js.map +1 -0
- package/dist/esm/GreedySelection/index.d.ts +3 -0
- package/dist/esm/GreedySelection/index.d.ts.map +1 -0
- package/dist/esm/GreedySelection/index.js +3 -0
- package/dist/esm/GreedySelection/index.js.map +1 -0
- package/dist/esm/GreedySelection/util.d.ts +4 -0
- package/dist/esm/GreedySelection/util.d.ts.map +1 -0
- package/dist/esm/GreedySelection/util.js +57 -0
- package/dist/esm/GreedySelection/util.js.map +1 -0
- package/dist/esm/RoundRobinRandomImprove/change.d.ts +1 -1
- package/dist/esm/RoundRobinRandomImprove/change.d.ts.map +1 -1
- package/dist/esm/RoundRobinRandomImprove/change.js +2 -3
- package/dist/esm/RoundRobinRandomImprove/change.js.map +1 -1
- package/dist/esm/RoundRobinRandomImprove/index.d.ts +3 -1
- package/dist/esm/RoundRobinRandomImprove/index.d.ts.map +1 -1
- package/dist/esm/RoundRobinRandomImprove/index.js +14 -6
- package/dist/esm/RoundRobinRandomImprove/index.js.map +1 -1
- package/dist/esm/RoundRobinRandomImprove/roundRobin.d.ts +1 -1
- package/dist/esm/RoundRobinRandomImprove/roundRobin.d.ts.map +1 -1
- package/dist/esm/RoundRobinRandomImprove/roundRobin.js +1 -1
- package/dist/esm/RoundRobinRandomImprove/roundRobin.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/{RoundRobinRandomImprove/util.d.ts → util.d.ts} +9 -2
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +166 -0
- package/dist/esm/util.js.map +1 -0
- package/package.json +4 -3
- package/dist/cjs/RoundRobinRandomImprove/util.d.ts.map +0 -1
- package/dist/cjs/RoundRobinRandomImprove/util.js.map +0 -1
- package/dist/esm/RoundRobinRandomImprove/util.d.ts.map +0 -1
- package/dist/esm/RoundRobinRandomImprove/util.js +0 -63
- package/dist/esm/RoundRobinRandomImprove/util.js.map +0 -1
package/dist/esm/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Cardano } from '@cardano-sdk/core';
|
|
|
2
2
|
export interface SelectionSkeleton {
|
|
3
3
|
inputs: Set<Cardano.Utxo>;
|
|
4
4
|
outputs: Set<Cardano.TxOut>;
|
|
5
|
-
change:
|
|
5
|
+
change: Array<Cardano.TxOut>;
|
|
6
6
|
fee: Cardano.Lovelace;
|
|
7
7
|
}
|
|
8
8
|
export declare type Selection = SelectionSkeleton;
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAOhC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAI1B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAM5B,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAOhC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAI1B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAM5B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAM7B,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC;CACvB;AAED,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IAOrB,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAKD,oBAAY,aAAa,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAKhG,oBAAY,2BAA2B,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAKtF,oBAAY,0BAA0B,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC;AAMrF,oBAAY,qBAAqB,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9F,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,aAAa,CAAC;IAClC,2BAA2B,EAAE,2BAA2B,CAAC;IACzD,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAKD,MAAM,WAAW,aAAa;IAI5B,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;IAKjC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IAIvC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAIxB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAI5B,WAAW,EAAE,oBAAoB,CAAC;IAIlC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAM5B,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACpE;AAED,oBAAY,mCAAmC,GAAG,IAAI,CACpD,OAAO,CAAC,kBAAkB,EAC1B,kBAAkB,GAAG,WAAW,GAAG,cAAc,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,QAAQ,CACtG,CAAC;AAEF,oBAAY,0CAA0C,GAAG,QAAQ,CAAC;KAC/D,CAAC,IAAI,MAAM,mCAAmC,GAAG,mCAAmC,CAAC,CAAC,CAAC;CACzF,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Cardano } from '@cardano-sdk/core';
|
|
2
|
-
import { ImplicitValue } from '
|
|
2
|
+
import { ComputeMinimumCoinQuantity, ImplicitValue, TokenBundleSizeExceedsLimit } from './types';
|
|
3
|
+
export declare const stubMaxSizeAddress: Cardano.PaymentAddress;
|
|
3
4
|
export interface ImplicitTokens {
|
|
4
5
|
spend(assetId: Cardano.AssetId): bigint;
|
|
5
6
|
input(assetId: Cardano.AssetId): bigint;
|
|
@@ -11,6 +12,7 @@ export interface RequiredImplicitValue {
|
|
|
11
12
|
export interface RoundRobinRandomImproveArgs {
|
|
12
13
|
utxo: Cardano.Utxo[];
|
|
13
14
|
outputs: Cardano.TxOut[];
|
|
15
|
+
changeAddress: Cardano.PaymentAddress;
|
|
14
16
|
uniqueTxAssetIDs: Cardano.AssetId[];
|
|
15
17
|
implicitValue: RequiredImplicitValue;
|
|
16
18
|
random: typeof Math.random;
|
|
@@ -24,11 +26,16 @@ export declare const mintToImplicitTokens: (mintMap?: Cardano.TokenMap) => {
|
|
|
24
26
|
implicitTokensInput: Map<Cardano.AssetId, bigint>;
|
|
25
27
|
implicitTokensSpend: Map<Cardano.AssetId, bigint>;
|
|
26
28
|
};
|
|
27
|
-
export declare const preProcessArgs: (availableUtxo: Set<Cardano.Utxo>, outputSet: Set<Cardano.TxOut>, partialImplicitValue?: ImplicitValue) => PreProcessedArgs;
|
|
29
|
+
export declare const preProcessArgs: (availableUtxo: Set<Cardano.Utxo>, outputSet: Set<Cardano.TxOut>, changeAddress: Cardano.PaymentAddress, partialImplicitValue?: ImplicitValue) => PreProcessedArgs;
|
|
28
30
|
export declare function toValues(outputs: Cardano.TxOut[]): Cardano.Value[];
|
|
29
31
|
export declare function toValues(utxo: Cardano.Utxo[]): Cardano.Value[];
|
|
30
32
|
export declare const assetQuantitySelector: (id: Cardano.AssetId) => (quantities: Cardano.Value[]) => bigint;
|
|
31
33
|
export declare const getCoinQuantity: (quantities: Cardano.Value[]) => bigint;
|
|
32
34
|
export declare const assertIsCoinBalanceSufficient: (utxoValues: Cardano.Value[], outputValues: Cardano.Value[], implicitCoin: Required<Cardano.util.ImplicitCoin>) => void;
|
|
33
35
|
export declare const assertIsBalanceSufficient: (uniqueTxAssetIDs: Cardano.AssetId[], utxo: Cardano.Utxo[], outputs: Cardano.TxOut[], { implicitCoin, implicitTokens }: RequiredImplicitValue) => void;
|
|
36
|
+
export declare const sortByCoins: (lhs: Cardano.TxOut, rhs: Cardano.TxOut) => 0 | 1 | -1;
|
|
37
|
+
export declare const subtractTokenMaps: (lhs: Cardano.TokenMap | undefined, rhs: Cardano.TokenMap | undefined) => Cardano.TokenMap | undefined;
|
|
38
|
+
export declare const addTokenMaps: (lhs: Cardano.TokenMap | undefined, rhs: Cardano.TokenMap | undefined) => Cardano.TokenMap | undefined;
|
|
39
|
+
export declare const hasNegativeAssetValue: (assets: Cardano.TokenMap | undefined) => boolean;
|
|
40
|
+
export declare const isValidValue: (value: Cardano.Value, computeMinimumCoinQuantity: ComputeMinimumCoinQuantity, tokenBundleSizeExceedsLimit: TokenBundleSizeExceedsLimit, feeToDiscount: bigint) => boolean;
|
|
34
41
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAIjG,eAAO,MAAM,kBAAkB,wBAE9B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IACxC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClD,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACpC,aAAa,EAAE,qBAAqB,CAAC;IACrC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;CAC5B;AAED,oBAAY,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,oBAAoB;;;CAOhC,CAAC;AAEF,eAAO,MAAM,cAAc,kBACV,IAAI,QAAQ,IAAI,CAAC,aACrB,IAAI,QAAQ,KAAK,CAAC,iBACd,QAAQ,cAAc,yBACd,aAAa,KACnC,gBAqBF,CAAC;AAKF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AACpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAWhE,eAAO,MAAM,qBAAqB,OAC3B,QAAQ,OAAO,kBACP,QAAQ,KAAK,EAAE,KAAG,MACwC,CAAC;AAE1E,eAAO,MAAM,eAAe,eAAgB,QAAQ,KAAK,EAAE,KAAG,MACR,CAAC;AAEvD,eAAO,MAAM,6BAA6B,eAC5B,QAAQ,KAAK,EAAE,gBACb,QAAQ,KAAK,EAAE,gBACf,SAAS,QAAQ,IAAI,CAAC,YAAY,CAAC,SAOlD,CAAC;AAQF,eAAO,MAAM,yBAAyB,qBAClB,QAAQ,OAAO,EAAE,QAC7B,QAAQ,IAAI,EAAE,WACX,QAAQ,KAAK,EAAE,oCACU,qBAAqB,KACtD,IAeF,CAAC;AAQF,eAAO,MAAM,WAAW,QAAS,QAAQ,KAAK,OAAO,QAAQ,KAAK,eAOjE,CAAC;AASF,eAAO,MAAM,iBAAiB,QACvB,QAAQ,QAAQ,GAAG,SAAS,OAC5B,QAAQ,QAAQ,GAAG,SAAS,KAChC,QAAQ,QAAQ,GAAG,SA0DrB,CAAC;AASF,eAAO,MAAM,YAAY,QAClB,QAAQ,QAAQ,GAAG,SAAS,OAC5B,QAAQ,QAAQ,GAAG,SAAS,KAChC,QAAQ,QAAQ,GAAG,SAoCrB,CAAC;AAQF,eAAO,MAAM,qBAAqB,WAAY,QAAQ,QAAQ,GAAG,SAAS,KAAG,OAK5E,CAAC;AAWF,eAAO,MAAM,YAAY,UAChB,QAAQ,KAAK,8BACQ,0BAA0B,+BACzB,2BAA2B,iBACzC,MAAM,KACpB,OAMF,CAAC"}
|
package/dist/esm/util.js
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { BigIntMath } from '@cardano-sdk/util';
|
|
2
|
+
import { Cardano } from '@cardano-sdk/core';
|
|
3
|
+
import { InputSelectionError, InputSelectionFailure } from './InputSelectionError';
|
|
4
|
+
import uniq from 'lodash/uniq';
|
|
5
|
+
export const stubMaxSizeAddress = Cardano.PaymentAddress('addr_test1qqydn46r6mhge0kfpqmt36m6q43knzsd9ga32n96m89px3nuzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475qypp3m9');
|
|
6
|
+
export const mintToImplicitTokens = (mintMap = new Map()) => {
|
|
7
|
+
const mint = [...mintMap.entries()];
|
|
8
|
+
const implicitTokensInput = new Map(mint.filter(([_, quantity]) => quantity > 0));
|
|
9
|
+
const implicitTokensSpend = new Map(mint.filter(([_, quantity]) => quantity < 0).map(([assetId, quantity]) => [assetId, -quantity]));
|
|
10
|
+
return { implicitTokensInput, implicitTokensSpend };
|
|
11
|
+
};
|
|
12
|
+
export const preProcessArgs = (availableUtxo, outputSet, changeAddress, partialImplicitValue) => {
|
|
13
|
+
const outputs = [...outputSet];
|
|
14
|
+
const implicitCoin = {
|
|
15
|
+
deposit: partialImplicitValue?.coin?.deposit || 0n,
|
|
16
|
+
input: partialImplicitValue?.coin?.input || 0n
|
|
17
|
+
};
|
|
18
|
+
const mintMap = partialImplicitValue?.mint || new Map();
|
|
19
|
+
const { implicitTokensInput, implicitTokensSpend } = mintToImplicitTokens(mintMap);
|
|
20
|
+
const implicitTokens = {
|
|
21
|
+
input: (assetId) => implicitTokensInput.get(assetId) || 0n,
|
|
22
|
+
spend: (assetId) => implicitTokensSpend.get(assetId) || 0n
|
|
23
|
+
};
|
|
24
|
+
const uniqueOutputAssetIDs = uniq(outputs.flatMap(({ value: { assets } }) => [...(assets?.keys() || [])]));
|
|
25
|
+
const uniqueTxAssetIDs = uniq([...uniqueOutputAssetIDs, ...mintMap.keys()]);
|
|
26
|
+
return {
|
|
27
|
+
changeAddress,
|
|
28
|
+
implicitValue: { implicitCoin, implicitTokens },
|
|
29
|
+
outputs,
|
|
30
|
+
uniqueTxAssetIDs,
|
|
31
|
+
utxo: [...availableUtxo]
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
const isUtxoArray = (outputsOrUtxo) => outputsOrUtxo.length > 0 && Array.isArray(outputsOrUtxo[0]);
|
|
35
|
+
export function toValues(outputsOrUtxo) {
|
|
36
|
+
if (isUtxoArray(outputsOrUtxo)) {
|
|
37
|
+
return outputsOrUtxo.map(([_, { value }]) => value);
|
|
38
|
+
}
|
|
39
|
+
return outputsOrUtxo.map(({ value }) => value);
|
|
40
|
+
}
|
|
41
|
+
export const assetQuantitySelector = (id) => (quantities) => BigIntMath.sum(quantities.map(({ assets }) => assets?.get(id) || 0n));
|
|
42
|
+
export const getCoinQuantity = (quantities) => BigIntMath.sum(quantities.map(({ coins }) => coins));
|
|
43
|
+
export const assertIsCoinBalanceSufficient = (utxoValues, outputValues, implicitCoin) => {
|
|
44
|
+
const utxoCoinTotal = getCoinQuantity(utxoValues);
|
|
45
|
+
const outputsCoinTotal = getCoinQuantity(outputValues);
|
|
46
|
+
if (outputsCoinTotal + implicitCoin.deposit > utxoCoinTotal + implicitCoin.input) {
|
|
47
|
+
throw new InputSelectionError(InputSelectionFailure.UtxoBalanceInsufficient);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
export const assertIsBalanceSufficient = (uniqueTxAssetIDs, utxo, outputs, { implicitCoin, implicitTokens }) => {
|
|
51
|
+
if (utxo.length === 0) {
|
|
52
|
+
throw new InputSelectionError(InputSelectionFailure.UtxoBalanceInsufficient);
|
|
53
|
+
}
|
|
54
|
+
const utxoValues = toValues(utxo);
|
|
55
|
+
const outputsValues = toValues(outputs);
|
|
56
|
+
for (const assetId of uniqueTxAssetIDs) {
|
|
57
|
+
const getAssetQuantity = assetQuantitySelector(assetId);
|
|
58
|
+
const utxoTotal = getAssetQuantity(utxoValues);
|
|
59
|
+
const outputsTotal = getAssetQuantity(outputsValues);
|
|
60
|
+
if (outputsTotal + implicitTokens.spend(assetId) > utxoTotal + implicitTokens.input(assetId)) {
|
|
61
|
+
throw new InputSelectionError(InputSelectionFailure.UtxoBalanceInsufficient);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
assertIsCoinBalanceSufficient(utxoValues, outputsValues, implicitCoin);
|
|
65
|
+
};
|
|
66
|
+
export const sortByCoins = (lhs, rhs) => {
|
|
67
|
+
if (lhs.value.coins > rhs.value.coins) {
|
|
68
|
+
return -1;
|
|
69
|
+
}
|
|
70
|
+
else if (lhs.value.coins < rhs.value.coins) {
|
|
71
|
+
return 1;
|
|
72
|
+
}
|
|
73
|
+
return 0;
|
|
74
|
+
};
|
|
75
|
+
export const subtractTokenMaps = (lhs, rhs) => {
|
|
76
|
+
if (!rhs) {
|
|
77
|
+
if (!lhs)
|
|
78
|
+
return undefined;
|
|
79
|
+
const nonEmptyValues = new Map();
|
|
80
|
+
for (const [key, value] of lhs.entries()) {
|
|
81
|
+
if (value !== 0n)
|
|
82
|
+
nonEmptyValues.set(key, value);
|
|
83
|
+
}
|
|
84
|
+
return nonEmptyValues;
|
|
85
|
+
}
|
|
86
|
+
if (!lhs) {
|
|
87
|
+
const negativeValues = new Map();
|
|
88
|
+
for (const [key, value] of rhs.entries()) {
|
|
89
|
+
if (value !== 0n)
|
|
90
|
+
negativeValues.set(key, -value);
|
|
91
|
+
}
|
|
92
|
+
return negativeValues;
|
|
93
|
+
}
|
|
94
|
+
const result = new Map();
|
|
95
|
+
const intersection = new Array();
|
|
96
|
+
for (const [key, value] of lhs.entries()) {
|
|
97
|
+
if (rhs.has(key)) {
|
|
98
|
+
intersection.push(key);
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (value !== 0n)
|
|
102
|
+
result.set(key, value);
|
|
103
|
+
}
|
|
104
|
+
for (const [key, value] of rhs.entries()) {
|
|
105
|
+
if (lhs.has(key)) {
|
|
106
|
+
intersection.push(key);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (value !== 0n)
|
|
110
|
+
result.set(key, -value);
|
|
111
|
+
}
|
|
112
|
+
const uniqIntersection = uniq(intersection);
|
|
113
|
+
for (const id of uniqIntersection) {
|
|
114
|
+
const lshVal = lhs.get(id);
|
|
115
|
+
const rshVal = rhs.get(id);
|
|
116
|
+
const remainingCoins = lshVal - rshVal;
|
|
117
|
+
if (remainingCoins !== 0n)
|
|
118
|
+
result.set(id, remainingCoins);
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
};
|
|
122
|
+
export const addTokenMaps = (lhs, rhs) => {
|
|
123
|
+
if (!lhs)
|
|
124
|
+
return rhs;
|
|
125
|
+
if (!rhs)
|
|
126
|
+
return lhs;
|
|
127
|
+
const result = new Map();
|
|
128
|
+
const intersection = new Array();
|
|
129
|
+
for (const [key, value] of lhs.entries()) {
|
|
130
|
+
if (rhs.has(key)) {
|
|
131
|
+
intersection.push(key);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
if (value !== 0n)
|
|
135
|
+
result.set(key, value);
|
|
136
|
+
}
|
|
137
|
+
for (const [key, value] of rhs.entries()) {
|
|
138
|
+
if (lhs.has(key)) {
|
|
139
|
+
intersection.push(key);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (value !== 0n)
|
|
143
|
+
result.set(key, value);
|
|
144
|
+
}
|
|
145
|
+
const uniqIntersection = uniq(intersection);
|
|
146
|
+
for (const id of uniqIntersection) {
|
|
147
|
+
const lshVal = lhs.get(id);
|
|
148
|
+
const rshVal = rhs.get(id);
|
|
149
|
+
if (lshVal + rshVal !== 0n)
|
|
150
|
+
result.set(id, lshVal + rshVal);
|
|
151
|
+
}
|
|
152
|
+
return result;
|
|
153
|
+
};
|
|
154
|
+
export const hasNegativeAssetValue = (assets) => {
|
|
155
|
+
if (!assets)
|
|
156
|
+
return false;
|
|
157
|
+
const values = [...assets.values()];
|
|
158
|
+
return values.some((quantity) => quantity < 0n);
|
|
159
|
+
};
|
|
160
|
+
export const isValidValue = (value, computeMinimumCoinQuantity, tokenBundleSizeExceedsLimit, feeToDiscount) => {
|
|
161
|
+
let isValid = value.coins - feeToDiscount >= computeMinimumCoinQuantity({ address: stubMaxSizeAddress, value });
|
|
162
|
+
if (value.assets)
|
|
163
|
+
isValid = isValid && !tokenBundleSizeExceedsLimit(value.assets);
|
|
164
|
+
return isValid;
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cardano-sdk/input-selection",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "TypeScript definitions for input-selection (Coin Selection Algorithms for Cardano)",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=14.20.1"
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"test:debug": "DEBUG=true yarn test"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@cardano-sdk/util-dev": "~0.12.
|
|
42
|
+
"@cardano-sdk/util-dev": "~0.12.1",
|
|
43
43
|
"@types/lodash": "^4.14.182",
|
|
44
44
|
"eslint": "^7.32.0",
|
|
45
45
|
"fast-check": "^2.17.0",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@cardano-sdk/core": "~0.13.0",
|
|
56
56
|
"@cardano-sdk/util": "~0.11.0",
|
|
57
|
+
"bignumber.js": "^9.1.1",
|
|
57
58
|
"lodash": "^4.17.21",
|
|
58
59
|
"ts-custom-error": "^3.2.0"
|
|
59
60
|
},
|
|
@@ -63,5 +64,5 @@
|
|
|
63
64
|
"LICENSE",
|
|
64
65
|
"NOTICE"
|
|
65
66
|
],
|
|
66
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "1e727698158588f87464c9a7f09ededfa4be9970"
|
|
67
68
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/RoundRobinRandomImprove/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IACxC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClD,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACpC,aAAa,EAAE,qBAAqB,CAAC;IACrC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;CAC5B;AAED,oBAAY,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,oBAAoB;;;CAOhC,CAAC;AAEF,eAAO,MAAM,cAAc,kBACV,IAAI,QAAQ,IAAI,CAAC,aACrB,IAAI,QAAQ,KAAK,CAAC,yBACN,aAAa,KACnC,gBAoBF,CAAC;AAKF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AACpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAWhE,eAAO,MAAM,qBAAqB,OAC3B,QAAQ,OAAO,kBACP,QAAQ,KAAK,EAAE,KAAG,MACwC,CAAC;AAE1E,eAAO,MAAM,eAAe,eAAgB,QAAQ,KAAK,EAAE,KAAG,MACR,CAAC;AAEvD,eAAO,MAAM,6BAA6B,eAC5B,QAAQ,KAAK,EAAE,gBACb,QAAQ,KAAK,EAAE,gBACf,SAAS,QAAQ,IAAI,CAAC,YAAY,CAAC,SAOlD,CAAC;AAQF,eAAO,MAAM,yBAAyB,qBAClB,QAAQ,OAAO,EAAE,QAC7B,QAAQ,IAAI,EAAE,WACX,QAAQ,KAAK,EAAE,oCACU,qBAAqB,KACtD,IAeF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/RoundRobinRandomImprove/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/RoundRobinRandomImprove/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IACxC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClD,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACpC,aAAa,EAAE,qBAAqB,CAAC;IACrC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;CAC5B;AAED,oBAAY,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,oBAAoB;;;CAOhC,CAAC;AAEF,eAAO,MAAM,cAAc,kBACV,IAAI,QAAQ,IAAI,CAAC,aACrB,IAAI,QAAQ,KAAK,CAAC,yBACN,aAAa,KACnC,gBAoBF,CAAC;AAKF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AACpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAWhE,eAAO,MAAM,qBAAqB,OAC3B,QAAQ,OAAO,kBACP,QAAQ,KAAK,EAAE,KAAG,MACwC,CAAC;AAE1E,eAAO,MAAM,eAAe,eAAgB,QAAQ,KAAK,EAAE,KAAG,MACR,CAAC;AAEvD,eAAO,MAAM,6BAA6B,eAC5B,QAAQ,KAAK,EAAE,gBACb,QAAQ,KAAK,EAAE,gBACf,SAAS,QAAQ,IAAI,CAAC,YAAY,CAAC,SAOlD,CAAC;AAQF,eAAO,MAAM,yBAAyB,qBAClB,QAAQ,OAAO,EAAE,QAC7B,QAAQ,IAAI,EAAE,WACX,QAAQ,KAAK,EAAE,oCACU,qBAAqB,KACtD,IAeF,CAAC"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { BigIntMath } from '@cardano-sdk/util';
|
|
2
|
-
import { InputSelectionError, InputSelectionFailure } from '../InputSelectionError';
|
|
3
|
-
import uniq from 'lodash/uniq';
|
|
4
|
-
export const mintToImplicitTokens = (mintMap = new Map()) => {
|
|
5
|
-
const mint = [...mintMap.entries()];
|
|
6
|
-
const implicitTokensInput = new Map(mint.filter(([_, quantity]) => quantity > 0));
|
|
7
|
-
const implicitTokensSpend = new Map(mint.filter(([_, quantity]) => quantity < 0).map(([assetId, quantity]) => [assetId, -quantity]));
|
|
8
|
-
return { implicitTokensInput, implicitTokensSpend };
|
|
9
|
-
};
|
|
10
|
-
export const preProcessArgs = (availableUtxo, outputSet, partialImplicitValue) => {
|
|
11
|
-
const outputs = [...outputSet];
|
|
12
|
-
const implicitCoin = {
|
|
13
|
-
deposit: partialImplicitValue?.coin?.deposit || 0n,
|
|
14
|
-
input: partialImplicitValue?.coin?.input || 0n
|
|
15
|
-
};
|
|
16
|
-
const mintMap = partialImplicitValue?.mint || new Map();
|
|
17
|
-
const { implicitTokensInput, implicitTokensSpend } = mintToImplicitTokens(mintMap);
|
|
18
|
-
const implicitTokens = {
|
|
19
|
-
input: (assetId) => implicitTokensInput.get(assetId) || 0n,
|
|
20
|
-
spend: (assetId) => implicitTokensSpend.get(assetId) || 0n
|
|
21
|
-
};
|
|
22
|
-
const uniqueOutputAssetIDs = uniq(outputs.flatMap(({ value: { assets } }) => [...(assets?.keys() || [])]));
|
|
23
|
-
const uniqueTxAssetIDs = uniq([...uniqueOutputAssetIDs, ...mintMap.keys()]);
|
|
24
|
-
return {
|
|
25
|
-
implicitValue: { implicitCoin, implicitTokens },
|
|
26
|
-
outputs,
|
|
27
|
-
uniqueTxAssetIDs,
|
|
28
|
-
utxo: [...availableUtxo]
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
const isUtxoArray = (outputsOrUtxo) => outputsOrUtxo.length > 0 && Array.isArray(outputsOrUtxo[0]);
|
|
32
|
-
export function toValues(outputsOrUtxo) {
|
|
33
|
-
if (isUtxoArray(outputsOrUtxo)) {
|
|
34
|
-
return outputsOrUtxo.map(([_, { value }]) => value);
|
|
35
|
-
}
|
|
36
|
-
return outputsOrUtxo.map(({ value }) => value);
|
|
37
|
-
}
|
|
38
|
-
export const assetQuantitySelector = (id) => (quantities) => BigIntMath.sum(quantities.map(({ assets }) => assets?.get(id) || 0n));
|
|
39
|
-
export const getCoinQuantity = (quantities) => BigIntMath.sum(quantities.map(({ coins }) => coins));
|
|
40
|
-
export const assertIsCoinBalanceSufficient = (utxoValues, outputValues, implicitCoin) => {
|
|
41
|
-
const utxoCoinTotal = getCoinQuantity(utxoValues);
|
|
42
|
-
const outputsCoinTotal = getCoinQuantity(outputValues);
|
|
43
|
-
if (outputsCoinTotal + implicitCoin.deposit > utxoCoinTotal + implicitCoin.input) {
|
|
44
|
-
throw new InputSelectionError(InputSelectionFailure.UtxoBalanceInsufficient);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
export const assertIsBalanceSufficient = (uniqueTxAssetIDs, utxo, outputs, { implicitCoin, implicitTokens }) => {
|
|
48
|
-
if (utxo.length === 0) {
|
|
49
|
-
throw new InputSelectionError(InputSelectionFailure.UtxoBalanceInsufficient);
|
|
50
|
-
}
|
|
51
|
-
const utxoValues = toValues(utxo);
|
|
52
|
-
const outputsValues = toValues(outputs);
|
|
53
|
-
for (const assetId of uniqueTxAssetIDs) {
|
|
54
|
-
const getAssetQuantity = assetQuantitySelector(assetId);
|
|
55
|
-
const utxoTotal = getAssetQuantity(utxoValues);
|
|
56
|
-
const outputsTotal = getAssetQuantity(outputsValues);
|
|
57
|
-
if (outputsTotal + implicitTokens.spend(assetId) > utxoTotal + implicitTokens.input(assetId)) {
|
|
58
|
-
throw new InputSelectionError(InputSelectionFailure.UtxoBalanceInsufficient);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
assertIsCoinBalanceSufficient(utxoValues, outputsValues, implicitCoin);
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=util.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/RoundRobinRandomImprove/util.ts"],"names":[],"mappings":"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"}
|