@swapkit/helpers 4.0.0-beta.33 → 4.0.0-beta.35

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 (251) hide show
  1. package/dist/api/index.js +2 -2
  2. package/dist/api/index.js.map +1 -1
  3. package/dist/{chunk-ganzk321.js → chunk-hm14bfyg.js} +3 -3
  4. package/dist/{chunk-fazw0jvt.js.map → chunk-hm14bfyg.js.map} +1 -1
  5. package/dist/chunk-vb4wtm2w.js +4 -0
  6. package/dist/{chunk-ganzk321.js.map → chunk-vb4wtm2w.js.map} +1 -1
  7. package/dist/contracts.cjs +4 -0
  8. package/dist/contracts.cjs.map +10 -0
  9. package/dist/contracts.js +4 -0
  10. package/dist/contracts.js.map +10 -0
  11. package/dist/index.cjs +3 -3
  12. package/dist/index.cjs.map +9 -9
  13. package/dist/index.js +3 -3
  14. package/dist/index.js.map +9 -9
  15. package/dist/tokens.cjs +4 -0
  16. package/dist/tokens.cjs.map +10 -0
  17. package/dist/tokens.js +4 -0
  18. package/dist/tokens.js.map +10 -0
  19. package/dist/types/api/index.d.ts +238 -0
  20. package/dist/types/api/index.d.ts.map +1 -0
  21. package/dist/types/api/microgard/endpoints.d.ts +25 -0
  22. package/dist/types/api/microgard/endpoints.d.ts.map +1 -0
  23. package/dist/types/api/microgard/types.d.ts +56 -0
  24. package/dist/types/api/microgard/types.d.ts.map +1 -0
  25. package/dist/types/api/midgard/endpoints.d.ts +35 -0
  26. package/dist/types/api/midgard/endpoints.d.ts.map +1 -0
  27. package/dist/types/api/midgard/types.d.ts +102 -0
  28. package/dist/types/api/midgard/types.d.ts.map +1 -0
  29. package/dist/types/api/swapkitApi/endpoints.d.ts +194 -0
  30. package/dist/types/api/swapkitApi/endpoints.d.ts.map +1 -0
  31. package/dist/types/api/swapkitApi/types.d.ts +7238 -0
  32. package/dist/types/api/swapkitApi/types.d.ts.map +1 -0
  33. package/dist/types/api/thornode/endpoints.d.ts +31 -0
  34. package/dist/types/api/thornode/endpoints.d.ts.map +1 -0
  35. package/dist/types/api/thornode/types.d.ts +264 -0
  36. package/dist/types/api/thornode/types.d.ts.map +1 -0
  37. package/dist/types/api/thorswapStatic/endpoints.d.ts +7 -0
  38. package/dist/types/api/thorswapStatic/endpoints.d.ts.map +1 -0
  39. package/dist/types/api/thorswapStatic/types.d.ts +22 -0
  40. package/dist/types/api/thorswapStatic/types.d.ts.map +1 -0
  41. package/dist/types/contracts.d.ts +2 -0
  42. package/dist/types/contracts.d.ts.map +1 -0
  43. package/{src/index.ts → dist/types/index.d.ts} +3 -4
  44. package/dist/types/index.d.ts.map +1 -0
  45. package/dist/types/modules/assetValue.d.ts +71 -0
  46. package/dist/types/modules/assetValue.d.ts.map +1 -0
  47. package/dist/types/modules/bigIntArithmetics.d.ts +56 -0
  48. package/dist/types/modules/bigIntArithmetics.d.ts.map +1 -0
  49. package/dist/types/modules/feeMultiplier.d.ts +45 -0
  50. package/dist/types/modules/feeMultiplier.d.ts.map +1 -0
  51. package/dist/types/modules/requestClient.d.ts +22 -0
  52. package/dist/types/modules/requestClient.d.ts.map +1 -0
  53. package/dist/types/modules/swapKitConfig.d.ts +98 -0
  54. package/dist/types/modules/swapKitConfig.d.ts.map +1 -0
  55. package/dist/types/modules/swapKitError.d.ts +829 -0
  56. package/dist/types/modules/swapKitError.d.ts.map +1 -0
  57. package/dist/types/modules/swapKitNumber.d.ts +7 -0
  58. package/dist/types/modules/swapKitNumber.d.ts.map +1 -0
  59. package/dist/types/tokens.d.ts +2 -0
  60. package/dist/types/tokens.d.ts.map +1 -0
  61. package/dist/types/types/chains.d.ts +187 -0
  62. package/dist/types/types/chains.d.ts.map +1 -0
  63. package/dist/types/types/commonTypes.d.ts +37 -0
  64. package/dist/types/types/commonTypes.d.ts.map +1 -0
  65. package/dist/types/types/derivationPath.d.ts +17 -0
  66. package/dist/types/types/derivationPath.d.ts.map +1 -0
  67. package/dist/types/types/errors/apiV1.d.ts +2 -0
  68. package/dist/types/types/errors/apiV1.d.ts.map +1 -0
  69. package/{src/types/index.ts → dist/types/types/index.d.ts} +1 -1
  70. package/dist/types/types/index.d.ts.map +1 -0
  71. package/dist/types/types/quotes.d.ts +170 -0
  72. package/dist/types/types/quotes.d.ts.map +1 -0
  73. package/dist/types/types/radix.d.ts +15 -0
  74. package/dist/types/types/radix.d.ts.map +1 -0
  75. package/dist/types/types/sdk.d.ts +35 -0
  76. package/dist/types/types/sdk.d.ts.map +1 -0
  77. package/dist/types/types/wallet.d.ts +122 -0
  78. package/dist/types/types/wallet.d.ts.map +1 -0
  79. package/dist/types/utils/asset.d.ts +40 -0
  80. package/dist/types/utils/asset.d.ts.map +1 -0
  81. package/dist/types/utils/derivationPath.d.ts +19 -0
  82. package/dist/types/utils/derivationPath.d.ts.map +1 -0
  83. package/dist/types/utils/explorerUrls.d.ts +10 -0
  84. package/dist/types/utils/explorerUrls.d.ts.map +1 -0
  85. package/dist/types/utils/liquidity.d.ts +59 -0
  86. package/dist/types/utils/liquidity.d.ts.map +1 -0
  87. package/dist/types/utils/memo.d.ts +65 -0
  88. package/dist/types/utils/memo.d.ts.map +1 -0
  89. package/dist/types/utils/others.d.ts +9 -0
  90. package/dist/types/utils/others.d.ts.map +1 -0
  91. package/dist/types/utils/validators.d.ts +3 -0
  92. package/dist/types/utils/validators.d.ts.map +1 -0
  93. package/dist/types/utils/wallets.d.ts +32 -0
  94. package/dist/types/utils/wallets.d.ts.map +1 -0
  95. package/package.json +14 -15
  96. package/dist/chunk-06q78xy3.js +0 -4
  97. package/dist/chunk-06q78xy3.js.map +0 -10
  98. package/dist/chunk-0q5vvg5c.js +0 -5
  99. package/dist/chunk-0q5vvg5c.js.map +0 -10
  100. package/dist/chunk-18bxh1n7.js +0 -5
  101. package/dist/chunk-18bxh1n7.js.map +0 -10
  102. package/dist/chunk-3qya5ng9.js +0 -4
  103. package/dist/chunk-3qya5ng9.js.map +0 -10
  104. package/dist/chunk-4yqymkbp.js +0 -5
  105. package/dist/chunk-4yqymkbp.js.map +0 -10
  106. package/dist/chunk-50gpwcq9.js +0 -4
  107. package/dist/chunk-50gpwcq9.js.map +0 -10
  108. package/dist/chunk-6atq9cs7.js +0 -4
  109. package/dist/chunk-6atq9cs7.js.map +0 -10
  110. package/dist/chunk-6m0d5pv4.js +0 -5
  111. package/dist/chunk-6m0d5pv4.js.map +0 -10
  112. package/dist/chunk-8x46g3wq.js +0 -5
  113. package/dist/chunk-8x46g3wq.js.map +0 -10
  114. package/dist/chunk-92sk0g47.js +0 -5
  115. package/dist/chunk-92sk0g47.js.map +0 -10
  116. package/dist/chunk-9f2b3enk.js +0 -5
  117. package/dist/chunk-9f2b3enk.js.map +0 -10
  118. package/dist/chunk-adrafsdk.js +0 -5
  119. package/dist/chunk-adrafsdk.js.map +0 -10
  120. package/dist/chunk-b1hang9z.js +0 -5
  121. package/dist/chunk-b1hang9z.js.map +0 -10
  122. package/dist/chunk-becdmywt.js +0 -4
  123. package/dist/chunk-becdmywt.js.map +0 -10
  124. package/dist/chunk-ehz0t9d1.js +0 -4
  125. package/dist/chunk-ehz0t9d1.js.map +0 -10
  126. package/dist/chunk-fazw0jvt.js +0 -4
  127. package/dist/chunk-fm9ycn0h.js +0 -5
  128. package/dist/chunk-fm9ycn0h.js.map +0 -10
  129. package/dist/chunk-g67e2r57.js +0 -4
  130. package/dist/chunk-g67e2r57.js.map +0 -10
  131. package/dist/chunk-he3vy8gt.js +0 -4
  132. package/dist/chunk-he3vy8gt.js.map +0 -10
  133. package/dist/chunk-jjayk2y5.js +0 -4
  134. package/dist/chunk-jjayk2y5.js.map +0 -10
  135. package/dist/chunk-mmyv2vsv.js +0 -5
  136. package/dist/chunk-mmyv2vsv.js.map +0 -10
  137. package/dist/chunk-phev7aw7.js +0 -4
  138. package/dist/chunk-phev7aw7.js.map +0 -10
  139. package/dist/chunk-rhqk87p2.js +0 -5
  140. package/dist/chunk-rhqk87p2.js.map +0 -10
  141. package/dist/chunk-rnv7fdjk.js +0 -4
  142. package/dist/chunk-rnv7fdjk.js.map +0 -10
  143. package/dist/chunk-rwh98p1c.js +0 -4
  144. package/dist/chunk-rwh98p1c.js.map +0 -10
  145. package/dist/chunk-v9zj2gsj.js +0 -5
  146. package/dist/chunk-v9zj2gsj.js.map +0 -10
  147. package/dist/chunk-vv5bgsn8.js +0 -4
  148. package/dist/chunk-vv5bgsn8.js.map +0 -10
  149. package/dist/chunk-vwh9jfxn.js +0 -5
  150. package/dist/chunk-vwh9jfxn.js.map +0 -10
  151. package/dist/chunk-x0rqy75t.js +0 -4
  152. package/dist/chunk-x0rqy75t.js.map +0 -10
  153. package/dist/contracts/index.cjs +0 -4
  154. package/dist/contracts/index.cjs.map +0 -38
  155. package/dist/contracts/index.js +0 -4
  156. package/dist/contracts/index.js.map +0 -38
  157. package/dist/tokens/index.cjs +0 -4
  158. package/dist/tokens/index.cjs.map +0 -10
  159. package/dist/tokens/index.js +0 -4
  160. package/dist/tokens/index.js.map +0 -10
  161. package/src/api/index.ts +0 -19
  162. package/src/api/microgard/endpoints.ts +0 -83
  163. package/src/api/microgard/types.ts +0 -57
  164. package/src/api/midgard/endpoints.ts +0 -90
  165. package/src/api/midgard/types.ts +0 -106
  166. package/src/api/swapkitApi/endpoints.ts +0 -193
  167. package/src/api/swapkitApi/types.ts +0 -635
  168. package/src/api/thornode/endpoints.ts +0 -116
  169. package/src/api/thornode/types.ts +0 -276
  170. package/src/api/thorswapStatic/endpoints.ts +0 -46
  171. package/src/api/thorswapStatic/types.ts +0 -18
  172. package/src/contracts/abis/avaxGeneric.ts +0 -92
  173. package/src/contracts/abis/avaxWoofi.ts +0 -145
  174. package/src/contracts/abis/bscGeneric.ts +0 -106
  175. package/src/contracts/abis/chainflipGateway.ts +0 -330
  176. package/src/contracts/abis/erc20.ts +0 -99
  177. package/src/contracts/abis/ethGeneric.ts +0 -92
  178. package/src/contracts/abis/mayaEvmVaults.ts +0 -331
  179. package/src/contracts/abis/pancakeV2.ts +0 -145
  180. package/src/contracts/abis/pangolin.ts +0 -120
  181. package/src/contracts/abis/sushiswap.ts +0 -120
  182. package/src/contracts/abis/tcEthVault.ts +0 -650
  183. package/src/contracts/abis/traderJoe.ts +0 -120
  184. package/src/contracts/abis/uniswapV2.ts +0 -120
  185. package/src/contracts/abis/uniswapV2Leg.ts +0 -128
  186. package/src/contracts/abis/uniswapV3_100.ts +0 -128
  187. package/src/contracts/abis/uniswapV3_10000.ts +0 -128
  188. package/src/contracts/abis/uniswapV3_3000.ts +0 -128
  189. package/src/contracts/abis/uniswapV3_500.ts +0 -128
  190. package/src/contracts/index.ts +0 -95
  191. package/src/contracts/routers/index.ts +0 -58
  192. package/src/contracts/routers/kyber.ts +0 -402
  193. package/src/contracts/routers/oneinch.ts +0 -2188
  194. package/src/contracts/routers/pancakeswap.ts +0 -340
  195. package/src/contracts/routers/pangolin.ts +0 -340
  196. package/src/contracts/routers/sushiswap.ts +0 -340
  197. package/src/contracts/routers/traderJoe.ts +0 -340
  198. package/src/contracts/routers/uniswapv2.ts +0 -340
  199. package/src/contracts/routers/uniswapv3.ts +0 -254
  200. package/src/contracts/routers/woofi.ts +0 -171
  201. package/src/modules/__tests__/assetValue.test.ts +0 -877
  202. package/src/modules/__tests__/bigIntArithmetics.test.ts +0 -30
  203. package/src/modules/__tests__/swapKitConfig.test.ts +0 -37
  204. package/src/modules/__tests__/swapKitNumber.test.ts +0 -560
  205. package/src/modules/assetValue.ts +0 -387
  206. package/src/modules/bigIntArithmetics.ts +0 -436
  207. package/src/modules/feeMultiplier.ts +0 -87
  208. package/src/modules/requestClient.ts +0 -83
  209. package/src/modules/swapKitConfig.ts +0 -143
  210. package/src/modules/swapKitError.ts +0 -442
  211. package/src/modules/swapKitNumber.ts +0 -16
  212. package/src/tokens/index.ts +0 -15
  213. package/src/tokens/lists/camelot_v3.ts +0 -16060
  214. package/src/tokens/lists/caviar_v1.ts +0 -1704
  215. package/src/tokens/lists/chainflip.ts +0 -104
  216. package/src/tokens/lists/index.ts +0 -14
  217. package/src/tokens/lists/jupiter.ts +0 -33563
  218. package/src/tokens/lists/mayachain.ts +0 -509
  219. package/src/tokens/lists/near.ts +0 -458
  220. package/src/tokens/lists/oneinch.ts +0 -15006
  221. package/src/tokens/lists/openocean_v2.ts +0 -12434
  222. package/src/tokens/lists/pancakeswap.ts +0 -6136
  223. package/src/tokens/lists/pangolin_v1.ts +0 -75
  224. package/src/tokens/lists/sushiswap_v2.ts +0 -595
  225. package/src/tokens/lists/thorchain.ts +0 -748
  226. package/src/tokens/lists/traderjoe_v2.ts +0 -594
  227. package/src/tokens/lists/uniswap_v2.ts +0 -11484
  228. package/src/tokens/lists/uniswap_v3.ts +0 -19424
  229. package/src/types/chains.ts +0 -555
  230. package/src/types/commonTypes.ts +0 -58
  231. package/src/types/derivationPath.ts +0 -58
  232. package/src/types/errors/apiV1.ts +0 -0
  233. package/src/types/quotes.ts +0 -172
  234. package/src/types/radix.ts +0 -14
  235. package/src/types/sdk.ts +0 -42
  236. package/src/types/tokens.ts +0 -17
  237. package/src/types/wallet.ts +0 -166
  238. package/src/utils/__tests__/asset.test.ts +0 -193
  239. package/src/utils/__tests__/derivationPath.test.ts +0 -16
  240. package/src/utils/__tests__/memo.test.ts +0 -103
  241. package/src/utils/__tests__/others.test.ts +0 -88
  242. package/src/utils/__tests__/validators.test.ts +0 -24
  243. package/src/utils/asset.ts +0 -231
  244. package/src/utils/derivationPath.ts +0 -98
  245. package/src/utils/liquidity.ts +0 -179
  246. package/src/utils/memo.ts +0 -143
  247. package/src/utils/others.ts +0 -86
  248. package/src/utils/plugin.ts +0 -13
  249. package/src/utils/tokens.ts +0 -73
  250. package/src/utils/validators.ts +0 -32
  251. package/src/utils/wallets.ts +0 -276
