@ledgerhq/coin-kaspa 1.3.0 → 1.3.1-nightly.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 (163) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +16 -0
  3. package/package.json +8 -8
  4. package/lib/logic/tests/bip32.test.d.ts +0 -2
  5. package/lib/logic/tests/bip32.test.d.ts.map +0 -1
  6. package/lib/logic/tests/bip32.test.js +0 -108
  7. package/lib/logic/tests/bip32.test.js.map +0 -1
  8. package/lib/logic/tests/getFeeRate.test.d.ts +0 -2
  9. package/lib/logic/tests/getFeeRate.test.d.ts.map +0 -1
  10. package/lib/logic/tests/getFeeRate.test.js +0 -57
  11. package/lib/logic/tests/getFeeRate.test.js.map +0 -1
  12. package/lib/logic/tests/kaspaAddresses.test.d.ts +0 -2
  13. package/lib/logic/tests/kaspaAddresses.test.d.ts.map +0 -1
  14. package/lib/logic/tests/kaspaAddresses.test.js +0 -172
  15. package/lib/logic/tests/kaspaAddresses.test.js.map +0 -1
  16. package/lib/logic/tests/massCalcluation.test.d.ts +0 -2
  17. package/lib/logic/tests/massCalcluation.test.d.ts.map +0 -1
  18. package/lib/logic/tests/massCalcluation.test.js +0 -27
  19. package/lib/logic/tests/massCalcluation.test.js.map +0 -1
  20. package/lib/logic/tests/scanAddresses.integ.test.d.ts +0 -2
  21. package/lib/logic/tests/scanAddresses.integ.test.d.ts.map +0 -1
  22. package/lib/logic/tests/scanAddresses.integ.test.js +0 -18
  23. package/lib/logic/tests/scanAddresses.integ.test.js.map +0 -1
  24. package/lib/logic/tests/scanOperations.integ.test.d.ts +0 -2
  25. package/lib/logic/tests/scanOperations.integ.test.d.ts.map +0 -1
  26. package/lib/logic/tests/scanOperations.integ.test.js +0 -254
  27. package/lib/logic/tests/scanOperations.integ.test.js.map +0 -1
  28. package/lib/logic/tests/scanOperations.test.d.ts +0 -2
  29. package/lib/logic/tests/scanOperations.test.d.ts.map +0 -1
  30. package/lib/logic/tests/scanOperations.test.js +0 -184
  31. package/lib/logic/tests/scanOperations.test.js.map +0 -1
  32. package/lib/logic/tests/scanUtxos.integ.test.d.ts +0 -2
  33. package/lib/logic/tests/scanUtxos.integ.test.d.ts.map +0 -1
  34. package/lib/logic/tests/scanUtxos.integ.test.js +0 -13
  35. package/lib/logic/tests/scanUtxos.integ.test.js.map +0 -1
  36. package/lib/logic/tests/scanUtxos.test.d.ts +0 -2
  37. package/lib/logic/tests/scanUtxos.test.d.ts.map +0 -1
  38. package/lib/logic/tests/scanUtxos.test.js +0 -167
  39. package/lib/logic/tests/scanUtxos.test.js.map +0 -1
  40. package/lib/logic/tests/utxoLib.test.d.ts +0 -2
  41. package/lib/logic/tests/utxoLib.test.d.ts.map +0 -1
  42. package/lib/logic/tests/utxoLib.test.js +0 -26
  43. package/lib/logic/tests/utxoLib.test.js.map +0 -1
  44. package/lib/logic/tests/utxoSelection.test.d.ts +0 -10
  45. package/lib/logic/tests/utxoSelection.test.d.ts.map +0 -1
  46. package/lib/logic/tests/utxoSelection.test.js +0 -256
  47. package/lib/logic/tests/utxoSelection.test.js.map +0 -1
  48. package/lib/logic/tests/validAddress.test.d.ts +0 -2
  49. package/lib/logic/tests/validAddress.test.d.ts.map +0 -1
  50. package/lib/logic/tests/validAddress.test.js +0 -56
  51. package/lib/logic/tests/validAddress.test.js.map +0 -1
  52. package/lib/network/tests/getAddressesActive.test.d.ts +0 -2
  53. package/lib/network/tests/getAddressesActive.test.d.ts.map +0 -1
  54. package/lib/network/tests/getAddressesActive.test.js +0 -65
  55. package/lib/network/tests/getAddressesActive.test.js.map +0 -1
  56. package/lib/network/tests/getBalancesForAddresss.test.d.ts +0 -2
  57. package/lib/network/tests/getBalancesForAddresss.test.d.ts.map +0 -1
  58. package/lib/network/tests/getBalancesForAddresss.test.js +0 -40
  59. package/lib/network/tests/getBalancesForAddresss.test.js.map +0 -1
  60. package/lib/network/tests/getBlockDagInfo.test.d.ts +0 -2
  61. package/lib/network/tests/getBlockDagInfo.test.d.ts.map +0 -1
  62. package/lib/network/tests/getBlockDagInfo.test.js +0 -36
  63. package/lib/network/tests/getBlockDagInfo.test.js.map +0 -1
  64. package/lib/network/tests/getFeeEstimate.test.d.ts +0 -2
  65. package/lib/network/tests/getFeeEstimate.test.d.ts.map +0 -1
  66. package/lib/network/tests/getFeeEstimate.test.js +0 -54
  67. package/lib/network/tests/getFeeEstimate.test.js.map +0 -1
  68. package/lib/network/tests/getTransactions.test.d.ts +0 -2
  69. package/lib/network/tests/getTransactions.test.d.ts.map +0 -1
  70. package/lib/network/tests/getTransactions.test.js +0 -157
  71. package/lib/network/tests/getTransactions.test.js.map +0 -1
  72. package/lib/network/tests/getUtxosForAddress.test.d.ts +0 -2
  73. package/lib/network/tests/getUtxosForAddress.test.d.ts.map +0 -1
  74. package/lib/network/tests/getUtxosForAddress.test.js +0 -142
  75. package/lib/network/tests/getUtxosForAddress.test.js.map +0 -1
  76. package/lib/network/tests/getVirtualChainBlueScore.test.d.ts +0 -2
  77. package/lib/network/tests/getVirtualChainBlueScore.test.d.ts.map +0 -1
  78. package/lib/network/tests/getVirtualChainBlueScore.test.js +0 -27
  79. package/lib/network/tests/getVirtualChainBlueScore.test.js.map +0 -1
  80. package/lib/network/tests/submitTransaction.test.d.ts +0 -2
  81. package/lib/network/tests/submitTransaction.test.d.ts.map +0 -1
  82. package/lib/network/tests/submitTransaction.test.js +0 -43
  83. package/lib/network/tests/submitTransaction.test.js.map +0 -1
  84. package/lib-es/logic/tests/bip32.test.d.ts +0 -2
  85. package/lib-es/logic/tests/bip32.test.d.ts.map +0 -1
  86. package/lib-es/logic/tests/bip32.test.js +0 -80
  87. package/lib-es/logic/tests/bip32.test.js.map +0 -1
  88. package/lib-es/logic/tests/getFeeRate.test.d.ts +0 -2
  89. package/lib-es/logic/tests/getFeeRate.test.d.ts.map +0 -1
  90. package/lib-es/logic/tests/getFeeRate.test.js +0 -55
  91. package/lib-es/logic/tests/getFeeRate.test.js.map +0 -1
  92. package/lib-es/logic/tests/kaspaAddresses.test.d.ts +0 -2
  93. package/lib-es/logic/tests/kaspaAddresses.test.d.ts.map +0 -1
  94. package/lib-es/logic/tests/kaspaAddresses.test.js +0 -170
  95. package/lib-es/logic/tests/kaspaAddresses.test.js.map +0 -1
  96. package/lib-es/logic/tests/massCalcluation.test.d.ts +0 -2
  97. package/lib-es/logic/tests/massCalcluation.test.d.ts.map +0 -1
  98. package/lib-es/logic/tests/massCalcluation.test.js +0 -22
  99. package/lib-es/logic/tests/massCalcluation.test.js.map +0 -1
  100. package/lib-es/logic/tests/scanAddresses.integ.test.d.ts +0 -2
  101. package/lib-es/logic/tests/scanAddresses.integ.test.d.ts.map +0 -1
  102. package/lib-es/logic/tests/scanAddresses.integ.test.js +0 -16
  103. package/lib-es/logic/tests/scanAddresses.integ.test.js.map +0 -1
  104. package/lib-es/logic/tests/scanOperations.integ.test.d.ts +0 -2
  105. package/lib-es/logic/tests/scanOperations.integ.test.d.ts.map +0 -1
  106. package/lib-es/logic/tests/scanOperations.integ.test.js +0 -249
  107. package/lib-es/logic/tests/scanOperations.integ.test.js.map +0 -1
  108. package/lib-es/logic/tests/scanOperations.test.d.ts +0 -2
  109. package/lib-es/logic/tests/scanOperations.test.d.ts.map +0 -1
  110. package/lib-es/logic/tests/scanOperations.test.js +0 -156
  111. package/lib-es/logic/tests/scanOperations.test.js.map +0 -1
  112. package/lib-es/logic/tests/scanUtxos.integ.test.d.ts +0 -2
  113. package/lib-es/logic/tests/scanUtxos.integ.test.d.ts.map +0 -1
  114. package/lib-es/logic/tests/scanUtxos.integ.test.js +0 -11
  115. package/lib-es/logic/tests/scanUtxos.integ.test.js.map +0 -1
  116. package/lib-es/logic/tests/scanUtxos.test.d.ts +0 -2
  117. package/lib-es/logic/tests/scanUtxos.test.d.ts.map +0 -1
  118. package/lib-es/logic/tests/scanUtxos.test.js +0 -139
  119. package/lib-es/logic/tests/scanUtxos.test.js.map +0 -1
  120. package/lib-es/logic/tests/utxoLib.test.d.ts +0 -2
  121. package/lib-es/logic/tests/utxoLib.test.d.ts.map +0 -1
  122. package/lib-es/logic/tests/utxoLib.test.js +0 -24
  123. package/lib-es/logic/tests/utxoLib.test.js.map +0 -1
  124. package/lib-es/logic/tests/utxoSelection.test.d.ts +0 -10
  125. package/lib-es/logic/tests/utxoSelection.test.d.ts.map +0 -1
  126. package/lib-es/logic/tests/utxoSelection.test.js +0 -229
  127. package/lib-es/logic/tests/utxoSelection.test.js.map +0 -1
  128. package/lib-es/logic/tests/validAddress.test.d.ts +0 -2
  129. package/lib-es/logic/tests/validAddress.test.d.ts.map +0 -1
  130. package/lib-es/logic/tests/validAddress.test.js +0 -54
  131. package/lib-es/logic/tests/validAddress.test.js.map +0 -1
  132. package/lib-es/network/tests/getAddressesActive.test.d.ts +0 -2
  133. package/lib-es/network/tests/getAddressesActive.test.d.ts.map +0 -1
  134. package/lib-es/network/tests/getAddressesActive.test.js +0 -63
  135. package/lib-es/network/tests/getAddressesActive.test.js.map +0 -1
  136. package/lib-es/network/tests/getBalancesForAddresss.test.d.ts +0 -2
  137. package/lib-es/network/tests/getBalancesForAddresss.test.d.ts.map +0 -1
  138. package/lib-es/network/tests/getBalancesForAddresss.test.js +0 -38
  139. package/lib-es/network/tests/getBalancesForAddresss.test.js.map +0 -1
  140. package/lib-es/network/tests/getBlockDagInfo.test.d.ts +0 -2
  141. package/lib-es/network/tests/getBlockDagInfo.test.d.ts.map +0 -1
  142. package/lib-es/network/tests/getBlockDagInfo.test.js +0 -34
  143. package/lib-es/network/tests/getBlockDagInfo.test.js.map +0 -1
  144. package/lib-es/network/tests/getFeeEstimate.test.d.ts +0 -2
  145. package/lib-es/network/tests/getFeeEstimate.test.d.ts.map +0 -1
  146. package/lib-es/network/tests/getFeeEstimate.test.js +0 -52
  147. package/lib-es/network/tests/getFeeEstimate.test.js.map +0 -1
  148. package/lib-es/network/tests/getTransactions.test.d.ts +0 -2
  149. package/lib-es/network/tests/getTransactions.test.d.ts.map +0 -1
  150. package/lib-es/network/tests/getTransactions.test.js +0 -155
  151. package/lib-es/network/tests/getTransactions.test.js.map +0 -1
  152. package/lib-es/network/tests/getUtxosForAddress.test.d.ts +0 -2
  153. package/lib-es/network/tests/getUtxosForAddress.test.d.ts.map +0 -1
  154. package/lib-es/network/tests/getUtxosForAddress.test.js +0 -140
  155. package/lib-es/network/tests/getUtxosForAddress.test.js.map +0 -1
  156. package/lib-es/network/tests/getVirtualChainBlueScore.test.d.ts +0 -2
  157. package/lib-es/network/tests/getVirtualChainBlueScore.test.d.ts.map +0 -1
  158. package/lib-es/network/tests/getVirtualChainBlueScore.test.js +0 -25
  159. package/lib-es/network/tests/getVirtualChainBlueScore.test.js.map +0 -1
  160. package/lib-es/network/tests/submitTransaction.test.d.ts +0 -2
  161. package/lib-es/network/tests/submitTransaction.test.d.ts.map +0 -1
  162. package/lib-es/network/tests/submitTransaction.test.js +0 -41
  163. package/lib-es/network/tests/submitTransaction.test.js.map +0 -1
