@getpara/react-sdk-lite 2.0.0-dev.6 → 2.0.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 (172) hide show
  1. package/dist/cli/cli.mjs +26 -1
  2. package/dist/modal/ParaModal.js +16 -11
  3. package/dist/modal/components/Account/Account.js +42 -4
  4. package/dist/modal/components/Account/AccountHeader.js +10 -16
  5. package/dist/modal/components/Account/AccountProfile.d.ts +1 -1
  6. package/dist/modal/components/Account/AccountProfile.js +82 -210
  7. package/dist/modal/components/Account/AccountProfileEntry.d.ts +12 -0
  8. package/dist/modal/components/Account/AccountProfileEntry.js +220 -0
  9. package/dist/modal/components/Account/AccountProfileLinkOptions.js +15 -4
  10. package/dist/modal/components/Account/AccountSend/AccountSendAsset.d.ts +1 -0
  11. package/dist/modal/components/Account/AccountSend/AccountSendAsset.js +94 -0
  12. package/dist/modal/components/Account/AccountSend/AccountSendForm.d.ts +1 -0
  13. package/dist/modal/components/Account/AccountSend/AccountSendForm.js +343 -0
  14. package/dist/modal/components/Account/AccountSend/AccountSendNetwork.d.ts +1 -0
  15. package/dist/modal/components/Account/AccountSend/AccountSendNetwork.js +53 -0
  16. package/dist/modal/components/Account/AccountSend/AccountSendNoAssets.d.ts +1 -0
  17. package/dist/modal/components/Account/AccountSend/AccountSendNoAssets.js +56 -0
  18. package/dist/modal/components/Account/AccountSend/AssetNetwork.d.ts +5 -0
  19. package/dist/modal/components/Account/AccountSend/AssetNetwork.js +36 -0
  20. package/dist/modal/components/Account/AccountSend/context.d.ts +38 -0
  21. package/dist/modal/components/Account/AccountSend/context.js +418 -0
  22. package/dist/modal/components/Account/AccountSend/index.d.ts +4 -0
  23. package/dist/modal/components/Account/AccountSend/index.js +67 -0
  24. package/dist/modal/components/Account/AccountWallet.d.ts +1 -0
  25. package/dist/modal/components/Account/AccountWallet.js +133 -0
  26. package/dist/modal/components/{WalletSelect/WalletSelect.d.ts → Account/AccountWalletSelect.d.ts} +1 -1
  27. package/dist/modal/components/{WalletSelect/WalletSelect.js → Account/AccountWalletSelect.js} +20 -6
  28. package/dist/modal/components/AddFunds/AddFunds.js +3 -2
  29. package/dist/modal/components/AddFunds/AddFundsAsset.js +7 -6
  30. package/dist/modal/components/AddFunds/AddFundsContext.d.ts +5 -5
  31. package/dist/modal/components/AddFunds/AddFundsProvider.js +1 -2
  32. package/dist/modal/components/AddFunds/AddFundsSettings.js +13 -54
  33. package/dist/modal/components/AddFunds/common.d.ts +0 -14
  34. package/dist/modal/components/AddFunds/common.js +1 -8
  35. package/dist/modal/components/AuthInput/AuthInput.js +2 -2
  36. package/dist/modal/components/AwaitingAccountStep/AwaitingAccountStep.js +10 -1
  37. package/dist/modal/components/AwaitingWalletCreationStep/AwaitingWalletCreationStep.js +8 -33
  38. package/dist/modal/components/BiometricLoginStep/BiometricLoginStep.js +5 -2
  39. package/dist/modal/components/Body/Body.js +81 -48
  40. package/dist/modal/components/ChainSwitch/ChainSwitch.js +8 -5
  41. package/dist/modal/components/Controls/ChainSelect.js +1 -2
  42. package/dist/modal/components/Controls/Controls.js +1 -0
  43. package/dist/modal/components/ExternalWalletNetworkSelectStep/ExternalWalletNetworkSelectStep.d.ts +5 -1
  44. package/dist/modal/components/ExternalWalletNetworkSelectStep/ExternalWalletNetworkSelectStep.js +48 -19
  45. package/dist/modal/components/ExternalWalletStep/ExternalWalletStep.d.ts +5 -2
  46. package/dist/modal/components/ExternalWalletStep/ExternalWalletStep.js +63 -33
  47. package/dist/modal/components/ExternalWallets/ExternalWallets.d.ts +3 -1
  48. package/dist/modal/components/ExternalWallets/ExternalWallets.js +22 -12
  49. package/dist/modal/components/Footer/Footer.js +4 -5
  50. package/dist/modal/components/Header/Header.js +1 -2
  51. package/dist/modal/components/Header/hooks/useStepTitle.js +53 -37
  52. package/dist/modal/components/Hero/Hero.js +5 -3
  53. package/dist/modal/components/IFrameStep/IFrameStep.js +13 -12
  54. package/dist/modal/components/LoginDoneStep/LoginDoneStep.js +4 -1
  55. package/dist/modal/components/OAuth/FarcasterOAuthStep.js +6 -5
  56. package/dist/modal/components/OAuth/TelegramOAuthStep.js +34 -18
  57. package/dist/modal/components/OnRampComponents/AddingFunds.js +1 -1
  58. package/dist/modal/components/OnRampComponents/OnRampProviderButton.js +1 -2
  59. package/dist/modal/components/QuantityInput.d.ts +9 -0
  60. package/dist/modal/components/QuantityInput.js +91 -0
  61. package/dist/modal/components/SearchableButtonList.d.ts +34 -0
  62. package/dist/modal/components/SearchableButtonList.js +223 -0
  63. package/dist/modal/components/Setup2FAStep/Setup2FAStep.js +4 -1
  64. package/dist/modal/components/SwitchWalletsStep/SwitchWalletsStep.d.ts +1 -0
  65. package/dist/modal/components/SwitchWalletsStep/SwitchWalletsStep.js +10 -0
  66. package/dist/modal/components/VerificationCodeStep/VerificationCodeStep.js +13 -2
  67. package/dist/modal/components/Waiting/Waiting.d.ts +1 -1
  68. package/dist/modal/components/Waiting/Waiting.js +7 -2
  69. package/dist/modal/components/WalletCard/WalletCard.js +2 -3
  70. package/dist/modal/components/WalletSelectOld/WalletSelectOld.d.ts +7 -1
  71. package/dist/modal/components/WalletSelectOld/WalletSelectOld.js +33 -12
  72. package/dist/modal/components/common.d.ts +8 -10
  73. package/dist/modal/components/common.js +16 -36
  74. package/dist/modal/hooks/index.d.ts +4 -0
  75. package/dist/modal/hooks/index.js +5 -0
  76. package/dist/modal/hooks/useDebounce.d.ts +4 -0
  77. package/dist/modal/hooks/useDebounce.js +16 -0
  78. package/dist/modal/hooks/useFarcasterLogin.js +8 -1
  79. package/dist/modal/hooks/useTelegramLogin.js +4 -0
  80. package/dist/modal/index.d.ts +1 -1
  81. package/dist/modal/index.js +1 -1
  82. package/dist/modal/stores/modal/actions.js +9 -2
  83. package/dist/modal/stores/modal/useModalStore.d.ts +9 -1
  84. package/dist/modal/stores/modal/useModalStore.js +6 -2
  85. package/dist/modal/types/modalProps.d.ts +5 -1
  86. package/dist/modal/utils/authInputHelpers.js +1 -1
  87. package/dist/modal/utils/countryCodes.js +50 -1
  88. package/dist/modal/utils/getWalletDisplayName.js +1 -1
  89. package/dist/modal/utils/openPopup.d.ts +1 -1
  90. package/dist/modal/utils/openPopup.js +6 -2
  91. package/dist/modal/utils/renderTextWithLinks.d.ts +2 -0
  92. package/dist/modal/utils/renderTextWithLinks.js +34 -0
  93. package/dist/modal/utils/steps.d.ts +24 -3
  94. package/dist/modal/utils/steps.js +51 -5
  95. package/dist/modal/utils/stringFormatters.d.ts +2 -3
  96. package/dist/modal/utils/stringFormatters.js +11 -7
  97. package/dist/modal/utils/validatePortalOrigin.d.ts +2 -0
  98. package/dist/modal/utils/validatePortalOrigin.js +14 -0
  99. package/dist/provider/ParaProviderMin.js +13 -5
  100. package/dist/provider/actions/getEmbeddedAccount.d.ts +3 -2
  101. package/dist/provider/actions/getEmbeddedAccount.js +13 -4
  102. package/dist/provider/actions/index.d.ts +11 -9
  103. package/dist/provider/actions/index.js +4 -0
  104. package/dist/provider/components/CosmosWalletWrapper.js +3 -3
  105. package/dist/provider/components/EvmWalletWrapper.js +3 -3
  106. package/dist/provider/components/ExternalWalletWrapper.js +7 -1
  107. package/dist/provider/external/stubs/CosmosExternalWalletContextStub.js +3 -1
  108. package/dist/provider/external/stubs/EvmExternalWalletContextStub.js +3 -1
  109. package/dist/provider/external/stubs/SolanaExternalWalletContextStub.js +3 -1
  110. package/dist/provider/hooks/mutations/index.d.ts +2 -0
  111. package/dist/provider/hooks/mutations/index.js +4 -0
  112. package/dist/provider/hooks/mutations/useAddAuthMethod.d.ts +42 -0
  113. package/dist/provider/hooks/mutations/useAddAuthMethod.js +59 -0
  114. package/dist/provider/hooks/mutations/useClaimPregenWallets.d.ts +2 -2
  115. package/dist/provider/hooks/mutations/useCreateGuestWallets.d.ts +2 -2
  116. package/dist/provider/hooks/mutations/useCreatePregenWallet.d.ts +5 -5
  117. package/dist/provider/hooks/mutations/useCreatePregenWalletPerType.d.ts +2 -2
  118. package/dist/provider/hooks/mutations/useCreateWallet.d.ts +2 -2
  119. package/dist/provider/hooks/mutations/useCreateWalletPerType.d.ts +2 -2
  120. package/dist/provider/hooks/mutations/useEnable2fa.d.ts +2 -2
  121. package/dist/provider/hooks/mutations/useExportPrivateKey.d.ts +15 -0
  122. package/dist/provider/hooks/mutations/useExportPrivateKey.js +32 -0
  123. package/dist/provider/hooks/mutations/useHasPregenWallet.d.ts +2 -2
  124. package/dist/provider/hooks/mutations/useIssueJwt.d.ts +2 -2
  125. package/dist/provider/hooks/mutations/useKeepSessionAlive.d.ts +2 -2
  126. package/dist/provider/hooks/mutations/useLoginExternalWallet.d.ts +8 -2
  127. package/dist/provider/hooks/mutations/useLogout.d.ts +2 -2
  128. package/dist/provider/hooks/mutations/useResendVerificationCode.d.ts +2 -2
  129. package/dist/provider/hooks/mutations/useSetup2fa.d.ts +2 -2
  130. package/dist/provider/hooks/mutations/useSignMessage.d.ts +2 -2
  131. package/dist/provider/hooks/mutations/useSignTransaction.d.ts +2 -2
  132. package/dist/provider/hooks/mutations/useSignUpOrLogIn.d.ts +2 -2
  133. package/dist/provider/hooks/mutations/useSwitchWallets.d.ts +57 -0
  134. package/dist/provider/hooks/mutations/useSwitchWallets.js +30 -0
  135. package/dist/provider/hooks/mutations/useUpdatePregenWalletIdentifier.d.ts +2 -2
  136. package/dist/provider/hooks/mutations/useVerify2fa.d.ts +2 -2
  137. package/dist/provider/hooks/mutations/useVerifyExternalWallet.d.ts +18 -27
  138. package/dist/provider/hooks/mutations/useVerifyFarcaster.d.ts +5 -5
  139. package/dist/provider/hooks/mutations/useVerifyNewAccount.d.ts +14 -11
  140. package/dist/provider/hooks/mutations/useVerifyOAuth.d.ts +2 -2
  141. package/dist/provider/hooks/mutations/useVerifyTelegram.d.ts +5 -5
  142. package/dist/provider/hooks/mutations/useWaitForLogin.d.ts +2 -2
  143. package/dist/provider/hooks/mutations/useWaitForSignup.d.ts +2 -2
  144. package/dist/provider/hooks/mutations/useWaitForWalletCreation.d.ts +2 -2
  145. package/dist/provider/hooks/queries/index.d.ts +1 -0
  146. package/dist/provider/hooks/queries/index.js +2 -0
  147. package/dist/provider/hooks/queries/useAccount.js +58 -24
  148. package/dist/provider/hooks/queries/useLinkedAccounts.js +4 -2
  149. package/dist/provider/hooks/queries/useProfileBalance.d.ts +29 -0
  150. package/dist/provider/hooks/queries/useProfileBalance.js +65 -0
  151. package/dist/provider/hooks/utils/useAssetInfo.d.ts +3 -0
  152. package/dist/provider/hooks/utils/useAssetInfo.js +21 -0
  153. package/dist/provider/hooks/utils/useAutoSessionKeepAlive.js +1 -1
  154. package/dist/provider/hooks/utils/useEventListeners.js +22 -5
  155. package/dist/provider/hooks/utils/useModal.js +3 -3
  156. package/dist/provider/hooks/utils/useWalletState.d.ts +2 -1
  157. package/dist/provider/hooks/utils/useWalletState.js +2 -1
  158. package/dist/provider/providers/AccountLinkProvider.js +18 -11
  159. package/dist/provider/providers/AssetsProvider.d.ts +14 -0
  160. package/dist/provider/providers/AssetsProvider.js +68 -0
  161. package/dist/provider/providers/AuthProvider.d.ts +6 -1
  162. package/dist/provider/providers/AuthProvider.js +204 -44
  163. package/dist/provider/providers/ExternalWalletProvider.d.ts +19 -5
  164. package/dist/provider/providers/ExternalWalletProvider.js +363 -44
  165. package/dist/provider/stores/getters.d.ts +2 -2
  166. package/dist/provider/stores/slices/modal.js +4 -1
  167. package/dist/provider/stores/types.d.ts +6 -3
  168. package/package.json +8 -8
  169. package/dist/modal/constants/constants.d.ts +0 -35
  170. package/dist/modal/constants/constants.js +0 -148
  171. package/dist/modal/utils/routeMobileExternalWallet.d.ts +0 -1
  172. package/dist/modal/utils/routeMobileExternalWallet.js +0 -31