@@ -1,30 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
-
3
- import { formatBigIntToSafeValue } from "../bigIntArithmetics";
4
-
5
- describe("BigIntArithmatics", () => {
6
- describe("formatBigIntToSafeValue", () => {
7
- test("parse bigint with decimals to string", () => {
8
- const safeValue1 = formatBigIntToSafeValue({
9
- value: BigInt(0),
10
- decimal: 6,
11
- bigIntDecimal: 6,
12
- });
13
- expect(safeValue1).toBe("0");
14
-
15
- const safeValue2 = formatBigIntToSafeValue({
16
- value: BigInt(15),
17
- decimal: 0,
18
- bigIntDecimal: 0,
19
- });
20
- expect(safeValue2).toBe("15");
21
-
22
- const safeValue3 = formatBigIntToSafeValue({
23
- value: BigInt(123456789),
24
- decimal: 4,
25
- bigIntDecimal: 4,
26
- });
27
- expect(safeValue3).toBe("12345.6789");
28
- });
29
- });
30
- });
@@ -1,37 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { Chain } from "../../types";
3
- import { SKConfig } from "../swapKitConfig";
4
-
5
- describe("swapKitConfig", () => {
6
- test("properly sets api keys", () => {
7
- const initialState = SKConfig.get("apiKeys").swapKit;
8
- expect(initialState).toBe("");
9
-
10
- SKConfig.setApiKey("swapKit", "123");
11
-
12
- const changedState = SKConfig.get("apiKeys").swapKit;
13
- expect(changedState).toBe("123");
14
- });
15
-
16
- test("do not drop if other keys are changed", () => {
17
- SKConfig.setApiKey("swapKit", "123");
18
- expect(SKConfig.get("apiKeys").swapKit).toBe("123");
19
-
20
- SKConfig.setApiKey("walletConnectProjectId", "123");
21
- expect(SKConfig.get("apiKeys")).toMatchObject({
22
- swapKit: "123",
23
- walletConnectProjectId: "123",
24
- });
25
-
26
- SKConfig.setExplorerUrl(Chain.Ethereum, "https://lul.xyz");
27
- expect(SKConfig.getState()).toMatchObject({
28
- apiKeys: {
29
- swapKit: "123",
30
- walletConnectProjectId: "123",
31
- },
32
- explorerUrls: {
33
- [Chain.Ethereum]: "https://lul.xyz",
34
- },
35
- });
36
- });
37
- });
@@ -1,560 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
-
3
- import { SwapKitNumber } from "../swapKitNumber";
4
-
5
- describe("SwapKitNumber", () => {
6
- describe("constructors", () => {
7
- test("creates numbers correctly", () => {
8
- const skNumber1 = new SwapKitNumber(1);
9
- expect(skNumber1.getValue("string")).toBe("1");
10
- expect(skNumber1.getValue("number")).toBe(1);
11
- expect(skNumber1.getBaseValue("bigint")).toBe(100000000n);
12
-
13
- const skNumber2 = new SwapKitNumber("1");
14
- expect(skNumber2.getValue("string")).toBe("1");
15
- expect(skNumber2.getBaseValue("bigint")).toBe(100000000n);
16
-
17
- /**
18
- * because by default we have 8 decimals - it will be rounded to 0 on base value
19
- */
20
- const skNumber3 = new SwapKitNumber("0.0000000001");
21
- expect(skNumber3.getValue("string")).toBe("0.0000000001");
22
- expect(skNumber3.getBaseValue("bigint")).toBe(0n);
23
-
24
- const skNumber4 = new SwapKitNumber({ value: "0.0000000001", decimal: 10 });
25
- expect(skNumber4.getValue("string")).toBe("0.0000000001");
26
- expect(skNumber4.getBaseValue("bigint")).toBe(1n);
27
-
28
- const skNumber5 = new SwapKitNumber({ value: 0.1005, decimal: 3 });
29
- expect(skNumber5.getValue("string")).toBe("0.101");
30
- expect(skNumber5.getBaseValue("bigint")).toBe(101n);
31
-
32
- const skNumber6 = new SwapKitNumber({ value: -0.1005, decimal: 3 });
33
- expect(skNumber6.getValue("string")).toBe("-0.101");
34
- expect(skNumber6.getBaseValue("bigint")).toBe(-101n);
35
- expect(skNumber6.decimal).toBe(3);
36
- expect(skNumber6.getValue("number")).toBe(-0.101);
37
- expect(skNumber6.decimalMultiplier).toBe(100000000n);
38
- });
39
-
40
- test("creates SwapKitInstance from BigInt: (12.345678901234, decimals: 12)", () => {
41
- const skNumber = SwapKitNumber.fromBigInt(12345678901234n, 12);
42
-
43
- expect(skNumber.getValue("string")).toBe("12.345678901234");
44
- expect(skNumber.getBaseValue("bigint")).toBe(12345678901234n);
45
- });
46
- });
47
-
48
- describe("shiftDecimals", () => {
49
- test("shifts up and bumps number", () => {
50
- const skNumber = new SwapKitNumber(1);
51
- expect(skNumber.getValue("string")).toBe("1");
52
- expect(skNumber.getBaseValue("bigint")).toBe(100000000n);
53
-
54
- const shiftedSkNumber = SwapKitNumber.shiftDecimals({
55
- value: skNumber,
56
- from: 8,
57
- to: 6,
58
- });
59
-
60
- expect(shiftedSkNumber.getValue("string")).toBe("1");
61
- expect(shiftedSkNumber.getBaseValue("bigint")).toBe(1000000n);
62
- });
63
-
64
- test("shifts down and rounds down number", () => {
65
- const skNumber = new SwapKitNumber(2.12345678);
66
- expect(skNumber.getValue("string")).toBe("2.12345678");
67
- expect(skNumber.getBaseValue("bigint")).toBe(212345678n);
68
-
69
- const shiftedSkNumber = SwapKitNumber.shiftDecimals({
70
- value: skNumber,
71
- from: 8,
72
- to: 6,
73
- });
74
-
75
- expect(shiftedSkNumber.getValue("string")).toBe("2.123456");
76
- expect(shiftedSkNumber.getBaseValue("bigint")).toBe(2123456n);
77
- });
78
-
79
- test("shift eth from 18 to 8", () => {
80
- const skNumber = new SwapKitNumber({ value: "0.2", decimal: 18 });
81
-
82
- const shiftedSkNumber = SwapKitNumber.shiftDecimals({
83
- value: skNumber,
84
- from: 18,
85
- to: 8,
86
- });
87
-
88
- expect(shiftedSkNumber.getValue("string")).toBe("0.2");
89
- expect(shiftedSkNumber.getBaseValue("bigint")).toBe(20000000n);
90
- });
91
- });
92
-
93
- describe("getValue", () => {
94
- describe("string", () => {
95
- test("returns string value", () => {
96
- const skNumber = new SwapKitNumber(1);
97
- expect(skNumber.getValue("string")).toBe("1");
98
- });
99
-
100
- test("returns string value with decimals", () => {
101
- const skNumber = new SwapKitNumber(0.01);
102
- expect(skNumber.getValue("string")).toBe("0.01");
103
- });
104
-
105
- test("returns string value with adjusted decimals", () => {
106
- const skNumber = new SwapKitNumber({ value: "1.234567890123456789", decimal: 18 });
107
- expect(skNumber.getValue("string", 8)).toBe("1.23456789");
108
- });
109
-
110
- test("returns string base value with adjusted decimals", () => {
111
- const skNumber = new SwapKitNumber({ value: "1.234567890123456789", decimal: 18 });
112
- expect(skNumber.getBaseValue("string", 8)).toBe("123456789");
113
- expect(skNumber.getBaseValue("string", 10)).toBe("12345678901");
114
- });
115
- });
116
-
117
- describe("number", () => {
118
- test("returns number value", () => {
119
- const skNumber = new SwapKitNumber(1);
120
- expect(skNumber.getValue("number")).toBe(1);
121
- });
122
-
123
- test("returns number value with decimals", () => {
124
- const skNumber = new SwapKitNumber(0.01);
125
- expect(skNumber.getValue("number")).toBe(0.01);
126
- });
127
-
128
- test("returns number value with adjusted decimals", () => {
129
- const skNumber = new SwapKitNumber({ value: "1.234567890123456789", decimal: 18 });
130
- expect(skNumber.getValue("number", 8)).toBe(1.23456789);
131
- });
132
-
133
- test("returns number base value with adjusted decimals", () => {
134
- const skNumber = new SwapKitNumber({ value: "1.234567890123456789", decimal: 18 });
135
- expect(skNumber.getBaseValue("number", 8)).toBe(123456789);
136
- expect(skNumber.getBaseValue("number", 10)).toBe(12345678901);
137
- });
138
- });
139
-
140
- describe("bigint", () => {
141
- test("returns bigint value", () => {
142
- const skNumber = new SwapKitNumber(1);
143
- expect(skNumber.getBaseValue("bigint")).toBe(100000000n);
144
- });
145
-
146
- test("returns bigint value with adjusted decimals", () => {
147
- const skNumber = new SwapKitNumber({ value: "1.234567890123456789", decimal: 18 });
148
- expect(skNumber.getBaseValue("bigint", 8)).toBe(123456789n);
149
- expect(skNumber.getBaseValue("bigint", 10)).toBe(12345678901n);
150
- });
151
- });
152
- });
153
-
154
- describe("toSignificant", () => {
155
- describe("normal cases", () => {
156
- test("returns first significant number of digits", () => {
157
- const usdLikeNumber = new SwapKitNumber(1234.5678);
158
- expect(usdLikeNumber.toSignificant(2)).toBe("1200");
159
- expect(usdLikeNumber.toSignificant(3)).toBe("1230");
160
- expect(usdLikeNumber.toSignificant(4)).toBe("1234");
161
- expect(usdLikeNumber.toSignificant(5)).toBe("1234.5");
162
- expect(usdLikeNumber.toSignificant(6)).toBe("1234.56");
163
- expect(usdLikeNumber.toSignificant(7)).toBe("1234.567");
164
- expect(usdLikeNumber.toSignificant(8)).toBe("1234.5678");
165
-
166
- const btcLikeNumber = new SwapKitNumber(0.00005678);
167
- expect(btcLikeNumber.toSignificant(2)).toBe("0.000056");
168
- expect(btcLikeNumber.toSignificant(3)).toBe("0.0000567");
169
- expect(btcLikeNumber.toSignificant(4)).toBe("0.00005678");
170
- expect(btcLikeNumber.toSignificant(5)).toBe("0.00005678");
171
- expect(btcLikeNumber.toSignificant(8)).toBe("0.00005678");
172
- });
173
- });
174
-
175
- describe("custom decimals", () => {
176
- test("returns first significant number of digits", () => {
177
- const usdLikeNumber = new SwapKitNumber({ value: 1234.5678, decimal: 2 });
178
- expect(usdLikeNumber.toSignificant(2)).toBe("1200");
179
- expect(usdLikeNumber.toSignificant(3)).toBe("1230");
180
- expect(usdLikeNumber.toSignificant(4)).toBe("1234");
181
- expect(usdLikeNumber.toSignificant(5)).toBe("1234.5");
182
- expect(usdLikeNumber.toSignificant(6)).toBe("1234.57");
183
- expect(usdLikeNumber.toSignificant(7)).toBe("1234.57");
184
- expect(usdLikeNumber.toSignificant(8)).toBe("1234.57");
185
-
186
- const ethLikeNumber = new SwapKitNumber({ value: 0.00005678, decimal: 18 });
187
- expect(ethLikeNumber.toSignificant(2)).toBe("0.000056");
188
- expect(ethLikeNumber.toSignificant(3)).toBe("0.0000567");
189
- expect(ethLikeNumber.toSignificant(4)).toBe("0.00005678");
190
- expect(ethLikeNumber.toSignificant(5)).toBe("0.00005678");
191
- expect(ethLikeNumber.toSignificant(8)).toBe("0.00005678");
192
- expect(ethLikeNumber.toSignificant(18)).toBe("0.00005678");
193
- });
194
- });
195
- });
196
-
197
- describe("toAbbreviation", () => {
198
- test("returns abbreviation with up to 3 integer digits", () => {
199
- const skNumber = new SwapKitNumber(1234.5678);
200
- expect(skNumber.toAbbreviation()).toBe("1.23K");
201
-
202
- const skNumber2 = new SwapKitNumber(1234567.5678);
203
- expect(skNumber2.toAbbreviation()).toBe("1.23M");
204
-
205
- const skNumber3 = new SwapKitNumber(1234567890.5678);
206
- expect(skNumber3.toAbbreviation()).toBe("1.23B");
207
-
208
- const skNumber4 = new SwapKitNumber("1234567890123.5678");
209
- expect(skNumber4.toAbbreviation()).toBe("1.23T");
210
-
211
- const skNumber5 = new SwapKitNumber("1234567890123456.5678");
212
- expect(skNumber5.toAbbreviation()).toBe("1.23Q");
213
-
214
- const skNumber6 = new SwapKitNumber("1234567890123456789.5678");
215
- expect(skNumber6.toAbbreviation()).toBe("1.23Qi");
216
-
217
- const skNumber7 = new SwapKitNumber("1234567890123456789012.5678");
218
- expect(skNumber7.toAbbreviation()).toBe("1.23S");
219
-
220
- const skNumber8 = new SwapKitNumber(1234.5678);
221
- expect(skNumber8.toAbbreviation(0)).toBe("1K");
222
-
223
- const skNumber9 = new SwapKitNumber(1234.5678);
224
- expect(skNumber9.toAbbreviation(1)).toBe("1.2K");
225
-
226
- const skNumber10 = new SwapKitNumber(123456.78);
227
- expect(skNumber10.toAbbreviation()).toBe("123.46K");
228
- });
229
- });
230
-
231
- describe("toCurrency", () => {
232
- test("returns abbreviation with up to 3 integer digits", () => {
233
- const skNumber = new SwapKitNumber(1234.5678);
234
- expect(skNumber.toCurrency()).toBe("$1,234.56");
235
- expect(
236
- skNumber.toCurrency("€", {
237
- decimalSeparator: ",",
238
- thousandSeparator: " ",
239
- currencyPosition: "end",
240
- }),
241
- ).toBe("1 234,56€");
242
-
243
- const skNumber2 = new SwapKitNumber(0.5678);
244
- expect(skNumber2.toCurrency()).toBe("$0.5678");
245
- expect(
246
- skNumber2.toCurrency("€", {
247
- decimalSeparator: ",",
248
- currencyPosition: "end",
249
- }),
250
- ).toBe("0,5678€");
251
-
252
- const skNumber3 = new SwapKitNumber(0.00005678);
253
- expect(skNumber3.toCurrency()).toBe("$0.000057");
254
- expect(
255
- skNumber3.toCurrency("€", {
256
- decimalSeparator: ",",
257
- thousandSeparator: " ",
258
- currencyPosition: "end",
259
- }),
260
- ).toBe("0,000057€");
261
-
262
- const skNumber4 = new SwapKitNumber(12345);
263
- expect(skNumber4.toCurrency()).toBe("$12,345");
264
- });
265
- });
266
-
267
- describe("add", () => {
268
- test("adds same type numbers correctly", () => {
269
- const skNumber1 = new SwapKitNumber(10);
270
- const skNumber2 = new SwapKitNumber("5");
271
- const skNumber3 = new SwapKitNumber("0.5");
272
- const result = skNumber1.add(skNumber2, skNumber3);
273
-
274
- expect(result.getValue("string")).toBe("15.5");
275
- expect(result.getBaseValue("bigint")).toBe(1550000000n);
276
- });
277
-
278
- test("adds different type numbers correctly", () => {
279
- const skNumber1 = new SwapKitNumber(10);
280
- const result = skNumber1.add(6, "0.5");
281
-
282
- expect(result.getValue("string")).toBe("16.5");
283
- expect(result.getBaseValue("bigint")).toBe(1650000000n);
284
- });
285
-
286
- test("adds large decimal numbers correctly", () => {
287
- const skNumber1 = new SwapKitNumber(0.0000000001);
288
- const result = skNumber1.add(6.000000000001, "0.0000000000000005");
289
- expect(result.getValue("string")).toBe("6.0000000001010005");
290
- expect(result.getBaseValue("bigint")).toBe(600000000n);
291
- });
292
- });
293
-
294
- describe("sub", () => {
295
- test("subtracts same type numbers correctly", () => {
296
- const skNumber1 = new SwapKitNumber(10);
297
- const skNumber2 = new SwapKitNumber("5");
298
- const skNumber3 = new SwapKitNumber(0.5);
299
- const result = skNumber1.sub(skNumber2, skNumber3);
300
-
301
- expect(result.getValue("string")).toBe("4.5");
302
- expect(result.getBaseValue("bigint")).toBe(450000000n);
303
- });
304
-
305
- test("subtracts different type numbers correctly", () => {
306
- const skNumber1 = new SwapKitNumber(10);
307
- const result = skNumber1.sub(6, "0.5");
308
-
309
- expect(result.getValue("string")).toBe("3.5");
310
- expect(result.getBaseValue("bigint")).toBe(350000000n);
311
- });
312
-
313
- test("can process negative results", () => {
314
- const skNumber1 = new SwapKitNumber(10);
315
- const result0 = skNumber1.sub(10);
316
- const resultMinus = result0.sub("10");
317
-
318
- expect(result0.getValue("string")).toBe("0");
319
- expect(resultMinus.getValue("string")).toBe("-10");
320
- expect(result0.getBaseValue("bigint")).toBe(0n);
321
- expect(resultMinus.getBaseValue("bigint")).toBe(-1000000000n);
322
- });
323
- });
324
-
325
- describe("mul", () => {
326
- test("multiplies same type numbers correctly", () => {
327
- const skNumber1 = new SwapKitNumber(10);
328
- const skNumber2 = new SwapKitNumber("5");
329
- const skNumber3 = new SwapKitNumber(0.5);
330
- const result = skNumber1.mul(skNumber2, skNumber3);
331
-
332
- expect(result.getValue("string")).toBe("25");
333
- expect(result.getBaseValue("bigint")).toBe(2500000000n);
334
- });
335
-
336
- test("multiplies different type numbers correctly", () => {
337
- const skNumber1 = new SwapKitNumber(10);
338
- const result = skNumber1.mul(6, "0.5");
339
-
340
- expect(result.getValue("string")).toBe("30");
341
- expect(result.getBaseValue("bigint")).toBe(3000000000n);
342
- });
343
-
344
- test("multiplies numbers correctly if decimals of SKN is lower than number multiplied with", () => {
345
- const skNumber1 = new SwapKitNumber({ value: 1000000, decimal: 4 });
346
- const result = skNumber1.mul("0.00001");
347
-
348
- expect(result.getValue("string")).toBe("10");
349
- expect(result.getBaseValue("bigint")).toBe(100000n);
350
- });
351
-
352
- test("should correctly round the result of multiplication", () => {
353
- const skNumber1 = new SwapKitNumber({ decimal: 3, value: 1.23 });
354
- const skNumber2 = new SwapKitNumber({ decimal: 4, value: 4.56 });
355
-
356
- const result = skNumber1.mul(skNumber2);
357
-
358
- expect(result.getValue("string")).toBe("5.609");
359
- expect(result.getBaseValue("bigint")).toBe(5609n);
360
-
361
- const skNumber3 = new SwapKitNumber({ decimal: 2, value: 1.23 });
362
- const skNumber4 = new SwapKitNumber(-1.234567891);
363
-
364
- const result2 = skNumber3.mul(skNumber4);
365
-
366
- // The exact result of 1.23 * -1.234567891 is -1,518518505
367
- // If we round it to 2 decimal places, we should get 5.61
368
- expect(result2.getValue("string")).toBe("-1.52");
369
- expect(result2.getBaseValue("bigint")).toBe(-152n);
370
- });
371
- });
372
-
373
- describe("div", () => {
374
- test("divides same type numbers correctly", () => {
375
- const skNumber1 = new SwapKitNumber(10);
376
- const skNumber2 = new SwapKitNumber("5");
377
- const skNumber3 = new SwapKitNumber(0.5);
378
- const result = skNumber1.div(skNumber2, skNumber3);
379
-
380
- expect(result.getValue("string")).toBe("4");
381
- expect(result.getBaseValue("bigint")).toBe(400000000n);
382
-
383
- const skNumber4 = new SwapKitNumber(10.12);
384
- const result2 = skNumber4.div(0.0001);
385
-
386
- expect(result2.getValue("string")).toBe("101200");
387
- expect(result2.getBaseValue("bigint")).toBe(10120000000000n);
388
- });
389
-
390
- test("divides different type numbers correctly", () => {
391
- const skNumber1 = new SwapKitNumber(20);
392
- const result = skNumber1.div(5, "0.5");
393
-
394
- expect(result.getValue("string")).toBe("8");
395
- expect(result.getBaseValue("bigint")).toBe(800000000n);
396
- });
397
-
398
- test("divides different type numbers correctly when decimal is set", () => {
399
- const skNumber1 = new SwapKitNumber({ value: "1.2", decimal: 2 });
400
- const result = skNumber1.div(0.001);
401
-
402
- expect(result.getValue("string")).toBe("1200");
403
- expect(result.getBaseValue("bigint")).toBe(120000n);
404
- });
405
-
406
- test("divides smaller number by larger number", () => {
407
- const skNumber1 = new SwapKitNumber(1);
408
- const result = skNumber1.div(2);
409
-
410
- expect(result.getValue("string")).toBe("0.5");
411
- expect(result.getBaseValue("bigint")).toBe(50000000n);
412
- });
413
-
414
- test("divides a number with 18 decimals by a negative number with less decimals", () => {
415
- const skNumber1 = new SwapKitNumber({ value: "1.000000000000000010", decimal: 18 });
416
- const skNumber2 = new SwapKitNumber({ value: "-2", decimal: 1 });
417
-
418
- const result = skNumber1.div(skNumber2);
419
-
420
- // The exact result of 1.000000000000000010 / -2 is -0.500000000000000005
421
- expect(result.getValue("string")).toBe("-0.500000000000000005");
422
- expect(result.getBaseValue("bigint")).toBe(-500000000000000005n);
423
- });
424
-
425
- test("divides a number with 2 decimals by a negative number with more decimals", () => {
426
- const skNumber1 = new SwapKitNumber({ value: "2", decimal: 2 });
427
- const skNumber2 = new SwapKitNumber({ value: "-0.000005", decimal: 18 });
428
-
429
- const result = skNumber1.div(skNumber2);
430
-
431
- // The exact result of 2 / -0.000005 is -400000
432
- expect(result.getValue("string")).toBe("-400000");
433
- expect(result.getBaseValue("bigint")).toBe(-40000000n);
434
- });
435
- });
436
-
437
- describe("shitcoin cases", () => {
438
- test("multiply huge numbers", () => {
439
- const skNumber1 = new SwapKitNumber({ value: 1_000_000_000_000_001, decimal: 18 });
440
- const skNumber2 = new SwapKitNumber({ value: 987_654_321_000, decimal: 18 });
441
-
442
- const result = skNumber1.mul(skNumber2);
443
- expect(result.getValue("string")).toBe("987654321000000987654321000");
444
- expect(result.getBaseValue("bigint")).toBe(987654321000000987654321000000000000000000000n);
445
- });
446
-
447
- test("divide huge numbers", () => {
448
- const skNumber1 = new SwapKitNumber({ value: 1_000_000_000_000_001, decimal: 18 });
449
- const skNumber2 = new SwapKitNumber({ value: 987_654_321_000, decimal: 18 });
450
-
451
- const result = skNumber1.div(skNumber2);
452
- expect(result.getValue("string")).toBe("1012.4999999873447625");
453
- expect(result.getBaseValue("bigint")).toBe(1012499999987344762500n);
454
- });
455
- });
456
-
457
- describe("extending multiplier without loosing precision", () => {
458
- test("edge case 1", () => {
459
- const asset1 = new SwapKitNumber({ value: 41.90963702, decimal: 8 });
460
- const multiplier = 5.337952274462478;
461
- const divider = 105.2562773915526;
462
- const result = asset1.mul(multiplier).div(divider);
463
-
464
- expect(result.getValue("string")).toBe("2.12539953");
465
- });
466
-
467
- test("edge case 2", () => {
468
- const asset1 = new SwapKitNumber("41.90963702");
469
- const multiplier = new SwapKitNumber("5.337952274462478");
470
- const divider = new SwapKitNumber("105.2562773915526");
471
- const result = asset1.mul(multiplier).div(divider);
472
-
473
- expect(result.getValue("string")).toBe("2.125399527674726");
474
- });
475
- });
476
-
477
- describe("gt", () => {
478
- test("greater than", () => {
479
- const skNumber1 = new SwapKitNumber(10);
480
- const skNumber2 = new SwapKitNumber("5");
481
-
482
- expect(skNumber1.gt(skNumber2)).toBe(true);
483
- expect(skNumber2.gt(skNumber1)).toBe(false);
484
- });
485
-
486
- test("different decimals doesn't affect comparison", () => {
487
- const skNumber1 = new SwapKitNumber({ value: 10, decimal: 18 });
488
- const skNumber2 = new SwapKitNumber({ value: "50", decimal: 8 });
489
-
490
- expect(skNumber1.lt(skNumber2)).toBe(true);
491
- expect(skNumber2.gt(skNumber1)).toBe(true);
492
- });
493
- });
494
-
495
- describe("gte", () => {
496
- test("greater than or equal", () => {
497
- const skNumber1 = new SwapKitNumber(10);
498
- const skNumber2 = new SwapKitNumber("5");
499
-
500
- expect(skNumber1.gte(skNumber2)).toBe(true);
501
- expect(skNumber1.gte(skNumber1)).toBe(true);
502
- expect(skNumber2.gte(skNumber1)).toBe(false);
503
- });
504
- });
505
-
506
- describe("lt", () => {
507
- test("less than", () => {
508
- const skNumber1 = new SwapKitNumber(10);
509
- const skNumber2 = new SwapKitNumber("5");
510
-
511
- expect(skNumber1.lt(skNumber2)).toBe(false);
512
- expect(skNumber2.lt(skNumber1)).toBe(true);
513
- });
514
- });
515
-
516
- describe("lte", () => {
517
- test("less than or equal", () => {
518
- const skNumber1 = new SwapKitNumber(10);
519
- const skNumber2 = new SwapKitNumber("5");
520
-
521
- expect(skNumber1.lte(skNumber2)).toBe(false);
522
- expect(skNumber1.lte(skNumber1)).toBe(true);
523
- expect(skNumber2.lte(skNumber1)).toBe(true);
524
- });
525
- });
526
-
527
- describe("eq", () => {
528
- test("equal", () => {
529
- const skNumber1 = new SwapKitNumber(10);
530
- const skNumber2 = new SwapKitNumber("5");
531
-
532
- expect(skNumber1.eq(skNumber2)).toBe(false);
533
- expect(skNumber1.eq(skNumber1)).toBe(true);
534
- expect(skNumber2.eq(skNumber1)).toBe(false);
535
- });
536
- });
537
-
538
- describe("comparison edge cases with decimals", () => {
539
- test("compare on cut decimals", () => {
540
- const skNumber1 = new SwapKitNumber({ value: 0.001, decimal: 3 });
541
- const value = "0.0019";
542
-
543
- expect(skNumber1.lt(value)).toBe(true);
544
- expect(skNumber1.gt(value)).toBe(false);
545
- expect(skNumber1.eq(value)).toBe(false);
546
- expect(skNumber1.lte(value)).toBe(true);
547
- expect(skNumber1.gte(value)).toBe(false);
548
- });
549
- });
550
-
551
- describe("Throws", () => {
552
- test("throws if division by zero", () => {
553
- const skNumber1 = new SwapKitNumber(10);
554
- const skNumber2 = new SwapKitNumber("0");
555
-
556
- expect(() => skNumber1.div(skNumber2)).toThrow(RangeError);
557
- expect(() => skNumber1.div(0)).toThrow(RangeError);
558
- });
559
- });
560
- });