@velora-dex/widget 0.8.2 → 0.8.3-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/components/widget/BridgeList/hooks.d.ts +2 -2
  2. package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -1
  3. package/dist/components/widget/BridgeList/hooks.js +79 -73
  4. package/dist/components/widget/BridgeList/hooks.js.map +1 -1
  5. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +2 -2
  6. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -1
  7. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
  8. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  9. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  10. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +2 -2
  11. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  12. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +2 -2
  13. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
  14. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
  15. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +4 -1
  16. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
  17. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +1 -1
  18. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
  19. package/dist/core/LimitOrderButton.d.ts.map +1 -1
  20. package/dist/core/LimitOrderButton.js +46 -52
  21. package/dist/core/LimitOrderButton.js.map +1 -1
  22. package/dist/core/TradeFlowScreenButton.d.ts +3 -4
  23. package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
  24. package/dist/core/TradeFlowScreenButton.js.map +1 -1
  25. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  26. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +1 -4
  27. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  28. package/dist/core/index.js.map +1 -1
  29. package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
  30. package/dist/core/inputs/hooks/useTokenFromInputProps.js +2 -2
  31. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  32. package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  33. package/dist/core/inputs/hooks/useTokenToInputProps.js +2 -2
  34. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  35. package/dist/core/inputs/hooks/utils.d.ts.map +1 -1
  36. package/dist/core/inputs/hooks/utils.js +7 -5
  37. package/dist/core/inputs/hooks/utils.js.map +1 -1
  38. package/dist/core/limit/useLimitRate.d.ts +2 -3
  39. package/dist/core/limit/useLimitRate.d.ts.map +1 -1
  40. package/dist/core/limit/useLimitRate.js +54 -110
  41. package/dist/core/limit/useLimitRate.js.map +1 -1
  42. package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
  43. package/dist/core/limit/useLimitTokenToInputProps.js +1 -4
  44. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  45. package/dist/core/swapDetails/fees.d.ts.map +1 -1
  46. package/dist/core/swapDetails/fees.js +16 -11
  47. package/dist/core/swapDetails/fees.js.map +1 -1
  48. package/dist/core/swapDetails/maxToPay.d.ts.map +1 -1
  49. package/dist/core/swapDetails/maxToPay.js +18 -17
  50. package/dist/core/swapDetails/maxToPay.js.map +1 -1
  51. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +2 -2
  52. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -1
  53. package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
  54. package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
  55. package/dist/events/types/priceChange.d.ts +2 -2
  56. package/dist/events/types/priceChange.d.ts.map +1 -1
  57. package/dist/events/types/swap.d.ts +2 -2
  58. package/dist/events/types/swap.d.ts.map +1 -1
  59. package/dist/events/types/twap.d.ts +2 -2
  60. package/dist/events/types/twap.d.ts.map +1 -1
  61. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +3 -4
  62. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
  63. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
  64. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +6 -3
  65. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
  66. package/dist/hooks/swap/prices/delta/bridge/utils.js +20 -17
  67. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  68. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +2 -2
  69. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
  70. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +5 -5
  71. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
  72. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +2 -2
  73. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
  74. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +2 -2
  75. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
  76. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -1
  77. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +27 -28
  78. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
  79. package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
  80. package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
  81. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +2 -2
  82. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  83. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
  84. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  85. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +5 -5
  86. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  87. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts.map +1 -1
  88. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +27 -28
  89. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  90. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
  91. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
  92. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +2 -2
  93. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  94. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
  95. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
  96. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +1 -1
  97. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
  98. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +5 -6
  99. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
  100. package/dist/hooks/swap/prices/delta/mutations/utils.js +6 -6
  101. package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
  102. package/dist/hooks/swap/prices/delta/orders/types.d.ts +2 -1
  103. package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
  104. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +3 -3
  105. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +3 -3
  106. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
  107. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +2 -2
  108. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  109. package/dist/hooks/swap/prices/delta/orders/utils.js +6 -3
  110. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  111. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
  112. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +16 -33
  113. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  114. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +6 -6
  115. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  116. package/dist/hooks/swap/prices/factory.d.ts.map +1 -1
  117. package/dist/hooks/swap/prices/factory.js +1 -1
  118. package/dist/hooks/swap/prices/factory.js.map +1 -1
  119. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +1 -1
  120. package/dist/hooks/swap/prices/types.d.ts +2 -3
  121. package/dist/hooks/swap/prices/types.d.ts.map +1 -1
  122. package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
  123. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  124. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  125. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +3 -3
  126. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  127. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
  128. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
  129. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
  130. package/dist/hooks/swap/prices/useTwapPrices.d.ts +4 -5
  131. package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -1
  132. package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
  133. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +10 -17
  134. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
  135. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +6 -6
  136. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
  137. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -5
  138. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  139. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +119 -124
  140. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  141. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -2
  142. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  143. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +159 -196
  144. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  145. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +5 -5
  146. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
  147. package/dist/hooks/swap/tradeFlow/useTwapFlow.js +217 -229
  148. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
  149. package/dist/hooks/useSDK.d.ts +19 -3
  150. package/dist/hooks/useSDK.d.ts.map +1 -1
  151. package/dist/hooks/useSDK.js +65 -35
  152. package/dist/hooks/useSDK.js.map +1 -1
  153. package/dist/lib/queryClient.js +1 -1
  154. package/dist/lib/queryClient.js.map +1 -1
  155. package/dist/lib/utils/price.d.ts +5 -2
  156. package/dist/lib/utils/price.d.ts.map +1 -1
  157. package/dist/lib/utils/price.js +8 -5
  158. package/dist/lib/utils/price.js.map +1 -1
  159. package/dist/lib/utils/twap.d.ts +2 -2
  160. package/dist/lib/utils/twap.d.ts.map +1 -1
  161. package/dist/lib/utils/twap.js +2 -2
  162. package/dist/lib/utils/twap.js.map +1 -1
  163. package/package.json +2 -2
  164. package/dist/hooks/swap/prices/delta/bridge/const.d.ts +0 -8
  165. package/dist/hooks/swap/prices/delta/bridge/const.d.ts.map +0 -1
  166. package/dist/hooks/swap/prices/delta/bridge/const.js +0 -13
  167. package/dist/hooks/swap/prices/delta/bridge/const.js.map +0 -1
@@ -1,124 +1,68 @@
1
- import { useAtomValue as e } from "../store.js";
2
- import { useDeltaPriceQuery as t } from "../../hooks/swap/prices/delta/queries/useDeltaPriceQuery.js";
3
- import { useMarketPriceQuery as n } from "../../hooks/swap/prices/market/queries/useMarketPriceQuery.js";
4
- import { tradeModeToTokenAtoms as r, useWidgetTokens as i } from "../inputs/state/common.js";
5
- import { useTokenPrice as a } from "../../hooks/tokens/prices/useTokenPrices.js";
6
- import { useExtraMarketPriceParams as o, usePricesParams as s } from "../../hooks/swap/prices/usePricesParams.js";
7
- import { c } from "react-compiler-runtime";
8
- import { useMemo as l } from "react";
9
- import { formatUnits as u, parseUnits as d } from "viem";
10
- import f from "big.js";
1
+ import { useDeltaPriceQuery as e } from "../../hooks/swap/prices/delta/queries/useDeltaPriceQuery.js";
2
+ import { useWidgetTokens as t } from "../inputs/state/common.js";
3
+ import { usePricesParams as n } from "../../hooks/swap/prices/usePricesParams.js";
4
+ import { c as r } from "react-compiler-runtime";
5
+ import { formatUnits as i } from "viem";
6
+ import a from "big.js";
11
7
  //#region src/core/limit/useLimitRate.ts