@@ -0,0 +1,418 @@
1
+ "use client";
2
+ import {
3
+ __async,
4
+ __spreadProps,
5
+ __spreadValues
6
+ } from "../../../../chunk-MMUBH76A.js";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import {
9
+ createContext,
10
+ useCallback,
11
+ useContext,
12
+ useEffect,
13
+ useMemo,
14
+ useRef,
15
+ useState
16
+ } from "react";
17
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
18
+ import { useInternalClient } from "../../../../provider/hooks/utils/useInternalClient.js";
19
+ import { useProfileBalance, useSignMessage, useSignTransaction, useWalletState } from "../../../../provider/index.js";
20
+ import { hexStringToBase64 } from "@getpara/web-sdk";
21
+ import { useModalStore } from "../../../stores/index.js";
22
+ import { ModalStep } from "../../../utils/steps.js";
23
+ import { useStore } from "../../../../provider/stores/useStore.js";
24
+ const getDefaultSendMetadata = (balances, wallet) => {
25
+ if (!balances || !(wallet == null ? void 0 : wallet.type) || !(wallet == null ? void 0 : wallet.address) || (wallet == null ? void 0 : wallet.type) === "COSMOS") {
26
+ return { asset: null, network: null };
27
+ }
28
+ const walletBalance = balances.wallets.find(({ address }) => address === (wallet == null ? void 0 : wallet.address));
29
+ if (!walletBalance) {
30
+ return { asset: null, network: null };
31
+ }
32
+ const defaultAsset = walletBalance.assets.find(
33
+ ({ metadata }) => (metadata == null ? void 0 : metadata.symbol) === ((wallet == null ? void 0 : wallet.type) === "EVM" ? "ETH" : "SOL")
34
+ );
35
+ if (!defaultAsset) {
36
+ return { asset: null, network: null };
37
+ }
38
+ const defaultNetwork = defaultAsset.networks[0] || null;
39
+ return { asset: defaultAsset, network: defaultNetwork };
40
+ };
41
+ const getTransferAmount = (sendMetadata, transferValue) => {
42
+ var _a, _b, _c, _d, _e;
43
+ const isPriced = ((_b = (_a = sendMetadata == null ? void 0 : sendMetadata.asset) == null ? void 0 : _a.metadata) == null ? void 0 : _b.price) !== void 0 && ((_e = (_d = (_c = sendMetadata == null ? void 0 : sendMetadata.asset) == null ? void 0 : _c.metadata) == null ? void 0 : _d.price) == null ? void 0 : _e.value) > 0;
44
+ if (isPriced) {
45
+ return transferValue / sendMetadata.asset.metadata.price.value;
46
+ }
47
+ return 0;
48
+ };
49
+ const getTransferValue = (sendMetadata, transferAmount) => {
50
+ var _a, _b, _c, _d, _e;
51
+ const isPriced = ((_b = (_a = sendMetadata == null ? void 0 : sendMetadata.asset) == null ? void 0 : _a.metadata) == null ? void 0 : _b.price) !== void 0 && ((_e = (_d = (_c = sendMetadata == null ? void 0 : sendMetadata.asset) == null ? void 0 : _c.metadata) == null ? void 0 : _d.price) == null ? void 0 : _e.value) > 0;
52
+ if (isPriced) {
53
+ return transferAmount * sendMetadata.asset.metadata.price.value;
54
+ }
55
+ return 0;
56
+ };
57
+ const AccountSendContext = createContext({});
58
+ function AccountSendProvider({ children, step }) {
59
+ var _a, _b, _c, _d, _e, _f;
60
+ const para = useInternalClient();
61
+ const setStep = useModalStore((state) => state.setStep);
62
+ const setSendTx = useModalStore((state) => state.setSendTx);
63
+ const { data: balances } = useProfileBalance({ isComprehensive: true });
64
+ const { signTransactionAsync } = useSignTransaction();
65
+ const { signMessageAsync } = useSignMessage();
66
+ const { selectedWallet, setSelectedWallet } = useWalletState();
67
+ const [estimate, setEstimate] = useState(null);
68
+ const [broadcast, setBroadcast] = useState(null);
69
+ const [sendMetadata, setSendMetadata] = useState(() => getDefaultSendMetadata(balances, selectedWallet));
70
+ const [destinationAddress, setDestinationAddress] = useState("");
71
+ const [transferValue, setTransferValue] = useState(0);
72
+ const [transferAmount, setTransferAmount] = useState(getTransferAmount(sendMetadata, transferValue));
73
+ const [isMax, setIsMax] = useState(false);
74
+ const optionsType = useMemo(() => {
75
+ const walletBalance = balances == null ? void 0 : balances.wallets.find(({ address }) => address === (selectedWallet == null ? void 0 : selectedWallet.address));
76
+ if (!walletBalance || walletBalance.assets.length === 0) {
77
+ return "NONE";
78
+ }
79
+ if ((walletBalance == null ? void 0 : walletBalance.assets.length) === 1) {
80
+ return walletBalance.assets[0].networks.length === 1 ? "SINGLE_NETWORK" : "SINGLE_ASSET";
81
+ }
82
+ return "MULTIPLE";
83
+ }, [balances, selectedWallet == null ? void 0 : selectedWallet.address]);
84
+ const {
85
+ mutate: estimateMutate,
86
+ isPending: estimateIsPending,
87
+ isError: estimateIsError
88
+ } = useMutation({
89
+ mutationKey: ["estimate-tx"],
90
+ mutationFn: (_0) => __async(this, [_0], function* ({ userId, walletId, opts }) {
91
+ if (!para.userId || !selectedWallet.id) {
92
+ return null;
93
+ }
94
+ const result = yield para.ctx.client.estimateSendTransaction({
95
+ userId,
96
+ walletId,
97
+ opts
98
+ });
99
+ return result;
100
+ }),
101
+ onSuccess: (data) => {
102
+ setEstimate(data);
103
+ },
104
+ onError: (error) => {
105
+ console.error(error);
106
+ }
107
+ });
108
+ const queryClient = useQueryClient();
109
+ const refs = useStore((state) => state.refs);
110
+ const {
111
+ mutate: broadcastMutate,
112
+ isPending: broadcastIsPending,
113
+ isError: broadcastIsError
114
+ } = useMutation({
115
+ mutationKey: ["broadcast-tx"],
116
+ mutationFn: (_0) => __async(this, [_0], function* ({
117
+ userId,
118
+ walletId,
119
+ walletAddress,
120
+ walletType,
121
+ txSerialized,
122
+ message,
123
+ evmChainId,
124
+ isDevnet
125
+ }) {
126
+ var _a2, _b2, _c2, _d2, _e2;
127
+ if (!para.userId || !selectedWallet.id) {
128
+ return null;
129
+ }
130
+ let signature;
131
+ switch (walletType) {
132
+ case "SOLANA":
133
+ signature = (_a2 = yield signMessageAsync({
134
+ walletId,
135
+ messageBase64: message
136
+ })) == null ? void 0 : _a2.signature;
137
+ break;
138
+ case "EVM":
139
+ default:
140
+ signature = (_b2 = yield signTransactionAsync({
141
+ walletId,
142
+ rlpEncodedTxBase64: hexStringToBase64(txSerialized),
143
+ chainId: evmChainId
144
+ })) == null ? void 0 : _b2.signature;
145
+ if (!!signature) {
146
+ signature = `0x${signature}`;
147
+ }
148
+ break;
149
+ }
150
+ const result = yield para.ctx.client.broadcastSendTransaction({
151
+ userId,
152
+ walletId,
153
+ opts: {
154
+ type: walletType,
155
+ evmChainId,
156
+ isDevnet,
157
+ tx: txSerialized,
158
+ signature,
159
+ sourceAddress: walletAddress,
160
+ txUrlFormat: (_e2 = (_d2 = (_c2 = sendMetadata == null ? void 0 : sendMetadata.network) == null ? void 0 : _c2.metadata) == null ? void 0 : _d2.explorer) == null ? void 0 : _e2.txUrlFormat
161
+ }
162
+ });
163
+ return result;
164
+ }),
165
+ onSuccess: (data) => {
166
+ if (!!(data == null ? void 0 : data.error)) {
167
+ setBroadcast(data);
168
+ } else if (!!data) {
169
+ setSendTx(data);
170
+ setStep(ModalStep.ACCOUNT_MAIN);
171
+ refs.balancesInvalidationTime.current = Date.now();
172
+ queryClient.invalidateQueries({
173
+ queryKey: ["useProfileBalance"],
174
+ refetchType: "active"
175
+ });
176
+ }
177
+ },
178
+ onError: (error) => {
179
+ console.error(error);
180
+ }
181
+ });
182
+ const onSubmit = useCallback(() => {
183
+ var _a2, _b2, _c2, _d2, _e2, _f2;
184
+ broadcastMutate({
185
+ userId: para.userId,
186
+ walletId: selectedWallet.id,
187
+ walletAddress: selectedWallet.address,
188
+ walletType: selectedWallet.type,
189
+ txSerialized: (_a2 = estimate == null ? void 0 : estimate.result) == null ? void 0 : _a2.txSerialized,
190
+ message: (_b2 = estimate == null ? void 0 : estimate.result) == null ? void 0 : _b2.message,
191
+ evmChainId: (_d2 = (_c2 = sendMetadata == null ? void 0 : sendMetadata.network) == null ? void 0 : _c2.metadata) == null ? void 0 : _d2.evmChainId,
192
+ isDevnet: ((_f2 = (_e2 = sendMetadata == null ? void 0 : sendMetadata.network) == null ? void 0 : _e2.metadata) == null ? void 0 : _f2.internalId) === "SOLANA_DEVNET"
193
+ });
194
+ }, [
195
+ para.userId,
196
+ selectedWallet.id,
197
+ selectedWallet.address,
198
+ selectedWallet.type,
199
+ (_a = estimate == null ? void 0 : estimate.result) == null ? void 0 : _a.txSerialized,
200
+ (_b = estimate == null ? void 0 : estimate.result) == null ? void 0 : _b.message,
201
+ (_d = (_c = sendMetadata == null ? void 0 : sendMetadata.network) == null ? void 0 : _c.metadata) == null ? void 0 : _d.evmChainId,
202
+ (_f = (_e = sendMetadata == null ? void 0 : sendMetadata.network) == null ? void 0 : _e.metadata) == null ? void 0 : _f.internalId
203
+ ]);
204
+ const availableWallets = useMemo(() => {
205
+ return para.availableWallets.filter(({ type }) => type !== "COSMOS");
206
+ }, [para.availableWallets]);
207
+ const { assetPrice, assetValueOnNetwork, assetAmountOnNetwork } = useMemo(() => {
208
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g;
209
+ const assetAmountOnNetwork2 = ((_a2 = sendMetadata.network) == null ? void 0 : _a2.quantity) || 0;
210
+ if (((_c2 = (_b2 = sendMetadata.asset) == null ? void 0 : _b2.metadata) == null ? void 0 : _c2.price) && ((_f2 = (_e2 = (_d2 = sendMetadata.asset) == null ? void 0 : _d2.metadata) == null ? void 0 : _e2.price) == null ? void 0 : _f2.value) > 0) {
211
+ return {
212
+ assetPrice: sendMetadata.asset.metadata.price,
213
+ assetValueOnNetwork: ((_g = sendMetadata.network) == null ? void 0 : _g.value) || null,
214
+ assetAmountOnNetwork: assetAmountOnNetwork2
215
+ };
216
+ }
217
+ return {
218
+ assetPrice: null,
219
+ assetValueOnNetwork: null,
220
+ assetAmountOnNetwork: assetAmountOnNetwork2
221
+ };
222
+ }, [sendMetadata.asset, sendMetadata.network]);
223
+ useEffect(() => {
224
+ if (availableWallets.length > 0 && selectedWallet.type === "COSMOS") {
225
+ const defaultWallet = availableWallets.find((wallet) => wallet.type !== "EVM");
226
+ (defaultWallet == null ? void 0 : defaultWallet.id) && (defaultWallet == null ? void 0 : defaultWallet.type) && setSelectedWallet(defaultWallet);
227
+ }
228
+ }, [availableWallets, selectedWallet.type, setSelectedWallet]);
229
+ const updateSourceRef = useRef(null);
230
+ const prevSendMetadataRef = useRef(sendMetadata);
231
+ const prevWalletAddressRef = useRef(selectedWallet == null ? void 0 : selectedWallet.address);
232
+ const isSettingMaxRef = useRef(false);
233
+ const isResettingRef = useRef(false);
234
+ const resetState = useCallback(() => {
235
+ if (isResettingRef.current) {
236
+ return;
237
+ }
238
+ isResettingRef.current = true;
239
+ updateSourceRef.current = "value";
240
+ setDestinationAddress("");
241
+ setTransferValue(0);
242
+ setTransferAmount(0);
243
+ setIsMax(false);
244
+ setEstimate(null);
245
+ setTimeout(() => {
246
+ isResettingRef.current = false;
247
+ updateSourceRef.current = null;
248
+ }, 0);
249
+ }, []);
250
+ useEffect(() => {
251
+ const walletAddressChanged = prevWalletAddressRef.current !== (selectedWallet == null ? void 0 : selectedWallet.address);
252
+ if (walletAddressChanged) {
253
+ prevWalletAddressRef.current = selectedWallet == null ? void 0 : selectedWallet.address;
254
+ const newSendMetadata = getDefaultSendMetadata(
255
+ balances || null,
256
+ selectedWallet ? { type: selectedWallet.type, address: selectedWallet.address } : null
257
+ );
258
+ setSendMetadata(newSendMetadata);
259
+ resetState();
260
+ }
261
+ }, [selectedWallet == null ? void 0 : selectedWallet.address, balances, resetState]);
262
+ useEffect(() => {
263
+ var _a2, _b2;
264
+ const sendMetadataChanged = ((_a2 = prevSendMetadataRef.current) == null ? void 0 : _a2.asset) !== (sendMetadata == null ? void 0 : sendMetadata.asset) || ((_b2 = prevSendMetadataRef.current) == null ? void 0 : _b2.network) !== (sendMetadata == null ? void 0 : sendMetadata.network);
265
+ const walletAddressChanged = prevWalletAddressRef.current !== (selectedWallet == null ? void 0 : selectedWallet.address);
266
+ if (sendMetadataChanged && !walletAddressChanged && !isResettingRef.current) {
267
+ prevSendMetadataRef.current = sendMetadata;
268
+ resetState();
269
+ } else if (sendMetadataChanged) {
270
+ prevSendMetadataRef.current = sendMetadata;
271
+ }
272
+ }, [sendMetadata, selectedWallet == null ? void 0 : selectedWallet.address, resetState]);
273
+ useEffect(() => {
274
+ if (step !== "SEND_FORM" || sendMetadata.network) {
275
+ return;
276
+ }
277
+ if (sendMetadata.asset && sendMetadata.asset.networks.length > 0) {
278
+ setSendMetadata((prev) => __spreadProps(__spreadValues({}, prev), {
279
+ network: prev.asset.networks[0]
280
+ }));
281
+ return;
282
+ }
283
+ const defaultMetadata = getDefaultSendMetadata(balances, selectedWallet);
284
+ if (defaultMetadata.asset !== sendMetadata.asset || defaultMetadata.network !== sendMetadata.network) {
285
+ setSendMetadata(defaultMetadata);
286
+ }
287
+ }, [step, sendMetadata.asset, sendMetadata.network, balances, selectedWallet]);
288
+ useEffect(() => {
289
+ if (isResettingRef.current || isSettingMaxRef.current) {
290
+ return;
291
+ }
292
+ if (updateSourceRef.current !== "amount") {
293
+ updateSourceRef.current = "value";
294
+ setTransferAmount(getTransferAmount(sendMetadata, transferValue));
295
+ setTimeout(() => {
296
+ updateSourceRef.current = null;
297
+ }, 0);
298
+ }
299
+ }, [transferValue, sendMetadata]);
300
+ useEffect(() => {
301
+ if (isResettingRef.current || isSettingMaxRef.current) {
302
+ return;
303
+ }
304
+ if (updateSourceRef.current !== "value") {
305
+ updateSourceRef.current = "amount";
306
+ const newValue = getTransferValue(sendMetadata, transferAmount);
307
+ setTransferValue((prevValue) => {
308
+ if (newValue !== prevValue) {
309
+ return newValue;
310
+ }
311
+ return prevValue;
312
+ });
313
+ setTimeout(() => {
314
+ updateSourceRef.current = null;
315
+ }, 0);
316
+ }
317
+ }, [transferAmount, sendMetadata]);
318
+ useEffect(() => {
319
+ if (isResettingRef.current) {
320
+ return;
321
+ }
322
+ if (!isSettingMaxRef.current && transferAmount !== assetAmountOnNetwork) {
323
+ setIsMax(false);
324
+ }
325
+ }, [transferAmount, assetAmountOnNetwork]);
326
+ useEffect(() => {
327
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g;
328
+ if (isResettingRef.current) {
329
+ return;
330
+ }
331
+ const isSendMax = isMax && assetAmountOnNetwork > 0;
332
+ if (!destinationAddress || destinationAddress.length === 0 || !isSendMax && transferAmount <= 0) {
333
+ setEstimate(null);
334
+ return;
335
+ }
336
+ estimateMutate({
337
+ walletId: selectedWallet.id,
338
+ userId: para.userId,
339
+ opts: {
340
+ type: selectedWallet.type === "COSMOS" ? "EVM" : selectedWallet.type,
341
+ sourceAddress: selectedWallet.address,
342
+ destinationAddress,
343
+ contractAddress: (_a2 = sendMetadata == null ? void 0 : sendMetadata.network) == null ? void 0 : _a2.contractAddress,
344
+ transferAmount: isMax && assetAmountOnNetwork ? assetAmountOnNetwork : transferAmount,
345
+ evmChainId: (_c2 = (_b2 = sendMetadata == null ? void 0 : sendMetadata.network) == null ? void 0 : _b2.metadata) == null ? void 0 : _c2.evmChainId,
346
+ isDevnet: selectedWallet.type === "SOLANA" && ((_e2 = (_d2 = sendMetadata == null ? void 0 : sendMetadata.network) == null ? void 0 : _d2.metadata) == null ? void 0 : _e2.internalId) === "SOLANA_DEVNET",
347
+ tokenSymbol: (_g = (_f2 = sendMetadata == null ? void 0 : sendMetadata.asset) == null ? void 0 : _f2.metadata) == null ? void 0 : _g.symbol
348
+ }
349
+ });
350
+ }, [
351
+ transferAmount,
352
+ destinationAddress,
353
+ selectedWallet.address,
354
+ selectedWallet.type,
355
+ selectedWallet.id,
356
+ sendMetadata == null ? void 0 : sendMetadata.asset,
357
+ sendMetadata == null ? void 0 : sendMetadata.network,
358
+ para.userId,
359
+ assetAmountOnNetwork,
360
+ isMax
361
+ ]);
362
+ const value = useMemo(() => {
363
+ return {
364
+ step,
365
+ sendMetadata,
366
+ setSendMetadata,
367
+ destinationAddress,
368
+ setDestinationAddress,
369
+ transferValue,
370
+ setTransferValue,
371
+ transferAmount,
372
+ setTransferAmount,
373
+ assetPrice,
374
+ assetValueOnNetwork,
375
+ assetAmountOnNetwork,
376
+ estimate,
377
+ isMax,
378
+ setIsMax,
379
+ onSubmit,
380
+ estimateIsPending,
381
+ estimateIsError,
382
+ broadcast,
383
+ broadcastIsPending,
384
+ broadcastIsError,
385
+ optionsType
386
+ };
387
+ }, [
388
+ step,
389
+ sendMetadata,
390
+ setSendMetadata,
391
+ destinationAddress,
392
+ setDestinationAddress,
393
+ transferValue,
394
+ setTransferValue,
395
+ transferAmount,
396
+ setTransferAmount,
397
+ assetPrice,
398
+ assetValueOnNetwork,
399
+ assetAmountOnNetwork,
400
+ estimate,
401
+ isMax,
402
+ setIsMax,
403
+ onSubmit,
404
+ estimateIsPending,
405
+ estimateIsError,
406
+ broadcast,
407
+ broadcastIsPending,
408
+ broadcastIsError,
409
+ optionsType
410
+ ]);
411
+ return /* @__PURE__ */ jsx(AccountSendContext.Provider, { value, children });
412
+ }
413
+ const useSend = () => useContext(AccountSendContext);
414
+ export {
415
+ AccountSendContext,
416
+ AccountSendProvider,
417
+ useSend
418
+ };
@@ -0,0 +1,4 @@
1
+ import { SendStep } from './context.js';
2
+ export declare function AccountSend({ step }: {
3
+ step: SendStep;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,67 @@
1
+ "use client";
2
+ import "../../../../chunk-MMUBH76A.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { StepContainer } from "../../common.js";
5
+ import { useMemo, useRef, useEffect, useState } from "react";
6
+ import { AccountSendForm } from "./AccountSendForm.js";
7
+ import { AccountSendProvider, useSend } from "./context.js";
8
+ import { AccountSendAsset } from "./AccountSendAsset.js";
9
+ import { AccountSendNetwork } from "./AccountSendNetwork.js";
10
+ import { AnimatePresence, motion } from "framer-motion";
11
+ import { BODY_MOTION_VARIANTS, BODY_TRANSITION, safeStyled } from "@getpara/react-common";
12
+ import { WalletSelectOld } from "../../WalletSelectOld/WalletSelectOld.js";
13
+ import { AccountSendNoAssets } from "./AccountSendNoAssets.js";
14
+ const STEP_ORDER = ["SEND_FORM", "SEND_ASSET", "SEND_NETWORK"];
15
+ function AccountSendIndex() {
16
+ const { step, optionsType } = useSend();
17
+ const prevStepRef = useRef(step);
18
+ const [direction, setDirection] = useState(1);
19
+ useEffect(() => {
20
+ const prevIndex = STEP_ORDER.indexOf(prevStepRef.current);
21
+ const currentIndex = STEP_ORDER.indexOf(step);
22
+ setDirection(currentIndex > prevIndex ? 1 : -1);
23
+ prevStepRef.current = step;
24
+ }, [step]);
25
+ const Content = useMemo(() => {
26
+ if (optionsType === "NONE") {
27
+ return /* @__PURE__ */ jsx(AccountSendNoAssets, {});
28
+ }
29
+ switch (step) {
30
+ case "SEND_FORM":
31
+ return /* @__PURE__ */ jsx(AccountSendForm, {});
32
+ case "SEND_ASSET":
33
+ return /* @__PURE__ */ jsx(AccountSendAsset, {});
34
+ case "SEND_NETWORK":
35
+ return /* @__PURE__ */ jsx(AccountSendNetwork, {});
36
+ }
37
+ }, [step, optionsType]);
38
+ return /* @__PURE__ */ jsxs(StepContainer, { style: { gap: "16px" }, children: [
39
+ step === "SEND_FORM" && /* @__PURE__ */ jsx(WalletSelectOld, { noTitle: true, types: ["EVM", "SOLANA"], isEmbeddedOnly: true, style: { width: "100%" } }),
40
+ /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", initial: false, custom: direction, children: /* @__PURE__ */ jsx(
41
+ AnimatedContainer,
42
+ {
43
+ custom: direction,
44
+ variants: BODY_MOTION_VARIANTS,
45
+ initial: "enter",
46
+ animate: "center",
47
+ exit: "exit",
48
+ transition: BODY_TRANSITION,
49
+ children: Content
50
+ },
51
+ step
52
+ ) })
53
+ ] });
54
+ }
55
+ const AnimatedContainer = safeStyled(motion.div)`
56
+ position: relative;
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: 12px;
60
+ width: 100%;
61
+ `;
62
+ function AccountSend({ step }) {
63
+ return /* @__PURE__ */ jsx(AccountSendProvider, { step, children: /* @__PURE__ */ jsx(AccountSendIndex, {}) });
64
+ }
65
+ export {
66
+ AccountSend
67
+ };
@@ -0,0 +1 @@
1
+ export declare const AccountWallet: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,133 @@
1
+ "use client";
2
+ import {
3
+ __async
4
+ } from "../../../chunk-MMUBH76A.js";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { safeStyled, SpinnerContainer } from "@getpara/react-common";
7
+ import { CpslButton, CpslIcon, CpslSpinner } from "@getpara/react-components";
8
+ import { useModalStore } from "../../stores/modal/useModalStore.js";
9
+ import { WalletEntry } from "./AccountProfileEntry.js";
10
+ import { useEffect, useMemo } from "react";
11
+ import { useAccount, useExportPrivateKey } from "../../../provider/index.js";
12
+ import { useExternalWallets } from "../../../provider/providers/ExternalWalletProvider.js";
13
+ import { ModalStep } from "../../utils/steps.js";
14
+ const EXPLORERS = {
15
+ EVM: {
16
+ name: "Etherscan",
17
+ url: (address) => `https://etherscan.io/address/${address}`
18
+ },
19
+ SOLANA: {
20
+ name: "Solana Explorer",
21
+ url: (address) => `https://explorer.solana.com/address/${address}`
22
+ },
23
+ COSMOS: {
24
+ name: "Atomscan",
25
+ url: (address) => `https://atomscan.com/accounts/${address}`
26
+ }
27
+ };
28
+ const AccountWallet = () => {
29
+ const profileWallet = useModalStore((state) => state.profileWallet);
30
+ const setProfileWallet = useModalStore((state) => state.setProfileWallet);
31
+ const setStep = useModalStore((state) => state.setStep);
32
+ const { connectionType } = useAccount();
33
+ const { mutate: exportPrivateKey } = useExportPrivateKey();
34
+ const { disconnectBase, evmDisconnectStatus, solanaDisconnectStatus, cosmosDisconnectStatus } = useExternalWallets();
35
+ const disconnectStatus = useMemo(() => {
36
+ if (!(profileWallet == null ? void 0 : profileWallet.isExternal)) {
37
+ return "idle";
38
+ }
39
+ switch (profileWallet.type) {
40
+ case "EVM":
41
+ return evmDisconnectStatus;
42
+ case "SOLANA":
43
+ return solanaDisconnectStatus;
44
+ case "COSMOS":
45
+ default:
46
+ return cosmosDisconnectStatus;
47
+ }
48
+ }, [profileWallet == null ? void 0 : profileWallet.isExternal, profileWallet == null ? void 0 : profileWallet.type, evmDisconnectStatus, solanaDisconnectStatus, cosmosDisconnectStatus]);
49
+ const Content = useMemo(() => {
50
+ if (!profileWallet) {
51
+ return null;
52
+ }
53
+ if (disconnectStatus === "pending") {
54
+ return /* @__PURE__ */ jsx(SpinnerContainer, { children: /* @__PURE__ */ jsx(CpslSpinner, {}) });
55
+ }
56
+ const { name, url } = EXPLORERS[profileWallet.type];
57
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
58
+ /* @__PURE__ */ jsx(
59
+ WalletEntry,
60
+ {
61
+ wallet: profileWallet,
62
+ style: { marginBottom: "16px" }
63
+ },
64
+ `${profileWallet.address}-${profileWallet.type}`
65
+ ),
66
+ typeof window !== "undefined" && /* @__PURE__ */ jsxs(
67
+ CpslButton,
68
+ {
69
+ variant: "tertiary",
70
+ fullWidth: true,
71
+ onClick: () => {
72
+ window.open(url(profileWallet.address), "_blank");
73
+ },
74
+ children: [
75
+ "View wallet on ",
76
+ name,
77
+ /* @__PURE__ */ jsx(CpslIcon, { icon: "linkExternal", slot: "end" })
78
+ ]
79
+ }
80
+ ),
81
+ !profileWallet.isExternal && ["EVM", "COSMOS"].includes(profileWallet.type) && /* @__PURE__ */ jsxs(
82
+ DestructiveButton,
83
+ {
84
+ variant: "destructive",
85
+ fullWidth: true,
86
+ onClick: () => exportPrivateKey({ walletId: profileWallet.id, shouldOpenPopup: true }),
87
+ children: [
88
+ /* @__PURE__ */ jsx(CpslIcon, { icon: "key", slot: "start" }),
89
+ "Export private key"
90
+ ]
91
+ }
92
+ ),
93
+ profileWallet.isExternal && connectionType === "both" && /* @__PURE__ */ jsxs(
94
+ DestructiveButton,
95
+ {
96
+ variant: "destructive",
97
+ fullWidth: true,
98
+ onClick: () => __async(void 0, null, function* () {
99
+ yield disconnectBase(profileWallet.externalProviderId, profileWallet.type, {
100
+ disconnectType: "ACCOUNT_WIDGET"
101
+ });
102
+ setProfileWallet(void 0);
103
+ setStep(ModalStep.ACCOUNT_PROFILE);
104
+ }),
105
+ children: [
106
+ /* @__PURE__ */ jsx(CpslIcon, { icon: "key", slot: "start" }),
107
+ "Disconnect"
108
+ ]
109
+ }
110
+ )
111
+ ] });
112
+ }, [profileWallet, connectionType, disconnectStatus]);
113
+ useEffect(() => {
114
+ return () => {
115
+ setProfileWallet(void 0);
116
+ };
117
+ }, []);
118
+ return /* @__PURE__ */ jsx(Container, { children: Content });
119
+ };
120
+ const Container = safeStyled.div`
121
+ display: flex;
122
+ width: 100%;
123
+ flex-direction: column;
124
+ gap: 12px;
125
+ align-items: flex-start;
126
+ `;
127
+ const DestructiveButton = safeStyled(CpslButton)`
128
+ --button-destructive-hover-background-color: rgba(255, 0, 0, 0.2);
129
+ --button-destructive-active-background-color: rgba(255, 0, 0, 0.1);
130
+ `;
131
+ export {
132
+ AccountWallet
133
+ };
@@ -1,4 +1,4 @@
1
- export declare const WalletSelect: () => import("react/jsx-runtime").JSX.Element;
1
+ export declare const AccountWalletSelect: () => import("react/jsx-runtime").JSX.Element;
2
2
  export declare const Select: import("styled-components/dist/types.js").IStyledComponentBase<"web", import("styled-components/dist/types.js").Substitute<Omit<Omit<any, "ref"> & import("react").RefAttributes<any>, "ref"> & {
3
3
  ref?: ((instance: any) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<any> | null | undefined;
4
4
  }, {