@allbridge/bridge-core-sdk 3.32.1 → 3.33.0-alpha.2

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 (137) hide show
  1. package/dist/browser/index.js +2 -2
  2. package/dist/browser/index.js.map +4 -4
  3. package/dist/cjs/index.js +2 -2
  4. package/dist/cjs/index.js.map +4 -4
  5. package/dist/esm/index.js +2 -2
  6. package/dist/esm/index.js.map +4 -4
  7. package/dist/src/client/core-api/api-client-caching.d.ts +2 -0
  8. package/dist/src/client/core-api/api-client-caching.js +2 -0
  9. package/dist/src/client/core-api/api-client-caching.js.map +1 -1
  10. package/dist/src/client/core-api/api-client.d.ts +5 -0
  11. package/dist/src/client/core-api/api-client.js +2 -0
  12. package/dist/src/client/core-api/api-client.js.map +1 -1
  13. package/dist/src/client/core-api/core-api-mapper.d.ts +15 -0
  14. package/dist/src/client/core-api/core-api-mapper.js +15 -0
  15. package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
  16. package/dist/src/client/core-api/core-api.model.d.ts +30 -0
  17. package/dist/src/client/core-api/core-api.model.js +4 -0
  18. package/dist/src/client/core-api/core-api.model.js.map +1 -1
  19. package/dist/src/client/core-api/core-client-base.d.ts +9 -0
  20. package/dist/src/client/core-api/core-client-base.js +3 -0
  21. package/dist/src/client/core-api/core-client-base.js.map +1 -1
  22. package/dist/src/client/core-api/core-client-filtered.d.ts +16 -0
  23. package/dist/src/client/core-api/core-client-filtered.js +4 -0
  24. package/dist/src/client/core-api/core-client-filtered.js.map +1 -1
  25. package/dist/src/client/core-api/core-client-pool-info-caching.d.ts +13 -0
  26. package/dist/src/client/core-api/core-client-pool-info-caching.js +7 -0
  27. package/dist/src/client/core-api/core-client-pool-info-caching.js.map +1 -1
  28. package/dist/src/exceptions/exceptions.d.ts +4 -0
  29. package/dist/src/exceptions/exceptions.js +4 -0
  30. package/dist/src/exceptions/exceptions.js.map +1 -1
  31. package/dist/src/index.d.ts +48 -30
  32. package/dist/src/index.js +17 -86
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/models/index.d.ts +2 -1
  35. package/dist/src/models/index.js.map +1 -1
  36. package/dist/src/services/bridge/alg/index.d.ts +1 -0
  37. package/dist/src/services/bridge/alg/index.js +1 -0
  38. package/dist/src/services/bridge/alg/index.js.map +1 -1
  39. package/dist/src/services/bridge/evm/index.d.ts +2 -0
  40. package/dist/src/services/bridge/evm/index.js +2 -0
  41. package/dist/src/services/bridge/evm/index.js.map +1 -1
  42. package/dist/src/services/bridge/index.d.ts +4 -2
  43. package/dist/src/services/bridge/index.js +7 -45
  44. package/dist/src/services/bridge/index.js.map +1 -1
  45. package/dist/src/services/bridge/models/bridge.d.ts +1 -0
  46. package/dist/src/services/bridge/models/bridge.js.map +1 -1
  47. package/dist/src/services/bridge/models/bridge.model.d.ts +14 -6
  48. package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
  49. package/dist/src/services/bridge/raw-bridge-transaction-builder.d.ts +6 -0
  50. package/dist/src/services/bridge/raw-bridge-transaction-builder.js +3 -2
  51. package/dist/src/services/bridge/raw-bridge-transaction-builder.js.map +1 -1
  52. package/dist/src/services/bridge/sol/bridge-tx-service.d.ts +3 -1
  53. package/dist/src/services/bridge/sol/bridge-tx-service.js +4 -0
  54. package/dist/src/services/bridge/sol/bridge-tx-service.js.map +1 -1
  55. package/dist/src/services/bridge/sol/index.d.ts +3 -1
  56. package/dist/src/services/bridge/sol/index.js +1 -0
  57. package/dist/src/services/bridge/sol/index.js.map +1 -1
  58. package/dist/src/services/bridge/sol/payer-with-token-service.js +3 -0
  59. package/dist/src/services/bridge/sol/payer-with-token-service.js.map +1 -1
  60. package/dist/src/services/bridge/spender.d.ts +4 -0
  61. package/dist/src/services/bridge/spender.js +45 -0
  62. package/dist/src/services/bridge/spender.js.map +1 -0
  63. package/dist/src/services/bridge/srb/index.d.ts +2 -0
  64. package/dist/src/services/bridge/srb/index.js +2 -0
  65. package/dist/src/services/bridge/srb/index.js.map +1 -1
  66. package/dist/src/services/bridge/stx/index.d.ts +1 -0
  67. package/dist/src/services/bridge/stx/index.js +1 -0
  68. package/dist/src/services/bridge/stx/index.js.map +1 -1
  69. package/dist/src/services/bridge/sui/index.d.ts +1 -0
  70. package/dist/src/services/bridge/sui/index.js +1 -0
  71. package/dist/src/services/bridge/sui/index.js.map +1 -1
  72. package/dist/src/services/bridge/trx/index.d.ts +2 -0
  73. package/dist/src/services/bridge/trx/index.js +2 -0
  74. package/dist/src/services/bridge/trx/index.js.map +1 -1
  75. package/dist/src/services/bridge/utils.d.ts +4 -0
  76. package/dist/src/services/bridge/utils.js +1 -0
  77. package/dist/src/services/bridge/utils.js.map +1 -1
  78. package/dist/src/services/index.d.ts +25 -2
  79. package/dist/src/services/index.js +17 -2
  80. package/dist/src/services/index.js.map +1 -1
  81. package/dist/src/services/liquidity-pool/alg/index.d.ts +3 -0
  82. package/dist/src/services/liquidity-pool/alg/index.js +3 -0
  83. package/dist/src/services/liquidity-pool/alg/index.js.map +1 -1
  84. package/dist/src/services/liquidity-pool/evm/index.d.ts +3 -0
  85. package/dist/src/services/liquidity-pool/evm/index.js +3 -0
  86. package/dist/src/services/liquidity-pool/evm/index.js.map +1 -1
  87. package/dist/src/services/liquidity-pool/index.d.ts +19 -0
  88. package/dist/src/services/liquidity-pool/index.js +9 -1
  89. package/dist/src/services/liquidity-pool/index.js.map +1 -1
  90. package/dist/src/services/liquidity-pool/models/pool.d.ts +8 -0
  91. package/dist/src/services/liquidity-pool/models/pool.js +3 -0
  92. package/dist/src/services/liquidity-pool/models/pool.js.map +1 -1
  93. package/dist/src/services/liquidity-pool/models/pool.model.d.ts +27 -0
  94. package/dist/src/services/liquidity-pool/models/pool.model.js +3 -0
  95. package/dist/src/services/liquidity-pool/models/pool.model.js.map +1 -1
  96. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.d.ts +11 -0
  97. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js +3 -0
  98. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js.map +1 -1
  99. package/dist/src/services/liquidity-pool/sol/index.d.ts +3 -0
  100. package/dist/src/services/liquidity-pool/sol/index.js +3 -0
  101. package/dist/src/services/liquidity-pool/sol/index.js.map +1 -1
  102. package/dist/src/services/liquidity-pool/srb/index.d.ts +3 -0
  103. package/dist/src/services/liquidity-pool/srb/index.js +3 -0
  104. package/dist/src/services/liquidity-pool/srb/index.js.map +1 -1
  105. package/dist/src/services/liquidity-pool/stx/index.d.ts +3 -0
  106. package/dist/src/services/liquidity-pool/stx/index.js +3 -0
  107. package/dist/src/services/liquidity-pool/stx/index.js.map +1 -1
  108. package/dist/src/services/liquidity-pool/sui/index.d.ts +3 -0
  109. package/dist/src/services/liquidity-pool/sui/index.js +3 -0
  110. package/dist/src/services/liquidity-pool/sui/index.js.map +1 -1
  111. package/dist/src/services/liquidity-pool/trx/index.d.ts +3 -0
  112. package/dist/src/services/liquidity-pool/trx/index.js +3 -0
  113. package/dist/src/services/liquidity-pool/trx/index.js.map +1 -1
  114. package/dist/src/services/utils/calculation/index.d.ts +6 -0
  115. package/dist/src/services/utils/calculation/index.js +6 -0
  116. package/dist/src/services/utils/calculation/index.js.map +1 -1
  117. package/dist/src/services/utils/sol/index.d.ts +6 -0
  118. package/dist/src/services/utils/sol/index.js +6 -0
  119. package/dist/src/services/utils/sol/index.js.map +1 -1
  120. package/dist/src/tokens-info/tokens-info.model.d.ts +24 -0
  121. package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
  122. package/dist/src/utils/calculation/index.d.ts +26 -0
  123. package/dist/src/utils/calculation/index.js +26 -0
  124. package/dist/src/utils/calculation/index.js.map +1 -1
  125. package/dist/src/utils/calculation/swap-and-bridge-details.d.ts +9 -0
  126. package/dist/src/utils/calculation/swap-and-bridge-details.js +3 -0
  127. package/dist/src/utils/calculation/swap-and-bridge-details.js.map +1 -1
  128. package/dist/src/utils/calculation/swap-and-bridge-fee-calc.d.ts +18 -0
  129. package/dist/src/utils/calculation/swap-and-bridge-fee-calc.js +6 -0
  130. package/dist/src/utils/calculation/swap-and-bridge-fee-calc.js.map +1 -1
  131. package/dist/src/utils/utils.d.ts +3 -0
  132. package/dist/src/utils/utils.js +3 -0
  133. package/dist/src/utils/utils.js.map +1 -1
  134. package/dist/src/version.d.ts +1 -1
  135. package/dist/src/version.js +1 -1
  136. package/dist/src/version.js.map +1 -1
  137. package/package.json +1 -1
