@aurora-is-near/intents-swap-widget 3.22.0 → 3.24.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 (110) hide show
  1. package/dist/{config-Opy5ppbU.js → config-Bg5hUlJL.js} +183 -183
  2. package/dist/config-Bg5hUlJL.js.map +1 -0
  3. package/dist/config.d.ts +1 -10
  4. package/dist/config.js +1 -1
  5. package/dist/errors.js +1 -1
  6. package/dist/ext/alchemy/index.js +1 -1
  7. package/dist/ext/index.js +1 -1
  8. package/dist/features/BalanceRpcLoader/TokenBalanceLoader.js +1 -1
  9. package/dist/features/BalanceRpcLoader/index.js +1 -1
  10. package/dist/features/BalanceRpcLoader/useTokenBalanceRpc.js +1 -1
  11. package/dist/features/ChainsDropdown/index.js +1 -1
  12. package/dist/features/ChainsSelector/index.js +1 -1
  13. package/dist/features/DepositMethodSwitcher.js +1 -1
  14. package/dist/features/ErrorBoundary.js +1 -1
  15. package/dist/features/ExternalDeposit.js +1 -1
  16. package/dist/features/SendAddress/index.js +1 -1
  17. package/dist/features/SendAddress/useNotification.js +1 -1
  18. package/dist/features/SubmitButton/index.js +1 -1
  19. package/dist/features/SuccessScreen/index.js +1 -1
  20. package/dist/features/SuccessScreen/useSummaryItemsCount.js +1 -1
  21. package/dist/features/SwapDirectionSwitcher.js +1 -1
  22. package/dist/features/SwapQuote/SwapQuote.js +1 -1
  23. package/dist/features/SwapQuote/index.js +1 -1
  24. package/dist/features/TokenInput/TokenInput.js +1 -1
  25. package/dist/features/TokenInput/TokenInputEmpty.js +1 -1
  26. package/dist/features/TokenInput/TokenInputSource.js +1 -1
  27. package/dist/features/TokenInput/TokenInputTarget.js +1 -1
  28. package/dist/features/TokenInput/WalletBalance.js +1 -1
  29. package/dist/features/TokenInput/hooks/index.js +1 -1
  30. package/dist/features/TokenInput/hooks/useTokenInputBalance.js +1 -1
  31. package/dist/features/TokenInput/index.js +1 -1
  32. package/dist/features/TokensList/TokenItem.js +1 -1
  33. package/dist/features/TokensList/TokensList.js +1 -1
  34. package/dist/features/TokensList/index.js +1 -1
  35. package/dist/features/TokensModal.js +1 -1
  36. package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js +1 -1
  37. package/dist/features/WalletCompatibilityCheck/index.js +1 -1
  38. package/dist/features/index.js +1 -1
  39. package/dist/hooks/index.js +1 -1
  40. package/dist/hooks/useAllTokens.js +1 -1
  41. package/dist/hooks/useChains.js +1 -1
  42. package/dist/hooks/useCompatibilityCheck.js +1 -1
  43. package/dist/hooks/useDefaultToken.js +1 -1
  44. package/dist/hooks/useExternalDepositStatus/index.js +1 -1
  45. package/dist/hooks/useExternalDepositStatus/usePoaExternalDepositStatus.js +1 -1
  46. package/dist/hooks/useIntentsBalance.js +1 -1
  47. package/dist/hooks/useIsCompatibilityCheckRequired.js +1 -1
  48. package/dist/hooks/useMakeDepositAddress.js +1 -1
  49. package/dist/hooks/useMakeIntentsTransfer.js +1 -1
  50. package/dist/hooks/useMakeNEARFtTransferCall.js +1 -1
  51. package/dist/hooks/useMakeQuote.js +1 -1
  52. package/dist/hooks/useMakeQuoteTransfer.js +1 -1
  53. package/dist/hooks/useMakeTransfer.js +1 -1
  54. package/dist/hooks/useMergedBalance.js +1 -1
  55. package/dist/hooks/useSwitchChain.js +1 -1
  56. package/dist/hooks/useTheme.js +1 -1
  57. package/dist/hooks/useTokenInputPair.js +1 -1
  58. package/dist/hooks/useTokens.js +1 -1
  59. package/dist/hooks/useTokensFiltered.js +1 -1
  60. package/dist/hooks/useTokensIntentsUnique.js +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/machine/effects/index.js +1 -1
  63. package/dist/machine/effects/useAlchemyBalanceEffect.js +1 -1
  64. package/dist/machine/effects/useBalancesUpdateEffect.js +1 -1
  65. package/dist/machine/effects/useMakeQuoteEffect.js +1 -1
  66. package/dist/machine/effects/useSelectedTokensEffect.js +1 -1
  67. package/dist/machine/effects/useSetTokenBalanceEffect.js +1 -1
  68. package/dist/machine/effects/useSetTokenIntentsTargetEffect.js +1 -1
  69. package/dist/machine/effects/useWalletConnEffect.js +1 -1
  70. package/dist/machine/events/index.js +1 -1
  71. package/dist/machine/events/tokenSelect.js +1 -1
  72. package/dist/machine/events/validateInputAndMoveTo.js +1 -1
  73. package/dist/machine/events/validateInputs.js +1 -1
  74. package/dist/machine/index.js +1 -1
  75. package/dist/machine/snap.js +1 -1
  76. package/dist/machine/subscriptions/checkers/isSendAddressAsConnected.js +1 -1
  77. package/dist/machine/subscriptions/index.js +1 -1
  78. package/dist/theme/ThemeProvider.js +1 -1
  79. package/dist/types/chain.d.ts +4 -0
  80. package/dist/types/config.d.ts +2 -5
  81. package/dist/types/widget.d.ts +1 -0
  82. package/dist/types/widget.js +2 -0
  83. package/dist/types/widget.js.map +1 -0
  84. package/dist/utils/intents/signers/near.js +1 -1
  85. package/dist/utils/intents/signers/privy.js +1 -1
  86. package/dist/utils/near/getNearNep141StorageBalance.js +1 -1
  87. package/dist/widgets/Widget/WidgetContent.d.ts +6 -4
  88. package/dist/widgets/Widget/WidgetContent.js +30 -24
  89. package/dist/widgets/Widget/WidgetContent.js.map +1 -1
  90. package/dist/widgets/WidgetDeposit/WidgetDepositContent.js +65 -63
  91. package/dist/widgets/WidgetDeposit/WidgetDepositContent.js.map +1 -1
  92. package/dist/widgets/WidgetDeposit/WidgetDepositSkeleton.js +1 -1
  93. package/dist/widgets/WidgetSwap/WidgetSwapContent.js +59 -53
  94. package/dist/widgets/WidgetSwap/WidgetSwapContent.js.map +1 -1
  95. package/dist/widgets/WidgetSwap/WidgetSwapSkeleton.js +1 -1
  96. package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js +79 -77
  97. package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js.map +1 -1
  98. package/dist/widgets/WidgetWithdraw/WidgetWithdrawSkeleton.js +1 -1
  99. package/package.json +1 -1
  100. package/src/config.tsx +0 -5
  101. package/src/machine/effects/useSelectedTokensEffect.ts +7 -4
  102. package/src/types/chain.ts +5 -0
  103. package/src/types/config.ts +3 -4
  104. package/src/types/widget.ts +1 -0
  105. package/src/widgets/Widget/WidgetContent.tsx +19 -7
  106. package/src/widgets/WidgetDeposit/WidgetDeposit.test.tsx +0 -4
  107. package/src/widgets/WidgetDeposit/WidgetDepositContent.tsx +7 -3
  108. package/src/widgets/WidgetSwap/WidgetSwapContent.tsx +19 -4
  109. package/src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx +5 -3
  110. package/dist/config-Opy5ppbU.js.map +0 -1
