@cardano-sdk/input-selection 0.9.5 → 0.10.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 (76) hide show
  1. package/dist/cjs/GreedySelection/GreedyInputSelector.d.ts +11 -0
  2. package/dist/cjs/GreedySelection/GreedyInputSelector.d.ts.map +1 -0
  3. package/dist/cjs/GreedySelection/GreedyInputSelector.js +114 -0
  4. package/dist/cjs/GreedySelection/GreedyInputSelector.js.map +1 -0
  5. package/dist/cjs/GreedySelection/index.d.ts +3 -0
  6. package/dist/cjs/GreedySelection/index.d.ts.map +1 -0
  7. package/dist/cjs/GreedySelection/index.js +19 -0
  8. package/dist/cjs/GreedySelection/index.js.map +1 -0
  9. package/dist/cjs/GreedySelection/util.d.ts +4 -0
  10. package/dist/cjs/GreedySelection/util.d.ts.map +1 -0
  11. package/dist/cjs/GreedySelection/util.js +61 -0
  12. package/dist/cjs/GreedySelection/util.js.map +1 -0
  13. package/dist/cjs/RoundRobinRandomImprove/change.d.ts +1 -1
  14. package/dist/cjs/RoundRobinRandomImprove/change.d.ts.map +1 -1
  15. package/dist/cjs/RoundRobinRandomImprove/change.js +2 -3
  16. package/dist/cjs/RoundRobinRandomImprove/change.js.map +1 -1
  17. package/dist/cjs/RoundRobinRandomImprove/index.d.ts +3 -1
  18. package/dist/cjs/RoundRobinRandomImprove/index.d.ts.map +1 -1
  19. package/dist/cjs/RoundRobinRandomImprove/index.js +14 -6
  20. package/dist/cjs/RoundRobinRandomImprove/index.js.map +1 -1
  21. package/dist/cjs/RoundRobinRandomImprove/roundRobin.d.ts +1 -1
  22. package/dist/cjs/RoundRobinRandomImprove/roundRobin.d.ts.map +1 -1
  23. package/dist/cjs/RoundRobinRandomImprove/roundRobin.js +1 -1
  24. package/dist/cjs/RoundRobinRandomImprove/roundRobin.js.map +1 -1
  25. package/dist/cjs/index.d.ts +1 -0
  26. package/dist/cjs/index.d.ts.map +1 -1
  27. package/dist/cjs/index.js +1 -0
  28. package/dist/cjs/index.js.map +1 -1
  29. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  30. package/dist/cjs/types.d.ts +1 -1
  31. package/dist/cjs/types.d.ts.map +1 -1
  32. package/dist/cjs/{RoundRobinRandomImprove/util.d.ts → util.d.ts} +9 -2
  33. package/dist/cjs/util.d.ts.map +1 -0
  34. package/dist/cjs/{RoundRobinRandomImprove/util.js → util.js} +111 -3
  35. package/dist/cjs/util.js.map +1 -0
  36. package/dist/esm/GreedySelection/GreedyInputSelector.d.ts +11 -0
  37. package/dist/esm/GreedySelection/GreedyInputSelector.d.ts.map +1 -0
  38. package/dist/esm/GreedySelection/GreedyInputSelector.js +110 -0
  39. package/dist/esm/GreedySelection/GreedyInputSelector.js.map +1 -0
  40. package/dist/esm/GreedySelection/index.d.ts +3 -0
  41. package/dist/esm/GreedySelection/index.d.ts.map +1 -0
  42. package/dist/esm/GreedySelection/index.js +3 -0
  43. package/dist/esm/GreedySelection/index.js.map +1 -0
  44. package/dist/esm/GreedySelection/util.d.ts +4 -0
  45. package/dist/esm/GreedySelection/util.d.ts.map +1 -0
  46. package/dist/esm/GreedySelection/util.js +57 -0
  47. package/dist/esm/GreedySelection/util.js.map +1 -0
  48. package/dist/esm/RoundRobinRandomImprove/change.d.ts +1 -1
  49. package/dist/esm/RoundRobinRandomImprove/change.d.ts.map +1 -1
  50. package/dist/esm/RoundRobinRandomImprove/change.js +2 -3
  51. package/dist/esm/RoundRobinRandomImprove/change.js.map +1 -1
  52. package/dist/esm/RoundRobinRandomImprove/index.d.ts +3 -1
  53. package/dist/esm/RoundRobinRandomImprove/index.d.ts.map +1 -1
  54. package/dist/esm/RoundRobinRandomImprove/index.js +14 -6
  55. package/dist/esm/RoundRobinRandomImprove/index.js.map +1 -1
  56. package/dist/esm/RoundRobinRandomImprove/roundRobin.d.ts +1 -1
  57. package/dist/esm/RoundRobinRandomImprove/roundRobin.d.ts.map +1 -1
  58. package/dist/esm/RoundRobinRandomImprove/roundRobin.js +1 -1
  59. package/dist/esm/RoundRobinRandomImprove/roundRobin.js.map +1 -1
  60. package/dist/esm/index.d.ts +1 -0
  61. package/dist/esm/index.d.ts.map +1 -1
  62. package/dist/esm/index.js +1 -0
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  65. package/dist/esm/types.d.ts +1 -1
  66. package/dist/esm/types.d.ts.map +1 -1
  67. package/dist/esm/{RoundRobinRandomImprove/util.d.ts → util.d.ts} +9 -2
  68. package/dist/esm/util.d.ts.map +1 -0
  69. package/dist/esm/util.js +166 -0
  70. package/dist/esm/util.js.map +1 -0
  71. package/package.json +5 -4
  72. package/dist/cjs/RoundRobinRandomImprove/util.d.ts.map +0 -1
  73. package/dist/cjs/RoundRobinRandomImprove/util.js.map +0 -1
  74. package/dist/esm/RoundRobinRandomImprove/util.d.ts.map +0 -1
  75. package/dist/esm/RoundRobinRandomImprove/util.js +0 -63
  76. package/dist/esm/RoundRobinRandomImprove/util.js.map +0 -1
@@ -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: Set<Cardano.Value>;
5
+ change: Array<Cardano.TxOut>;
6
6
  fee: Cardano.Lovelace;
7
7
  }
8
8
  export declare type Selection = SelectionSkeleton;
@@ -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,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAK3B,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
+ {"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 '../types';
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"}
@@ -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.9.5",
3
+ "version": "0.10.1",
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.0",
42
+ "@cardano-sdk/util-dev": "~0.13.0",
43
43
  "@types/lodash": "^4.14.182",
44
44
  "eslint": "^7.32.0",
45
45
  "fast-check": "^2.17.0",
@@ -52,8 +52,9 @@
52
52
  "typescript": "^4.7.4"
53
53
  },
54
54
  "dependencies": {
55
- "@cardano-sdk/core": "~0.13.0",
55
+ "@cardano-sdk/core": "~0.14.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": "c7c3523ee84b5ec53d781b0e05511c2312fd6397"
67
+ "gitHead": "9567993a2d29031dda1a41411485b8f3e58aef06"
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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"}