@@ -7,11 +7,24 @@ export declare function convertAmountPrecision(amount: BigSource, decimalsFrom:
7
7
  export declare function toPowBase10(decimals: number): Big;
8
8
  export declare function convertFloatAmountToInt(amountFloat: BigSource, decimals: number): Big;
9
9
  export declare function convertIntAmountToFloat(amountInt: BigSource, decimals: number): Big;
10
+ /**
11
+ * @deprecated Do not use.
12
+ */
10
13
  export declare function calculatePoolInfoImbalance(poolInfo: Pick<PoolInfo, "tokenBalance" | "vUsdBalance">): string;
14
+ /**
15
+ * @deprecated Do not use.
16
+ */
11
17
  export declare function swapToVUsd(amount: BigSource, { feeShare, decimals }: Pick<Token, "feeShare" | "decimals">, poolInfo: Omit<PoolInfo, "p" | "imbalance">): string;
18
+ /**
19
+ * @deprecated Do not use.
20
+ */
12
21
  export declare function swapFromVUsd(amount: BigSource, { feeShare, decimals }: Pick<Token, "feeShare" | "decimals">, poolInfo: Pick<PoolInfo, "vUsdBalance" | "aValue" | "dValue" | "tokenBalance">): string;
22
+ /**
23
+ * @deprecated Do not use.
24
+ */
13
25
  export declare function getSwapFromVUsdPoolInfo(vUsdAmount: BigSource, poolInfo: Omit<PoolInfo, "imbalance">): Pick<PoolInfo, "vUsdBalance" | "aValue" | "dValue" | "tokenBalance">;
14
26
  /**
27
+ * @deprecated Do not use.
15
28
  * @param amount - vUsd amount should be received
16
29
  * @param feeShare
17
30
  * @param decimals
@@ -19,13 +32,26 @@ export declare function getSwapFromVUsdPoolInfo(vUsdAmount: BigSource, poolInfo:
19
32
  */
20
33
  export declare function swapToVUsdReverse(amount: BigSource, { feeShare, decimals }: Pick<Token, "feeShare" | "decimals">, poolInfo: Omit<PoolInfo, "imbalance">): Big;
21
34
  /**
35
+ * @deprecated Do not use.
22
36
  * @param amount - amount should be received
23
37
  * @param feeShare
24
38
  * @param decimals
25
39
  * @param poolInfo
26
40
  */
27
41
  export declare function swapFromVUsdReverse(amount: BigSource, { feeShare, decimals }: Pick<Token, "feeShare" | "decimals">, poolInfo: Omit<PoolInfo, "imbalance">): Big;
42
+ /**
43
+ * @deprecated Do not use.
44
+ */
28
45
  export declare function getY(x: BigSource, a: BigSource, d: BigSource): Big;
46
+ /**
47
+ * @deprecated Do not use.
48
+ */
29
49
  export declare function getEarned(userLpAmount: string, userRewardDebt: string, accRewardPerShareP: string, p: number): string;
50
+ /**
51
+ * @deprecated Do not use.
52
+ */
30
53
  export declare function aprInPercents(apr: string): string;
54
+ /**
55
+ * @deprecated Do not use.
56
+ */
31
57
  export declare function getD(aValue: string, x: string, y: string): string;
@@ -28,11 +28,17 @@ export function convertIntAmountToFloat(amountInt, decimals) {
28
28
  }
29
29
  return Big(amountValue).div(toPowBase10(decimals));
30
30
  }
31
+ /**
32
+ * @deprecated Do not use.
33
+ */
31
34
  export function calculatePoolInfoImbalance(poolInfo) {
32
35
  return convertIntAmountToFloat(Big(poolInfo.tokenBalance).minus(poolInfo.vUsdBalance).toFixed(), SYSTEM_PRECISION)
33
36
  .div(2)
34
37
  .toFixed();
35
38
  }