@@ -1,9 +1,9 @@
1
- import { jsx as t, jsxs as w } from "react/jsx-runtime";
2
- import { useState as _, useEffect as b } from "react";
3
- import { useTokenModal as N } from "../../hooks/useTokenModal.js";
4
- import { WidgetWithdrawSkeleton as y } from "./WidgetWithdrawSkeleton.js";
5
- import { useTypedTranslation as O } from "../../localisation.js";
6
- import { b as Q, u as j, y as q, n as F, c as U, p as T, o as K, S as P } from "../../config-Opy5ppbU.js";
1
+ import { jsx as t, jsxs as g } from "react/jsx-runtime";
2
+ import { useState as w, useEffect as _ } from "react";
3
+ import { useTokenModal as D } from "../../hooks/useTokenModal.js";
4
+ import { WidgetWithdrawSkeleton as b } from "./WidgetWithdrawSkeleton.js";
5
+ import { useTypedTranslation as N } from "../../localisation.js";
6
+ import { b as O, u as Q, y as j, n as q, c as U, p as y, o as F, S as K } from "../../config-Bg5hUlJL.js";
7
7
  import "@tanstack/react-query";
8
8
  import "@headlessui/react";
9
9
  import "@material-symbols-svg/react-rounded/icons/chevron-left";
@@ -12,17 +12,17 @@ import "../../features/ChainsDropdown/ChainItem.js";
12
12
  import "../../utils/cn.js";
13
13
  import "../../constants/chains.js";
14
14
  import { notReachable as r } from "../../utils/notReachable.js";
15
- import { SendAddress as z } from "../../features/SendAddress/index.js";
16
- import { SuccessScreen as G } from "../../features/SuccessScreen/index.js";
17
- import { TokensModal as H } from "../../features/TokensModal.js";
18
- import { DirectionSwitcher as J } from "../../components/DirectionSwitcher.js";
15
+ import { SendAddress as P } from "../../features/SendAddress/index.js";
16
+ import { SuccessScreen as z } from "../../features/SuccessScreen/index.js";
17
+ import { TokensModal as G } from "../../features/TokensModal.js";
18
+ import { DirectionSwitcher as H } from "../../components/DirectionSwitcher.js";
19
19
  import "ethers";
20
20
  import "../../machine/machine.js";
21
- import { fireEvent as S } from "../../machine/events/utils/fireEvent.js";
21
+ import { fireEvent as T } from "../../machine/events/utils/fireEvent.js";
22
22
  import "qrcode.react";
23
23
  import "@defuse-protocol/one-click-sdk-typescript";
24
24
  import "@material-symbols-svg/react-rounded/icons/progress-activity";
25
- import { isDebug as L } from "../../utils/checkers/isDebug.js";
25
+ import { isDebug as J } from "../../utils/checkers/isDebug.js";
26
26
  import "viem";
27
27
  import "zod";
28
28
  import "../../utils/near/rpc.js";
@@ -35,15 +35,15 @@ import "../../index-xuotMAFm.js";
35
35
  import "axios";
36
36
  import "../../network.js";
37
37
  import "viem/chains";
38
- import { useTokenInputPair as V } from "../../hooks/useTokenInputPair.js";
39
- import { useIsCompatibilityCheckRequired as X } from "../../hooks/useIsCompatibilityCheckRequired.js";
38
+ import { useTokenInputPair as L } from "../../hooks/useTokenInputPair.js";
39
+ import { useIsCompatibilityCheckRequired as V } from "../../hooks/useIsCompatibilityCheckRequired.js";
40
40
  import "browser-or-node";
41
- import { Card as C } from "../../components/Card.js";
41
+ import { Card as S } from "../../components/Card.js";
42
42
  import "@material-symbols-svg/react-rounded/icons/close";
43
43
  import "@material-symbols-svg/react-rounded/icons/emergency";
44
44
  import "@material-symbols-svg/react-rounded/icons/error";
45
45
  import "@material-symbols-svg/react-rounded/icons/verified";
46
- import { BlockingError as Y } from "../../components/BlockingError.js";
46
+ import { BlockingError as X } from "../../components/BlockingError.js";
47
47
  import "copy-text-to-clipboard";
48
48
  import "@material-symbols-svg/react-rounded/icons/content-copy";
49
49
  import "../../components/Input.js";
@@ -53,28 +53,27 @@ import "@material-symbols-svg/react-rounded/icons/check-circle";
53
53
  import "../../components/ChainShortcut.js";