@@ -1,24 +0,0 @@
1
- import { BigNumber } from "bignumber.js";
2
- import { KaspaUtxoGenerator } from "./utxoSelection.test";
3
- import { calcMaxSpendableAmount } from "../utxos/lib";
4
- describe("calcMaxSpendableAmount", () => {
5
- it("should calculate max spendable amount correctly with default fee rate", () => {
6
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, new BigNumber(1_0000_0000), "12345");
7
- const isEcdsaRecipient = false;
8
- const result = calcMaxSpendableAmount(utxos, isEcdsaRecipient);
9
- expect(result.toNumber()).toBe(5_0000_0000 - 5 * 1118 - 506);
10
- });
11
- it("should calculate max spendable amount correctly with default fee rate", () => {
12
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, new BigNumber(1_0000_0000), "12345");
13
- const isEcdsaRecipient = false;
14
- const result = calcMaxSpendableAmount(utxos, isEcdsaRecipient, 14);
15
- expect(result.toNumber()).toBe(5_0000_0000 - (5 * 1118 + 506) * 14);
16
- });
17
- it("high fee forces to calculate 0", () => {
18
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, new BigNumber(1_0000_0000), "12345");
19
- const isEcdsaRecipient = false;
20
- const result = calcMaxSpendableAmount(utxos, isEcdsaRecipient, 100_000);
21
- expect(result.toNumber()).toBe(0);
22
- });
23
- });
24
- //# sourceMappingURL=utxoLib.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utxoLib.test.js","sourceRoot":"","sources":["../../../src/logic/tests/utxoLib.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,KAAK,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,MAAM,gBAAgB,GAAG,KAAK,CAAC;QAE/B,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,KAAK,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,MAAM,gBAAgB,GAAG,KAAK,CAAC;QAE/B,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,KAAK,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,MAAM,gBAAgB,GAAG,KAAK,CAAC;QAE/B,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,10 +0,0 @@
1
- import { BigNumber } from "bignumber.js";
2
- import { KaspaUtxo } from "../../types";
3
- export declare class KaspaUtxoGenerator {
4
- static generateUtxo(amount: BigNumber, blockDaaScore: string): KaspaUtxo;
5
- static generateUtxoSet(count: number, amount: BigNumber, startBlockDaaScore: string): KaspaUtxo[];
6
- private static generateRandomTransactionId;
7
- private static generateRandomIndex;
8
- private static generateRandomScriptPublicKey;
9
- }
10
- //# sourceMappingURL=utxoSelection.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utxoSelection.test.d.ts","sourceRoot":"","sources":["../../../src/logic/tests/utxoSelection.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS;IAqBxE,MAAM,CAAC,eAAe,CACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,EACjB,kBAAkB,EAAE,MAAM,GACzB,SAAS,EAAE;IASd,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAO1C,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAIlC,OAAO,CAAC,MAAM,CAAC,6BAA6B;CAM7C"}
@@ -1,229 +0,0 @@
1
- import { selectUtxos } from "../utxos/selection";
2
- import { BigNumber } from "bignumber.js";
3
- import * as lib from "../utxos/lib";
4
- const TX_MASS_PER_INPUT = 1118;
5
- const TX_MASS_FOR_TWO_OUTPUTS = 918;
6
- const TX_MASS_FOR_ECDSA = 11;
7
- export class KaspaUtxoGenerator {
8
- static generateUtxo(amount, blockDaaScore) {
9
- return {
10
- address: "kaspa:qrp78nf43jaz3zk0j4dxga4ncdzk95xhun95hp6scyh6g6z7kwugy02wfw6ee",
11
- outpoint: {
12
- transactionId: this.generateRandomTransactionId(),
13
- index: this.generateRandomIndex(),
14
- },
15
- utxoEntry: {
16
- amount,
17
- scriptPublicKey: {
18
- version: 0,
19
- scriptPublicKey: this.generateRandomScriptPublicKey(),
20
- },
21
- blockDaaScore,
22
- isCoinbase: true,
23
- },
24
- accountType: 0,
25
- accountIndex: 4,
26
- };
27
- }
28
- static generateUtxoSet(count, amount, startBlockDaaScore) {
29
- const utxos = [];
30
- for (let i = 0; i < count; i++) {
31
- utxos.push(this.generateUtxo(amount, startBlockDaaScore));
32
- startBlockDaaScore = (parseInt(startBlockDaaScore) + 1).toString();
33
- }
34
- return utxos;
35
- }
36
- static generateRandomTransactionId() {
37
- const randomBytes = crypto.getRandomValues(new Uint8Array(32));
38
- return Array.from(randomBytes)
39
- .map(b => b.toString(16).padStart(2, "0"))
40
- .join("");
41
- }
42
- static generateRandomIndex() {
43
- return Math.floor(Math.random() * 1000);
44
- }
45
- static generateRandomScriptPublicKey() {
46
- const randomBytes = crypto.getRandomValues(new Uint8Array(34));
47
- return Array.from(randomBytes)
48
- .map(b => b.toString(16).padStart(2, "0"))
49
- .join("");
50
- }
51
- }
52
- describe("2 outputs - no discard", () => {
53
- test("2/5 inputs, 2 outputs", () => {
54
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, BigNumber(1_0000_0000), "12345");
55
- const feeRate = 1;
56
- const isEcdsaRecipient = false;
57
- const selectedUtxos = selectUtxos(utxos, isEcdsaRecipient, BigNumber(1_5000_0000), feeRate);
58
- expect(utxos.length).toBe(5);
59
- // Selected 2 times 1_0000_0000 UTXO
60
- expect(selectedUtxos.utxos.length).toBe(2);
61
- expect(selectedUtxos.utxos[0].utxoEntry.blockDaaScore).toBe("12345");
62
- expect(selectedUtxos.utxos[1].utxoEntry.blockDaaScore).toBe("12346");
63
- // TX should have: 2 inputs and 2 outputs
64
- // compute mass = 3154
65
- // storage mass = 6668
66
- // fee only depends on compute mass
67
- expect(selectedUtxos.fee.toNumber()).toBe(3154);
68
- expect(selectedUtxos.changeAmount.toNumber()).toBe(2_0000_0000 - 1_5000_0000 - 3154);
69
- });
70
- test("1/5 inputs, 2 outputs", () => {
71
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, BigNumber(2_0000_0000), "12345");
72
- const isEcdsaRecipient = false;
73
- const feeRate = 1;
74
- const sendAmount = BigNumber(1_5000_0000);
75
- const selectedUtxos = selectUtxos(utxos, isEcdsaRecipient, sendAmount, feeRate);
76
- expect(selectedUtxos.utxos.length).toBe(1);
77
- expect(selectedUtxos.utxos[0].utxoEntry.blockDaaScore).toBe("12345");
78
- // TX should be: 1 in + 2 out
79
- // compute mass = 2036
80
- // storage mass = 21674
81
- expect(selectedUtxos.fee.toNumber()).toBe(2036);
82
- expect(selectedUtxos.changeAmount.toNumber()).toBe(2_0000_0000 - 1_5000_0000 - 2036);
83
- });
84
- it.each([1, 10, 20, 80, 5000])("5 inputs, 2 outputs, feeRate = %i", feeRate => {
85
- const utxos = KaspaUtxoGenerator.generateUtxoSet(15, BigNumber(1_0000_0000), "12345");
86
- const isEcdsaRecipient = false;
87
- const sendAmount = BigNumber(4_5000_0000);
88
- const selectedUtxos = selectUtxos(utxos, isEcdsaRecipient, sendAmount, feeRate);
89
- expect(selectedUtxos.utxos.length).toBe(5);
90
- // TX should be: 1 in + 2 out
91
- // compute mass = 1118 * 5 + 918 = 6508
92
- // storage mass = 0 ( 5 in and 2 out.. )
93
- expect(selectedUtxos.fee.toNumber()).toBe(6508 * feeRate);
94
- expect(selectedUtxos.changeAmount.toNumber()).toBe(5_0000_0000 - 4_5000_0000 - 6508 * feeRate);
95
- });
96
- test("5 inputs, 2 outputs, feerate = 8203 => not possible!", () => {
97
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, BigNumber(1_0000_0000), "12345");
98
- const feerate = 8203;
99
- expect(selectUtxos(utxos, false, BigNumber(4_5000_0000), feerate - 1)).toBeDefined();
100
- expect(() => selectUtxos(utxos, false, BigNumber(4_5000_0000), feerate)).toThrow("UTXO total amount is not sufficient for sending amount 450000000");
101
- });
102
- });
103
- describe("ECDSA mass", () => {
104
- it.each([1, 2, 5])("5 inputs, 2 outputs, feerate = %i, ECDSA", feeRate => {
105
- const utxos = KaspaUtxoGenerator.generateUtxoSet(10, BigNumber(1_0000_0000), "12345");
106
- const selectedUtxos = selectUtxos(utxos, true, BigNumber(4_5000_0000), feeRate);
107
- const expectedInputCnt = 5;
108
- const computeMass = TX_MASS_FOR_TWO_OUTPUTS + TX_MASS_PER_INPUT * expectedInputCnt + TX_MASS_FOR_ECDSA;
109
- const expectedFee = computeMass * feeRate;
110
- expect(selectedUtxos.utxos.length).toBe(expectedInputCnt);
111
- // TX should be: 1 in + 2 out
112
- // compute mass = 1118 * 5 + 918 + 11 (ECDSA) = 6508
113
- // storage mass = 0 ( 5 in and 2 out.. )
114
- expect(selectedUtxos.fee.toNumber()).toBe(expectedFee);
115
- expect(selectedUtxos.changeAmount.toNumber()).toBe(5_0000_0000 - 4_5000_0000 - expectedFee);
116
- });
117
- test("2/2 input, 2 outputs, feerate = 1, ECDSA", () => {
118
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, BigNumber(1_0000_0000), "12345");
119
- const selectedUtxos = selectUtxos(utxos, true, BigNumber(1_5000_0000), 1);
120
- expect(utxos.length).toBe(5);
121
- expect(selectedUtxos.utxos.length).toBe(2);
122
- // TX should be: 2 in + 2 out
123
- // compute mass = 3165 (ECDSA)
124
- // storage mass = 6668
125
- expect(selectedUtxos.fee.toNumber()).toBe(3165);
126
- expect(selectedUtxos.changeAmount.toNumber()).toBe(2_0000_0000 - 1_5000_0000 - 3165);
127
- });
128
- });
129
- describe("2 outputs - no discard", () => { });
130
- describe("1 output with discard", () => {
131
- test("check sweetspot - discard up to 1530 sompis change", () => {
132
- const feeRate = 1;
133
- const utxos = KaspaUtxoGenerator.generateUtxoSet(6, BigNumber(1_0000_0000), "12345");
134
- const isEcdsaRecipient = false;
135
- const sendAmount = BigNumber(5_0000_0000 - 5 * 1118 - 918 - 1530);
136
- const selectedUtxos = selectUtxos(utxos, isEcdsaRecipient, sendAmount, feeRate);
137
- expect(selectedUtxos.utxos.length).toBe(5);
138
- expect(selectedUtxos.fee.toNumber()).toBe(5 * 1118 + 918 + 1530);
139
- expect(selectedUtxos.changeAmount.toNumber()).toBe(0);
140
- const selectedUtxos2 = selectUtxos(utxos, isEcdsaRecipient, sendAmount.minus(1), feeRate);
141
- expect(selectedUtxos2.utxos.length).toBe(6);
142
- expect(selectedUtxos2.fee.toNumber()).toBe(6 * 1118 + 918);
143
- expect(selectedUtxos2.changeAmount.toNumber()).toBe(100000413);
144
- });
145
- test("check sweetspot with feeRate", () => {
146
- const feeRate = 2;
147
- const utxos = KaspaUtxoGenerator.generateUtxoSet(6, BigNumber(1_0000_0000), "12345");
148
- const isEcdsaRecipient = false;
149
- const sendAmount = BigNumber(5_0000_0000 - (5 * 1118 + 506) * 2);
150
- const selectedUtxos = selectUtxos(utxos, isEcdsaRecipient, sendAmount, feeRate);
151
- expect(selectedUtxos.utxos.length).toBe(5);
152
- expect(selectedUtxos.fee.toNumber()).toBe((5 * 1118 + 506) * 2);
153
- expect(selectedUtxos.changeAmount.toNumber()).toBe(0);
154
- });
155
- test("6 inputs, 2 outputs, feerate = 7682 => don't discard change, pick one more UTXO", () => {
156
- const utxos = KaspaUtxoGenerator.generateUtxoSet(10, BigNumber(1_0000_0000), "12345");
157
- const feerate = 7682;
158
- const selectedUtxos = selectUtxos(utxos, false, BigNumber(4_5000_0000), feerate);
159
- // in this case the change has to be discarded, as it's only 5544 sompis
160
- // and the storage mass explodes to an inacceptable value of 180327402g
161
- expect(selectedUtxos.utxos.length).toBe(5);
162
- expect(selectedUtxos.fee.toNumber()).toBe(50000000);
163
- expect(selectedUtxos.changeAmount.toNumber()).toBe(0);
164
- });
165
- test("6 inputs, 2 outputs, feerate = 8203 => need 6 inputs now.!", () => {
166
- const utxos = KaspaUtxoGenerator.generateUtxoSet(6, BigNumber(1_0000_0000), "12345");
167
- const feerate = 8203;
168
- const selectedUtxos = selectUtxos(utxos, false, BigNumber(4_5000_0000), feerate);
169
- const expectedInputCnt = 6;
170
- const computeMass = TX_MASS_FOR_TWO_OUTPUTS + TX_MASS_PER_INPUT * expectedInputCnt;
171
- const expectedFee = computeMass * feerate;
172
- expect(selectedUtxos.utxos.length).toBe(expectedInputCnt);
173
- expect(selectedUtxos.fee.toNumber()).toBe(expectedFee);
174
- expect(selectedUtxos.changeAmount.toNumber()).toBe(1_5000_0000 - expectedFee);
175
- });
176
- });
177
- describe("1 output without discard", () => {
178
- test("send exact UTXO sum for all UTXOs with no change", () => {
179
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, BigNumber(1_0000_0000), "12345");
180
- const feerate = 1;
181
- const selectedUtxos = selectUtxos(utxos, false, BigNumber(5_0000_0000 - (5 * 1118 + 506)), feerate);
182
- expect(selectedUtxos.utxos.length).toBe(5);
183
- expect(selectedUtxos.fee.toNumber()).toBe(5 * 1118 + 506);
184
- expect(selectedUtxos.changeAmount.toNumber()).toBe(0);
185
- });
186
- test("send exact UTXO sum for 2 UTXOs with no change", () => {
187
- const utxos = KaspaUtxoGenerator.generateUtxoSet(5, BigNumber(1_0000_0000), "12345");
188
- const feerate = 1;
189
- const selectedUtxos = selectUtxos(utxos, false, BigNumber(2_0000_0000 - (2 * 1118 + 506)), feerate);
190
- expect(selectedUtxos.utxos.length).toBe(2);
191
- expect(selectedUtxos.fee.toNumber()).toBe(2 * 1118 + 506);
192
- expect(selectedUtxos.changeAmount.toNumber()).toBe(0);
193
- });
194
- test("should throw an error if UTXO count exceeds maximum limit", () => {
195
- const utxos = KaspaUtxoGenerator.generateUtxoSet(100, BigNumber(1_0000_0000), "0");
196
- const feeRate = 1;
197
- const isEcdsaRecipient = false;
198
- expect(() => {
199
- selectUtxos(utxos, isEcdsaRecipient, BigNumber(1_0000_0000), feeRate);
200
- }).toThrow("UTXO count exceeds the limit of 88 for a TX.");
201
- });
202
- test("should throw an error if discarded change exceeds maximum allowable discard value", () => {
203
- const utxos = KaspaUtxoGenerator.generateUtxoSet(10, BigNumber(1_0000_0000), "0");
204
- const feeRate = 1;
205
- const isEcdsaRecipient = false;
206
- expect(() => {
207
- selectUtxos(utxos, isEcdsaRecipient, BigNumber(1_0000), feeRate);
208
- }).toThrow(/Change \d+ Sompis is too high to be discarded./);
209
- });
210
- test("should throw - UTXOs can't be determined to fulfill the specified amount", () => {
211
- jest.spyOn(lib, "calcMaxSpendableAmount").mockReturnValue(BigNumber(1_2345_0000));
212
- const feeRate = 1;
213
- const isEcdsaRecipient = false;
214
- expect(() => {
215
- selectUtxos([], isEcdsaRecipient, BigNumber(1_0000), feeRate);
216
- }).toThrow("UTXOs can't be determined to fulfill the specified amount");
217
- });
218
- test("same blockdaascore, still working.", () => {
219
- // Generate more UTXOs than the allowed limit (88)
220
- const utxos = KaspaUtxoGenerator.generateUtxoSet(2, BigNumber(1_0000_0000), "0");
221
- const isEcdsaRecipient = false;
222
- utxos[1].utxoEntry.blockDaaScore = "0";
223
- expect(selectUtxos(utxos, isEcdsaRecipient, BigNumber(1_0000_0000)).utxos.length).toBe(2);
224
- });
225
- afterEach(() => {
226
- jest.restoreAllMocks();
227
- });
228
- });
229
- //# sourceMappingURL=utxoSelection.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utxoSelection.test.js","sourceRoot":"","sources":["../../../src/logic/tests/utxoSelection.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validAddress.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validAddress.test.d.ts","sourceRoot":"","sources":["../../../src/logic/tests/validAddress.test.ts"],"names":[],"mappings":""}
@@ -1,54 +0,0 @@
1
- import { isValidKaspaAddress } from "../kaspaAddresses";
2
- describe("isValidKaspaAddress", () => {
3
- const testCases = [
4
- {
5
- input: "kaspa:qq82f9sdsqqkr74memhxt9yrefc8vq9khf5vt6xjp4tscc3pdenmks29mlp9y",
6
- expected: true,
7
- },
8
- {
9
- input: "kaspa:qqq7n4n232754kgw6jeu4zu86uerwn4kq9lnl2n2prwl3t2t9hvec720vk9s2",
10
- expected: true,
11
- },
12
- {
13
- input: "kaspa:qpc6twj20gxqpeyxvgqe3v4y2ng8t0tawfax89jkf8f24wazmcreu9ggw3crl",
14
- expected: true,
15
- },
16
- // scripthash
17
- {
18
- input: "kaspa:pp6jt8u5hj3mnjy8v0kk5fg7a8ddnfu7ls7egmqspdtpy0708eervp47e6ls2",
19
- expected: true,
20
- },
21
- // wrong hash for Schnorr
22
- {
23
- input: "kaspa:qpc6twj20gxqpeyxvgqe3v4y2ng8t0tawfax89jkf8f24wazmcreu9ggw3crr",
24
- expected: false,
25
- },
26
- {
27
- input: "kaspa:qyp0r5mcq4rd5grj3652ra09u5dcgwqq9ntuswp247nama5quyj40eq03sc2dkx", // ecdsa
28
- expected: true,
29
- },
30
- // wrong hash for ECDSA
31
- {
32
- input: "kaspa:qyp0r5mcq4rd5grj3652ra09u5dcgwqq9ntuswp247nama5quyj40eq03sc2dkk", // ecdsa
33
- expected: false,
34
- },
35
- {
36
- input: "kaspa:qpc6twj20gxqpeyxvgqe3v4y2ng8t0tawfax89jkf8f24wazmcreu9ggw3crl0", // wrong size
37
- expected: false,
38
- },
39
- {
40
- input: "kaspa:qpc6twj20gxqpeyxvgqe3v4y2ng8t0tawfax89jkf8f24wazmcreu9ggw3crb", // unknown char b
41
- expected: false,
42
- },
43
- {
44
- input: "kaspa:qpc6twj20gxqpeyxvgqe3v4y2ng8t0tawfax89jkf8f24wazmcreu9ggw3cri", // unknown char i
45
- expected: false,
46
- },
47
- ];
48
- testCases.forEach(({ input, expected }, index) => {
49
- it(`should return ${expected} for test case ${index + 1}`, () => {
50
- expect(isValidKaspaAddress(input)).toBe(expected);
51
- });
52
- });
53
- });
54
- //# sourceMappingURL=validAddress.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validAddress.test.js","sourceRoot":"","sources":["../../../src/logic/tests/validAddress.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,SAAS,GAAG;QAChB;YACE,KAAK,EAAE,qEAAqE;YAC5E,QAAQ,EAAE,IAAI;SACf;QACD;YACE,KAAK,EAAE,qEAAqE;YAC5E,QAAQ,EAAE,IAAI;SACf;QACD;YACE,KAAK,EAAE,qEAAqE;YAC5E,QAAQ,EAAE,IAAI;SACf;QACD,aAAa;QACb;YACE,KAAK,EAAE,qEAAqE;YAC5E,QAAQ,EAAE,IAAI;SACf;QACD,yBAAyB;QACzB;YACE,KAAK,EAAE,qEAAqE;YAC5E,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,KAAK,EAAE,uEAAuE,EAAE,QAAQ;YACxF,QAAQ,EAAE,IAAI;SACf;QACD,uBAAuB;QACvB;YACE,KAAK,EAAE,uEAAuE,EAAE,QAAQ;YACxF,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,KAAK,EAAE,sEAAsE,EAAE,aAAa;YAC5F,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,KAAK,EAAE,qEAAqE,EAAE,iBAAiB;YAC/F,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,KAAK,EAAE,qEAAqE,EAAE,iBAAiB;YAC/F,QAAQ,EAAE,KAAK;SAChB;KACF,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE;QAC/C,EAAE,CAAC,iBAAiB,QAAQ,kBAAkB,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE;YAC9D,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getAddressesActive.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getAddressesActive.test.d.ts","sourceRoot":"","sources":["../../../src/network/tests/getAddressesActive.test.ts"],"names":[],"mappings":""}
@@ -1,63 +0,0 @@
1
- import { getAddressesActive } from "../index";
2
- describe("getAddressesActive function", () => {
3
- beforeEach(() => {
4
- // Clear all mocks before each test to avoid interference
5
- jest.clearAllMocks();
6
- });
7
- it("Gets information about addresses being active or not", async () => {
8
- global.fetch = jest.fn().mockResolvedValueOnce({
9
- ok: true,
10
- json: async () => [
11
- {
12
- address: "kaspa:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx9awp4e",
13
- active: true,
14
- },
15
- ],
16
- });
17
- const addresses = ["kaspa:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx9awp4e"];
18
- const result = await getAddressesActive(addresses);
19
- const expectedResult = [
20
- {
21
- address: "kaspa:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx9awp4e",
22
- active: true,
23
- },
24
- ];
25
- expect(result).toEqual(expectedResult);
26
- });
27
- it("Wrong address should deliver false", async () => {
28
- global.fetch = jest.fn().mockResolvedValueOnce({
29
- ok: true,
30
- json: async () => [
31
- {
32
- address: "kaspa:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx9awp42",
33
- active: false,
34
- },
35
- ],
36
- });
37
- const addresses = ["kaspa:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx9awp42"];
38
- const result = await getAddressesActive(addresses);
39
- const expectedResult = [
40
- {
41
- address: "kaspa:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx9awp42",
42
- active: false,
43
- },
44
- ];
45
- expect(result).toEqual(expectedResult);
46
- });
47
- it("Should throw an error if the server returns a bad response", async () => {
48
- const addresses = ["kaspa:invalid_address"];
49
- global.fetch = jest.fn().mockResolvedValueOnce({
50
- ok: false,
51
- status: 404,
52
- });
53
- await expect(getAddressesActive(addresses)).rejects.toThrow("Failed to fetch active state for addresses kaspa:invalid_address. Status: 404");
54
- });
55
- it("Should throw an error if fetch throws an exception", async () => {
56
- const addresses = ["kaspa:another_invalid_address"];
57
- global.fetch = jest.fn().mockImplementationOnce(() => {
58
- throw new Error("Network Error");
59
- });
60
- await expect(getAddressesActive(addresses)).rejects.toThrow("Error fetching AddressesActives: Network Error");
61
- });
62
- });
63
- //# sourceMappingURL=getAddressesActive.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getAddressesActive.test.js","sourceRoot":"","sources":["../../../src/network/tests/getAddressesActive.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,UAAU,CAAC,GAAG,EAAE;QACd,yDAAyD;QACzD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC7C,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB;oBACE,OAAO,EAAE,qEAAqE;oBAC9E,MAAM,EAAE,IAAI;iBACb;aACF;SACF,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,CAAC,qEAAqE,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,cAAc,GAAG;YACrB;gBACE,OAAO,EAAE,qEAAqE;gBAC9E,MAAM,EAAE,IAAI;aACb;SACF,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC7C,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB;oBACE,OAAO,EAAE,qEAAqE;oBAC9E,MAAM,EAAE,KAAK;iBACd;aACF;SACF,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,CAAC,qEAAqE,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,cAAc,GAAG;YACrB;gBACE,OAAO,EAAE,qEAAqE;gBAC9E,MAAM,EAAE,KAAK;aACd;SACF,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,SAAS,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC7C,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACzD,+EAA+E,CAChF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,SAAS,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,EAAE;YACnD,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACzD,gDAAgD,CACjD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getBalancesForAddresss.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBalancesForAddresss.test.d.ts","sourceRoot":"","sources":["../../../src/network/tests/getBalancesForAddresss.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { getBalancesForAddresses } from "../index";
2
- describe("getBalanceForAddress", () => {
3
- beforeEach(() => {
4
- // Clear all mocks before each test to avoid interference
5
- jest.clearAllMocks();
6
- });
7
- it("returns the balance for a given address", async () => {
8
- global.fetch = jest.fn().mockResolvedValueOnce({
9
- ok: true,
10
- json: async () => [
11
- {
12
- address: "kaspa:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx9awp4e",
13
- balance: 1122124984318255,
14
- },
15
- {
16
- address: "kaspa:qqkqkzjvr7zwxxmjxjkmxxdwju9kjs6e9u82uh59z07vgaks6gg62v8707g73",
17
- balance: 132655169913451,
18
- },
19
- ],
20
- });
21
- const addresses = [
22
- "kaspa:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx9awp4e",
23
- "kaspa:qqkqkzjvr7zwxxmjxjkmxxdwju9kjs6e9u82uh59z07vgaks6gg62v8707g73",
24
- ];
25
- const result = await getBalancesForAddresses(addresses);
26
- expect(result[0].address).toBe(addresses[0]);
27
- expect(result[0].balance).toBeGreaterThan(0);
28
- expect(result.length).toBe(2);
29
- });
30
- it("throws an error for an invalid address", async () => {
31
- global.fetch = jest.fn().mockResolvedValueOnce({
32
- ok: false,
33
- });
34
- const invalidAddress = "invalid:address";
35
- await expect(getBalancesForAddresses([invalidAddress])).rejects.toThrow("Error fetching balance");
36
- });
37
- });
38
- //# sourceMappingURL=getBalancesForAddresss.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBalancesForAddresss.test.js","sourceRoot":"","sources":["../../../src/network/tests/getBalancesForAddresss.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,UAAU,CAAC,GAAG,EAAE;QACd,yDAAyD;QACzD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC7C,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB;oBACE,OAAO,EAAE,qEAAqE;oBAC9E,OAAO,EAAE,gBAAgB;iBAC1B;gBACD;oBACE,OAAO,EAAE,qEAAqE;oBAC9E,OAAO,EAAE,eAAe;iBACzB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG;YAChB,qEAAqE;YACrE,qEAAqE;SACtE,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAExD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC7C,EAAE,EAAE,KAAK;SACV,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,iBAAiB,CAAC;QACzC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACrE,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getBlockDagInfo.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBlockDagInfo.test.d.ts","sourceRoot":"","sources":["../../../src/network/tests/getBlockDagInfo.test.ts"],"names":[],"mappings":""}
@@ -1,34 +0,0 @@
1
- import { getBlockDagInfo } from "../index";
2
- describe("getBlockDagInfo", () => {
3
- beforeEach(() => {
4
- // Clear all mocks before each test to avoid interference
5
- jest.clearAllMocks();
6
- });
7
- it("Check if getBlockDagInfo gives correct output", async () => {
8
- global.fetch = jest.fn().mockResolvedValueOnce({
9
- ok: true,
10
- json: async () => ({
11
- networkName: "kaspa-mainnet",
12
- blockCount: "220840",
13
- headerCount: "220840",
14
- tipHashes: ["d604806a806c9a0e4573b772a9b6a6595b4a8ca8baa2ea48a62fb8733f1677b3"],
15
- difficulty: 620427120032880600,
16
- pastMedianTime: "1737569348584",
17
- virtualParentHashes: ["d604806a806c9a0e4573b772a9b6a6595b4a8ca8baa2ea48a62fb8733f1677b3"],
18
- pruningPointHash: "3914b495474186cbf116561e935a11a1991e42b26e7fbbc4658a0c50cb5d2fa6",
19
- virtualDaaScore: "101277083",
20
- }),
21
- });
22
- const result = await getBlockDagInfo();
23
- expect(result.pastMedianTime).toBe("1737569348584");
24
- expect(result.blockCount).toBe("220840");
25
- });
26
- });
27
- it("Should throw an error when fetch returns a 500 response", async () => {
28
- global.fetch = jest.fn().mockResolvedValueOnce({
29
- ok: false,
30
- status: 500,
31
- });
32
- await expect(getBlockDagInfo()).rejects.toThrow("Failed to fetch BlockDAG info. Error: Error: Status: 500");
33
- });
34
- //# sourceMappingURL=getBlockDagInfo.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBlockDagInfo.test.js","sourceRoot":"","sources":["../../../src/network/tests/getBlockDagInfo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACd,yDAAyD;QACzD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC7C,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACjB,WAAW,EAAE,eAAe;gBAC5B,UAAU,EAAE,QAAQ;gBACpB,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,CAAC,kEAAkE,CAAC;gBAC/E,UAAU,EAAE,kBAAkB;gBAC9B,cAAc,EAAE,eAAe;gBAC/B,mBAAmB,EAAE,CAAC,kEAAkE,CAAC;gBACzF,gBAAgB,EAAE,kEAAkE;gBACpF,eAAe,EAAE,WAAW;aAC7B,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;QAEvC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AACH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;IACvE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;QAC7C,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,GAAG;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAC7C,0DAA0D,CAC3D,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getFeeEstimate.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFeeEstimate.test.d.ts","sourceRoot":"","sources":["../../../src/network/tests/getFeeEstimate.test.ts"],"names":[],"mappings":""}
@@ -1,52 +0,0 @@
1
- import { getFeeEstimate } from "../index";
2
- describe("getFees", () => {
3
- beforeEach(() => {
4
- // Clear all mocks before each test to avoid interference
5
- jest.clearAllMocks();
6
- });
7
- it("Error response", async () => {
8
- global.fetch = jest.fn().mockResolvedValueOnce({
9
- ok: false,
10
- status: 500,
11
- statusText: "Internal Server Error",
12
- });
13
- await expect(getFeeEstimate()).rejects.toThrow("Network response was not ok");
14
- });
15
- it("Check if getFees gives correct output", async () => {
16
- global.fetch = jest.fn().mockResolvedValueOnce({
17
- ok: true,
18
- json: async () => ({
19
- priorityBucket: {
20
- feerate: 1,
21
- estimatedSeconds: 0.004,
22
- },
23
- normalBuckets: [
24
- {
25
- feerate: 1,
26
- estimatedSeconds: 0.004,
27
- },
28
- {
29
- feerate: 1,
30
- estimatedSeconds: 0.004,
31
- },
32
- ],
33
- lowBuckets: [
34
- {
35
- feerate: 1,
36
- estimatedSeconds: 0.004,
37
- },
38
- ],
39
- }),
40
- });
41
- const result = await getFeeEstimate();
42
- expect(result.priorityBucket.feerate).toBeGreaterThan(0);
43
- expect(result.priorityBucket.estimatedSeconds).toBeGreaterThan(0);
44
- expect(result.normalBuckets.length).toBeGreaterThan(0);
45
- expect(result.normalBuckets[0].feerate).toBeGreaterThan(0);
46
- expect(result.normalBuckets[0].estimatedSeconds).toBeGreaterThan(0);
47
- expect(result.lowBuckets.length).toBeGreaterThan(0);
48
- expect(result.lowBuckets[0].feerate).toBeGreaterThan(0);
49
- expect(result.lowBuckets[0].estimatedSeconds).toBeGreaterThan(0);
50
- });
51
- });
52
- //# sourceMappingURL=getFeeEstimate.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFeeEstimate.test.js","sourceRoot":"","sources":["../../../src/network/tests/getFeeEstimate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,UAAU,CAAC,GAAG,EAAE;QACd,yDAAyD;QACzD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC7C,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,uBAAuB;SACpC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC7C,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACjB,cAAc,EAAE;oBACd,OAAO,EAAE,CAAC;oBACV,gBAAgB,EAAE,KAAK;iBACxB;gBACD,aAAa,EAAE;oBACb;wBACE,OAAO,EAAE,CAAC;wBACV,gBAAgB,EAAE,KAAK;qBACxB;oBACD;wBACE,OAAO,EAAE,CAAC;wBACV,gBAAgB,EAAE,KAAK;qBACxB;iBACF;gBACD,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE,CAAC;wBACV,gBAAgB,EAAE,KAAK;qBACxB;iBACF;aACF,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;QAEtC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getTransactions.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTransactions.test.d.ts","sourceRoot":"","sources":["../../../src/network/tests/getTransactions.test.ts"],"names":[],"mappings":""}