39
+ /**
40
+ * @deprecated Do not use.
41
+ */
36
42
  export function swapToVUsd(amount, { feeShare, decimals }, poolInfo) {
37
43
  const amountValue = Big(amount);
38
44
  if (amountValue.lte(0)) {
@@ -45,6 +51,9 @@ export function swapToVUsd(amount, { feeShare, decimals }, poolInfo) {
45
51
  const vUsdNewAmount = getY(tokenBalance, poolInfo.aValue, poolInfo.dValue);
46
52
  return Big(poolInfo.vUsdBalance).minus(vUsdNewAmount).round(0, Big.roundDown).toFixed();
47
53
  }
54
+ /**
55
+ * @deprecated Do not use.
56
+ */
48
57
  export function swapFromVUsd(amount, { feeShare, decimals }, poolInfo) {
49
58
  const amountValue = Big(amount);
50
59
  if (amountValue.lte(0)) {
@@ -56,6 +65,9 @@ export function swapFromVUsd(amount, { feeShare, decimals }, poolInfo) {
56
65
  const fee = Big(result).times(feeShare);
57
66
  return Big(result).minus(fee).round(0, Big.roundDown).toFixed();
58
67
  }
68
+ /**
69
+ * @deprecated Do not use.
70
+ */
59
71
  export function getSwapFromVUsdPoolInfo(vUsdAmount, poolInfo) {
60
72
  const amountValue = Big(vUsdAmount);
61
73
  if (amountValue.lte(0)) {
@@ -71,6 +83,7 @@ export function getSwapFromVUsdPoolInfo(vUsdAmount, poolInfo) {
71
83
  };
72
84
  }
73
85
  /**
86
+ * @deprecated Do not use.
74
87
  * @param amount - vUsd amount should be received
75
88
  * @param feeShare
76
89
  * @param decimals
@@ -92,6 +105,7 @@ export function swapToVUsdReverse(amount, { feeShare, decimals }, poolInfo) {
92
105
  return Big(amountWithoutFee).plus(fee).round(0, Big.roundDown);
93
106
  }
94
107
  /**
108
+ * @deprecated Do not use.
95
109
  * @param amount - amount should be received
96
110
  * @param feeShare
97
111
  * @param decimals
@@ -116,6 +130,9 @@ export function swapFromVUsdReverse(amount, { feeShare, decimals }, poolInfo) {
116
130
  // commonPart = 4a(d - x) - d
117
131
  // sqrt = sqrt(x * (4ad³ + x * commonPart²)
118
132
  // y = (sqrt + x * commonPart) / divider
133
+ /**
134
+ * @deprecated Do not use.
135
+ */
119
136
  export function getY(x, a, d) {
120
137
  const commonPartBig = Big(4).times(a).times(Big(d).minus(x)).minus(d);
121
138
  const dCubed = Big(d).pow(3);
@@ -131,6 +148,9 @@ export function getY(x, a, d) {
131
148
  }
132
149
  return result.plus(1); // +1 to offset rounding errors
133
150
  }
151
+ /**
152
+ * @deprecated Do not use.
153
+ */
134
154
  export function getEarned(userLpAmount, userRewardDebt, accRewardPerShareP, p) {
135
155
  const userLpAmountBN = new BN(userLpAmount);
136
156
  const accRewardPerSharePBN = new BN(accRewardPerShareP);
@@ -138,6 +158,9 @@ export function getEarned(userLpAmount, userRewardDebt, accRewardPerShareP, p) {
138
158
  const rewards = userLpAmountBN.mul(accRewardPerSharePBN).shrn(p);
139
159
  return rewards.sub(userRewardDebtBN).toString();
140
160
  }
161
+ /**
162
+ * @deprecated Do not use.
163
+ */
141
164
  export function aprInPercents(apr) {
142
165
  return Big(apr).gt(0) ? `${Number(Big(apr).times(100).toFixed(2)).toLocaleString()}%` : "N/A";
143
166
  }
@@ -145,6 +168,9 @@ export function aprInPercents(apr) {
145
168
  // b = xy(16A - 4) / 3
146
169
  // c = sqrt(a² + b³)
147
170
  // D = cbrt(a + c) + cbrt(a - c)
171
+ /**
172
+ * @deprecated Do not use.
173
+ */
148
174
  export function getD(aValue, x, y) {
149
175
  const xy = Big(x).times(y);
150
176
  const xPlusY = Big(x).plus(y);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/calculation/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big, BigSource } from \"big.js\";\nimport BN from \"bn.js\";\nimport { InsufficientPoolLiquidityError } from \"../../exceptions\";\nimport { PoolInfo, Token } from \"../../tokens-info\";\nimport { SYSTEM_PRECISION } from \"./constants\";\n\nexport function getFeePercent(input: BigSource, output: BigSource): number {\n return Big(100).minus(Big(100).times(output).div(input)).toNumber();\n}\n\nexport function toSystemPrecision(amount: BigSource, decimals: number): Big {\n return convertAmountPrecision(amount, decimals, SYSTEM_PRECISION).round(0, Big.roundDown);\n}\n\nexport function fromSystemPrecision(amount: BigSource, decimals: number): Big {\n return convertAmountPrecision(amount, SYSTEM_PRECISION, decimals);\n}\n\nexport function convertAmountPrecision(amount: BigSource, decimalsFrom: number, decimalsTo: number): Big {\n const dif = Big(decimalsTo).minus(decimalsFrom).toNumber();\n return Big(amount).times(toPowBase10(dif));\n}\n\nexport function toPowBase10(decimals: number): Big {\n return Big(10).pow(decimals);\n}\n\nexport function convertFloatAmountToInt(amountFloat: BigSource, decimals: number): Big {\n return Big(amountFloat).times(toPowBase10(decimals));\n}\n\nexport function convertIntAmountToFloat(amountInt: BigSource, decimals: number): Big {\n const amountValue = Big(amountInt);\n if (amountValue.eq(0)) {\n return Big(0);\n }\n return Big(amountValue).div(toPowBase10(decimals));\n}\n\nexport function calculatePoolInfoImbalance(poolInfo: Pick<PoolInfo, \"tokenBalance\" | \"vUsdBalance\">): string {\n return convertIntAmountToFloat(Big(poolInfo.tokenBalance).minus(poolInfo.vUsdBalance).toFixed(), SYSTEM_PRECISION)\n .div(2)\n .toFixed();\n}\n\nexport function swapToVUsd(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"p\" | \"imbalance\">\n): string {\n const amountValue = Big(amount);\n if (amountValue.lte(0)) {\n return \"0\";\n }\n const fee = amountValue.times(feeShare);\n const amountWithoutFee = amountValue.minus(fee);\n const inSystemPrecision = toSystemPrecision(amountWithoutFee, decimals);\n const tokenBalance = Big(poolInfo.tokenBalance).plus(inSystemPrecision);\n const vUsdNewAmount = getY(tokenBalance, poolInfo.aValue, poolInfo.dValue);\n return Big(poolInfo.vUsdBalance).minus(vUsdNewAmount).round(0, Big.roundDown).toFixed();\n}\n\nexport function swapFromVUsd(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Pick<PoolInfo, \"vUsdBalance\" | \"aValue\" | \"dValue\" | \"tokenBalance\">\n): string {\n const amountValue = Big(amount);\n if (amountValue.lte(0)) {\n return Big(0).toFixed();\n }\n const vUsdBalance = amountValue.plus(poolInfo.vUsdBalance);\n const newAmount = getY(vUsdBalance, poolInfo.aValue, poolInfo.dValue);\n const result = fromSystemPrecision(Big(poolInfo.tokenBalance).minus(newAmount), decimals);\n const fee = Big(result).times(feeShare);\n return Big(result).minus(fee).round(0, Big.roundDown).toFixed();\n}\n\nexport function getSwapFromVUsdPoolInfo(\n vUsdAmount: BigSource,\n poolInfo: Omit<PoolInfo, \"imbalance\">\n): Pick<PoolInfo, \"vUsdBalance\" | \"aValue\" | \"dValue\" | \"tokenBalance\"> {\n const amountValue = Big(vUsdAmount);\n if (amountValue.lte(0)) {\n return poolInfo;\n }\n const vUsdBalance = amountValue.plus(poolInfo.vUsdBalance);\n const newAmount = getY(vUsdBalance, poolInfo.aValue, poolInfo.dValue);\n return {\n aValue: poolInfo.aValue,\n dValue: poolInfo.dValue,\n tokenBalance: newAmount.toFixed(0),\n vUsdBalance: vUsdBalance.toFixed(0),\n };\n}\n\n/**\n * @param amount - vUsd amount should be received\n * @param feeShare\n * @param decimals\n * @param poolInfo\n */\nexport function swapToVUsdReverse(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"imbalance\">\n): Big {\n if (Big(amount).lte(0)) {\n return Big(0);\n }\n const vUsdNewAmount = Big(poolInfo.vUsdBalance).minus(amount);\n if (vUsdNewAmount.lte(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n const tokenBalance = getY(vUsdNewAmount, poolInfo.aValue, poolInfo.dValue);\n const inSystemPrecision = Big(tokenBalance).minus(poolInfo.tokenBalance);\n const amountWithoutFee = fromSystemPrecision(inSystemPrecision, decimals);\n const reversedFeeShare = Big(feeShare).div(Big(1).minus(feeShare));\n const fee = Big(amountWithoutFee).times(reversedFeeShare).round(0, Big.roundUp);\n return Big(amountWithoutFee).plus(fee).round(0, Big.roundDown);\n}\n\n/**\n * @param amount - amount should be received\n * @param feeShare\n * @param decimals\n * @param poolInfo\n */\nexport function swapFromVUsdReverse(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"imbalance\">\n): Big {\n if (Big(amount).lte(0)) {\n return Big(0);\n }\n const reversedFeeShare = Big(feeShare).div(Big(1).minus(feeShare));\n const fee = Big(amount).times(reversedFeeShare).round(0, Big.roundUp);\n const amountWithFee = Big(amount).plus(fee);\n const inSystemPrecision = toSystemPrecision(amountWithFee, decimals);\n const tokenBalance = Big(poolInfo.tokenBalance).minus(inSystemPrecision);\n if (tokenBalance.lte(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n const vUsdNewAmount = getY(tokenBalance, poolInfo.aValue, poolInfo.dValue);\n return Big(vUsdNewAmount).minus(poolInfo.vUsdBalance).round(0, Big.roundDown);\n}\n\n// y = (sqrt(x(4ad³ + x (4a(d - x) - d )²)) + x (4a(d - x) - d ))/8ax\n// commonPart = 4a(d - x) - d\n// sqrt = sqrt(x * (4ad³ + x * commonPart²)\n// y = (sqrt + x * commonPart) / divider\nexport function getY(x: BigSource, a: BigSource, d: BigSource): Big {\n const commonPartBig = Big(4).times(a).times(Big(d).minus(x)).minus(d);\n const dCubed = Big(d).pow(3);\n const commonPartSquared = commonPartBig.pow(2);\n const sqrtBig = Big(x)\n .times(Big(x).times(commonPartSquared).plus(Big(4).times(a).times(dCubed)))\n .sqrt()\n .round(0, Big.roundDown);\n const dividerBig = Big(8).times(a).times(x);\n const result = commonPartBig.times(x).plus(sqrtBig).div(dividerBig).round(0, Big.roundDown);\n if (result.eq(0)) {\n return Big(0);\n }\n return result.plus(1); // +1 to offset rounding errors\n}\n\nexport function getEarned(userLpAmount: string, userRewardDebt: string, accRewardPerShareP: string, p: number): string {\n const userLpAmountBN = new BN(userLpAmount);\n const accRewardPerSharePBN = new BN(accRewardPerShareP);\n const userRewardDebtBN = new BN(userRewardDebt);\n const rewards = userLpAmountBN.mul(accRewardPerSharePBN).shrn(p);\n return rewards.sub(userRewardDebtBN).toString();\n}\n\nexport function aprInPercents(apr: string): string {\n return Big(apr).gt(0) ? `${Number(Big(apr).times(100).toFixed(2)).toLocaleString()}%` : \"N/A\";\n}\n\n// a = 8Axy(x+y)\n// b = xy(16A - 4) / 3\n// c = sqrt(a² + b³)\n// D = cbrt(a + c) + cbrt(a - c)\nexport function getD(aValue: string, x: string, y: string): string {\n const xy = Big(x).times(y);\n const xPlusY = Big(x).plus(y);\n const a = Big(8).times(aValue).times(xy).times(xPlusY);\n const b = xy.times(Big(16).times(aValue).minus(4)).div(3);\n const aSquared = a.times(a);\n const bCubed = b.times(b).times(b);\n const a2b3 = aSquared.plus(bCubed);\n const c = Big(a2b3).sqrt();\n const cbrtAPlusC = Big(Math.cbrt(+a.plus(c).toFixed()));\n const cbrtAMinusC = Big(Math.cbrt(+a.minus(c).toFixed()));\n return cbrtAPlusC.plus(cbrtAMinusC).toFixed();\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/calculation/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big, BigSource } from \"big.js\";\nimport BN from \"bn.js\";\nimport { InsufficientPoolLiquidityError } from \"../../exceptions\";\nimport { PoolInfo, Token } from \"../../tokens-info\";\nimport { SYSTEM_PRECISION } from \"./constants\";\n\nexport function getFeePercent(input: BigSource, output: BigSource): number {\n return Big(100).minus(Big(100).times(output).div(input)).toNumber();\n}\n\nexport function toSystemPrecision(amount: BigSource, decimals: number): Big {\n return convertAmountPrecision(amount, decimals, SYSTEM_PRECISION).round(0, Big.roundDown);\n}\n\nexport function fromSystemPrecision(amount: BigSource, decimals: number): Big {\n return convertAmountPrecision(amount, SYSTEM_PRECISION, decimals);\n}\n\nexport function convertAmountPrecision(amount: BigSource, decimalsFrom: number, decimalsTo: number): Big {\n const dif = Big(decimalsTo).minus(decimalsFrom).toNumber();\n return Big(amount).times(toPowBase10(dif));\n}\n\nexport function toPowBase10(decimals: number): Big {\n return Big(10).pow(decimals);\n}\n\nexport function convertFloatAmountToInt(amountFloat: BigSource, decimals: number): Big {\n return Big(amountFloat).times(toPowBase10(decimals));\n}\n\nexport function convertIntAmountToFloat(amountInt: BigSource, decimals: number): Big {\n const amountValue = Big(amountInt);\n if (amountValue.eq(0)) {\n return Big(0);\n }\n return Big(amountValue).div(toPowBase10(decimals));\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function calculatePoolInfoImbalance(poolInfo: Pick<PoolInfo, \"tokenBalance\" | \"vUsdBalance\">): string {\n return convertIntAmountToFloat(Big(poolInfo.tokenBalance).minus(poolInfo.vUsdBalance).toFixed(), SYSTEM_PRECISION)\n .div(2)\n .toFixed();\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function swapToVUsd(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"p\" | \"imbalance\">\n): string {\n const amountValue = Big(amount);\n if (amountValue.lte(0)) {\n return \"0\";\n }\n const fee = amountValue.times(feeShare);\n const amountWithoutFee = amountValue.minus(fee);\n const inSystemPrecision = toSystemPrecision(amountWithoutFee, decimals);\n const tokenBalance = Big(poolInfo.tokenBalance).plus(inSystemPrecision);\n const vUsdNewAmount = getY(tokenBalance, poolInfo.aValue, poolInfo.dValue);\n return Big(poolInfo.vUsdBalance).minus(vUsdNewAmount).round(0, Big.roundDown).toFixed();\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function swapFromVUsd(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Pick<PoolInfo, \"vUsdBalance\" | \"aValue\" | \"dValue\" | \"tokenBalance\">\n): string {\n const amountValue = Big(amount);\n if (amountValue.lte(0)) {\n return Big(0).toFixed();\n }\n const vUsdBalance = amountValue.plus(poolInfo.vUsdBalance);\n const newAmount = getY(vUsdBalance, poolInfo.aValue, poolInfo.dValue);\n const result = fromSystemPrecision(Big(poolInfo.tokenBalance).minus(newAmount), decimals);\n const fee = Big(result).times(feeShare);\n return Big(result).minus(fee).round(0, Big.roundDown).toFixed();\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function getSwapFromVUsdPoolInfo(\n vUsdAmount: BigSource,\n poolInfo: Omit<PoolInfo, \"imbalance\">\n): Pick<PoolInfo, \"vUsdBalance\" | \"aValue\" | \"dValue\" | \"tokenBalance\"> {\n const amountValue = Big(vUsdAmount);\n if (amountValue.lte(0)) {\n return poolInfo;\n }\n const vUsdBalance = amountValue.plus(poolInfo.vUsdBalance);\n const newAmount = getY(vUsdBalance, poolInfo.aValue, poolInfo.dValue);\n return {\n aValue: poolInfo.aValue,\n dValue: poolInfo.dValue,\n tokenBalance: newAmount.toFixed(0),\n vUsdBalance: vUsdBalance.toFixed(0),\n };\n}\n\n/**\n * @deprecated Do not use.\n * @param amount - vUsd amount should be received\n * @param feeShare\n * @param decimals\n * @param poolInfo\n */\nexport function swapToVUsdReverse(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"imbalance\">\n): Big {\n if (Big(amount).lte(0)) {\n return Big(0);\n }\n const vUsdNewAmount = Big(poolInfo.vUsdBalance).minus(amount);\n if (vUsdNewAmount.lte(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n const tokenBalance = getY(vUsdNewAmount, poolInfo.aValue, poolInfo.dValue);\n const inSystemPrecision = Big(tokenBalance).minus(poolInfo.tokenBalance);\n const amountWithoutFee = fromSystemPrecision(inSystemPrecision, decimals);\n const reversedFeeShare = Big(feeShare).div(Big(1).minus(feeShare));\n const fee = Big(amountWithoutFee).times(reversedFeeShare).round(0, Big.roundUp);\n return Big(amountWithoutFee).plus(fee).round(0, Big.roundDown);\n}\n\n/**\n * @deprecated Do not use.\n * @param amount - amount should be received\n * @param feeShare\n * @param decimals\n * @param poolInfo\n */\nexport function swapFromVUsdReverse(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"imbalance\">\n): Big {\n if (Big(amount).lte(0)) {\n return Big(0);\n }\n const reversedFeeShare = Big(feeShare).div(Big(1).minus(feeShare));\n const fee = Big(amount).times(reversedFeeShare).round(0, Big.roundUp);\n const amountWithFee = Big(amount).plus(fee);\n const inSystemPrecision = toSystemPrecision(amountWithFee, decimals);\n const tokenBalance = Big(poolInfo.tokenBalance).minus(inSystemPrecision);\n if (tokenBalance.lte(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n const vUsdNewAmount = getY(tokenBalance, poolInfo.aValue, poolInfo.dValue);\n return Big(vUsdNewAmount).minus(poolInfo.vUsdBalance).round(0, Big.roundDown);\n}\n\n// y = (sqrt(x(4ad³ + x (4a(d - x) - d )²)) + x (4a(d - x) - d ))/8ax\n// commonPart = 4a(d - x) - d\n// sqrt = sqrt(x * (4ad³ + x * commonPart²)\n// y = (sqrt + x * commonPart) / divider\n/**\n * @deprecated Do not use.\n */\nexport function getY(x: BigSource, a: BigSource, d: BigSource): Big {\n const commonPartBig = Big(4).times(a).times(Big(d).minus(x)).minus(d);\n const dCubed = Big(d).pow(3);\n const commonPartSquared = commonPartBig.pow(2);\n const sqrtBig = Big(x)\n .times(Big(x).times(commonPartSquared).plus(Big(4).times(a).times(dCubed)))\n .sqrt()\n .round(0, Big.roundDown);\n const dividerBig = Big(8).times(a).times(x);\n const result = commonPartBig.times(x).plus(sqrtBig).div(dividerBig).round(0, Big.roundDown);\n if (result.eq(0)) {\n return Big(0);\n }\n return result.plus(1); // +1 to offset rounding errors\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function getEarned(userLpAmount: string, userRewardDebt: string, accRewardPerShareP: string, p: number): string {\n const userLpAmountBN = new BN(userLpAmount);\n const accRewardPerSharePBN = new BN(accRewardPerShareP);\n const userRewardDebtBN = new BN(userRewardDebt);\n const rewards = userLpAmountBN.mul(accRewardPerSharePBN).shrn(p);\n return rewards.sub(userRewardDebtBN).toString();\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function aprInPercents(apr: string): string {\n return Big(apr).gt(0) ? `${Number(Big(apr).times(100).toFixed(2)).toLocaleString()}%` : \"N/A\";\n}\n\n// a = 8Axy(x+y)\n// b = xy(16A - 4) / 3\n// c = sqrt(a² + b³)\n// D = cbrt(a + c) + cbrt(a - c)\n/**\n * @deprecated Do not use.\n */\nexport function getD(aValue: string, x: string, y: string): string {\n const xy = Big(x).times(y);\n const xPlusY = Big(x).plus(y);\n const a = Big(8).times(aValue).times(xy).times(xPlusY);\n const b = xy.times(Big(16).times(aValue).minus(4)).div(3);\n const aSquared = a.times(a);\n const bCubed = b.times(b).times(b);\n const a2b3 = aSquared.plus(bCubed);\n const c = Big(a2b3).sqrt();\n const cbrtAPlusC = Big(Math.cbrt(+a.plus(c).toFixed()));\n const cbrtAMinusC = Big(Math.cbrt(+a.minus(c).toFixed()));\n return cbrtAPlusC.plus(cbrtAMinusC).toFixed();\n}\n"]}
@@ -1,10 +1,19 @@
1
1
  import { PoolInfo, TokenWithChainDetails } from "../../tokens-info";
2
+ /**
3
+ * @deprecated Do not use.
4
+ */
2
5
  export interface SendAmountDetails {
3
6
  sourceLPSwap: AmountImpact;
4
7
  destLPSwap: AmountImpact;
5
8
  }
9
+ /**
10
+ * @deprecated Do not use.
11
+ */
6
12
  export interface AmountImpact {
7
13
  fee: string;
8
14
  swap: string;
9
15
  }
16
+ /**
17
+ * @deprecated Do not use.
18
+ */
10
19
  export declare function getSendAmountDetails(amountInTokenPrecision: string, sourceToken: TokenWithChainDetails, sourcePool: PoolInfo, destToken: TokenWithChainDetails, destPool: PoolInfo): SendAmountDetails;
@@ -1,5 +1,8 @@
1
1
  import { Big } from "big.js";
2
2
  import { convertIntAmountToFloat, fromSystemPrecision, swapFromVUsd, swapToVUsd } from "./index";
3
+ /**
4
+ * @deprecated Do not use.
5
+ */
3
6
  export function getSendAmountDetails(amountInTokenPrecision, sourceToken, sourcePool, destToken, destPool) {
4
7
  const vUsd = swapToVUsd(amountInTokenPrecision, sourceToken, sourcePool);
5
8
  const vUsdInTokenPrecision = fromSystemPrecision(vUsd, sourceToken.decimals);
@@ -1 +1 @@
1
- {"version":3,"file":"swap-and-bridge-details.js","sourceRoot":"","sources":["../../../../src/utils/calculation/swap-and-bridge-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAYjG,MAAM,UAAU,oBAAoB,CAClC,sBAA8B,EAC9B,WAAkC,EAClC,UAAoB,EACpB,SAAgC,EAChC,QAAkB;IAElB,MAAM,IAAI,GAAG,UAAU,CAAC,sBAAsB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACzE,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvF,OAAO;QACL,YAAY,EAAE;YACZ,GAAG,EAAE,uBAAuB,CAAC,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC;iBAC7D,GAAG,EAAE;iBACL,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;iBACxC,OAAO,EAAE;YACZ,IAAI,EAAE,uBAAuB,CAC3B,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAC3E,WAAW,CAAC,QAAQ,CACrB;iBACE,GAAG,EAAE;iBACL,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;iBACxC,OAAO,EAAE;SACb;QACD,UAAU,EAAE;YACV,GAAG,EAAE,uBAAuB,CAAC,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC;iBAC7D,GAAG,EAAE;iBACL,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;iBACtC,OAAO,EAAE;YACZ,IAAI,EAAE,uBAAuB,CAC3B,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EACjF,SAAS,CAAC,QAAQ,CACnB;iBACE,GAAG,EAAE;iBACL,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;iBACtC,OAAO,EAAE;SACb;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { Big } from \"big.js\";\nimport { PoolInfo, TokenWithChainDetails } from \"../../tokens-info\";\nimport { convertIntAmountToFloat, fromSystemPrecision, swapFromVUsd, swapToVUsd } from \"./index\";\n\nexport interface SendAmountDetails {\n sourceLPSwap: AmountImpact;\n destLPSwap: AmountImpact;\n}\n\nexport interface AmountImpact {\n fee: string;\n swap: string;\n}\n\nexport function getSendAmountDetails(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destToken: TokenWithChainDetails,\n destPool: PoolInfo\n): SendAmountDetails {\n const vUsd = swapToVUsd(amountInTokenPrecision, sourceToken, sourcePool);\n const vUsdInTokenPrecision = fromSystemPrecision(vUsd, sourceToken.decimals);\n const result = swapFromVUsd(vUsd, destToken, destPool);\n\n const swapToFeeInt = Big(amountInTokenPrecision).times(sourceToken.feeShare);\n const swapFromFeeInt = Big(result).div(Big(1).minus(destToken.feeShare)).minus(result);\n return {\n sourceLPSwap: {\n fee: convertIntAmountToFloat(swapToFeeInt, sourceToken.decimals)\n .neg()\n .round(sourceToken.decimals, Big.roundUp)\n .toFixed(),\n swap: convertIntAmountToFloat(\n Big(amountInTokenPrecision).minus(vUsdInTokenPrecision).minus(swapToFeeInt),\n sourceToken.decimals\n )\n .neg()\n .round(sourceToken.decimals, Big.roundUp)\n .toFixed(),\n },\n destLPSwap: {\n fee: convertIntAmountToFloat(swapFromFeeInt, destToken.decimals)\n .neg()\n .round(destToken.decimals, Big.roundUp)\n .toFixed(),\n swap: convertIntAmountToFloat(\n fromSystemPrecision(vUsd, destToken.decimals).minus(result).minus(swapFromFeeInt),\n destToken.decimals\n )\n .neg()\n .round(destToken.decimals, Big.roundUp)\n .toFixed(),\n },\n };\n}\n"]}
1
+ {"version":3,"file":"swap-and-bridge-details.js","sourceRoot":"","sources":["../../../../src/utils/calculation/swap-and-bridge-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAkBjG;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,sBAA8B,EAC9B,WAAkC,EAClC,UAAoB,EACpB,SAAgC,EAChC,QAAkB;IAElB,MAAM,IAAI,GAAG,UAAU,CAAC,sBAAsB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACzE,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvF,OAAO;QACL,YAAY,EAAE;YACZ,GAAG,EAAE,uBAAuB,CAAC,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC;iBAC7D,GAAG,EAAE;iBACL,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;iBACxC,OAAO,EAAE;YACZ,IAAI,EAAE,uBAAuB,CAC3B,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAC3E,WAAW,CAAC,QAAQ,CACrB;iBACE,GAAG,EAAE;iBACL,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;iBACxC,OAAO,EAAE;SACb;QACD,UAAU,EAAE;YACV,GAAG,EAAE,uBAAuB,CAAC,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC;iBAC7D,GAAG,EAAE;iBACL,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;iBACtC,OAAO,EAAE;YACZ,IAAI,EAAE,uBAAuB,CAC3B,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EACjF,SAAS,CAAC,QAAQ,CACnB;iBACE,GAAG,EAAE;iBACL,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;iBACtC,OAAO,EAAE;SACb;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { Big } from \"big.js\";\nimport { PoolInfo, TokenWithChainDetails } from \"../../tokens-info\";\nimport { convertIntAmountToFloat, fromSystemPrecision, swapFromVUsd, swapToVUsd } from \"./index\";\n\n/**\n * @deprecated Do not use.\n */\nexport interface SendAmountDetails {\n sourceLPSwap: AmountImpact;\n destLPSwap: AmountImpact;\n}\n\n/**\n * @deprecated Do not use.\n */\nexport interface AmountImpact {\n fee: string;\n swap: string;\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function getSendAmountDetails(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destToken: TokenWithChainDetails,\n destPool: PoolInfo\n): SendAmountDetails {\n const vUsd = swapToVUsd(amountInTokenPrecision, sourceToken, sourcePool);\n const vUsdInTokenPrecision = fromSystemPrecision(vUsd, sourceToken.decimals);\n const result = swapFromVUsd(vUsd, destToken, destPool);\n\n const swapToFeeInt = Big(amountInTokenPrecision).times(sourceToken.feeShare);\n const swapFromFeeInt = Big(result).div(Big(1).minus(destToken.feeShare)).minus(result);\n return {\n sourceLPSwap: {\n fee: convertIntAmountToFloat(swapToFeeInt, sourceToken.decimals)\n .neg()\n .round(sourceToken.decimals, Big.roundUp)\n .toFixed(),\n swap: convertIntAmountToFloat(\n Big(amountInTokenPrecision).minus(vUsdInTokenPrecision).minus(swapToFeeInt),\n sourceToken.decimals\n )\n .neg()\n .round(sourceToken.decimals, Big.roundUp)\n .toFixed(),\n },\n destLPSwap: {\n fee: convertIntAmountToFloat(swapFromFeeInt, destToken.decimals)\n .neg()\n .round(destToken.decimals, Big.roundUp)\n .toFixed(),\n swap: convertIntAmountToFloat(\n fromSystemPrecision(vUsd, destToken.decimals).minus(result).minus(swapFromFeeInt),\n destToken.decimals\n )\n .neg()\n .round(destToken.decimals, Big.roundUp)\n .toFixed(),\n },\n };\n}\n"]}
@@ -1,22 +1,40 @@
1
1
  import { PoolInfo } from "../../tokens-info";
2
+ /**
3
+ * @deprecated Do not use.
4
+ */
2
5
  export interface SwapPoolInfo {
3
6
  decimals: number;
4
7
  feeShare: string;
5
8
  poolInfo: PoolInfo;
6
9
  }
10
+ /**
11
+ * @deprecated Do not use.
12
+ */
7
13
  export interface SwapAndBridgeCalculationData {
8
14
  swapToVUsdCalcResult: SwapToVUsdCalcResult;
9
15
  swapFromVUsdCalcResult: SwapFromVUsdCalcResult;
10
16
  }
17
+ /**
18
+ * @deprecated Do not use.
19
+ */
11
20
  export interface SwapToVUsdCalcResult {
12
21
  bridgeFeeInTokenPrecision: string;
13
22
  amountIncludingCommissionInSystemPrecision: string;
14
23
  amountExcludingCommissionInSystemPrecision: string;
15
24
  }
25
+ /**
26
+ * @deprecated Do not use.
27
+ */
16
28
  export interface SwapFromVUsdCalcResult {
17
29
  bridgeFeeInTokenPrecision: string;
18
30
  amountIncludingCommissionInTokenPrecision: string;
19
31
  amountExcludingCommissionInTokenPrecision: string;
20
32
  }
33
+ /**
34
+ * @deprecated Do not use.
35
+ */
21
36
  export declare function swapAndBridgeFeeCalculation(amountInTokenPrecision: string, sourcePoolInfo: SwapPoolInfo, destinationPoolInfo: SwapPoolInfo): SwapAndBridgeCalculationData;
37
+ /**
38
+ * @deprecated Do not use.
39
+ */
22
40
  export declare function swapAndBridgeFeeCalculationReverse(amountInTokenPrecision: string, sourcePoolInfo: SwapPoolInfo, destinationPoolInfo: SwapPoolInfo): SwapAndBridgeCalculationData;
@@ -1,10 +1,16 @@
1
1
  import { Big } from "big.js";
2
2
  import { fromSystemPrecision, getY, toSystemPrecision } from "./index";
3
+ /**
4
+ * @deprecated Do not use.
5
+ */
3
6
  export function swapAndBridgeFeeCalculation(amountInTokenPrecision, sourcePoolInfo, destinationPoolInfo) {
4
7
  const swapToVUsdCalcResult = swapToVUsd(amountInTokenPrecision, { decimals: sourcePoolInfo.decimals, feeShare: sourcePoolInfo.feeShare }, sourcePoolInfo.poolInfo);
5
8
  const swapFromVUsdCalcResult = swapFromVUsd(swapToVUsdCalcResult.amountIncludingCommissionInSystemPrecision, { decimals: destinationPoolInfo.decimals, feeShare: destinationPoolInfo.feeShare }, destinationPoolInfo.poolInfo);
6
9
  return { swapToVUsdCalcResult, swapFromVUsdCalcResult };
7
10
  }
11
+ /**
12
+ * @deprecated Do not use.
13
+ */
8
14
  export function swapAndBridgeFeeCalculationReverse(amountInTokenPrecision, sourcePoolInfo, destinationPoolInfo) {
9
15
  const swapToVUsdCalcResult = swapToVUsdReverse(amountInTokenPrecision, { decimals: destinationPoolInfo.decimals, feeShare: destinationPoolInfo.feeShare }, destinationPoolInfo.poolInfo);
10
16
  const swapFromVUsdCalcResult = swapFromVUsdReverse(swapToVUsdCalcResult.amountIncludingCommissionInSystemPrecision, { decimals: sourcePoolInfo.decimals, feeShare: sourcePoolInfo.feeShare }, sourcePoolInfo.poolInfo);
@@ -1 +1 @@
1
- {"version":3,"file":"swap-and-bridge-fee-calc.js","sourceRoot":"","sources":["../../../../src/utils/calculation/swap-and-bridge-fee-calc.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big, BigSource } from \"big.js\";\nimport { PoolInfo, Token } from \"../../tokens-info\";\nimport { fromSystemPrecision, getY, toSystemPrecision } from \"./index\";\n\nexport interface SwapPoolInfo {\n decimals: number;\n feeShare: string;\n poolInfo: PoolInfo;\n}\n\nexport interface SwapAndBridgeCalculationData {\n swapToVUsdCalcResult: SwapToVUsdCalcResult;\n swapFromVUsdCalcResult: SwapFromVUsdCalcResult;\n}\n\nexport interface SwapToVUsdCalcResult {\n bridgeFeeInTokenPrecision: string;\n amountIncludingCommissionInSystemPrecision: string;\n amountExcludingCommissionInSystemPrecision: string;\n}\nexport interface SwapFromVUsdCalcResult {\n bridgeFeeInTokenPrecision: string;\n amountIncludingCommissionInTokenPrecision: string;\n amountExcludingCommissionInTokenPrecision: string;\n}\n\nexport function swapAndBridgeFeeCalculation(\n amountInTokenPrecision: string,\n sourcePoolInfo: SwapPoolInfo,\n destinationPoolInfo: SwapPoolInfo\n): SwapAndBridgeCalculationData {\n const swapToVUsdCalcResult = swapToVUsd(\n amountInTokenPrecision,\n { decimals: sourcePoolInfo.decimals, feeShare: sourcePoolInfo.feeShare },\n sourcePoolInfo.poolInfo\n );\n const swapFromVUsdCalcResult = swapFromVUsd(\n swapToVUsdCalcResult.amountIncludingCommissionInSystemPrecision,\n { decimals: destinationPoolInfo.decimals, feeShare: destinationPoolInfo.feeShare },\n destinationPoolInfo.poolInfo\n );\n return { swapToVUsdCalcResult, swapFromVUsdCalcResult };\n}\n\nexport function swapAndBridgeFeeCalculationReverse(\n amountInTokenPrecision: string,\n sourcePoolInfo: SwapPoolInfo,\n destinationPoolInfo: SwapPoolInfo\n): SwapAndBridgeCalculationData {\n const swapToVUsdCalcResult = swapToVUsdReverse(\n amountInTokenPrecision,\n { decimals: destinationPoolInfo.decimals, feeShare: destinationPoolInfo.feeShare },\n destinationPoolInfo.poolInfo\n );\n const swapFromVUsdCalcResult = swapFromVUsdReverse(\n swapToVUsdCalcResult.amountIncludingCommissionInSystemPrecision,\n { decimals: sourcePoolInfo.decimals, feeShare: sourcePoolInfo.feeShare },\n sourcePoolInfo.poolInfo\n );\n return {\n swapToVUsdCalcResult,\n swapFromVUsdCalcResult,\n };\n}\n\nfunction swapToVUsd(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"p\" | \"imbalance\">\n): SwapToVUsdCalcResult {\n const amountValue = Big(amount);\n const fee = amountValue.times(feeShare);\n const amountWithoutFee = amountValue.minus(fee);\n return {\n bridgeFeeInTokenPrecision: fee.round().toFixed(),\n amountIncludingCommissionInSystemPrecision: calcSwapToVUsd(toSystemPrecision(amountWithoutFee, decimals), poolInfo),\n amountExcludingCommissionInSystemPrecision: calcSwapToVUsd(toSystemPrecision(amountValue, decimals), poolInfo),\n };\n}\n\nfunction calcSwapToVUsd(amountInSystemPrecision: Big, poolInfo: Omit<PoolInfo, \"p\" | \"imbalance\">): string {\n if (amountInSystemPrecision.eq(0)) {\n return \"0\";\n }\n const tokenBalance = Big(poolInfo.tokenBalance).plus(amountInSystemPrecision);\n const vUsdNewAmount = getY(tokenBalance.toFixed(), poolInfo.aValue, poolInfo.dValue);\n return Big(poolInfo.vUsdBalance).minus(vUsdNewAmount).round().toFixed();\n}\n\nfunction swapFromVUsd(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"imbalance\">\n): SwapFromVUsdCalcResult {\n if (Big(amount).eq(0)) {\n return {\n bridgeFeeInTokenPrecision: \"0\",\n amountIncludingCommissionInTokenPrecision: \"0\",\n amountExcludingCommissionInTokenPrecision: \"0\",\n };\n }\n const amountValue = Big(amount);\n const vUsdBalance = amountValue.plus(poolInfo.vUsdBalance);\n const newAmount = getY(vUsdBalance, poolInfo.aValue, poolInfo.dValue);\n const result = fromSystemPrecision(Big(poolInfo.tokenBalance).minus(newAmount), decimals);\n const fee = Big(result).times(feeShare);\n const resultWithoutFee = Big(result).minus(fee).round();\n return {\n bridgeFeeInTokenPrecision: fee.round().toFixed(),\n amountIncludingCommissionInTokenPrecision: resultWithoutFee.toFixed(),\n amountExcludingCommissionInTokenPrecision: result.toFixed(),\n };\n}\n\nfunction swapToVUsdReverse(\n amountInTokenPrecision: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: PoolInfo\n): SwapToVUsdCalcResult {\n const reversedFeeShare = Big(feeShare).div(Big(1).minus(feeShare));\n const fee = Big(amountInTokenPrecision).times(reversedFeeShare);\n const amountWithFee = Big(amountInTokenPrecision).plus(fee);\n return {\n bridgeFeeInTokenPrecision: fee.round().toFixed(),\n amountIncludingCommissionInSystemPrecision: calcSwapToVUsdReverse(\n toSystemPrecision(amountWithFee, decimals),\n poolInfo\n ),\n amountExcludingCommissionInSystemPrecision: calcSwapToVUsdReverse(\n toSystemPrecision(amountInTokenPrecision, decimals),\n poolInfo\n ),\n };\n}\n\nfunction calcSwapToVUsdReverse(amountInSystemPrecision: Big, poolInfo: PoolInfo): string {\n const tokenBalance = Big(poolInfo.tokenBalance).minus(amountInSystemPrecision);\n const vUsdNewAmount = getY(tokenBalance.toFixed(), poolInfo.aValue, poolInfo.dValue);\n return Big(vUsdNewAmount).minus(poolInfo.vUsdBalance).round().toFixed();\n}\n\nfunction swapFromVUsdReverse(\n amountInSystemPrecision: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: PoolInfo\n): SwapFromVUsdCalcResult {\n if (Big(amountInSystemPrecision).eq(0)) {\n return {\n bridgeFeeInTokenPrecision: \"0\",\n amountIncludingCommissionInTokenPrecision: \"0\",\n amountExcludingCommissionInTokenPrecision: \"0\",\n };\n }\n const vUsdNewAmount = Big(poolInfo.vUsdBalance).minus(amountInSystemPrecision);\n const tokenBalance = getY(vUsdNewAmount.toFixed(), poolInfo.aValue, poolInfo.dValue);\n const inSystemPrecision = Big(tokenBalance).minus(poolInfo.tokenBalance);\n const amountWithoutFee = fromSystemPrecision(inSystemPrecision.toFixed(), decimals);\n const reversedFeeShare = Big(feeShare).div(Big(1).minus(feeShare));\n const fee = Big(amountWithoutFee).times(reversedFeeShare);\n const amount = Big(amountWithoutFee).plus(fee);\n return {\n bridgeFeeInTokenPrecision: fee.round().toFixed(),\n amountIncludingCommissionInTokenPrecision: amount.round().toFixed(),\n amountExcludingCommissionInTokenPrecision: amountWithoutFee.toFixed(),\n };\n}\n"]}
1
+ {"version":3,"file":"swap-and-bridge-fee-calc.js","sourceRoot":"","sources":["../../../../src/utils/calculation/swap-and-bridge-fee-calc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAoCvE;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,sBAA8B,EAC9B,cAA4B,EAC5B,mBAAiC;IAEjC,MAAM,oBAAoB,GAAG,UAAU,CACrC,sBAAsB,EACtB,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,EACxE,cAAc,CAAC,QAAQ,CACxB,CAAC;IACF,MAAM,sBAAsB,GAAG,YAAY,CACzC,oBAAoB,CAAC,0CAA0C,EAC/D,EAAE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,EAClF,mBAAmB,CAAC,QAAQ,CAC7B,CAAC;IACF,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC,CAChD,sBAA8B,EAC9B,cAA4B,EAC5B,mBAAiC;IAEjC,MAAM,oBAAoB,GAAG,iBAAiB,CAC5C,sBAAsB,EACtB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,EAClF,mBAAmB,CAAC,QAAQ,CAC7B,CAAC;IACF,MAAM,sBAAsB,GAAG,mBAAmB,CAChD,oBAAoB,CAAC,0CAA0C,EAC/D,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,EACxE,cAAc,CAAC,QAAQ,CACxB,CAAC;IACF,OAAO;QACL,oBAAoB;QACpB,sBAAsB;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,MAAiB,EACjB,EAAE,QAAQ,EAAE,QAAQ,EAAwC,EAC5D,QAA2C;IAE3C,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO;QACL,yBAAyB,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;QAChD,0CAA0C,EAAE,cAAc,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACnH,0CAA0C,EAAE,cAAc,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;KAC/G,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,uBAA4B,EAAE,QAA2C;IAC/F,IAAI,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrF,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CACnB,MAAiB,EACjB,EAAE,QAAQ,EAAE,QAAQ,EAAwC,EAC5D,QAAqC;IAErC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,yBAAyB,EAAE,GAAG;YAC9B,yCAAyC,EAAE,GAAG;YAC9C,yCAAyC,EAAE,GAAG;SAC/C,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1F,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,OAAO;QACL,yBAAyB,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;QAChD,yCAAyC,EAAE,gBAAgB,CAAC,OAAO,EAAE;QACrE,yCAAyC,EAAE,MAAM,CAAC,OAAO,EAAE;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,sBAAiC,EACjC,EAAE,QAAQ,EAAE,QAAQ,EAAwC,EAC5D,QAAkB;IAElB,MAAM,gBAAgB,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO;QACL,yBAAyB,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;QAChD,0CAA0C,EAAE,qBAAqB,CAC/D,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,EAC1C,QAAQ,CACT;QACD,0CAA0C,EAAE,qBAAqB,CAC/D,iBAAiB,CAAC,sBAAsB,EAAE,QAAQ,CAAC,EACnD,QAAQ,CACT;KACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,uBAA4B,EAAE,QAAkB;IAC7E,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrF,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,mBAAmB,CAC1B,uBAAkC,EAClC,EAAE,QAAQ,EAAE,QAAQ,EAAwC,EAC5D,QAAkB;IAElB,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO;YACL,yBAAyB,EAAE,GAAG;YAC9B,yCAAyC,EAAE,GAAG;YAC9C,yCAAyC,EAAE,GAAG;SAC/C,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,iBAAiB,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IACpF,MAAM,gBAAgB,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO;QACL,yBAAyB,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;QAChD,yCAAyC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;QACnE,yCAAyC,EAAE,gBAAgB,CAAC,OAAO,EAAE;KACtE,CAAC;AACJ,CAAC","sourcesContent":["import { Big, BigSource } from \"big.js\";\nimport { PoolInfo, Token } from \"../../tokens-info\";\nimport { fromSystemPrecision, getY, toSystemPrecision } from \"./index\";\n\n/**\n * @deprecated Do not use.\n */\nexport interface SwapPoolInfo {\n decimals: number;\n feeShare: string;\n poolInfo: PoolInfo;\n}\n\n/**\n * @deprecated Do not use.\n */\nexport interface SwapAndBridgeCalculationData {\n swapToVUsdCalcResult: SwapToVUsdCalcResult;\n swapFromVUsdCalcResult: SwapFromVUsdCalcResult;\n}\n\n/**\n * @deprecated Do not use.\n */\nexport interface SwapToVUsdCalcResult {\n bridgeFeeInTokenPrecision: string;\n amountIncludingCommissionInSystemPrecision: string;\n amountExcludingCommissionInSystemPrecision: string;\n}\n/**\n * @deprecated Do not use.\n */\nexport interface SwapFromVUsdCalcResult {\n bridgeFeeInTokenPrecision: string;\n amountIncludingCommissionInTokenPrecision: string;\n amountExcludingCommissionInTokenPrecision: string;\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function swapAndBridgeFeeCalculation(\n amountInTokenPrecision: string,\n sourcePoolInfo: SwapPoolInfo,\n destinationPoolInfo: SwapPoolInfo\n): SwapAndBridgeCalculationData {\n const swapToVUsdCalcResult = swapToVUsd(\n amountInTokenPrecision,\n { decimals: sourcePoolInfo.decimals, feeShare: sourcePoolInfo.feeShare },\n sourcePoolInfo.poolInfo\n );\n const swapFromVUsdCalcResult = swapFromVUsd(\n swapToVUsdCalcResult.amountIncludingCommissionInSystemPrecision,\n { decimals: destinationPoolInfo.decimals, feeShare: destinationPoolInfo.feeShare },\n destinationPoolInfo.poolInfo\n );\n return { swapToVUsdCalcResult, swapFromVUsdCalcResult };\n}\n\n/**\n * @deprecated Do not use.\n */\nexport function swapAndBridgeFeeCalculationReverse(\n amountInTokenPrecision: string,\n sourcePoolInfo: SwapPoolInfo,\n destinationPoolInfo: SwapPoolInfo\n): SwapAndBridgeCalculationData {\n const swapToVUsdCalcResult = swapToVUsdReverse(\n amountInTokenPrecision,\n { decimals: destinationPoolInfo.decimals, feeShare: destinationPoolInfo.feeShare },\n destinationPoolInfo.poolInfo\n );\n const swapFromVUsdCalcResult = swapFromVUsdReverse(\n swapToVUsdCalcResult.amountIncludingCommissionInSystemPrecision,\n { decimals: sourcePoolInfo.decimals, feeShare: sourcePoolInfo.feeShare },\n sourcePoolInfo.poolInfo\n );\n return {\n swapToVUsdCalcResult,\n swapFromVUsdCalcResult,\n };\n}\n\nfunction swapToVUsd(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"p\" | \"imbalance\">\n): SwapToVUsdCalcResult {\n const amountValue = Big(amount);\n const fee = amountValue.times(feeShare);\n const amountWithoutFee = amountValue.minus(fee);\n return {\n bridgeFeeInTokenPrecision: fee.round().toFixed(),\n amountIncludingCommissionInSystemPrecision: calcSwapToVUsd(toSystemPrecision(amountWithoutFee, decimals), poolInfo),\n amountExcludingCommissionInSystemPrecision: calcSwapToVUsd(toSystemPrecision(amountValue, decimals), poolInfo),\n };\n}\n\nfunction calcSwapToVUsd(amountInSystemPrecision: Big, poolInfo: Omit<PoolInfo, \"p\" | \"imbalance\">): string {\n if (amountInSystemPrecision.eq(0)) {\n return \"0\";\n }\n const tokenBalance = Big(poolInfo.tokenBalance).plus(amountInSystemPrecision);\n const vUsdNewAmount = getY(tokenBalance.toFixed(), poolInfo.aValue, poolInfo.dValue);\n return Big(poolInfo.vUsdBalance).minus(vUsdNewAmount).round().toFixed();\n}\n\nfunction swapFromVUsd(\n amount: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: Omit<PoolInfo, \"imbalance\">\n): SwapFromVUsdCalcResult {\n if (Big(amount).eq(0)) {\n return {\n bridgeFeeInTokenPrecision: \"0\",\n amountIncludingCommissionInTokenPrecision: \"0\",\n amountExcludingCommissionInTokenPrecision: \"0\",\n };\n }\n const amountValue = Big(amount);\n const vUsdBalance = amountValue.plus(poolInfo.vUsdBalance);\n const newAmount = getY(vUsdBalance, poolInfo.aValue, poolInfo.dValue);\n const result = fromSystemPrecision(Big(poolInfo.tokenBalance).minus(newAmount), decimals);\n const fee = Big(result).times(feeShare);\n const resultWithoutFee = Big(result).minus(fee).round();\n return {\n bridgeFeeInTokenPrecision: fee.round().toFixed(),\n amountIncludingCommissionInTokenPrecision: resultWithoutFee.toFixed(),\n amountExcludingCommissionInTokenPrecision: result.toFixed(),\n };\n}\n\nfunction swapToVUsdReverse(\n amountInTokenPrecision: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: PoolInfo\n): SwapToVUsdCalcResult {\n const reversedFeeShare = Big(feeShare).div(Big(1).minus(feeShare));\n const fee = Big(amountInTokenPrecision).times(reversedFeeShare);\n const amountWithFee = Big(amountInTokenPrecision).plus(fee);\n return {\n bridgeFeeInTokenPrecision: fee.round().toFixed(),\n amountIncludingCommissionInSystemPrecision: calcSwapToVUsdReverse(\n toSystemPrecision(amountWithFee, decimals),\n poolInfo\n ),\n amountExcludingCommissionInSystemPrecision: calcSwapToVUsdReverse(\n toSystemPrecision(amountInTokenPrecision, decimals),\n poolInfo\n ),\n };\n}\n\nfunction calcSwapToVUsdReverse(amountInSystemPrecision: Big, poolInfo: PoolInfo): string {\n const tokenBalance = Big(poolInfo.tokenBalance).minus(amountInSystemPrecision);\n const vUsdNewAmount = getY(tokenBalance.toFixed(), poolInfo.aValue, poolInfo.dValue);\n return Big(vUsdNewAmount).minus(poolInfo.vUsdBalance).round().toFixed();\n}\n\nfunction swapFromVUsdReverse(\n amountInSystemPrecision: BigSource,\n { feeShare, decimals }: Pick<Token, \"feeShare\" | \"decimals\">,\n poolInfo: PoolInfo\n): SwapFromVUsdCalcResult {\n if (Big(amountInSystemPrecision).eq(0)) {\n return {\n bridgeFeeInTokenPrecision: \"0\",\n amountIncludingCommissionInTokenPrecision: \"0\",\n amountExcludingCommissionInTokenPrecision: \"0\",\n };\n }\n const vUsdNewAmount = Big(poolInfo.vUsdBalance).minus(amountInSystemPrecision);\n const tokenBalance = getY(vUsdNewAmount.toFixed(), poolInfo.aValue, poolInfo.dValue);\n const inSystemPrecision = Big(tokenBalance).minus(poolInfo.tokenBalance);\n const amountWithoutFee = fromSystemPrecision(inSystemPrecision.toFixed(), decimals);\n const reversedFeeShare = Big(feeShare).div(Big(1).minus(feeShare));\n const fee = Big(amountWithoutFee).times(reversedFeeShare);\n const amount = Big(amountWithoutFee).plus(fee);\n return {\n bridgeFeeInTokenPrecision: fee.round().toFixed(),\n amountIncludingCommissionInTokenPrecision: amount.round().toFixed(),\n amountExcludingCommissionInTokenPrecision: amountWithoutFee.toFixed(),\n };\n}\n"]}
@@ -2,6 +2,9 @@ import { BigSource } from "big.js";
2
2
  import { AllbridgeCoreClientPoolsExt } from "../client/core-api/core-client-pool-info-caching";
3
3
  import { PoolInfo, TokenWithChainDetails } from "../tokens-info";
4
4
  export declare function assertNever(x: never, message?: string): never;
5
+ /**
6
+ * @deprecated Do not use.
7
+ */
5
8
  export declare function getPoolInfoByToken(api: AllbridgeCoreClientPoolsExt, sourceChainToken: TokenWithChainDetails): Promise<PoolInfo>;
6
9
  export declare function validateAmountGtZero(amount: BigSource): void;
7
10
  export declare function validateAmountGteZero(amount: BigSource): void;
@@ -4,6 +4,9 @@ export function assertNever(x, message) {
4
4
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
5
5
  throw new Error(message ?? `Unexpected value: ${x}`);
6
6
  }
7
+ /**
8
+ * @deprecated Do not use.
9
+ */
7
10
  export async function getPoolInfoByToken(api, sourceChainToken) {
8
11
  return await api.getPoolInfoByKey({
9
12
  chainSymbol: sourceChainToken.chainSymbol,
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big, BigSource } from \"big.js\";\nimport { AllbridgeCoreClientPoolsExt } from \"../client/core-api/core-client-pool-info-caching\";\nimport { ArgumentInvalidDecimalsError, InvalidAmountError, TimeoutError } from \"../exceptions\";\nimport { PoolInfo, TokenWithChainDetails } from \"../tokens-info\";\n\nexport function assertNever(x: never, message?: string): never {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(message ?? `Unexpected value: ${x}`);\n}\n\nexport async function getPoolInfoByToken(\n api: AllbridgeCoreClientPoolsExt,\n sourceChainToken: TokenWithChainDetails\n): Promise<PoolInfo> {\n return await api.getPoolInfoByKey({\n chainSymbol: sourceChainToken.chainSymbol,\n poolAddress: sourceChainToken.poolAddress,\n });\n}\n\nexport function validateAmountGtZero(amount: BigSource) {\n if (Big(amount).lte(0)) {\n throw new InvalidAmountError(\"Amount must be greater than zero\");\n }\n}\n\nexport function validateAmountGteZero(amount: BigSource) {\n if (Big(amount).lt(0)) {\n throw new InvalidAmountError(\"Amount must be greater or equal than zero\");\n }\n}\n\nexport function validateAmountDecimals(argName: string, amountFloat: BigSource, decimalRequired: number) {\n const amount = Big(amountFloat).toFixed();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [integerPart, fractionalPart] = amount.split(\".\");\n\n if (fractionalPart && fractionalPart.length > decimalRequired) {\n throw new ArgumentInvalidDecimalsError(argName, fractionalPart.length, decimalRequired);\n }\n}\n\nexport async function promiseWithTimeout<T>(promise: Promise<T>, msg: string, timeoutMs: number): Promise<T> {\n return (await Promise.race([\n promise,\n new Promise((resolve, reject) => {\n setTimeout(() => reject(new TimeoutError(msg)), timeoutMs);\n }),\n ])) as any as T;\n}\n\nexport async function promiseWithTimeoutAndRetries<T>(\n toTry: () => Promise<T>,\n msg: string,\n maxRetries: number,\n timeoutMs: number\n): Promise<T> {\n if (maxRetries < 1)\n throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${maxRetries} was received.`);\n let attemptCount = 0;\n while (true) {\n try {\n return await promiseWithTimeout(toTry(), msg, timeoutMs);\n } catch (ignoreError) {\n if (++attemptCount >= maxRetries) throw new TimeoutError(msg);\n }\n }\n}\n\n/**\n * Keep calling a `fn` for `secondsToWait` seconds, if `keepWaitingIf` is true.\n * Returns an array of all attempts to call the function.\n */\nexport async function withExponentialBackoff<T>(\n fn: (previousFailure?: T) => Promise<T>,\n keepWaitingIf: (result: T) => boolean,\n secondsToWait: number,\n exponentialFactor = 1.5,\n verbose = false\n): Promise<T[]> {\n const attempts: T[] = [];\n\n let count = 0;\n const initialAttempt = await fn();\n attempts.push(initialAttempt);\n if (!keepWaitingIf(initialAttempt)) return attempts;\n\n const waitUntil = new Date(Date.now() + secondsToWait * 1000).valueOf();\n let waitTime = 1000;\n let totalWaitTime = waitTime;\n\n while (Date.now() < waitUntil) {\n const lastAttempt = attempts[attempts.length - 1];\n if (lastAttempt === undefined || !keepWaitingIf(lastAttempt)) break;\n\n count++;\n // Wait a beat\n if (verbose) {\n console.info(\n `Waiting ${waitTime}ms before trying again (bringing the total wait time to ${totalWaitTime}ms so far, of total ${\n secondsToWait * 1000\n }ms)`\n );\n }\n await new Promise((res) => setTimeout(res, waitTime));\n // Exponential backoff\n waitTime = waitTime * exponentialFactor;\n if (new Date(Date.now() + waitTime).valueOf() > waitUntil) {\n waitTime = waitUntil - Date.now();\n if (verbose) {\n console.info(`was gonna wait too long; new waitTime: ${waitTime}ms`);\n }\n }\n totalWaitTime = waitTime + totalWaitTime;\n // Try again\n const nextAttempt = await fn(lastAttempt);\n attempts.push(nextAttempt);\n if (verbose && keepWaitingIf(nextAttempt)) {\n console.info(\n `${count}. Called ${fn.name}; ${attempts.length} prev attempts. Most recent: ${JSON.stringify(\n attempts[attempts.length - 1],\n null,\n 2\n )}`\n );\n }\n }\n\n return attempts;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big, BigSource } from \"big.js\";\nimport { AllbridgeCoreClientPoolsExt } from \"../client/core-api/core-client-pool-info-caching\";\nimport { ArgumentInvalidDecimalsError, InvalidAmountError, TimeoutError } from \"../exceptions\";\nimport { PoolInfo, TokenWithChainDetails } from \"../tokens-info\";\n\nexport function assertNever(x: never, message?: string): never {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(message ?? `Unexpected value: ${x}`);\n}\n\n/**\n * @deprecated Do not use.\n */\nexport async function getPoolInfoByToken(\n api: AllbridgeCoreClientPoolsExt,\n sourceChainToken: TokenWithChainDetails\n): Promise<PoolInfo> {\n return await api.getPoolInfoByKey({\n chainSymbol: sourceChainToken.chainSymbol,\n poolAddress: sourceChainToken.poolAddress,\n });\n}\n\nexport function validateAmountGtZero(amount: BigSource) {\n if (Big(amount).lte(0)) {\n throw new InvalidAmountError(\"Amount must be greater than zero\");\n }\n}\n\nexport function validateAmountGteZero(amount: BigSource) {\n if (Big(amount).lt(0)) {\n throw new InvalidAmountError(\"Amount must be greater or equal than zero\");\n }\n}\n\nexport function validateAmountDecimals(argName: string, amountFloat: BigSource, decimalRequired: number) {\n const amount = Big(amountFloat).toFixed();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [integerPart, fractionalPart] = amount.split(\".\");\n\n if (fractionalPart && fractionalPart.length > decimalRequired) {\n throw new ArgumentInvalidDecimalsError(argName, fractionalPart.length, decimalRequired);\n }\n}\n\nexport async function promiseWithTimeout<T>(promise: Promise<T>, msg: string, timeoutMs: number): Promise<T> {\n return (await Promise.race([\n promise,\n new Promise((resolve, reject) => {\n setTimeout(() => reject(new TimeoutError(msg)), timeoutMs);\n }),\n ])) as any as T;\n}\n\nexport async function promiseWithTimeoutAndRetries<T>(\n toTry: () => Promise<T>,\n msg: string,\n maxRetries: number,\n timeoutMs: number\n): Promise<T> {\n if (maxRetries < 1)\n throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${maxRetries} was received.`);\n let attemptCount = 0;\n while (true) {\n try {\n return await promiseWithTimeout(toTry(), msg, timeoutMs);\n } catch (ignoreError) {\n if (++attemptCount >= maxRetries) throw new TimeoutError(msg);\n }\n }\n}\n\n/**\n * Keep calling a `fn` for `secondsToWait` seconds, if `keepWaitingIf` is true.\n * Returns an array of all attempts to call the function.\n */\nexport async function withExponentialBackoff<T>(\n fn: (previousFailure?: T) => Promise<T>,\n keepWaitingIf: (result: T) => boolean,\n secondsToWait: number,\n exponentialFactor = 1.5,\n verbose = false\n): Promise<T[]> {\n const attempts: T[] = [];\n\n let count = 0;\n const initialAttempt = await fn();\n attempts.push(initialAttempt);\n if (!keepWaitingIf(initialAttempt)) return attempts;\n\n const waitUntil = new Date(Date.now() + secondsToWait * 1000).valueOf();\n let waitTime = 1000;\n let totalWaitTime = waitTime;\n\n while (Date.now() < waitUntil) {\n const lastAttempt = attempts[attempts.length - 1];\n if (lastAttempt === undefined || !keepWaitingIf(lastAttempt)) break;\n\n count++;\n // Wait a beat\n if (verbose) {\n console.info(\n `Waiting ${waitTime}ms before trying again (bringing the total wait time to ${totalWaitTime}ms so far, of total ${\n secondsToWait * 1000\n }ms)`\n );\n }\n await new Promise((res) => setTimeout(res, waitTime));\n // Exponential backoff\n waitTime = waitTime * exponentialFactor;\n if (new Date(Date.now() + waitTime).valueOf() > waitUntil) {\n waitTime = waitUntil - Date.now();\n if (verbose) {\n console.info(`was gonna wait too long; new waitTime: ${waitTime}ms`);\n }\n }\n totalWaitTime = waitTime + totalWaitTime;\n // Try again\n const nextAttempt = await fn(lastAttempt);\n attempts.push(nextAttempt);\n if (verbose && keepWaitingIf(nextAttempt)) {\n console.info(\n `${count}. Called ${fn.name}; ${attempts.length} prev attempts. Most recent: ${JSON.stringify(\n attempts[attempts.length - 1],\n null,\n 2\n )}`\n );\n }\n }\n\n return attempts;\n}\n"]}
@@ -1 +1 @@
1
- export declare const VERSION = "3.32.1";
1
+ export declare const VERSION = "3.33.0-alpha.2";
@@ -1,2 +1,2 @@
1
- export const VERSION = "3.32.1";
1
+ export const VERSION = "3.33.0-alpha.2";
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["export const VERSION = \"3.32.1\";\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC","sourcesContent":["export const VERSION = \"3.33.0-alpha.2\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allbridge/bridge-core-sdk",
3
- "version": "3.32.1",
3
+ "version": "3.33.0-alpha.2",
4
4
  "main": "./dist/cjs/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/src/index.d.ts",