12
- var p = 6e4 * 5, m = (t) => {
13
- let i = c(16), { enabled: a, refetchInterval: l, tradeMode: u } = t, f = a === void 0 ? !0 : a, m = l === void 0 ? p : l, h = e(r[u].tokenFromAtom), { priceParams: g, chainId: _ } = s(u), v = o(), y;
14
- i[0] === h.decimals ? y = i[1] : (y = d("1", h.decimals).toString(), i[0] = h.decimals, i[1] = y);
15
- let b;
16
- i[2] !== v || i[3] !== g || i[4] !== y ? (b = {
17
- ...g,
18
- ...v,
19
- amount: y,
20
- side: "SELL",
21
- ignoreBadUsdPrice: !0
22
- }, i[2] = v, i[3] = g, i[4] = y, i[5] = b) : b = i[5];
23
- let x = b, S;
24
- i[6] !== f || i[7] !== m ? (S = {
25
- enabled: f,
26
- refetchInterval: m,
27
- retry: !1,
28
- refetchOnWindowFocus: !1,
29
- refetchOnMount: !1
30
- }, i[6] = f, i[7] = m, i[8] = S) : S = i[8];
31
- let C;
32
- i[9] !== _ || i[10] !== x || i[11] !== S ? (C = {
33
- priceParams: x,
34
- chainId: _,
35
- query: S
36
- }, i[9] = _, i[10] = x, i[11] = S, i[12] = C) : C = i[12];
37
- let { result: w } = n(C), T;
38
- return i[13] !== w.data || i[14] !== w.isLoading ? (T = {
39
- price: w.data,
40
- isLoading: w.isLoading
41
- }, i[13] = w.data, i[14] = w.isLoading, i[15] = T) : T = i[15], T;
42
- }, h = (e) => {
43
- let n = c(17), { enabled: r, refetchInterval: i, tradeMode: a } = e, o = r === void 0 ? !0 : r, l = i === void 0 ? 1e4 : i, { priceParams: u, chainId: d, destChainId: f, isCrossChain: p } = s(a), m = o && a === "limit", h;
44
- n[0] === u ? h = n[1] : (h = {
8
+ var o = (t) => {
9
+ let i = r(19), a;
10
+ i[0] === t ? a = i[1] : (a = t === void 0 ? {} : t, i[0] = t, i[1] = a);
11
+ let { enabled: o, refetchInterval: s } = a, c = o === void 0 ? !0 : o, l = s === void 0 ? 1e4 : s, { priceParams: u, chainId: d, destChainId: f, isCrossChain: p } = n("limit"), m;
12
+ i[2] === u ? m = i[3] : (m = {
45
13
  ...u,
46
14
  side: "SELL",
47
15
  ignoreBadUsdPrice: !0
48
- }, n[0] = u, n[1] = h);
49
- let g = h, _ = p && a === "limit" ? !1 : void 0, v;
50
- n[2] !== _ || n[3] !== g ? (v = {
51
- ...g,
52
- allowBridgeAndSwap: _
53
- }, n[2] = _, n[3] = g, n[4] = v) : v = n[4];
54
- let y;
55
- n[5] !== m || n[6] !== l ? (y = {
56
- enabled: m,
16
+ }, i[2] = u, i[3] = m);
17
+ let h = m, g = p ? !1 : void 0, _;
18
+ i[4] !== g || i[5] !== h ? (_ = {
19
+ ...h,
20
+ allowBridgeAndSwap: g
21
+ }, i[4] = g, i[5] = h, i[6] = _) : _ = i[6];
22
+ let v;
23
+ i[7] !== c || i[8] !== l ? (v = {
24
+ enabled: c,
57
25
  refetchInterval: l,
58
26
  retry: !1,
59
27
  refetchOnWindowFocus: !1,
60
28
  refetchOnMount: !1
61
- }, n[5] = m, n[6] = l, n[7] = y) : y = n[7];
62
- let b;
63
- n[8] !== d || n[9] !== f || n[10] !== v || n[11] !== y ? (b = {
64
- priceParams: v,
29
+ }, i[7] = c, i[8] = l, i[9] = v) : v = i[9];
30
+ let y;
31
+ i[10] !== d || i[11] !== f || i[12] !== _ || i[13] !== v ? (y = {
32
+ priceParams: _,
65
33
  chainId: d,
66
34
  destChainId: f,
67
- query: y
68
- }, n[8] = d, n[9] = f, n[10] = v, n[11] = y, n[12] = b) : b = n[12];
69
- let { result: x } = t(b), S;
70
- return n[13] !== x.data || n[14] !== x.error || n[15] !== x.isLoading ? (S = {
71
- price: x.data,
72
- isLoading: x.isLoading,
73
- error: x.error
74
- }, n[13] = x.data, n[14] = x.error, n[15] = x.isLoading, n[16] = S) : S = n[16], S;
75
- }, g = (e) => {
76
- let { tokenFrom: t, tokenTo: n } = i(e), { data: r, isLoading: o } = a(t, { refetchInterval: p }), { data: s, isLoading: c } = a(n, { refetchInterval: p }), d = o || c, g = e === "limit" && n && n.network !== t.network, _ = !!(r && s), { price: v, isLoading: y } = m({
77
- enabled: !_ && !d && !g,
78
- tradeMode: e
79
- }), { price: b, isLoading: x } = h({
80
- enabled: g,
81
- tradeMode: e
82
- }), S = d || y;
83
- return l(() => {
84
- if (!n) return { isLoading: S };
85
- let e, i;
86
- if (g) {
87
- if (!b) return { isLoading: x };
88
- let r = u(BigInt(b.srcAmount), t.decimals), a = u(BigInt(b.receivedDestAmount), n.decimals);
89
- return r === "0" || a === "0" ? (e = "0", i = "0") : (e = f(a).div(r).toFixed(), i = f(r).div(a).toFixed()), {
90
- rates: {
91
- rate: e,
92
- rateReversed: i
93
- },
94
- isLoading: x
95
- };
96
- } else if (_) r.price === 0 || s.price === 0 ? (e = "0", i = "0") : (e = f(r.price).div(s.price).toFixed(), i = f(s.price).div(r.price).toFixed());
97
- else if (v) {
98
- let r = u(BigInt(v.srcAmount), t.decimals), a = u(BigInt(v.destAmount), n.decimals);
99
- e = f(a).div(r).toFixed(), i = f(r).div(a).toFixed();
100
- }
101
- return !e || !i ? { isLoading: S } : {
102
- rates: {
103
- rate: e,
104
- rateReversed: i
105
- },
106
- isLoading: S
107
- };
108
- }, [
109
- _,
110
- S,
111
- v,
112
- t.decimals,
113
- r?.price,
114
- n,
115
- s?.price,
116
- g,
117
- b,
118
- x
119
- ]);
35
+ query: v
36
+ }, i[10] = d, i[11] = f, i[12] = _, i[13] = v, i[14] = y) : y = i[14];
37
+ let { result: b } = e(y), x;
38
+ return i[15] !== b.data || i[16] !== b.error || i[17] !== b.isLoading ? (x = {
39
+ price: b.data,
40
+ isLoading: b.isLoading,
41
+ error: b.error
42
+ }, i[15] = b.data, i[16] = b.error, i[17] = b.isLoading, i[18] = x) : x = i[18], x;
43
+ }, s = (e) => {
44
+ let n = r(14), { tokenFrom: s, tokenTo: c } = t(e), { price: l, isLoading: u } = o();
45
+ if (!c || !l) {
46
+ let e;
47
+ return n[0] === u ? e = n[1] : (e = { isLoading: u }, n[0] = u, n[1] = e), e;
48
+ }
49
+ let d, f;
50
+ if (n[2] !== l.route.destination.output.amount || n[3] !== l.route.origin.input.amount || n[4] !== s.decimals || n[5] !== c.decimals) {
51
+ let e = i(BigInt(l.route.origin.input.amount), s.decimals), t = i(BigInt(l.route.destination.output.amount), c.decimals);
52
+ e === "0" || t === "0" ? (d = "0", f = "0") : (d = a(t).div(e).toFixed(), f = a(e).div(t).toFixed()), n[2] = l.route.destination.output.amount, n[3] = l.route.origin.input.amount, n[4] = s.decimals, n[5] = c.decimals, n[6] = d, n[7] = f;
53
+ } else d = n[6], f = n[7];
54
+ let p;
55
+ n[8] !== d || n[9] !== f ? (p = {
56
+ rate: d,
57
+ rateReversed: f
58
+ }, n[8] = d, n[9] = f, n[10] = p) : p = n[10];
59
+ let m;
60
+ return n[11] !== u || n[12] !== p ? (m = {
61
+ rates: p,
62
+ isLoading: u
63
+ }, n[11] = u, n[12] = p, n[13] = m) : m = n[13], m;
120
64
  };
121
65
  //#endregion
122
- export { h as useDeltaSwapPriceForLimit, g as useLimitRate };
66
+ export { o as useDeltaSwapPriceForLimit, s as useLimitRate };
123
67
 
124
68
  //# sourceMappingURL=useLimitRate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitRate.js","names":["useMarketPriceQuery","useExtraMarketPriceParams","usePricesParams","FetchPriceParams","useTokenPrice","Big","parseUnits","formatUnits","useWidgetTokens","UseLimitRateResult","useAtomValue","tradeModeToTokenAtoms","useMemo","useDeltaPriceQuery","PRICE_REFETCH_INTERVAL","useSwapPriceForLimit","t0","$","_c","enabled","t1","refetchInterval","t2","tradeMode","undefined","tokenFrom","tokenFromAtom","priceParams","chainId","extraPriceParams","t3","decimals","toString","t4","amount","side","const","ignoreBadUsdPrice","priceParamsWithAmount","t5","retry","refetchOnWindowFocus","refetchOnMount","t6","query","result","marketPriceQuery","t7","data","isLoading","price","useDeltaSwapPriceForLimit","destChainId","isCrossChain","queryEnabled","crosschainPriceParams","isLimitOrder","allowBridgeAndSwap","deltaPriceQuery","error","useLimitRate","tokenTo","tokenFromPrice","isTokenFromPriceLoading","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","isNonDeltaLoading","rate","rateReversed","srcUnits","BigInt","srcAmount","destUnits","receivedDestAmount","div","toFixed","rates","destAmount"],"sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import { useMarketPriceQuery } from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport {\n useExtraMarketPriceParams,\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport { parseUnits, formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tradeModeToTokenAtoms } from \"../inputs/state/common\";\nimport { useMemo } from \"react\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\n// 5 min, so as not to change limit price in front of the user too often\nconst PRICE_REFETCH_INTERVAL = 60_000 * 5;\n\nconst useSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = PRICE_REFETCH_INTERVAL,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const tokenFrom = useAtomValue(\n tradeModeToTokenAtoms[tradeMode].tokenFromAtom\n );\n const { priceParams, chainId } = usePricesParams(tradeMode);\n const extraPriceParams = useExtraMarketPriceParams();\n\n const priceParamsWithAmount: FetchPriceParams = {\n ...priceParams,\n ...extraPriceParams,\n amount: parseUnits(\"1\", tokenFrom.decimals).toString(),\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // @TODO: delta price return quote for less tokens than market price with srcAmount=1,\n // but maybe we should increase srcAmount and use delta prices instead, need to test.\n const { result: marketPriceQuery } = useMarketPriceQuery({\n priceParams: priceParamsWithAmount,\n chainId,\n query: {\n enabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: marketPriceQuery.data,\n isLoading: marketPriceQuery.isLoading,\n };\n};\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const { priceParams, chainId, destChainId, isCrossChain } =\n usePricesParams(tradeMode);\n\n // should fetch delta price for crosschain limit order?\n const queryEnabled = enabled && tradeMode === \"limit\";\n\n const crosschainPriceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ...priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n const isLimitOrder = tradeMode === \"limit\";\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain && isLimitOrder ? false : undefined;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...crosschainPriceParams,\n allowBridgeAndSwap,\n },\n chainId,\n destChainId,\n query: {\n enabled: queryEnabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: deltaPriceQuery.data,\n isLoading: deltaPriceQuery.isLoading,\n error: deltaPriceQuery.error,\n };\n};\n\n// define how many tokenTo units one tokenFrom (tokenTo if reversed) unit costs, eg 1 ETH = 3000 USDC\nexport const useLimitRate = (\n tradeMode: \"limit\" | \"otc\"\n): UseLimitRateResult => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n const { data: tokenFromPrice, isLoading: isTokenFromPriceLoading } =\n useTokenPrice(tokenFrom, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n\n const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;\n\n // for crosschain limit orders, use the delta price query to correctly set the starting price,\n // accounting for bridge fees, because ex. 1USDC=1USDT will never be possible\n const isCrosschainLOrder =\n tradeMode === \"limit\" && tokenTo && tokenTo.network !== tokenFrom.network;\n\n const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);\n const fetchSwapPrice =\n !fiatPricesAvailable && !areFiatPricesLoading && !isCrosschainLOrder;\n\n const { price: swapPrice, isLoading: isSwapPriceLoading } =\n useSwapPriceForLimit({\n enabled: fetchSwapPrice,\n tradeMode,\n });\n\n const {\n price: deltaCrosschainPrice,\n isLoading: isDeltaCrosschainPriceLoading,\n } = useDeltaSwapPriceForLimit({\n enabled: isCrosschainLOrder,\n tradeMode,\n });\n\n const isNonDeltaLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading: isNonDeltaLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (isCrosschainLOrder) {\n if (!deltaCrosschainPrice) {\n return { isLoading: isDeltaCrosschainPriceLoading };\n }\n const srcUnits = formatUnits(\n BigInt(deltaCrosschainPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaCrosschainPrice.receivedDestAmount),\n tokenTo.decimals\n );\n if (srcUnits === \"0\" || destUnits === \"0\") {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n return {\n rates: { rate, rateReversed },\n // for Crosschain price we care only about its loading state, not all others\n isLoading: isDeltaCrosschainPriceLoading,\n };\n } else if (fiatPricesAvailable) {\n if (tokenFromPrice.price === 0 || tokenToPrice.price === 0) {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\n }\n } else if (swapPrice) {\n const srcUnits = formatUnits(\n BigInt(swapPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n BigInt(swapPrice.destAmount),\n tokenTo.decimals\n );\n\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n if (!rate || !rateReversed) {\n return { isLoading: isNonDeltaLoading };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading: isNonDeltaLoading,\n };\n }, [\n fiatPricesAvailable,\n isNonDeltaLoading,\n swapPrice,\n tokenFrom.decimals,\n tokenFromPrice?.price,\n tokenTo,\n tokenToPrice?.price,\n isCrosschainLOrder,\n deltaCrosschainPrice,\n isDeltaCrosschainPriceLoading,\n ]);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useLimitRate.js","names":["usePricesParams","FetchPriceParams","useDeltaPriceQuery","Big","formatUnits","useWidgetTokens","UseLimitRateResult","useDeltaSwapPriceForLimit","t0","$","_c","t1","undefined","enabled","t2","refetchInterval","t3","priceParams","_priceParams","chainId","destChainId","isCrossChain","t4","side","const","ignoreBadUsdPrice","allowBridgeAndSwap","t5","t6","retry","refetchOnWindowFocus","refetchOnMount","t7","query","result","deltaPriceQuery","t8","data","error","isLoading","price","useLimitRate","tradeMode","tokenFrom","tokenTo","deltaPrice","rate","rateReversed","route","destination","output","amount","origin","input","decimals","srcUnits","BigInt","destUnits","div","toFixed","rates"],"sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import {\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport Big from \"big.js\";\nimport { formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n} = {}) => {\n const {\n priceParams: _priceParams,\n chainId,\n destChainId,\n isCrossChain,\n } = usePricesParams(\"limit\");\n\n const priceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ..._priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain ? false : undefined;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...priceParams,\n allowBridgeAndSwap,\n },\n chainId,\n destChainId,\n query: {\n enabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: deltaPriceQuery.data,\n isLoading: deltaPriceQuery.isLoading,\n error: deltaPriceQuery.error,\n };\n};\n\n// define how many tokenTo units one tokenFrom (tokenTo if reversed) unit costs, eg 1 ETH = 3000 USDC\nexport const useLimitRate = (\n tradeMode: \"limit\" | \"otc\"\n): UseLimitRateResult => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n const { price: deltaPrice, isLoading } = useDeltaSwapPriceForLimit();\n\n if (!tokenTo || !deltaPrice) {\n return { isLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n\n const srcUnits = formatUnits(\n BigInt(deltaPrice.route.origin.input.amount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaPrice.route.destination.output.amount),\n tokenTo.decimals\n );\n if (srcUnits === \"0\" || destUnits === \"0\") {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading,\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitTokenToInputProps.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitTokenToInputProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AA0FlD,KAAK,4BAA4B,GAAG;IAClC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,yBAAyB,IAAI,4BAA4B,CA8BxE;AA0CD,eAAO,MAAM,yBAAyB,QAAO,eAc5C,CAAC"}
1
+ {"version":3,"file":"useLimitTokenToInputProps.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitTokenToInputProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AA0FlD,KAAK,4BAA4B,GAAG;IAClC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,yBAAyB,IAAI,4BAA4B,CA8BxE;AAwCD,eAAO,MAAM,yBAAyB,QAAO,eAc5C,CAAC"}
@@ -93,10 +93,7 @@ function A() {
93
93
  }
94
94
  function j() {
95
95
  let e = w(11), t = s(), n = o(), i = n && t && n.network !== t.network, a;
96
- e[0] === Symbol.for("react.memo_cache_sentinel") ? (a = {
97
- tradeMode: "limit",
98
- enabled: !1
99
- }, e[0] = a) : a = e[0];
96
+ e[0] === Symbol.for("react.memo_cache_sentinel") ? (a = { enabled: !1 }, e[0] = a) : a = e[0];
100
97
  let { error: c } = x(a), l = i ? c : void 0, p;
101
98
  if (e[1] !== l || e[2] !== n || e[3] !== t) {
102
99
  let i = l && d(l);
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitTokenToInputProps.js","names":["TokenInputProps","useAtom","useAtomValue","useSetAtom","limitReceiveInputAmountAtom","setLimitReceiveAmountAtom","useLogger","OnValueChange","useDeltaSwapPriceForLimit","useLimitRate","currentLimitInputAtom","TokenInputExtraProps","useTokenBalance","MEDIUM_STALE_TIME_FOR_REACTIVENESS","toDecimalTrimmed","useLimitInputClasses","selectLimitTokenToAtom","useLimitTokenFrom","useLimitTokenTo","useIsTokenSupportedInDeltaQuery","Token","isFilledArray","useChainId","useSelectableDestChains","SupportedChainId","limitChainToAtom","BridgeInfoMode","isUnsupportedTokenError","parseDeltaApiError","replaceUnsupportedTokenMessage","isTruthy","useTokenToBalanceUnit","$","_c","tokenTo","t0","Symbol","for","refetchInterval","t1","token","queryOptions","balanceUnit","t2","useExtraProps","acrossMode","appChainId","chainTo","setChainTo","fromChainId","mode","selectableChains","showNetworkSwitcher","undefined","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","t3","t4","t5","tokenType","const","onFocus","label","useTokenToAmountProps","logger","receiveAmount","setReceiveAmount","isLoading","values","log","value","onAmountChange","setTokenTo","amount","onTokenSelect","UnsupportedLimitTokensResult","unsupportedTokens","useUnsupportedLimitTokens","tokenFrom","address","network","data","isDestTokenSupported","isDestTokenSupportedLoading","isSrcTokenSupported","isSrcTokenSupportedLoading","push","t6","useWarningMessage","isCrosschainLimitOrder","tradeMode","enabled","error","limitPriceError","priceError","deltaPriceError","description","filter","deltaErrorToShow","customUnsupportedTokenMessage","unsupportedTokensWarning","warningMessage","useLimitTokenToInputProps","extraAmountProps","extraProps","tokenBalanceUnit","classes","tokens","Pick","symbol","tokenSymbols","map","join"],"sources":["../../../src/core/limit/useLimitTokenToInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\nimport { useAtom, useAtomValue, useSetAtom } from \"@/core/store\";\nimport { limitReceiveInputAmountAtom } from \"./state/limitInputAmountAtom\";\nimport { setLimitReceiveAmountAtom } from \"./state/limitInputActionsAtom\";\nimport { useLogger } from \"../logger\";\nimport type { OnValueChange } from \"react-number-format\";\nimport { useDeltaSwapPriceForLimit, useLimitRate } from \"./useLimitRate\";\nimport { currentLimitInputAtom } from \"./state/currentLimitInputAtom\";\nimport type { TokenInputExtraProps } from \"../inputs/hooks/types\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { useLimitInputClasses } from \"./useLimitTokenFromInputProps\";\nimport { selectLimitTokenToAtom } from \"./state/selectedTokenActionsAtom\";\nimport { useLimitTokenFrom, useLimitTokenTo } from \"./state/limitTokenAtoms\";\nimport { useIsTokenSupportedInDeltaQuery } from \"@/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport { useChainId } from \"wagmi\";\nimport { useSelectableDestChains } from \"@/hooks/useSelectableDestChains\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { limitChainToAtom } from \"../state/chainToAtom\";\nimport type { BridgeInfoMode } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/types\";\nimport {\n isUnsupportedTokenError,\n parseDeltaApiError,\n replaceUnsupportedTokenMessage,\n} from \"@/lib/utils/delta\";\nimport { isTruthy } from \"@/lib/utils\";\n\nconst useTokenToBalanceUnit = () => {\n const tokenTo = useLimitTokenTo();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenTo,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useExtraProps = ({\n acrossMode,\n}: {\n acrossMode: BridgeInfoMode;\n}): TokenInputExtraProps => {\n const appChainId = useChainId();\n\n const [chainTo, setChainTo] = useAtom(limitChainToAtom);\n\n const { selectableChains } = useSelectableDestChains({\n fromChainId: appChainId,\n mode: acrossMode,\n });\n\n const showNetworkSwitcher = chainTo !== undefined;\n\n const networkSwitcherProps = showNetworkSwitcher\n ? {\n networks: selectableChains,\n selectedNetwork: chainTo,\n allOption: false,\n onSelect: (chainId: SupportedChainId | \"all\") =>\n chainId !== \"all\" && setChainTo(chainId),\n disabled: selectableChains.length <= 1,\n }\n : undefined;\n\n const setCurrentInput = useSetAtom(currentLimitInputAtom);\n\n return {\n networkSwitcherProps,\n tokenType: \"to\" as const,\n onFocus: () => setCurrentInput(\"to\"),\n label: <span>Receive</span>,\n };\n};\n\nconst useTokenToAmountProps = (): Pick<\n TokenInputProps,\n \"amount\" | \"isLoading\" | \"token\" | \"onAmountChange\" | \"onTokenSelect\"\n> => {\n const logger = useLogger(\"Limit::TokenTo::AmountProps\");\n const tokenTo = useLimitTokenTo();\n\n const receiveAmount = useAtomValue(limitReceiveInputAmountAtom);\n const setReceiveAmount = useSetAtom(setLimitReceiveAmountAtom);\n\n const { isLoading } = useLimitRate(\"limit\");\n\n const onAmountChange: OnValueChange = (values) => {\n logger.log(\"onAmountChange::values\", values);\n setReceiveAmount(values.value);\n };\n\n const setTokenTo = useSetAtom(selectLimitTokenToAtom);\n\n return {\n amount: receiveAmount,\n isLoading,\n token: tokenTo,\n onAmountChange,\n onTokenSelect: setTokenTo,\n };\n};\n\ntype UnsupportedLimitTokensResult = {\n unsupportedTokens?: [Token, Token] | [Token];\n isLoading: boolean;\n};\n\nexport function useUnsupportedLimitTokens(): UnsupportedLimitTokensResult {\n const tokenTo = useLimitTokenTo();\n const tokenFrom = useLimitTokenFrom();\n\n const { data: isDestTokenSupported, isLoading: isDestTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenTo?.address,\n chainId: tokenTo?.network || tokenFrom.network,\n });\n\n const { data: isSrcTokenSupported, isLoading: isSrcTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenFrom.address,\n chainId: tokenFrom.network,\n });\n\n const unsupportedTokens: Token[] = [];\n if (isSrcTokenSupported === false) {\n unsupportedTokens.push(tokenFrom);\n }\n if (isDestTokenSupported === false && tokenTo) {\n unsupportedTokens.push(tokenTo);\n }\n\n return {\n unsupportedTokens: isFilledArray(unsupportedTokens)\n ? (unsupportedTokens as UnsupportedLimitTokensResult[\"unsupportedTokens\"])\n : undefined,\n isLoading: isDestTokenSupportedLoading || isSrcTokenSupportedLoading,\n };\n}\n\nfunction useWarningMessage(): UnsupportedLimitTokensResult & {\n warningMessage?: string;\n} {\n const tokenTo = useLimitTokenTo();\n const tokenFrom = useLimitTokenFrom();\n\n const isCrosschainLimitOrder =\n tokenFrom && tokenTo && tokenFrom.network !== tokenTo.network;\n\n const { error: limitPriceError } = useDeltaSwapPriceForLimit({\n // DeltaPrice is required for crosschain Limit orders only\n tradeMode: \"limit\",\n enabled: false, // get result only\n });\n\n const priceError = isCrosschainLimitOrder ? limitPriceError : undefined;\n const deltaPriceError = priceError && parseDeltaApiError(priceError);\n const deltaErrorToShow = deltaPriceError\n ? isUnsupportedTokenError(deltaPriceError)\n ? replaceUnsupportedTokenMessage(\n deltaPriceError.description,\n [tokenFrom, tokenTo].filter(isTruthy)\n )\n : deltaPriceError?.description\n : null;\n\n const { unsupportedTokens, isLoading } = useUnsupportedLimitTokens();\n const unsupportedTokensWarning = unsupportedTokens\n ? customUnsupportedTokenMessage(unsupportedTokens)\n : undefined;\n\n const warningMessage =\n unsupportedTokensWarning || deltaErrorToShow || undefined;\n return {\n warningMessage,\n unsupportedTokens,\n isLoading,\n };\n}\n\nexport const useLimitTokenToInputProps = (): TokenInputProps => {\n const extraAmountProps = useTokenToAmountProps();\n const extraProps = useExtraProps({ acrossMode: \"limit\" });\n const tokenBalanceUnit = useTokenToBalanceUnit();\n const classes = useLimitInputClasses();\n const { warningMessage } = useWarningMessage();\n\n return {\n ...extraProps,\n ...extraAmountProps,\n tokenBalanceUnit,\n classes,\n warningMessage,\n };\n};\n\nfunction customUnsupportedTokenMessage(\n tokens: Pick<Token, \"symbol\">[]\n): string | undefined {\n if (!isFilledArray(tokens)) {\n return;\n }\n if (tokens.length === 1) {\n return `Token ${tokens[0].symbol} is not supported for this order`;\n }\n\n const tokenSymbols = tokens.map((token) => token.symbol).join(\", \");\n return `Tokens ${tokenSymbols} are not supported for this order`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useLimitTokenToInputProps.js","names":["TokenInputProps","useAtom","useAtomValue","useSetAtom","limitReceiveInputAmountAtom","setLimitReceiveAmountAtom","useLogger","OnValueChange","useDeltaSwapPriceForLimit","useLimitRate","currentLimitInputAtom","TokenInputExtraProps","useTokenBalance","MEDIUM_STALE_TIME_FOR_REACTIVENESS","toDecimalTrimmed","useLimitInputClasses","selectLimitTokenToAtom","useLimitTokenFrom","useLimitTokenTo","useIsTokenSupportedInDeltaQuery","Token","isFilledArray","useChainId","useSelectableDestChains","SupportedChainId","limitChainToAtom","BridgeInfoMode","isUnsupportedTokenError","parseDeltaApiError","replaceUnsupportedTokenMessage","isTruthy","useTokenToBalanceUnit","$","_c","tokenTo","t0","Symbol","for","refetchInterval","t1","token","queryOptions","balanceUnit","t2","useExtraProps","acrossMode","appChainId","chainTo","setChainTo","fromChainId","mode","selectableChains","showNetworkSwitcher","undefined","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","t3","t4","t5","tokenType","const","onFocus","label","useTokenToAmountProps","logger","receiveAmount","setReceiveAmount","isLoading","values","log","value","onAmountChange","setTokenTo","amount","onTokenSelect","UnsupportedLimitTokensResult","unsupportedTokens","useUnsupportedLimitTokens","tokenFrom","address","network","data","isDestTokenSupported","isDestTokenSupportedLoading","isSrcTokenSupported","isSrcTokenSupportedLoading","push","t6","useWarningMessage","isCrosschainLimitOrder","enabled","error","limitPriceError","priceError","deltaPriceError","description","filter","deltaErrorToShow","customUnsupportedTokenMessage","unsupportedTokensWarning","warningMessage","useLimitTokenToInputProps","extraAmountProps","extraProps","tokenBalanceUnit","classes","tokens","Pick","symbol","tokenSymbols","map","join"],"sources":["../../../src/core/limit/useLimitTokenToInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\nimport { useAtom, useAtomValue, useSetAtom } from \"@/core/store\";\nimport { limitReceiveInputAmountAtom } from \"./state/limitInputAmountAtom\";\nimport { setLimitReceiveAmountAtom } from \"./state/limitInputActionsAtom\";\nimport { useLogger } from \"../logger\";\nimport type { OnValueChange } from \"react-number-format\";\nimport { useDeltaSwapPriceForLimit, useLimitRate } from \"./useLimitRate\";\nimport { currentLimitInputAtom } from \"./state/currentLimitInputAtom\";\nimport type { TokenInputExtraProps } from \"../inputs/hooks/types\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { useLimitInputClasses } from \"./useLimitTokenFromInputProps\";\nimport { selectLimitTokenToAtom } from \"./state/selectedTokenActionsAtom\";\nimport { useLimitTokenFrom, useLimitTokenTo } from \"./state/limitTokenAtoms\";\nimport { useIsTokenSupportedInDeltaQuery } from \"@/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport { useChainId } from \"wagmi\";\nimport { useSelectableDestChains } from \"@/hooks/useSelectableDestChains\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { limitChainToAtom } from \"../state/chainToAtom\";\nimport type { BridgeInfoMode } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/types\";\nimport {\n isUnsupportedTokenError,\n parseDeltaApiError,\n replaceUnsupportedTokenMessage,\n} from \"@/lib/utils/delta\";\nimport { isTruthy } from \"@/lib/utils\";\n\nconst useTokenToBalanceUnit = () => {\n const tokenTo = useLimitTokenTo();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenTo,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useExtraProps = ({\n acrossMode,\n}: {\n acrossMode: BridgeInfoMode;\n}): TokenInputExtraProps => {\n const appChainId = useChainId();\n\n const [chainTo, setChainTo] = useAtom(limitChainToAtom);\n\n const { selectableChains } = useSelectableDestChains({\n fromChainId: appChainId,\n mode: acrossMode,\n });\n\n const showNetworkSwitcher = chainTo !== undefined;\n\n const networkSwitcherProps = showNetworkSwitcher\n ? {\n networks: selectableChains,\n selectedNetwork: chainTo,\n allOption: false,\n onSelect: (chainId: SupportedChainId | \"all\") =>\n chainId !== \"all\" && setChainTo(chainId),\n disabled: selectableChains.length <= 1,\n }\n : undefined;\n\n const setCurrentInput = useSetAtom(currentLimitInputAtom);\n\n return {\n networkSwitcherProps,\n tokenType: \"to\" as const,\n onFocus: () => setCurrentInput(\"to\"),\n label: <span>Receive</span>,\n };\n};\n\nconst useTokenToAmountProps = (): Pick<\n TokenInputProps,\n \"amount\" | \"isLoading\" | \"token\" | \"onAmountChange\" | \"onTokenSelect\"\n> => {\n const logger = useLogger(\"Limit::TokenTo::AmountProps\");\n const tokenTo = useLimitTokenTo();\n\n const receiveAmount = useAtomValue(limitReceiveInputAmountAtom);\n const setReceiveAmount = useSetAtom(setLimitReceiveAmountAtom);\n\n const { isLoading } = useLimitRate(\"limit\");\n\n const onAmountChange: OnValueChange = (values) => {\n logger.log(\"onAmountChange::values\", values);\n setReceiveAmount(values.value);\n };\n\n const setTokenTo = useSetAtom(selectLimitTokenToAtom);\n\n return {\n amount: receiveAmount,\n isLoading,\n token: tokenTo,\n onAmountChange,\n onTokenSelect: setTokenTo,\n };\n};\n\ntype UnsupportedLimitTokensResult = {\n unsupportedTokens?: [Token, Token] | [Token];\n isLoading: boolean;\n};\n\nexport function useUnsupportedLimitTokens(): UnsupportedLimitTokensResult {\n const tokenTo = useLimitTokenTo();\n const tokenFrom = useLimitTokenFrom();\n\n const { data: isDestTokenSupported, isLoading: isDestTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenTo?.address,\n chainId: tokenTo?.network || tokenFrom.network,\n });\n\n const { data: isSrcTokenSupported, isLoading: isSrcTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenFrom.address,\n chainId: tokenFrom.network,\n });\n\n const unsupportedTokens: Token[] = [];\n if (isSrcTokenSupported === false) {\n unsupportedTokens.push(tokenFrom);\n }\n if (isDestTokenSupported === false && tokenTo) {\n unsupportedTokens.push(tokenTo);\n }\n\n return {\n unsupportedTokens: isFilledArray(unsupportedTokens)\n ? (unsupportedTokens as UnsupportedLimitTokensResult[\"unsupportedTokens\"])\n : undefined,\n isLoading: isDestTokenSupportedLoading || isSrcTokenSupportedLoading,\n };\n}\n\nfunction useWarningMessage(): UnsupportedLimitTokensResult & {\n warningMessage?: string;\n} {\n const tokenTo = useLimitTokenTo();\n const tokenFrom = useLimitTokenFrom();\n\n const isCrosschainLimitOrder =\n tokenFrom && tokenTo && tokenFrom.network !== tokenTo.network;\n\n const { error: limitPriceError } = useDeltaSwapPriceForLimit({\n enabled: false, // get result only\n });\n\n const priceError = isCrosschainLimitOrder ? limitPriceError : undefined;\n const deltaPriceError = priceError && parseDeltaApiError(priceError);\n const deltaErrorToShow = deltaPriceError\n ? isUnsupportedTokenError(deltaPriceError)\n ? replaceUnsupportedTokenMessage(\n deltaPriceError.description,\n [tokenFrom, tokenTo].filter(isTruthy)\n )\n : deltaPriceError?.description\n : null;\n\n const { unsupportedTokens, isLoading } = useUnsupportedLimitTokens();\n const unsupportedTokensWarning = unsupportedTokens\n ? customUnsupportedTokenMessage(unsupportedTokens)\n : undefined;\n\n const warningMessage =\n unsupportedTokensWarning || deltaErrorToShow || undefined;\n return {\n warningMessage,\n unsupportedTokens,\n isLoading,\n };\n}\n\nexport const useLimitTokenToInputProps = (): TokenInputProps => {\n const extraAmountProps = useTokenToAmountProps();\n const extraProps = useExtraProps({ acrossMode: \"limit\" });\n const tokenBalanceUnit = useTokenToBalanceUnit();\n const classes = useLimitInputClasses();\n const { warningMessage } = useWarningMessage();\n\n return {\n ...extraProps,\n ...extraAmountProps,\n tokenBalanceUnit,\n classes,\n warningMessage,\n };\n};\n\nfunction customUnsupportedTokenMessage(\n tokens: Pick<Token, \"symbol\">[]\n): string | undefined {\n if (!isFilledArray(tokens)) {\n return;\n }\n if (tokens.length === 1) {\n return `Token ${tokens[0].symbol} is not supported for this order`;\n }\n\n const tokenSymbols = tokens.map((token) => token.symbol).join(\", \");\n return `Tokens ${tokenSymbols} are not supported for this order`;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../../src/core/swapDetails/fees.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kDAAkD,CAAC;AAGjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,eAAe,GAAG,SAAS,CAmB9B;AAED,wBAAgB,0BAA0B,CAAC,EACzC,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE;IACD,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,eAAe,CAiBlB"}
1
+ {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../../src/core/swapDetails/fees.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kDAAkD,CAAC;AAGjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAOpE,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,eAAe,GAAG,SAAS,CAuB9B;AAED,wBAAgB,0BAA0B,CAAC,EACzC,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE;IACD,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,eAAe,CAiBlB"}
@@ -3,25 +3,30 @@ import { formatFiatPrice as t } from "../../lib/utils/formatFiatPrice.js";
3
3
  import { calculateFeeUSD as n } from "../../lib/utils/fee.js";
4
4
  import { jsx as r } from "react/jsx-runtime";
5
5
  //#region src/core/swapDetails/fees.tsx
6
- function i({ price: r, isLoading: i }) {
7
- if (!r || r.partnerFee === 0) return;
8
- let a = e(r) ? r.receivedDestUSD : r.destUSD;
9
- if (!a) return;
10
- let o = n(r.partnerFee, a), s = o ? t(o.toNumber()) : null;
6
+ function i(t) {
7
+ return e(t) ? t.partner.feePercent : t.partnerFee;
8
+ }
9
+ function a({ price: r, isLoading: a }) {
10
+ if (!r) return;
11
+ let o = i(r);
12
+ if (o === 0) return;
13
+ let s = e(r) ? r.route.destination.output.amountUSD : r.destUSD;
14
+ if (!s) return;
15
+ let c = n(o, s), l = c ? t(c.toNumber()) : null;
11
16
  return {
12
17
  title: "Swap Fees",
13
- value: s === "$0.00" ? "<$0.01" : s,
14
- isLoading: i,
15
- tooltip: `Swap fees are set to ${r.partnerFee.toFixed(2)}% for this trade`
18
+ value: l === "$0.00" ? "<$0.01" : l,
19
+ isLoading: a,
20
+ tooltip: `Swap fees are set to ${o.toFixed(2)}% for this trade`
16
21
  };
17
22
  }
18
- function a({ price: e, swapMode: n, isLoading: i }) {
23
+ function o({ price: e, swapMode: n, isLoading: i }) {
19
24
  let a = null;
20
25
  if (n === "delta") a = /* @__PURE__ */ r("div", {
21
26
  className: "text-[#A5D712]",
22
27
  children: "Gasless"
23
28
  });
24
- else if (e?.gasCostUSD !== void 0) {
29
+ else if (e && "gasCostUSD" in e) {
25
30
  let n = t(Number(e.gasCostUSD));
26
31
  a = n === "$0.00" ? "<$0.01" : n;
27
32
  }
@@ -33,6 +38,6 @@ function a({ price: e, swapMode: n, isLoading: i }) {
33
38
  };
34
39
  }
35
40
  //#endregion
36
- export { a as constructNetworkFeesDetail, i as constructSwapFeesDetail };
41
+ export { o as constructNetworkFeesDetail, a as constructSwapFeesDetail };
37
42
 
38
43
  //# sourceMappingURL=fees.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fees.js","names":["DetailWithValue","SwapMode","formatFiatPrice","calculateFeeUSD","DeltaOrMarketPrice","isDeltaPrice","constructSwapFeesDetail","price","isLoading","partnerFee","destUSD","receivedDestUSD","partnerFeeUSD","formattedFee","toNumber","title","value","tooltip","toFixed","constructNetworkFeesDetail","swapMode","React","ReactNode","gasCostUSD","undefined","formattedPrice","Number"],"sources":["../../../src/core/swapDetails/fees.tsx"],"sourcesContent":["import type { DetailWithValue } from \"@/components/widget/Details/types\";\nimport type { SwapMode } from \"@/components/widget/SwapModeSwitcher/state/types\";\nimport { formatFiatPrice } from \"@/lib/utils/formatFiatPrice\";\nimport { calculateFeeUSD } from \"@/lib/utils/fee\";\nimport type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { isDeltaPrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\nexport function constructSwapFeesDetail({\n price,\n isLoading,\n}: {\n price?: DeltaOrMarketPrice;\n isLoading: boolean;\n}): DetailWithValue | undefined {\n // quit early if there are no fees or destUSD in price,\n // because we cannot calculate the fee\n if (!price || price.partnerFee === 0) return;\n\n const destUSD = isDeltaPrice(price) ? price.receivedDestUSD : price.destUSD;\n if (!destUSD) return;\n\n const partnerFeeUSD = calculateFeeUSD(price.partnerFee, destUSD);\n const formattedFee = partnerFeeUSD\n ? formatFiatPrice(partnerFeeUSD.toNumber())\n : null;\n\n return {\n title: \"Swap Fees\",\n value: formattedFee === \"$0.00\" ? \"<$0.01\" : formattedFee,\n isLoading,\n tooltip: `Swap fees are set to ${price.partnerFee.toFixed(2)}% for this trade`,\n };\n}\n\nexport function constructNetworkFeesDetail({\n price,\n swapMode,\n isLoading,\n}: {\n price?: DeltaOrMarketPrice;\n swapMode: SwapMode;\n isLoading: boolean;\n}): DetailWithValue {\n let value: React.ReactNode = null;\n\n if (swapMode === \"delta\") {\n value = <div className=\"text-[#A5D712]\">Gasless</div>;\n } else if (price?.gasCostUSD !== undefined) {\n const formattedPrice = formatFiatPrice(Number(price.gasCostUSD));\n value = formattedPrice === \"$0.00\" ? \"<$0.01\" : formattedPrice;\n }\n\n return {\n title: \"Network Fees\",\n value,\n isLoading,\n tooltip:\n \"Those fees are paid to validators, Velora and its partners don't control this fee\",\n };\n}\n"],"mappings":";;;;;AAOA,SAAgBM,EAAwB,EACtCC,UACAC,gBAI8B;CAG9B,IAAI,CAACD,KAASA,EAAME,eAAe,GAAG;CAEtC,IAAMC,IAAUL,EAAaE,EAAM,GAAGA,EAAMI,kBAAkBJ,EAAMG;CACpE,IAAI,CAACA,GAAS;CAEd,IAAME,IAAgBT,EAAgBI,EAAME,YAAYC,EAAQ,EAC1DG,IAAeD,IACjBV,EAAgBU,EAAcE,UAAU,CAAC,GACzC;CAEJ,OAAO;EACLC,OAAO;EACPC,OAAOH,MAAiB,UAAU,WAAWA;EAC7CL;EACAS,SAAS,wBAAwBV,EAAME,WAAWS,QAAQ,EAAE,CAAA;EAC7D;;AAGH,SAAgBC,EAA2B,EACzCZ,UACAa,aACAZ,gBAKkB;CAClB,IAAIQ,IAAyB;CAE7B,IAAII,MAAa,SACfJ,IAAQ,kBAAC,OAAD;EAAK,WAAU;YAAiB;EAAa,CAAA;MAChD,IAAIT,GAAOgB,eAAeC,KAAAA,GAAW;EAC1C,IAAMC,IAAiBvB,EAAgBwB,OAAOnB,EAAMgB,WAAW,CAAC;EAChEP,IAAQS,MAAmB,UAAU,WAAWA;;CAGlD,OAAO;EACLV,OAAO;EACPC;EACAR;EACAS,SACE;EACH"}
1
+ {"version":3,"file":"fees.js","names":["DetailWithValue","SwapMode","formatFiatPrice","calculateFeeUSD","DeltaOrMarketPrice","isDeltaPrice","getPartnerFeePercent","price","partner","feePercent","partnerFee","constructSwapFeesDetail","isLoading","partnerFeePercent","destUSD","route","destination","output","amountUSD","partnerFeeUSD","formattedFee","toNumber","title","value","tooltip","toFixed","constructNetworkFeesDetail","swapMode","React","ReactNode","formattedPrice","Number","gasCostUSD"],"sources":["../../../src/core/swapDetails/fees.tsx"],"sourcesContent":["import type { DetailWithValue } from \"@/components/widget/Details/types\";\nimport type { SwapMode } from \"@/components/widget/SwapModeSwitcher/state/types\";\nimport { formatFiatPrice } from \"@/lib/utils/formatFiatPrice\";\nimport { calculateFeeUSD } from \"@/lib/utils/fee\";\nimport type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { isDeltaPrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\nfunction getPartnerFeePercent(price: DeltaOrMarketPrice): number {\n return isDeltaPrice(price) ? price.partner.feePercent : price.partnerFee;\n}\n\nexport function constructSwapFeesDetail({\n price,\n isLoading,\n}: {\n price?: DeltaOrMarketPrice;\n isLoading: boolean;\n}): DetailWithValue | undefined {\n // quit early if there are no fees or destUSD in price,\n // because we cannot calculate the fee\n if (!price) return;\n const partnerFeePercent = getPartnerFeePercent(price);\n if (partnerFeePercent === 0) return;\n\n const destUSD = isDeltaPrice(price)\n ? price.route.destination.output.amountUSD\n : price.destUSD;\n if (!destUSD) return;\n\n const partnerFeeUSD = calculateFeeUSD(partnerFeePercent, destUSD);\n const formattedFee = partnerFeeUSD\n ? formatFiatPrice(partnerFeeUSD.toNumber())\n : null;\n\n return {\n title: \"Swap Fees\",\n value: formattedFee === \"$0.00\" ? \"<$0.01\" : formattedFee,\n isLoading,\n tooltip: `Swap fees are set to ${partnerFeePercent.toFixed(2)}% for this trade`,\n };\n}\n\nexport function constructNetworkFeesDetail({\n price,\n swapMode,\n isLoading,\n}: {\n price?: DeltaOrMarketPrice;\n swapMode: SwapMode;\n isLoading: boolean;\n}): DetailWithValue {\n let value: React.ReactNode = null;\n\n if (swapMode === \"delta\") {\n value = <div className=\"text-[#A5D712]\">Gasless</div>;\n } else if (price && \"gasCostUSD\" in price) {\n const formattedPrice = formatFiatPrice(Number(price.gasCostUSD));\n value = formattedPrice === \"$0.00\" ? \"<$0.01\" : formattedPrice;\n }\n\n return {\n title: \"Network Fees\",\n value,\n isLoading,\n tooltip:\n \"Those fees are paid to validators, Velora and its partners don't control this fee\",\n };\n}\n"],"mappings":";;;;;AAOA,SAASM,EAAqBC,GAAmC;CAC/D,OAAOF,EAAaE,EAAM,GAAGA,EAAMC,QAAQC,aAAaF,EAAMG;;AAGhE,SAAgBC,EAAwB,EACtCJ,UACAK,gBAI8B;CAG9B,IAAI,CAACL,GAAO;CACZ,IAAMM,IAAoBP,EAAqBC,EAAM;CACrD,IAAIM,MAAsB,GAAG;CAE7B,IAAMC,IAAUT,EAAaE,EAAM,GAC/BA,EAAMQ,MAAMC,YAAYC,OAAOC,YAC/BX,EAAMO;CACV,IAAI,CAACA,GAAS;CAEd,IAAMK,IAAgBhB,EAAgBU,GAAmBC,EAAQ,EAC3DM,IAAeD,IACjBjB,EAAgBiB,EAAcE,UAAU,CAAC,GACzC;CAEJ,OAAO;EACLC,OAAO;EACPC,OAAOH,MAAiB,UAAU,WAAWA;EAC7CR;EACAY,SAAS,wBAAwBX,EAAkBY,QAAQ,EAAE,CAAA;EAC9D;;AAGH,SAAgBC,EAA2B,EACzCnB,UACAoB,aACAf,gBAKkB;CAClB,IAAIW,IAAyB;CAE7B,IAAII,MAAa,SACfJ,IAAQ,kBAAC,OAAD;EAAK,WAAU;YAAiB;EAAa,CAAA;MAChD,IAAIhB,KAAS,gBAAgBA,GAAO;EACzC,IAAMuB,IAAiB5B,EAAgB6B,OAAOxB,EAAMyB,WAAW,CAAC;EAChET,IAAQO,MAAmB,UAAU,WAAWA;;CAGlD,OAAO;EACLR,OAAO;EACPC;EACAX;EACAY,SACE;EACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"maxToPay.d.ts","sourceRoot":"","sources":["../../../src/core/swapDetails/maxToPay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAOlD,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,eAAe,EACf,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;CAC1B,GAAG,eAAe,GAAG,SAAS,CAkC9B"}
1
+ {"version":3,"file":"maxToPay.d.ts","sourceRoot":"","sources":["../../../src/core/swapDetails/maxToPay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAOlD,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,eAAe,EACf,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;CAC1B,GAAG,eAAe,GAAG,SAAS,CAqC9B"}
@@ -1,26 +1,27 @@
1
- import { toDecimalTrimmed as e } from "../../lib/utils/toDecimal.js";
2
- import { amountAfterSlippage as t } from "../../lib/utils/slippage.js";
3
- import { formatUnits as n } from "viem";
1
+ import { isDeltaPrice as e } from "../../hooks/swap/prices/delta/queries/useDeltaPriceQuery.js";
2
+ import { toDecimalTrimmed as t } from "../../lib/utils/toDecimal.js";
3
+ import { amountAfterSlippage as n } from "../../lib/utils/slippage.js";
4
+ import { formatUnits as r } from "viem";
4
5
  //#region src/core/swapDetails/maxToPay.tsx
5
- var r = "Maximum amount of token to pay to get the receiving amount while accounting for potential slippage.";
6
- function i({ price: i, slippagePercent: a, isLoading: o, tokenFrom: s, swapSide: c }) {
7
- if (c === "SELL") return;
8
- let l = "Maximum to Pay";
9
- if (!i || !s) return {
10
- title: l,
6
+ var i = "Maximum amount of token to pay to get the receiving amount while accounting for potential slippage.";
7
+ function a({ price: a, slippagePercent: o, isLoading: s, tokenFrom: c, swapSide: l }) {
8
+ if (l === "SELL") return;
9
+ let u = "Maximum to Pay";
10
+ if (!a || !c) return {
11
+ title: u,
11
12
  value: null,
12
- isLoading: o,
13
- tooltip: r
13
+ isLoading: s,
14
+ tooltip: i
14
15
  };
15
- let u = t(i.srcAmount, a, "BUY").toFixed(0);
16
+ let d = n(e(a) ? a.route.origin.input.amount : a.srcAmount, o, "BUY").toFixed(0);
16
17
  return {
17
- title: l,
18
- value: `${e(n(BigInt(u), s.decimals))} ${s.symbol}`,
19
- isLoading: o,
20
- tooltip: r
18
+ title: u,
19
+ value: `${t(r(BigInt(d), c.decimals))} ${c.symbol}`,
20
+ isLoading: s,
21
+ tooltip: i
21
22
  };
22
23
  }
23
24
  //#endregion
24
- export { i as constructMaxToPayDetail };
25
+ export { a as constructMaxToPayDetail };
25
26
 
26
27
  //# sourceMappingURL=maxToPay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"maxToPay.js","names":["DetailWithValue","DeltaOrMarketPrice","amountAfterSlippage","toDecimalTrimmed","Token","formatUnits","tooltip","constructMaxToPayDetail","price","slippagePercent","isLoading","tokenFrom","swapSide","title","value","maxSrcAmount","srcAmount","toFixed","maxSrcAmountUnit","BigInt","decimals","formattedMaxSrcAmount","symbol"],"sources":["../../../src/core/swapDetails/maxToPay.tsx"],"sourcesContent":["import type { DetailWithValue } from \"@/components/widget/Details/types\";\nimport type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { amountAfterSlippage } from \"@/lib/utils/slippage\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport { formatUnits } from \"viem\";\n\nconst tooltip =\n \"Maximum amount of token to pay to get the receiving amount while accounting for potential slippage.\";\n\nexport function constructMaxToPayDetail({\n price,\n slippagePercent,\n isLoading,\n tokenFrom,\n swapSide,\n}: {\n price?: DeltaOrMarketPrice;\n slippagePercent: number;\n isLoading: boolean;\n tokenFrom?: Token;\n swapSide: \"SELL\" | \"BUY\";\n}): DetailWithValue | undefined {\n // in case of SELL you pay exactly srcAmount\n if (swapSide === \"SELL\") return;\n\n const title = \"Maximum to Pay\";\n\n if (!price || !tokenFrom) {\n return {\n title,\n value: null,\n isLoading,\n tooltip,\n };\n }\n\n const maxSrcAmount = amountAfterSlippage(\n // amount after fee\n price.srcAmount,\n // +slippage=maxAmount to pay\n slippagePercent,\n \"BUY\"\n ).toFixed(0);\n const maxSrcAmountUnit = formatUnits(\n BigInt(maxSrcAmount),\n tokenFrom.decimals\n );\n const formattedMaxSrcAmount = toDecimalTrimmed(maxSrcAmountUnit);\n\n return {\n title,\n value: `${formattedMaxSrcAmount} ${tokenFrom.symbol}`,\n isLoading,\n tooltip,\n };\n}\n"],"mappings":";;;;AAQA,IAAMM,IACJ;AAEF,SAAgBC,EAAwB,EACtCC,UACAC,oBACAC,cACAC,cACAC,eAO8B;CAE9B,IAAIA,MAAa,QAAQ;CAEzB,IAAMC,IAAQ;CAEd,IAAI,CAACL,KAAS,CAACG,GACb,OAAO;EACLE;EACAC,OAAO;EACPJ;EACAJ;EACD;CAGH,IAAMS,IAAeb,EAEnBM,EAAMQ,WAENP,GACA,MACD,CAACQ,QAAQ,EAAE;CAOZ,OAAO;EACLJ;EACAC,OAAO,GAJqBX,EAJLE,EACvBc,OAAOJ,EAAa,EACpBJ,EAAUS,SAEmCF,CAInCG,CAAqB,GAAIV,EAAUW;EAC7CZ;EACAJ;EACD"}
1
+ {"version":3,"file":"maxToPay.js","names":["DetailWithValue","isDeltaPrice","DeltaOrMarketPrice","amountAfterSlippage","toDecimalTrimmed","Token","formatUnits","tooltip","constructMaxToPayDetail","price","slippagePercent","isLoading","tokenFrom","swapSide","title","value","srcAmount","route","origin","input","amount","maxSrcAmount","toFixed","maxSrcAmountUnit","BigInt","decimals","formattedMaxSrcAmount","symbol"],"sources":["../../../src/core/swapDetails/maxToPay.tsx"],"sourcesContent":["import type { DetailWithValue } from \"@/components/widget/Details/types\";\nimport { isDeltaPrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { amountAfterSlippage } from \"@/lib/utils/slippage\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport { formatUnits } from \"viem\";\n\nconst tooltip =\n \"Maximum amount of token to pay to get the receiving amount while accounting for potential slippage.\";\n\nexport function constructMaxToPayDetail({\n price,\n slippagePercent,\n isLoading,\n tokenFrom,\n swapSide,\n}: {\n price?: DeltaOrMarketPrice;\n slippagePercent: number;\n isLoading: boolean;\n tokenFrom?: Token;\n swapSide: \"SELL\" | \"BUY\";\n}): DetailWithValue | undefined {\n // in case of SELL you pay exactly srcAmount\n if (swapSide === \"SELL\") return;\n\n const title = \"Maximum to Pay\";\n\n if (!price || !tokenFrom) {\n return {\n title,\n value: null,\n isLoading,\n tooltip,\n };\n }\n\n const srcAmount = isDeltaPrice(price)\n ? price.route.origin.input.amount\n : price.srcAmount;\n const maxSrcAmount = amountAfterSlippage(\n // amount after fee\n srcAmount,\n // +slippage=maxAmount to pay\n slippagePercent,\n \"BUY\"\n ).toFixed(0);\n const maxSrcAmountUnit = formatUnits(\n BigInt(maxSrcAmount),\n tokenFrom.decimals\n );\n const formattedMaxSrcAmount = toDecimalTrimmed(maxSrcAmountUnit);\n\n return {\n title,\n value: `${formattedMaxSrcAmount} ${tokenFrom.symbol}`,\n isLoading,\n tooltip,\n };\n}\n"],"mappings":";;;;;AASA,IAAMO,IACJ;AAEF,SAAgBC,EAAwB,EACtCC,UACAC,oBACAC,cACAC,cACAC,eAO8B;CAE9B,IAAIA,MAAa,QAAQ;CAEzB,IAAMC,IAAQ;CAEd,IAAI,CAACL,KAAS,CAACG,GACb,OAAO;EACLE;EACAC,OAAO;EACPJ;EACAJ;EACD;CAMH,IAAMc,IAAelB,EAHHF,EAAaQ,EAAM,GACjCA,EAAMQ,MAAMC,OAAOC,MAAMC,SACzBX,EAAMO,WAKRN,GACA,MACD,CAACY,QAAQ,EAAE;CAOZ,OAAO;EACLR;EACAC,OAAO,GAJqBX,EAJLE,EACvBkB,OAAOH,EAAa,EACpBT,EAAUa,SAEmCF,CAInCG,CAAqB,GAAId,EAAUe;EAC7ChB;EACAJ;EACD"}
@@ -1,8 +1,8 @@
1
1
  import { DetailWithValue } from '../../../components/widget/Details/types';
2
- import { DeltaOrBridgePrice } from '../../../hooks/swap/prices/types';
2
+ import { DeltaPriceV2 } from '@velora-dex/sdk';
3
3
  import { Token } from '../../../tokens/state/types';
4
4
  export declare function constructMinReceivedForTwapDetail({ price, slippagePercent, numSlices, isLoading, tokenTo, swapSide, }: {
5
- price?: DeltaOrBridgePrice;
5
+ price?: DeltaPriceV2;
6
6
  slippagePercent: number;
7
7
  numSlices: number;
8
8
  isLoading: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"minimumReceiveable.d.ts","sourceRoot":"","sources":["../../../../src/core/twap/twapDetails/minimumReceiveable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAMlD,wBAAgB,iCAAiC,CAAC,EAChD,KAAK,EACL,eAAe,EACf,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B,GAAG,eAAe,GAAG,SAAS,CAuC9B"}
1
+ {"version":3,"file":"minimumReceiveable.d.ts","sourceRoot":"","sources":["../../../../src/core/twap/twapDetails/minimumReceiveable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAMlD,wBAAgB,iCAAiC,CAAC,EAChD,KAAK,EACL,eAAe,EACf,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B,GAAG,eAAe,GAAG,SAAS,CAuC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"minimumReceiveable.js","names":["DetailWithValue","DeltaOrBridgePrice","getDestAmountAfterFeeAndSlippage","toDecimalTrimmed","getTotalTwapAmount","Token","formatUnits","tooltip","constructMinReceivedForTwapDetail","price","slippagePercent","numSlices","isLoading","tokenTo","swapSide","title","value","minDestAmount","minDestAmountTotal","chunkWei","minDestAmountUnit","BigInt","decimals","formattedMinDestAmountUnit","symbol"],"sources":["../../../../src/core/twap/twapDetails/minimumReceiveable.ts"],"sourcesContent":["import type { DetailWithValue } from \"@/components/widget/Details/types\";\nimport type { DeltaOrBridgePrice } from \"@/hooks/swap/prices/types\";\nimport { getDestAmountAfterFeeAndSlippage } from \"@/lib/utils/price\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { getTotalTwapAmount } from \"@/lib/utils/twap\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport { formatUnits } from \"viem\";\n\nconst tooltip = \"The minimum amount of token to receive after slippage.\";\n\nexport function constructMinReceivedForTwapDetail({\n price,\n slippagePercent,\n numSlices,\n isLoading,\n tokenTo,\n swapSide,\n}: {\n price?: DeltaOrBridgePrice;\n slippagePercent: number;\n numSlices: number;\n isLoading: boolean;\n tokenTo?: Token;\n swapSide?: \"SELL\" | \"BUY\";\n}): DetailWithValue | undefined {\n // in case of BUY minReceived= exactly destAmount*numSlices\n if (swapSide === \"BUY\") return;\n\n const title = \"Minimum Receivable\";\n\n if (!price || !tokenTo) {\n return {\n title,\n value: null,\n isLoading,\n tooltip,\n };\n }\n\n const minDestAmount = getDestAmountAfterFeeAndSlippage({\n price,\n slippagePercent,\n });\n\n // minDestAmount*numSlices\n const minDestAmountTotal = getTotalTwapAmount({\n chunkWei: minDestAmount,\n numSlices,\n });\n\n const minDestAmountUnit = formatUnits(\n BigInt(minDestAmountTotal),\n tokenTo.decimals\n );\n\n const formattedMinDestAmountUnit = toDecimalTrimmed(minDestAmountUnit);\n\n return {\n title,\n value: `${formattedMinDestAmountUnit} ${tokenTo.symbol}`,\n isLoading,\n tooltip,\n };\n}\n"],"mappings":";;;;;AASA,IAAMO,IAAU;AAEhB,SAAgBC,EAAkC,EAChDC,UACAC,oBACAC,cACAC,cACAC,YACAC,eAQ8B;CAE9B,IAAIA,MAAa,OAAO;CAExB,IAAMC,IAAQ;CAEd,IAAI,CAACN,KAAS,CAACI,GACb,OAAO;EACLE;EACAC,OAAO;EACPJ;EACAL;EACD;CASH,IAAMW,IAAqBd,EAAmB;EAC5Ce,UAPoBjB,EAAiC;GACrDO;GACAC;GACD,CAIWO;EACVN;EACD,CAAC;CASF,OAAO;EACLI;EACAC,OAAO,GAJ0Bb,EALTG,EACxBe,OAAOH,EAAmB,EAC1BL,EAAQS,SAG0CF,CAIxCG,CAA0B,GAAIV,EAAQW;EAChDZ;EACAL;EACD"}
1
+ {"version":3,"file":"minimumReceiveable.js","names":["DetailWithValue","DeltaPriceV2","getDestAmountAfterFeeAndSlippage","toDecimalTrimmed","getTotalTwapAmount","Token","formatUnits","tooltip","constructMinReceivedForTwapDetail","price","slippagePercent","numSlices","isLoading","tokenTo","swapSide","title","value","minDestAmount","minDestAmountTotal","chunkWei","minDestAmountUnit","BigInt","decimals","formattedMinDestAmountUnit","symbol"],"sources":["../../../../src/core/twap/twapDetails/minimumReceiveable.ts"],"sourcesContent":["import type { DetailWithValue } from \"@/components/widget/Details/types\";\nimport type { DeltaPriceV2 } from \"@velora-dex/sdk\";\nimport { getDestAmountAfterFeeAndSlippage } from \"@/lib/utils/price\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { getTotalTwapAmount } from \"@/lib/utils/twap\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport { formatUnits } from \"viem\";\n\nconst tooltip = \"The minimum amount of token to receive after slippage.\";\n\nexport function constructMinReceivedForTwapDetail({\n price,\n slippagePercent,\n numSlices,\n isLoading,\n tokenTo,\n swapSide,\n}: {\n price?: DeltaPriceV2;\n slippagePercent: number;\n numSlices: number;\n isLoading: boolean;\n tokenTo?: Token;\n swapSide?: \"SELL\" | \"BUY\";\n}): DetailWithValue | undefined {\n // in case of BUY minReceived= exactly destAmount*numSlices\n if (swapSide === \"BUY\") return;\n\n const title = \"Minimum Receivable\";\n\n if (!price || !tokenTo) {\n return {\n title,\n value: null,\n isLoading,\n tooltip,\n };\n }\n\n const minDestAmount = getDestAmountAfterFeeAndSlippage({\n price,\n slippagePercent,\n });\n\n // minDestAmount*numSlices\n const minDestAmountTotal = getTotalTwapAmount({\n chunkWei: minDestAmount,\n numSlices,\n });\n\n const minDestAmountUnit = formatUnits(\n BigInt(minDestAmountTotal),\n tokenTo.decimals\n );\n\n const formattedMinDestAmountUnit = toDecimalTrimmed(minDestAmountUnit);\n\n return {\n title,\n value: `${formattedMinDestAmountUnit} ${tokenTo.symbol}`,\n isLoading,\n tooltip,\n };\n}\n"],"mappings":";;;;;AASA,IAAMO,IAAU;AAEhB,SAAgBC,EAAkC,EAChDC,UACAC,oBACAC,cACAC,cACAC,YACAC,eAQ8B;CAE9B,IAAIA,MAAa,OAAO;CAExB,IAAMC,IAAQ;CAEd,IAAI,CAACN,KAAS,CAACI,GACb,OAAO;EACLE;EACAC,OAAO;EACPJ;EACAL;EACD;CASH,IAAMW,IAAqBd,EAAmB;EAC5Ce,UAPoBjB,EAAiC;GACrDO;GACAC;GACD,CAIWO;EACVN;EACD,CAAC;CASF,OAAO;EACLI;EACAC,OAAO,GAJ0Bb,EALTG,EACxBe,OAAOH,EAAmB,EAC1BL,EAAQS,SAG0CF,CAIxCG,CAA0B,GAAIV,EAAQW;EAChDZ;EACAL;EACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOnPriceUpdates.js","names":["useWidgetEvents","useLayoutEffect","useRef","QueryObserver","queryClient","BridgePrice","DeltaPrice","OptimalRate","DeltaPriceQueryKeyPrefix","isDeltaPrice","DeltaPriceQueryKey","MarketPriceQueryKeyPrefix","MarketPriceQueryKey","useCurrentSwapPrice","PriceQueryUpdateParams","useTradeMode","useOnPriceUpdates","$","_c","onPriceChange","isSwapMode","t0","enabled","queryKey","onPriceChangeRef","t1","t2","current","shouldSubscribe","t3","t4","observer","notifyOnChangeProps","unsubscribe","subscribe","t5","data","price","isLoading","isFetching","isError","error","priceMode","params","event","name"],"sources":["../../../src/events/hooks/useOnPriceUpdates.ts"],"sourcesContent":["import { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport { QueryObserver } from \"@tanstack/react-query\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport type { BridgePrice, DeltaPrice, OptimalRate } from \"@velora-dex/sdk\";\nimport {\n DeltaPriceQueryKeyPrefix,\n isDeltaPrice,\n type DeltaPriceQueryKey,\n} from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport {\n MarketPriceQueryKeyPrefix,\n type MarketPriceQueryKey,\n} from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport { useCurrentSwapPrice } from \"@/hooks/swap/prices/useSwapPrices\";\nimport type { PriceQueryUpdateParams } from \"../types/priceChange\";\nimport { useTradeMode } from \"@/core/state/tradeModeAtom\";\n\nexport function useOnPriceUpdates() {\n const { onPriceChange } = useWidgetEvents();\n const isSwapMode = useTradeMode() === \"swap\";\n // no need to constantly refetch swap market & delta prices when not in swap mode,\n // otherwise it adds up to delta crosschain price fetches in limit mode,\n // and runs the risk of rate limiting by the API\n const { queryKey } = useCurrentSwapPrice({ enabled: isSwapMode });\n\n const onPriceChangeRef = useRef(onPriceChange);\n useLayoutEffect(() => {\n onPriceChangeRef.current = onPriceChange;\n }, [onPriceChange]);\n\n const shouldSubscribe = !!onPriceChange;\n useLayoutEffect(() => {\n if (!shouldSubscribe) return;\n const observer = new QueryObserver<\n DeltaPrice | BridgePrice | OptimalRate,\n Error,\n DeltaPrice | BridgePrice | OptimalRate,\n DeltaPrice | BridgePrice | OptimalRate,\n DeltaPriceQueryKey | MarketPriceQueryKey\n >(queryClient, {\n queryKey,\n enabled: false,\n notifyOnChangeProps: [\n \"data\",\n \"error\",\n \"isError\",\n \"isLoading\",\n \"isFetching\",\n ],\n });\n\n const unsubscribe = observer.subscribe(\n ({ data: price, isLoading, isFetching, isError, error }) => {\n let priceMode: \"market\" | \"delta\" | undefined;\n if (queryKey[0] === MarketPriceQueryKeyPrefix) {\n priceMode = \"market\";\n } else if (queryKey[0] === DeltaPriceQueryKeyPrefix) {\n priceMode = \"delta\";\n }\n // opt out for unknown queries\n if (!priceMode) return;\n\n const params: PriceQueryUpdateParams = {\n priceMode,\n isLoading,\n isFetching,\n isError,\n error,\n };\n\n // satisfy typescript narrowing\n if (price) {\n if (params.priceMode === \"delta\" && isDeltaPrice(price)) {\n params.price = price;\n } else if (params.priceMode === \"market\" && !isDeltaPrice(price)) {\n params.price = price;\n }\n }\n\n onPriceChangeRef.current?.({\n event: {\n name: \"PriceQueryUpdate\",\n params,\n },\n });\n }\n );\n\n return unsubscribe;\n }, [queryKey, shouldSubscribe]);\n}\n"],"mappings":";;;;;;;;;;AAkBA,SAAOgB,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACL,EAAAC,qBAA0BnB,GAAiB,EAC3CoB,IAAmBL,GAAc,KAAK,QAAOM;CAAA,AAAAJ,EAAA,OAAAG,IAImBC,IAAAJ,EAAA,MAAvBI,IAAA,EAAAC,SAAWF,GAAY,EAAAH,EAAA,KAAAG,GAAAH,EAAA,KAAAI;CAAhE,IAAA,EAAAE,gBAAqBV,EAAoBQ,EAAwB,EAEjEG,IAAyBtB,EAAOiB,EAAc,EAACM,GAAAC;CAC/CzB,AAD+CgB,EAAA,OAAAE,KAG7BM,IAAAR,EAAA,IAAAS,IAAAT,EAAA,OAFFQ,UAAA;EACdD,EAAgBG,UAAWR;IAC1BO,IAAA,CAACP,EAAc,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAQ,GAAAR,EAAA,KAAAS,IAFlBzB,EAAgBwB,GAEbC,EAAgB;CAEnB,IAAAE,IAAwB,CAAC,CAACT,GAAcU,GAAAC;CACxC7B,AADwCgB,EAAA,OAAAM,KAAAN,EAAA,OAAAW,KACxBC,UAAA;EACTD,OAsDH,OAnCkBG,IAlBC5B,EAMnBC,GAAa;GAAAmB;GAAAD,SAEJ;GAAKU,qBACO;IACnB;IACA;IACA;IACA;IACA;IAAY;GAEf,CAEmBD,CAAQG,WAC1BC,MAAA;GAAC,IAAA,EAAAC,MAAAC,GAAAC,cAAAC,eAAAC,YAAAC,aAAAN,GACKO;GAOJ,IANInB,EAAQ,OAAA,uBACVmB,IAAYA,WACHnB,EAAQ,OAAA,wBACjBmB,IAAYA,UAGV,CAACA,GAAS;GAEd,IAAAC,IAAuC;IAAAD;IAAAJ;IAAAC;IAAAC;IAAAC;IAMtC;GAWDjB,AARIa,MACEM,EAAMD,cAAe,WAAWjC,EAAa4B,EAAM,IAE5CM,EAAMD,cAAe,YAArB,CAAkCjC,EAAa4B,EAAM,MAD9DM,EAAMN,QAASA,IAMnBb,EAAgBG,UAAW,EAAAiB,OAClB;IAAAC,MACC;IAAkBF;IAE1B,EACD,CAAC;IAICV;IACNH,IAAA,CAACP,GAAUK,EAAgB,EAAAX,EAAA,KAAAM,GAAAN,EAAA,KAAAW,GAAAX,EAAA,KAAAY,GAAAZ,EAAA,KAAAa,MAAAD,IAAAZ,EAAA,IAAAa,IAAAb,EAAA,KA1D9BhB,EAAgB4B,GA0DbC,EAA4B"}
1
+ {"version":3,"file":"useOnPriceUpdates.js","names":["useWidgetEvents","useLayoutEffect","useRef","QueryObserver","queryClient","DeltaPriceV2","OptimalRate","DeltaPriceQueryKeyPrefix","isDeltaPrice","DeltaPriceQueryKey","MarketPriceQueryKeyPrefix","MarketPriceQueryKey","useCurrentSwapPrice","PriceQueryUpdateParams","useTradeMode","useOnPriceUpdates","$","_c","onPriceChange","isSwapMode","t0","enabled","queryKey","onPriceChangeRef","t1","t2","current","shouldSubscribe","t3","t4","observer","notifyOnChangeProps","unsubscribe","subscribe","t5","data","price","isLoading","isFetching","isError","error","priceMode","params","event","name"],"sources":["../../../src/events/hooks/useOnPriceUpdates.ts"],"sourcesContent":["import { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport { QueryObserver } from \"@tanstack/react-query\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport type { DeltaPriceV2, OptimalRate } from \"@velora-dex/sdk\";\nimport {\n DeltaPriceQueryKeyPrefix,\n isDeltaPrice,\n type DeltaPriceQueryKey,\n} from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport {\n MarketPriceQueryKeyPrefix,\n type MarketPriceQueryKey,\n} from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport { useCurrentSwapPrice } from \"@/hooks/swap/prices/useSwapPrices\";\nimport type { PriceQueryUpdateParams } from \"../types/priceChange\";\nimport { useTradeMode } from \"@/core/state/tradeModeAtom\";\n\nexport function useOnPriceUpdates() {\n const { onPriceChange } = useWidgetEvents();\n const isSwapMode = useTradeMode() === \"swap\";\n // no need to constantly refetch swap market & delta prices when not in swap mode,\n // otherwise it adds up to delta crosschain price fetches in limit mode,\n // and runs the risk of rate limiting by the API\n const { queryKey } = useCurrentSwapPrice({ enabled: isSwapMode });\n\n const onPriceChangeRef = useRef(onPriceChange);\n useLayoutEffect(() => {\n onPriceChangeRef.current = onPriceChange;\n }, [onPriceChange]);\n\n const shouldSubscribe = !!onPriceChange;\n useLayoutEffect(() => {\n if (!shouldSubscribe) return;\n const observer = new QueryObserver<\n DeltaPriceV2 | OptimalRate,\n Error,\n DeltaPriceV2 | OptimalRate,\n DeltaPriceV2 | OptimalRate,\n DeltaPriceQueryKey | MarketPriceQueryKey\n >(queryClient, {\n queryKey,\n enabled: false,\n notifyOnChangeProps: [\n \"data\",\n \"error\",\n \"isError\",\n \"isLoading\",\n \"isFetching\",\n ],\n });\n\n const unsubscribe = observer.subscribe(\n ({ data: price, isLoading, isFetching, isError, error }) => {\n let priceMode: \"market\" | \"delta\" | undefined;\n if (queryKey[0] === MarketPriceQueryKeyPrefix) {\n priceMode = \"market\";\n } else if (queryKey[0] === DeltaPriceQueryKeyPrefix) {\n priceMode = \"delta\";\n }\n // opt out for unknown queries\n if (!priceMode) return;\n\n const params: PriceQueryUpdateParams = {\n priceMode,\n isLoading,\n isFetching,\n isError,\n error,\n };\n\n // satisfy typescript narrowing\n if (price) {\n if (params.priceMode === \"delta\" && isDeltaPrice(price)) {\n params.price = price;\n } else if (params.priceMode === \"market\" && !isDeltaPrice(price)) {\n params.price = price;\n }\n }\n\n onPriceChangeRef.current?.({\n event: {\n name: \"PriceQueryUpdate\",\n params,\n },\n });\n }\n );\n\n return unsubscribe;\n }, [queryKey, shouldSubscribe]);\n}\n"],"mappings":";;;;;;;;;;AAkBA,SAAOe,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACL,EAAAC,qBAA0BlB,GAAiB,EAC3CmB,IAAmBL,GAAc,KAAK,QAAOM;CAAA,AAAAJ,EAAA,OAAAG,IAImBC,IAAAJ,EAAA,MAAvBI,IAAA,EAAAC,SAAWF,GAAY,EAAAH,EAAA,KAAAG,GAAAH,EAAA,KAAAI;CAAhE,IAAA,EAAAE,gBAAqBV,EAAoBQ,EAAwB,EAEjEG,IAAyBrB,EAAOgB,EAAc,EAACM,GAAAC;CAC/CxB,AAD+Ce,EAAA,OAAAE,KAG7BM,IAAAR,EAAA,IAAAS,IAAAT,EAAA,OAFFQ,UAAA;EACdD,EAAgBG,UAAWR;IAC1BO,IAAA,CAACP,EAAc,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAQ,GAAAR,EAAA,KAAAS,IAFlBxB,EAAgBuB,GAEbC,EAAgB;CAEnB,IAAAE,IAAwB,CAAC,CAACT,GAAcU,GAAAC;CACxC5B,AADwCe,EAAA,OAAAM,KAAAN,EAAA,OAAAW,KACxBC,UAAA;EACTD,OAsDH,OAnCkBG,IAlBC3B,EAMnBC,GAAa;GAAAkB;GAAAD,SAEJ;GAAKU,qBACO;IACnB;IACA;IACA;IACA;IACA;IAAY;GAEf,CAEmBD,CAAQG,WAC1BC,MAAA;GAAC,IAAA,EAAAC,MAAAC,GAAAC,cAAAC,eAAAC,YAAAC,aAAAN,GACKO;GAOJ,IANInB,EAAQ,OAAA,uBACVmB,IAAYA,WACHnB,EAAQ,OAAA,wBACjBmB,IAAYA,UAGV,CAACA,GAAS;GAEd,IAAAC,IAAuC;IAAAD;IAAAJ;IAAAC;IAAAC;IAAAC;IAMtC;GAWDjB,AARIa,MACEM,EAAMD,cAAe,WAAWjC,EAAa4B,EAAM,IAE5CM,EAAMD,cAAe,YAArB,CAAkCjC,EAAa4B,EAAM,MAD9DM,EAAMN,QAASA,IAMnBb,EAAgBG,UAAW,EAAAiB,OAClB;IAAAC,MACC;IAAkBF;IAE1B,EACD,CAAC;IAICV;IACNH,IAAA,CAACP,GAAUK,EAAgB,EAAAX,EAAA,KAAAM,GAAAN,EAAA,KAAAW,GAAAX,EAAA,KAAAY,GAAAZ,EAAA,KAAAa,MAAAD,IAAAZ,EAAA,IAAAa,IAAAb,EAAA,KA1D9Bf,EAAgB2B,GA0DbC,EAA4B"}
@@ -1,9 +1,9 @@
1
1
  import { MarkOptional } from 'ts-essentials';
2
2
  import { MakeEventArgs, WidgetEventCallbackConstructor, WidgetEventMinCallbackConstructor } from './common';
3
- import { BridgePrice, DeltaPrice, OptimalRate } from '@velora-dex/sdk';
3
+ import { DeltaPriceV2, OptimalRate } from '@velora-dex/sdk';
4
4
  type DeltaPriceUpdateParams = {
5
5
  priceMode: "delta";
6
- price: DeltaPrice | BridgePrice;
6
+ price: DeltaPriceV2;
7
7
  };
8
8
  type MarketPriceUpdateParams = {
9
9
  priceMode: "market";
@@ -1 +1 @@
1
- {"version":3,"file":"priceChange.d.ts","sourceRoot":"","sources":["../../../src/events/types/priceChange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EACV,aAAa,EACb,8BAA8B,EAC9B,iCAAiC,EAClC,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE5E,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;CACjC,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,SAAS,EAAE,QAAQ,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,KAAK,iBAAiB,GAAG,sBAAsB,GAAG,uBAAuB,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAC/C,iBAAiB,EACjB,OAAO,CACR,GAAG;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,iBAAiB,CAAC;IAC/B,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAEF,KAAK,oBAAoB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAGrD,MAAM,MAAM,aAAa,GACvB,8BAA8B,CAAC,oBAAoB,CAAC,CAAC;AAGvD,MAAM,MAAM,gBAAgB,GAC1B,iCAAiC,CAAC,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"priceChange.d.ts","sourceRoot":"","sources":["../../../src/events/types/priceChange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EACV,aAAa,EACb,8BAA8B,EAC9B,iCAAiC,EAClC,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEjE,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,SAAS,EAAE,QAAQ,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,KAAK,iBAAiB,GAAG,sBAAsB,GAAG,uBAAuB,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAC/C,iBAAiB,EACjB,OAAO,CACR,GAAG;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,iBAAiB,CAAC;IAC/B,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAEF,KAAK,oBAAoB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAGrD,MAAM,MAAM,aAAa,GACvB,8BAA8B,CAAC,oBAAoB,CAAC,CAAC;AAGvD,MAAM,MAAM,gBAAgB,GAC1B,iCAAiC,CAAC,oBAAoB,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { SwapMode } from '../../components/widget/SwapModeSwitcher/state/types';
2
2
  import { MakeEventArgs, SwapFormState, WidgetEventCallbackConstructor, WidgetEventMinCallbackConstructor } from './common';
3
3
  import { DeltaOrMarketPrice } from '../../hooks/swap/prices/types';
4
- import { BridgePrice, DeltaAuction, DeltaPrice, OptimalRate } from '@velora-dex/sdk';
4
+ import { DeltaAuction, DeltaPriceV2, OptimalRate } from '@velora-dex/sdk';
5
5
  import { Hash, TransactionReceipt } from 'viem';
6
6
  import { CallsReceipt } from '../../hooks/batch/useAwaitCalls';
7
7
  import { ReplaceTxResult } from '../../hooks/txs/mutations/useReplaceTx';
@@ -16,7 +16,7 @@ type SwapParamsMarket = SwapParamsBase & {
16
16
  };
17
17
  type SwapParamsDelta = SwapParamsBase & {
18
18
  swapMode: "delta";
19
- price: DeltaPrice | BridgePrice;
19
+ price: DeltaPriceV2;
20
20
  };
21
21
  type SwapParamsMarketTxSent = SwapParamsMarket & {
22
22
  txHash: Hash;