54
54
  import "@material-symbols-svg/react-rounded/icons/qr-code";
55
55
  import "@material-symbols-svg/react-rounded/icons/wallet";
56
- import { WalletCompatibilityCheck as Z } from "../../features/WalletCompatibilityCheck/index.js";
57
- const tt = ({
56
+ import { WalletCompatibilityCheck as Y } from "../../features/WalletCompatibilityCheck/index.js";
57
+ const et = ({
58
58
  providers: m,
59
- makeTransfer: x,
59
+ makeTransfer: C,
60
60
  onMsg: i,
61
- isLoading: W
61
+ isLoading: x
62
62
  }) => {
63
- const { t: a } = O(), { ctx: s } = Q(), { isDirectNearTokenWithdrawal: v } = j(), {
64
- chainsFilter: u,
65
- alchemyApiKey: I,
66
- refetchQuoteInterval: A,
67
- intentsAccountType: M,
68
- onWalletSignout: E
69
- } = q(), { status: d, refetch: R } = F(), { tokenModalOpen: o, updateTokenModalState: n } = N({ onMsg: i }), { onChangeAmount: k, onChangeToken: c, lastChangedInput: p } = V(), f = X(), [B, l] = _(!1);
70
- b(() => {
71
- f && l(!0);
72
- }, [f]);
73
- const [h, g] = _();
74
- b(() => {
75
- S("reset", { clearWalletAddress: !0 });
63
+ const { t: s } = N(), { ctx: n } = O(), { isDirectNearTokenWithdrawal: W } = Q(), {
64
+ alchemyApiKey: v,
65
+ refetchQuoteInterval: I,
66
+ intentsAccountType: A,
67
+ onWalletSignout: M
68
+ } = j(), { status: u, refetch: E } = q(), { tokenModalOpen: o, updateTokenModalState: a } = D({ onMsg: i }), { onChangeAmount: d, onChangeToken: c, lastChangedInput: p } = L(), k = V(), [R, l] = w(!1);
69
+ _(() => {
70
+ k && l(!0);
71
+ }, [k]);
72
+ const [f, h] = w();
73
+ _(() => {
74
+ T("reset", { clearWalletAddress: !0 });
76
75
  }, []), U({
77
- debug: L(),
76
+ debug: J(),
78
77
  listenTo: [
79
78
  "checkWalletConnection",
80
79
  "setSourceTokenBalance",
@@ -87,26 +86,26 @@ const tt = ({
87
86
  {
88
87
  message: void 0,
89
88
  type: p === "target" ? "exact_out" : "exact_in",
90
- refetchQuoteInterval: A
89
+ refetchQuoteInterval: I
91
90
  }
92
91
  ],
93
- ["setBalancesUsingAlchemyExt", { alchemyApiKey: I }]
92
+ ["setBalancesUsingAlchemyExt", { alchemyApiKey: v }]
94
93
  ]
95
94
  });
96
- const D = () => {
97
- S("reset", { clearWalletAddress: !1, keepSelectedTokens: !0 });
95
+ const B = () => {
96
+ T("reset", { clearWalletAddress: !1, keepSelectedTokens: !0 });
98
97
  };
99
- if (W || d !== "error" && !s.sourceToken)
100
- return /* @__PURE__ */ t(y, {});
101
- if (B)
98
+ if (x || u !== "error" && !n.sourceToken)
99
+ return /* @__PURE__ */ t(b, {});
100
+ if (R)
102
101
  return /* @__PURE__ */ t(
103
- Z,
102
+ Y,
104
103
  {
105
104
  providers: m,
106
105
  onMsg: (e) => {
107
106
  switch (e.type) {
108
107
  case "on_sign_out":
109
- E?.(M), l(!1);
108
+ M?.(A), l(!1);
110
109
  break;
111
110
  case "on_close":
112
111
  l(!1);
@@ -117,17 +116,17 @@ const tt = ({
117
116
  }
118
117
  }
119
118
  );
120
- if (s.state === "transfer_success" && h)
119
+ if (n.state === "transfer_success" && f)
121
120
  return /* @__PURE__ */ t(
122
- G,
121
+ z,
123
122
  {
124
123
  showTargetToken: !0,
125
- title: a("transfer.success.withdrawal.title", "Withdrawal successful"),
126
- ...h,
124
+ title: s("transfer.success.withdrawal.title", "Withdrawal successful"),
125
+ ...f,
127
126
  onMsg: (e) => {
128
127
  switch (e.type) {
129
128
  case "on_dismiss_success":
130
- g(void 0), D();
129
+ h(void 0), B();
131
130
  break;
132
131
  default:
133
132
  r(e.type);
@@ -135,47 +134,50 @@ const tt = ({
135
134
  }
136
135
  }
137
136
  );
138
- switch (d) {
137
+ switch (u) {
139
138
  case "error":
140
139
  return /* @__PURE__ */ t(
141
- Y,
140
+ X,
142
141
  {
143
142
  message: "Couldn't load tokens list.",
144
- onClickRetry: R
143
+ onClickRetry: E
145
144
  }
146
145
  );
147
146
  case "success":
148
147
  return o !== "none" ? /* @__PURE__ */ t(
149
- H,
148
+ G,
150
149
  {
151
150
  showBalances: !0,
152
151
  variant: o,
153
152
  showChainsSelector: o === "target",
154
153
  groupTokens: !1,
155
- chainsFilter: o === "source" ? u.source : u.target,
154
+ chainsFilter: o === "source" ? {
155
+ intents: "with-balance",
156
+ external: "none"
157
+ } : { intents: "none", external: "all" },
156
158
  onMsg: (e) => {
157
159
  switch (e.type) {
158
160
  case "on_select_token":
159
- c(o, e.token), n("none"), i?.({
161
+ c(o, e.token), a("none"), i?.({
160
162
  type: e.type,
161
163
  token: e.token,
162
164
  variant: o
163
165
  });
164
166
  break;
165
167
  case "on_dismiss_tokens_modal":
166
- n("none");
168
+ a("none");
167
169
  break;
168
170
  default:
169
171
  r(e);
170
172
  }
171
173
  }
172
174
  }
173
- ) : /* @__PURE__ */ w("div", { className: "gap-sw-2xl relative flex flex-col", children: [
174
- /* @__PURE__ */ w("div", { className: "gap-[10px] relative flex flex-col", children: [
175
- /* @__PURE__ */ t(C, { padding: "none", children: /* @__PURE__ */ t(
176
- T.Source,
175
+ ) : /* @__PURE__ */ g("div", { className: "gap-sw-2xl relative flex flex-col", children: [
176
+ /* @__PURE__ */ g("div", { className: "gap-[10px] relative flex flex-col", children: [
177
+ /* @__PURE__ */ t(S, { padding: "none", children: /* @__PURE__ */ t(
178
+ y.Source,
177
179
  {
178
- heading: a(
180
+ heading: s(
179
181
  "tokenInput.heading.source.withdraw",
180
182
  "Withdraw token"
181
183
  ),
@@ -186,10 +188,10 @@ const tt = ({
186
188
  c("source", e.token);
187
189
  break;
188
190
  case "on_change_amount":
189
- k("source", e.amount);
191
+ d("source", e.amount);
190
192
  break;
191
193
  case "on_click_select_token":
192
- n("source");
194
+ a("source");
193
195
  break;
194
196
  default:
195
197
  r(e);
@@ -197,11 +199,11 @@ const tt = ({
197
199
  }
198
200
  }
199
201
  ) }),
200
- /* @__PURE__ */ t(J, { isEnabled: !1 }),
201
- /* @__PURE__ */ t(C, { padding: "none", children: /* @__PURE__ */ t(
202
- T.Target,
202
+ /* @__PURE__ */ t(H, { isEnabled: !1 }),
203
+ /* @__PURE__ */ t(S, { padding: "none", children: /* @__PURE__ */ t(
204
+ y.Target,
203
205
  {
204
- heading: a(
206
+ heading: s(
205
207
  "tokenInput.heading.target.withdraw",
206
208
  "Receive token"
207
209
  ),
@@ -212,10 +214,10 @@ const tt = ({
212
214
  c("target", e.token);
213
215
  break;
214
216
  case "on_change_amount":
215
- k("target", e.amount);
217
+ d("target", e.amount);
216
218
  break;
217
219
  case "on_click_select_token":
218
- n("target");
220
+ a("target");
219
221
  break;
220
222
  default:
221
223
  r(e);
@@ -224,8 +226,8 @@ const tt = ({
224
226
  }
225
227
  ) })
226
228
  ] }),
227
- !!s.walletAddress && s.targetToken && !s.targetToken.isIntent && /* @__PURE__ */ t(
228
- z,
229
+ !!n.walletAddress && n.targetToken && !n.targetToken.isIntent && /* @__PURE__ */ t(
230
+ P,
229
231
  {
230
232
  onMsg: (e) => {
231
233
  switch (e.type) {
@@ -237,25 +239,25 @@ const tt = ({
237
239
  }
238
240
  }
239
241
  ),
240
- !v && /* @__PURE__ */ t(K, {}),
242
+ !W && /* @__PURE__ */ t(F, {}),
241
243
  /* @__PURE__ */ t(
242
- P,
244
+ K,
243
245
  {
244
246
  providers: m,
245
- makeTransfer: x,
246
- label: a("submit.active.withdraw", "Swap & withdraw"),
247
+ makeTransfer: C,
248
+ label: s("submit.active.withdraw", "Swap & withdraw"),
247
249
  onSuccess: (e) => {
248
- g(e), i?.({ type: "on_transfer_success" });
250
+ h(e), i?.({ type: "on_transfer_success" });
249
251
  }
250
252
  }
251
253
  )
252
254
  ] });
253
255
  case "pending":
254
256
  default:
255
- return /* @__PURE__ */ t(y, {});
257
+ return /* @__PURE__ */ t(b, {});
256
258
  }
257
259
  };
258
260
  export {
259
- tt as WidgetWithdrawContent
261
+ et as WidgetWithdrawContent
260
262
  };
261
263
  //# sourceMappingURL=WidgetWithdrawContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetWithdrawContent.js","sources":["../../../src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { CommonWidgetProps, TokenInputType } from '../types';\nimport { useTokenModal } from '../../hooks/useTokenModal';\nimport { WidgetWithdrawSkeleton } from './WidgetWithdrawSkeleton';\nimport { useTypedTranslation } from '../../localisation';\nimport {\n SendAddress,\n SubmitButton,\n SuccessScreen,\n SwapQuote,\n TokenInput,\n TokensModal,\n} from '@/features';\n\nimport { BlockingError, Card, DirectionSwitcher } from '@/components';\nimport { WalletCompatibilityCheck } from '@/features/WalletCompatibilityCheck';\n\nimport { useStoreSideEffects } from '@/machine/effects';\nimport { useComputedSnapshot, useUnsafeSnapshot } from '@/machine/snap';\nimport { fireEvent } from '@/machine/events/utils/fireEvent';\n\nimport {\n useIsCompatibilityCheckRequired,\n useTokenInputPair,\n useTokens,\n} from '@/hooks';\nimport { useConfig } from '@/config';\n\nimport { isDebug, notReachable } from '@/utils';\n\nimport type { Token, TransferResult } from '@/types';\n\nexport type Msg =\n | { type: 'on_select_token'; token: Token; variant: TokenInputType }\n | { type: 'on_transfer_success' }\n | { type: 'on_tokens_modal_toggled'; isOpen: boolean };\n\nexport type Props = CommonWidgetProps<Msg>;\n\nexport const WidgetWithdrawContent = ({\n providers,\n makeTransfer,\n onMsg,\n isLoading,\n}: Props) => {\n const { t } = useTypedTranslation();\n const { ctx } = useUnsafeSnapshot();\n const { isDirectNearTokenWithdrawal } = useComputedSnapshot();\n const {\n chainsFilter,\n alchemyApiKey,\n refetchQuoteInterval,\n intentsAccountType,\n onWalletSignout,\n } = useConfig();\n\n const { status: tokensStatus, refetch: refetchTokens } = useTokens();\n const { tokenModalOpen, updateTokenModalState } = useTokenModal({ onMsg });\n const { onChangeAmount, onChangeToken, lastChangedInput } =\n useTokenInputPair();\n\n const isCompatibilityCheckRequired = useIsCompatibilityCheckRequired();\n const [isCompatibilityOpen, setIsCompatibilityOpen] = useState(false);\n\n useEffect(() => {\n if (isCompatibilityCheckRequired) {\n setIsCompatibilityOpen(true);\n }\n }, [isCompatibilityCheckRequired]);\n\n const [transferResult, setTransferResult] = useState<\n TransferResult | undefined\n >();\n\n useEffect(() => {\n fireEvent('reset', { clearWalletAddress: true });\n }, []);\n\n useStoreSideEffects({\n debug: isDebug(),\n listenTo: [\n 'checkWalletConnection',\n 'setSourceTokenBalance',\n [\n 'setDefaultSelectedTokens',\n { skipIntents: false, target: 'same-asset' },\n ],\n [\n 'makeQuote',\n {\n message: undefined,\n type: lastChangedInput === 'target' ? 'exact_out' : 'exact_in',\n refetchQuoteInterval,\n },\n ],\n ['setBalancesUsingAlchemyExt', { alchemyApiKey }],\n ],\n });\n\n const onBackToSwap = () => {\n fireEvent('reset', { clearWalletAddress: false, keepSelectedTokens: true });\n };\n\n if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {\n return <WidgetWithdrawSkeleton />;\n }\n\n if (isCompatibilityOpen) {\n return (\n <WalletCompatibilityCheck\n providers={providers}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_sign_out':\n onWalletSignout?.(intentsAccountType);\n setIsCompatibilityOpen(false);\n break;\n case 'on_close':\n setIsCompatibilityOpen(false);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n if (ctx.state === 'transfer_success' && !!transferResult) {\n return (\n <SuccessScreen\n showTargetToken\n title={t('transfer.success.withdrawal.title', 'Withdrawal successful')}\n {...transferResult}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_dismiss_success':\n setTransferResult(undefined);\n onBackToSwap();\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n switch (tokensStatus) {\n case 'error':\n return (\n <BlockingError\n message=\"Couldn't load tokens list.\"\n onClickRetry={refetchTokens}\n />\n );\n\n case 'success': {\n if (tokenModalOpen !== 'none') {\n return (\n <TokensModal\n showBalances\n variant={tokenModalOpen}\n showChainsSelector={tokenModalOpen === 'target'}\n groupTokens={false}\n chainsFilter={\n tokenModalOpen === 'source'\n ? chainsFilter.source\n : chainsFilter.target\n }\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken(tokenModalOpen, msg.token);\n updateTokenModalState('none');\n onMsg?.({\n type: msg.type,\n token: msg.token,\n variant: tokenModalOpen,\n });\n break;\n case 'on_dismiss_tokens_modal':\n updateTokenModalState('none');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n );\n }\n\n return (\n <div className=\"gap-sw-2xl relative flex flex-col\">\n <div className=\"gap-[10px] relative flex flex-col\">\n <Card padding=\"none\">\n <TokenInput.Source\n heading={t(\n 'tokenInput.heading.source.withdraw',\n 'Withdraw token',\n )}\n isChanging={lastChangedInput === 'source'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('source', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('source', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('source');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n\n <DirectionSwitcher isEnabled={false} />\n\n <Card padding=\"none\">\n <TokenInput.Target\n heading={t(\n 'tokenInput.heading.target.withdraw',\n 'Receive token',\n )}\n isChanging={lastChangedInput === 'target'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('target', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('target', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('target');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n </div>\n\n {!!ctx.walletAddress &&\n ctx.targetToken &&\n !ctx.targetToken.isIntent && (\n <SendAddress\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_change_send_address':\n break;\n default:\n notReachable(msg.type, { throwError: false });\n }\n }}\n />\n )}\n\n {!isDirectNearTokenWithdrawal && <SwapQuote />}\n\n <SubmitButton\n providers={providers}\n makeTransfer={makeTransfer}\n label={t('submit.active.withdraw', 'Swap & withdraw')}\n onSuccess={(transfer) => {\n setTransferResult(transfer);\n onMsg?.({ type: 'on_transfer_success' });\n }}\n />\n </div>\n );\n }\n\n case 'pending':\n default:\n return <WidgetWithdrawSkeleton />;\n }\n};\n"],"names":["WidgetWithdrawContent","providers","makeTransfer","onMsg","isLoading","t","useTypedTranslation","ctx","useUnsafeSnapshot","isDirectNearTokenWithdrawal","useComputedSnapshot","chainsFilter","alchemyApiKey","refetchQuoteInterval","intentsAccountType","onWalletSignout","useConfig","tokensStatus","refetchTokens","useTokens","tokenModalOpen","updateTokenModalState","useTokenModal","onChangeAmount","onChangeToken","lastChangedInput","useTokenInputPair","isCompatibilityCheckRequired","useIsCompatibilityCheckRequired","isCompatibilityOpen","setIsCompatibilityOpen","useState","useEffect","transferResult","setTransferResult","fireEvent","useStoreSideEffects","isDebug","onBackToSwap","WidgetWithdrawSkeleton","jsx","WalletCompatibilityCheck","msg","notReachable","SuccessScreen","BlockingError","TokensModal","jsxs","Card","TokenInput","DirectionSwitcher","SendAddress","SwapQuote","SubmitButton","transfer"],"mappings":"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"}
1
+ {"version":3,"file":"WidgetWithdrawContent.js","sources":["../../../src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { CommonWidgetProps, TokenInputType } from '../types';\nimport { useTokenModal } from '../../hooks/useTokenModal';\nimport { WidgetWithdrawSkeleton } from './WidgetWithdrawSkeleton';\nimport { useTypedTranslation } from '../../localisation';\nimport {\n SendAddress,\n SubmitButton,\n SuccessScreen,\n SwapQuote,\n TokenInput,\n TokensModal,\n} from '@/features';\n\nimport { BlockingError, Card, DirectionSwitcher } from '@/components';\nimport { WalletCompatibilityCheck } from '@/features/WalletCompatibilityCheck';\n\nimport { useStoreSideEffects } from '@/machine/effects';\nimport { useComputedSnapshot, useUnsafeSnapshot } from '@/machine/snap';\nimport { fireEvent } from '@/machine/events/utils/fireEvent';\n\nimport {\n useIsCompatibilityCheckRequired,\n useTokenInputPair,\n useTokens,\n} from '@/hooks';\nimport { useConfig } from '@/config';\n\nimport { isDebug, notReachable } from '@/utils';\n\nimport type { Token, TransferResult } from '@/types';\n\nexport type Msg =\n | { type: 'on_select_token'; token: Token; variant: TokenInputType }\n | { type: 'on_transfer_success' }\n | { type: 'on_tokens_modal_toggled'; isOpen: boolean };\n\nexport type Props = CommonWidgetProps<Msg>;\n\nexport const WidgetWithdrawContent = ({\n providers,\n makeTransfer,\n onMsg,\n isLoading,\n}: Props) => {\n const { t } = useTypedTranslation();\n const { ctx } = useUnsafeSnapshot();\n const { isDirectNearTokenWithdrawal } = useComputedSnapshot();\n const {\n alchemyApiKey,\n refetchQuoteInterval,\n intentsAccountType,\n onWalletSignout,\n } = useConfig();\n\n const { status: tokensStatus, refetch: refetchTokens } = useTokens();\n const { tokenModalOpen, updateTokenModalState } = useTokenModal({ onMsg });\n const { onChangeAmount, onChangeToken, lastChangedInput } =\n useTokenInputPair();\n\n const isCompatibilityCheckRequired = useIsCompatibilityCheckRequired();\n const [isCompatibilityOpen, setIsCompatibilityOpen] = useState(false);\n\n useEffect(() => {\n if (isCompatibilityCheckRequired) {\n setIsCompatibilityOpen(true);\n }\n }, [isCompatibilityCheckRequired]);\n\n const [transferResult, setTransferResult] = useState<\n TransferResult | undefined\n >();\n\n useEffect(() => {\n fireEvent('reset', { clearWalletAddress: true });\n }, []);\n\n useStoreSideEffects({\n debug: isDebug(),\n listenTo: [\n 'checkWalletConnection',\n 'setSourceTokenBalance',\n [\n 'setDefaultSelectedTokens',\n { skipIntents: false, target: 'same-asset' },\n ],\n [\n 'makeQuote',\n {\n message: undefined,\n type: lastChangedInput === 'target' ? 'exact_out' : 'exact_in',\n refetchQuoteInterval,\n },\n ],\n ['setBalancesUsingAlchemyExt', { alchemyApiKey }],\n ],\n });\n\n const onBackToSwap = () => {\n fireEvent('reset', { clearWalletAddress: false, keepSelectedTokens: true });\n };\n\n if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {\n return <WidgetWithdrawSkeleton />;\n }\n\n if (isCompatibilityOpen) {\n return (\n <WalletCompatibilityCheck\n providers={providers}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_sign_out':\n onWalletSignout?.(intentsAccountType);\n setIsCompatibilityOpen(false);\n break;\n case 'on_close':\n setIsCompatibilityOpen(false);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n if (ctx.state === 'transfer_success' && !!transferResult) {\n return (\n <SuccessScreen\n showTargetToken\n title={t('transfer.success.withdrawal.title', 'Withdrawal successful')}\n {...transferResult}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_dismiss_success':\n setTransferResult(undefined);\n onBackToSwap();\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n switch (tokensStatus) {\n case 'error':\n return (\n <BlockingError\n message=\"Couldn't load tokens list.\"\n onClickRetry={refetchTokens}\n />\n );\n\n case 'success': {\n if (tokenModalOpen !== 'none') {\n return (\n <TokensModal\n showBalances\n variant={tokenModalOpen}\n showChainsSelector={tokenModalOpen === 'target'}\n groupTokens={false}\n chainsFilter={\n tokenModalOpen === 'source'\n ? {\n intents: 'with-balance',\n external: 'none',\n }\n : { intents: 'none', external: 'all' }\n }\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken(tokenModalOpen, msg.token);\n updateTokenModalState('none');\n onMsg?.({\n type: msg.type,\n token: msg.token,\n variant: tokenModalOpen,\n });\n break;\n case 'on_dismiss_tokens_modal':\n updateTokenModalState('none');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n );\n }\n\n return (\n <div className=\"gap-sw-2xl relative flex flex-col\">\n <div className=\"gap-[10px] relative flex flex-col\">\n <Card padding=\"none\">\n <TokenInput.Source\n heading={t(\n 'tokenInput.heading.source.withdraw',\n 'Withdraw token',\n )}\n isChanging={lastChangedInput === 'source'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('source', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('source', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('source');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n\n <DirectionSwitcher isEnabled={false} />\n\n <Card padding=\"none\">\n <TokenInput.Target\n heading={t(\n 'tokenInput.heading.target.withdraw',\n 'Receive token',\n )}\n isChanging={lastChangedInput === 'target'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('target', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('target', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('target');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n </div>\n\n {!!ctx.walletAddress &&\n ctx.targetToken &&\n !ctx.targetToken.isIntent && (\n <SendAddress\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_change_send_address':\n break;\n default:\n notReachable(msg.type, { throwError: false });\n }\n }}\n />\n )}\n\n {!isDirectNearTokenWithdrawal && <SwapQuote />}\n\n <SubmitButton\n providers={providers}\n makeTransfer={makeTransfer}\n label={t('submit.active.withdraw', 'Swap & withdraw')}\n onSuccess={(transfer) => {\n setTransferResult(transfer);\n onMsg?.({ type: 'on_transfer_success' });\n }}\n />\n </div>\n );\n }\n\n case 'pending':\n default:\n return <WidgetWithdrawSkeleton />;\n }\n};\n"],"names":["WidgetWithdrawContent","providers","makeTransfer","onMsg","isLoading","t","useTypedTranslation","ctx","useUnsafeSnapshot","isDirectNearTokenWithdrawal","useComputedSnapshot","alchemyApiKey","refetchQuoteInterval","intentsAccountType","onWalletSignout","useConfig","tokensStatus","refetchTokens","useTokens","tokenModalOpen","updateTokenModalState","useTokenModal","onChangeAmount","onChangeToken","lastChangedInput","useTokenInputPair","isCompatibilityCheckRequired","useIsCompatibilityCheckRequired","isCompatibilityOpen","setIsCompatibilityOpen","useState","useEffect","transferResult","setTransferResult","fireEvent","useStoreSideEffects","isDebug","onBackToSwap","WidgetWithdrawSkeleton","jsx","WalletCompatibilityCheck","msg","notReachable","SuccessScreen","BlockingError","TokensModal","jsxs","Card","TokenInput","DirectionSwitcher","SendAddress","SwapQuote","SubmitButton","transfer"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
2
  import o from "clsx";
3
3
  import { SkeletonBox as l } from "../../components/SkeletonBox.js";
4
- import { y as x } from "../../config-Opy5ppbU.js";
4
+ import { y as x } from "../../config-Bg5hUlJL.js";
5
5
  const p = () => {
6
6
  const { hideTokenInputHeadings: s } = x();
7
7
  return /* @__PURE__ */ a("div", { className: "w-full gap-sw-xl relative flex flex-col", children: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurora-is-near/intents-swap-widget",
3
- "version": "3.22.0",
3
+ "version": "3.24.0",
4
4
  "description": "Provides components and hooks to build your own Intents swap widget",
5
5
  "author": "Maksim Vashchuk",
6
6
  "license": "MIT",
package/src/config.tsx CHANGED
@@ -46,11 +46,6 @@ const DEFAULT_CONFIG: WidgetConfig = {
46
46
  filterTokens: (tkn: Token) =>
47
47
  !DISABLED_TOKENS.includes(tkn.symbol.toLocaleLowerCase()),
48
48
 
49
- chainsFilter: {
50
- source: { external: 'wallet-supported', intents: 'none' },
51
- target: { external: 'all', intents: 'none' },
52
- },
53
-
54
49
  topChainShortcuts: (intentsAccountType) => {
55
50
  switch (intentsAccountType) {
56
51
  case 'evm':
@@ -38,8 +38,11 @@ export const useSelectedTokensEffect = ({
38
38
  const { tokens } = useTokens();
39
39
  const { ctx, state } = useUnsafeSnapshot();
40
40
  const { intentBalances } = useIntentsBalance();
41
- const { walletSupportedChains, chainsFilter, intentsAccountType } =
42
- useConfig();
41
+ const {
42
+ walletSupportedChains,
43
+ enableAccountAbstraction,
44
+ intentsAccountType,
45
+ } = useConfig();
43
46
 
44
47
  const highestIntentsToken = getTokenWithHighBalance({
45
48
  tokens,
@@ -58,7 +61,7 @@ export const useSelectedTokensEffect = ({
58
61
  ] as const;
59
62
  }
60
63
 
61
- if (chainsFilter.source.intents !== 'none' && !skipIntents) {
64
+ if (enableAccountAbstraction && !skipIntents) {
62
65
  if (!highestIntentsToken) {
63
66
  return [
64
67
  { token: undefined, status: 'loading' },
@@ -84,7 +87,7 @@ export const useSelectedTokensEffect = ({
84
87
  }, [
85
88
  tokens,
86
89
  skipIntents,
87
- chainsFilter,
90
+ enableAccountAbstraction,
88
91
  ctx.walletAddress,
89
92
  highestIntentsToken,
90
93
  walletSupportedChains,
@@ -13,4 +13,9 @@ export type ChainsFilter = {
13
13
  external: 'none' | 'all' | 'wallet-supported';
14
14
  };
15
15
 
16
+ export type ChainsFilters = {
17
+ target: ChainsFilter;
18
+ source: ChainsFilter;
19
+ };
20
+
16
21
  export type ChainRpcUrls = Partial<Record<Chains, string[]>>;
@@ -18,6 +18,9 @@ export type WidgetConfig = {
18
18
  appName: string;
19
19
  appIcon?: string;
20
20
 
21
+ // Account abstraction
22
+ enableAccountAbstraction?: boolean;
23
+
21
24
  // Connected wallet
22
25
  intentsAccountType?: IntentsAccountType;
23
26
  walletSupportedChains: ReadonlyArray<Chains>;
@@ -53,10 +56,6 @@ export type WidgetConfig = {
53
56
  topChainShortcuts?: (
54
57
  intentsAccountType?: IntentsAccountType,
55
58
  ) => [Chains, Chains, Chains, Chains];
56
- chainsFilter: {
57
- source: ChainsFilter;
58
- target: ChainsFilter;
59
- };
60
59
 
61
60
  // API
62
61
  fetchQuote?: (
@@ -0,0 +1 @@
1
+ export type WidgetType = 'swap' | 'deposit' | 'withdraw';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { useState } from 'react';
3
+ import { useEffect, useState } from 'react';
4
4
  import { WidgetTab, WidgetTabs } from '../../components/WidgetTabs';
5
5
  import {
6
6
  Msg as SwapMsg,
@@ -17,21 +17,24 @@ import {
17
17
  Props as WidgetWithdrawProps,
18
18
  Msg as WithdrawMsg,
19
19
  } from '../WidgetWithdraw/WidgetWithdrawContent';
20
-
21
- type WidgetType = 'swap' | 'deposit' | 'withdraw';
20
+ import { useConfig } from '../../config';
21
+ import { MakeTransferArgs } from '../../types';
22
+ import { WidgetType } from '../../types/widget';
22
23
 
23
24
  export type Props = Omit<
24
25
  WidgetSwapProps | WidgetDepositProps | WidgetWithdrawProps,
25
- 'onMsg'
26
+ 'onMsg' | 'makeTransfer'
26
27
  > & {
27
- onMsg?: (msg: Msg, widget: WidgetType) => void;
28
+ onMsg?: (msg: Msg, widgetType: WidgetType) => void;
29
+ makeTransfer?: (args: MakeTransferArgs, widgetType: WidgetType) => void;
28
30
  };
29
31
 
30
32
  type Msg = SwapMsg | DepositMsg | WithdrawMsg;
31
33
 
32
- export const WidgetContent = ({ onMsg, ...restProps }: Props) => {
34
+ export const WidgetContent = ({ onMsg, makeTransfer, ...restProps }: Props) => {
33
35
  const [isTabsVisible, setIsTabsVisible] = useState(true);
34
36
  const [activeTab, setActiveTab] = useState<WidgetTab>('swap');
37
+ const { enableAccountAbstraction } = useConfig();
35
38
 
36
39
  const switchTab = (tab: WidgetTab) => {
37
40
  setActiveTab(tab);
@@ -49,9 +52,15 @@ export const WidgetContent = ({ onMsg, ...restProps }: Props) => {
49
52
  onMsg?.(msg, widgetType);
50
53
  };
51
54
 
55
+ useEffect(() => {
56
+ if (!enableAccountAbstraction) {
57
+ setActiveTab('swap');
58
+ }
59
+ }, [enableAccountAbstraction]);
60
+
52
61
  return (
53
62
  <>
54
- {isTabsVisible && (
63
+ {enableAccountAbstraction && isTabsVisible && (
55
64
  <WidgetTabs activeTab={activeTab} onSelect={switchTab} />
56
65
  )}
57
66
 
@@ -61,6 +70,7 @@ export const WidgetContent = ({ onMsg, ...restProps }: Props) => {
61
70
  return (
62
71
  <WidgetSwapContent
63
72
  {...restProps}
73
+ makeTransfer={(args) => makeTransfer?.(args, 'swap')}
64
74
  onMsg={(msg) => {
65
75
  handleMsg(msg, 'swap');
66
76
  }}
@@ -72,6 +82,7 @@ export const WidgetContent = ({ onMsg, ...restProps }: Props) => {
72
82
  return (
73
83
  <WidgetDepositContent
74
84
  {...restProps}
85
+ makeTransfer={(args) => makeTransfer?.(args, 'deposit')}
75
86
  onMsg={(msg) => {
76
87
  handleMsg(msg, 'deposit');
77
88
  }}
@@ -83,6 +94,7 @@ export const WidgetContent = ({ onMsg, ...restProps }: Props) => {
83
94
  return (
84
95
  <WidgetWithdrawContent
85
96
  {...restProps}
97
+ makeTransfer={(args) => makeTransfer?.(args, 'withdraw')}
86
98
  onMsg={(msg) => {
87
99
  handleMsg(msg, 'withdraw');
88
100
  }}
@@ -39,10 +39,6 @@ const WidgetDepositSetup = () => {
39
39
  alchemyApiKey: 'test-alchemy-api-key',
40
40
  connectedWallets: { default: mockConnectedWalletAddress('evm') },
41
41
  walletSupportedChains: EVM_CHAINS,
42
- chainsFilter: {
43
- target: { intents: 'all', external: 'all' },
44
- source: { intents: 'all', external: 'all' },
45
- },
46
42
  };
47
43
 
48
44
  return (
@@ -50,7 +50,6 @@ export const WidgetDepositContent = ({
50
50
  const { t } = useTypedTranslation();
51
51
  const { isDirectNearTokenWithdrawal } = useComputedSnapshot();
52
52
  const {
53
- chainsFilter,
54
53
  alchemyApiKey,
55
54
  refetchQuoteInterval,
56
55
  intentsAccountType,
@@ -188,8 +187,13 @@ export const WidgetDepositContent = ({
188
187
  groupTokens={tokenModalOpen === 'source'}
189
188
  chainsFilter={
190
189
  tokenModalOpen === 'source'
191
- ? chainsFilter.source
192
- : chainsFilter.target
190
+ ? {
191
+ intents: 'none',
192
+ external: ctx.isDepositFromExternalWallet
193
+ ? 'all'
194
+ : 'wallet-supported',
195
+ }
196
+ : { intents: 'all', external: 'none' }
193
197
  }
194
198
  onMsg={(msg) => {
195
199
  switch (msg.type) {
@@ -30,7 +30,7 @@ import { useConfig } from '@/config';
30
30
 
31
31
  import { isDebug, notReachable } from '@/utils';
32
32
 
33
- import type { Token, TransferResult } from '@/types';
33
+ import type { ChainsFilter, Token, TransferResult } from '@/types';
34
34
 
35
35
  export type Msg =
36
36
  | { type: 'on_tokens_modal_toggled'; isOpen: boolean }
@@ -39,6 +39,18 @@ export type Msg =
39
39
 
40
40
  export type Props = CommonWidgetProps<Msg>;
41
41
 
42
+ const getSourceTokens = (
43
+ enableAccountAbstraction: boolean,
44
+ walletAddress?: string,
45
+ ): ChainsFilter => {
46
+ const enabledIntentsFilter = walletAddress ? 'with-balance' : 'all';
47
+
48
+ return {
49
+ intents: enableAccountAbstraction ? enabledIntentsFilter : 'none',
50
+ external: walletAddress ? 'wallet-supported' : 'all',
51
+ };
52
+ };
53
+
42
54
  export const WidgetSwapContent = ({
43
55
  providers,
44
56
  makeTransfer,
@@ -48,7 +60,7 @@ export const WidgetSwapContent = ({
48
60
  const { ctx } = useUnsafeSnapshot();
49
61
  const { isDirectNearTokenWithdrawal } = useComputedSnapshot();
50
62
  const {
51
- chainsFilter,
63
+ enableAccountAbstraction,
52
64
  alchemyApiKey,
53
65
  refetchQuoteInterval,
54
66
  intentsAccountType,
@@ -166,8 +178,11 @@ export const WidgetSwapContent = ({
166
178
  groupTokens={tokenModalOpen === 'source'}
167
179
  chainsFilter={
168
180
  tokenModalOpen === 'source'
169
- ? chainsFilter.source
170
- : chainsFilter.target
181
+ ? getSourceTokens(!!enableAccountAbstraction, ctx.walletAddress)
182
+ : {
183
+ intents: enableAccountAbstraction ? 'with-balance' : 'all',
184
+ external: 'all',
185
+ }
171
186
  }
172
187
  onMsg={(msg) => {
173
188
  switch (msg.type) {