@talken/talkenkit 2.4.28 → 2.4.30

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 (29) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +28 -8
  3. package/dist/{abcWallet-2BVT5XFX.js → abcWallet-TLGPQAMU.js} +1 -1
  4. package/dist/{chunk-KOK5ZBR4.js → chunk-MI7TNBED.js} +11 -0
  5. package/dist/hooks/useEstimateFee.d.ts +21 -0
  6. package/dist/index.css +9 -1
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.js +102 -106
  9. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
  10. package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +5 -5
  11. package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +2 -2
  12. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +5 -5
  13. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +2 -2
  14. package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +6 -6
  15. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +2 -2
  16. package/dist/wallets/walletConnectors/abcWallet/api/index.js +7 -7
  17. package/dist/wallets/walletConnectors/abcWallet/index.js +20 -20
  18. package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +2 -2
  19. package/dist/wallets/walletConnectors/{chunk-IM7DEERX.js → chunk-3LF7FVL6.js} +10 -0
  20. package/dist/wallets/walletConnectors/{chunk-L6WDO3ZN.js → chunk-IN3HEGZM.js} +1 -0
  21. package/dist/wallets/walletConnectors/{chunk-VNL7XEWF.js → chunk-J566FC7T.js} +1 -1
  22. package/dist/wallets/walletConnectors/{chunk-VMCIDCO5.js → chunk-XNA5NIFE.js} +1 -1
  23. package/dist/wallets/walletConnectors/index.js +41 -41
  24. package/dist/wallets/walletConnectors/klipWallet/klipWallet.d.ts +3 -0
  25. package/dist/wallets/walletConnectors/klipWallet/klipWallet.js +68 -0
  26. package/dist/wallets/walletConnectors/klipWallet-PPTYYB5G.js +7 -0
  27. package/package.json +11 -12
  28. package/dist/wallets/walletConnectors/{chunk-FBJ5H6PM.js → chunk-HHZ3JZRH.js} +3 -3
  29. package/dist/wallets/walletConnectors/{chunk-NLA45GHJ.js → chunk-OHQXPSR6.js} +3 -3
package/LICENSE ADDED
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Rainbow
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -86,10 +86,31 @@ const config = getDefaultConfig({
86
86
  **Environment Variables:**
87
87
 
88
88
  ```bash
89
- NEXT_PUBLIC_ABC_WAAS_URL=https://your-waas-url.com
90
- NEXT_PUBLIC_API_SERVER=https://your-api-server.com
89
+ # Required — Talken API (proxies all WaaS calls)
90
+ NEXT_PUBLIC_TALKEN_API_URL=https://api.talken.io/api/v1
91
+
92
+ # Required — Environment (production | development)
93
+ NEXT_PUBLIC_ENVIRONMENT=production
94
+
95
+ # Optional — Firebase (for Google social login)
96
+ NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
97
+ NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
98
+ NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project
99
+ NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.firebasestorage.app
100
+ NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
101
+ NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
102
+
103
+ # Optional — Social OAuth (enable via NEXT_PUBLIC_*_OAUTH_ENABLED=true)
104
+ NEXT_PUBLIC_GOOGLE_OAUTH_ENABLED=true
105
+ NEXT_PUBLIC_APPLE_OAUTH_ENABLED=true
106
+ NEXT_PUBLIC_APPLE_OAUTH_CLIENT_ID=your_apple_client_id
107
+ NEXT_PUBLIC_KAKAO_OAUTH_ENABLED=true
108
+ NEXT_PUBLIC_KAKAO_JS_KEY=your_kakao_js_key
109
+ NEXT_PUBLIC_KAKAO_REST_API_KEY=your_kakao_rest_api_key
91
110
  ```
92
111
 
112
+ > **Note**: `NEXT_PUBLIC_ABC_WAAS_URL` is no longer needed. All WaaS calls are proxied through `NEXT_PUBLIC_TALKEN_API_URL` (talken-api).
113
+
93
114
  For detailed configuration options, see [Configuration Guide](./docs/configuration.md).
94
115
 
95
116
  ## Documentation
@@ -97,12 +118,11 @@ For detailed configuration options, see [Configuration Guide](./docs/configurati
97
118
  **Quick Start:**
98
119
 
99
120
  - [Package API Reference](./packages/talkenkit/README.md)
100
- - [ABC WaaS Integration Guide](./docs/abc-waas.md)
101
121
  - [Configuration Guide](./docs/configuration.md)
102
122
 
103
123
  **Technical:**
104
124
 
105
- - [Architecture Documentation](./docs/abc-waas-architecture.md)
125
+ - [Architecture Documentation](./docs/architecture.md)
106
126
  - [Development Guide](./CLAUDE.md)
107
127
 
108
128
  **RainbowKit Compatibility:**
@@ -179,9 +199,9 @@ talken-kit/
179
199
  │ └── ...
180
200
 
181
201
  └── docs/ # Documentation
182
- ├── abc-waas.md
183
- ├── abc-waas-architecture.md
184
- └── configuration.md
202
+ ├── architecture.md
203
+ ├── configuration.md
204
+ └── solana.md
185
205
  ```
186
206
 
187
207
  ## Key Features
@@ -249,7 +269,7 @@ Please follow our [contributing guidelines](/.github/CONTRIBUTING.md).
249
269
  For security best practices and implementation details, see:
250
270
 
251
271
  - [Security in Package README](./packages/talkenkit/README.md#security)
252
- - [Architecture Security](./docs/abc-waas-architecture.md#security-architecture)
272
+ - [Architecture Security](./docs/architecture.md)
253
273
 
254
274
  ## License
255
275
 
@@ -56,7 +56,7 @@ import {
56
56
  validateEmail,
57
57
  validateMpcWallets,
58
58
  validatePin
59
- } from "./chunk-KOK5ZBR4.js";
59
+ } from "./chunk-MI7TNBED.js";
60
60
  import {
61
61
  ABC_EVENTS,
62
62
  ABC_FEATURES,
@@ -3964,6 +3964,15 @@ var AbcBitcoinProvider = class extends EventEmitter2 {
3964
3964
  );
3965
3965
  }
3966
3966
  try {
3967
+ const INPUT_PER_BYTE = 141;
3968
+ const BUFFER = 500;
3969
+ let estimatedFeeBtc;
3970
+ try {
3971
+ const feeRate = await this.estimateFee();
3972
+ const estimatedSatoshi = feeRate * 2 * INPUT_PER_BYTE + BUFFER;
3973
+ estimatedFeeBtc = (estimatedSatoshi / 1e8).toFixed(8).replace(/0+$/, "").replace(/\.$/, "");
3974
+ } catch {
3975
+ }
3967
3976
  await this.callInterceptor({
3968
3977
  chain: "bitcoin",
3969
3978
  method: "sendTransaction",
@@ -3973,6 +3982,7 @@ var AbcBitcoinProvider = class extends EventEmitter2 {
3973
3982
  symbol: "BTC",
3974
3983
  network: this.network.type,
3975
3984
  isNativeToken: true,
3985
+ estimatedFee: estimatedFeeBtc,
3976
3986
  feeSymbol: "BTC"
3977
3987
  });
3978
3988
  console.log("[BitcoinProvider] \u{1F4B8} Starting high-level transaction...");
@@ -4677,6 +4687,7 @@ var AbcSolanaProvider = class extends EventEmitter3 {
4677
4687
  network: this.wallet.network,
4678
4688
  tokenAddress: params.mintAddress,
4679
4689
  isNativeToken: !params.mintAddress,
4690
+ estimatedFee: "0.000005",
4680
4691
  feeSymbol: "SOL"
4681
4692
  });
4682
4693
  const pinHash = getCredentialManager().getPinHash();
@@ -0,0 +1,21 @@
1
+ /**
2
+ * useEstimateFee — Unified fee estimation hook for all chains
3
+ *
4
+ * Provides a single interface to estimate transaction fees
5
+ * across EVM, Bitcoin, Solana, and Tron chains via talken-api.
6
+ */
7
+ export interface EstimateFeeParams {
8
+ chain: 'evm' | 'bitcoin' | 'solana' | 'tron';
9
+ network: string;
10
+ fromAddress: string;
11
+ toAddress: string;
12
+ amount: string;
13
+ tokenAddress?: string;
14
+ data?: string;
15
+ }
16
+ export interface EstimateFeeResult {
17
+ fee: string;
18
+ }
19
+ export declare function useEstimateFee(): {
20
+ estimateFee: (params: EstimateFeeParams) => Promise<EstimateFeeResult>;
21
+ };
package/dist/index.css CHANGED
@@ -3710,7 +3710,7 @@
3710
3710
  display: none;
3711
3711
  }
3712
3712
 
3713
- /* vanilla-extract-css-ns:src/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthSections.css.ts.vanilla.css?source=#H4sIAAAAAAAAA62US3LiMBCG95yil7CQyyYhELHLzBHmAsJq7B5kySXJPGZq7j5l2YBsqIRKsoFyS/369XUnaF+9y1L4OwGQ5GolThy2Co/rCYR/Jsli7sloDrlRTaXbk0LUHLK0Pq4n/yZJFyS7H0QoKjQjj5XjkKP2aFvzxliJlkNWH8EZRRL2wk4ZszuWG2WsYwVqtEK9hYuzqw+zQlLjzvkBaiEl6aIzxD/P3flG5LvCmkbLLjS/SVUZKdTb5VpI5q3QjrrG+8ThNqTJ3AEKh3HvfGvyxrED+ZJ0ECL2uc0o8laKH+3HLIozD66tdByyWCZtNLbfpvGKNF4N1+Z4V3ItLGofns9ozxz9QQ7ZSyfFe/3/wqOfXfy2oiJ14kC6REs+0plZKkrPYTV4/TnntRI5lkZJtKGNj5L9pGrQO5fkxEah7Lwb60zo3DOhlDmgDALUIid/4pAmi8j5aeBTGxpz9oBeF456birS7EDSlxzmvelRun83ztP2xHKjPWofH8Vc9c3cRerpK3I8dxxdAZj3sxJMB+xecGOUfIeKIaMALXis7H2zKNvi/uSHJTGk5CXcPIva13QOeamxXTuutKR3HNJvkf1SwHI8YHeQGe2T8xa5v3w+tcduFtKIxJgRoVTMx7cweOdllrw0e7RcGz+9kDcLaoVqtsZWHFwuFE6zJF3MRvSt1p/deUsuck97fCh1mrwuhs5fmJLVeErObz2YkkWaPrw6PR7bxFToiL3/BzkpX2UHAAA= */
3713
+ /* vanilla-extract-css-ns:src/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthSections.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VW27bMBD89yn2MwZKg3LiPJi/tEfoBWhxbW1NkQJJxXaL3r0Q9TCluI6RBAZkiORyd2dnRgt0T8FnHP7MABT5SsujgI3Gw/MM4j9T5DAPZI2A3Oq6NM3OVlYCMl4dnmd/Z4v2kuz8JVLT1jAKWHoBOZqArlleW6fQCciqA3irScGrdDeMuR3LrbbOsy0adFK/xIPzUwxzUlHt+/wAlVSKzLZdSB937f5a5ruts7VR7dXiTarSKqlfhmMxWXDSeGob7xLH08AXSw8oPaa9i43Na8/2FAoyEYg05m1GmTdQfG9e5sk9yxjaQCcgS2Ey1mDzbuugyeBp4dScaEuupEMT4visCczTbxSQ3bdQXOr/Jx7CfIjbyJL0UQCZAh2FBGfmaFsEAY+j6S+FqLTMsbBaoYttvJfsB5Wj3oUiL9caVRtdO29j54FJre0eVQSgkjmFowC+WI2C2R7XOwpM1sFuSOtv8N8tUdhXdJcOxGnGMvqttT0wX0hl9wJ4/GWcNyx7j0tAxmPEr78q4CGwJs1FOg7jGBFxQmVYcc5bNjIyzNYBuE9guR1BWVmayu8KGg3y6uRUkmF7UqEQsOyWrhX9r9oH2hxZbk1AE9KttMtuxmeVdvsZlty18jrpYtlZSFzaY0vstdXqgljG0gVo9MiKLjZLsq3OG2L0zrF47uPJHtSupv7KocbGjX3hyOwE8C+BfSjgYeo7ZygzsdneXM978ofs/Y1PT5iYckRqnfLjSzh4ZjIPrVcIY8PNwLx5RCtWs7GuFOBzqfEmW/DVfMK+x+ePfgoehMwDveJVqfniaTUO/oRKHqcq6Wc9UsmK86u/KNHx4jwS7v0DZ/agTXwIAAA= */
3714
3714
  [data-rk] .er9ts10 {
3715
3715
  display: flex;
3716
3716
  flex-direction: column;
@@ -3748,6 +3748,14 @@
3748
3748
  cursor: not-allowed;
3749
3749
  opacity: 0.5;
3750
3750
  }
3751
+ [data-rk] .er9ts12:-webkit-autofill,
3752
+ [data-rk] .er9ts12:-webkit-autofill:hover,
3753
+ [data-rk] .er9ts12:-webkit-autofill:focus {
3754
+ -webkit-box-shadow: 0 0 0 1000px var(--rk-colors-modalBackground) inset;
3755
+ -webkit-text-fill-color: var(--rk-colors-modalText);
3756
+ -webkit-transition: background-color 5000s ease-in-out 0s;
3757
+ transition: background-color 5000s ease-in-out 0s;
3758
+ }
3751
3759
  [data-rk] .er9ts13 {
3752
3760
  cursor: pointer;
3753
3761
  border: none;
package/dist/index.d.ts CHANGED
@@ -60,6 +60,8 @@ export { useSolanaWallet } from './hooks/useSolanaWallet';
60
60
  export type { SolanaTransferParams, UseSolanaWalletReturn, } from './hooks/useSolanaWallet';
61
61
  export { useTronWallet } from './hooks/useTronWallet';
62
62
  export type { UseTronWalletReturn } from './hooks/useTronWallet';
63
+ export { useEstimateFee } from './hooks/useEstimateFee';
64
+ export type { EstimateFeeParams, EstimateFeeResult, } from './hooks/useEstimateFee';
63
65
  export { createLogger, configureLogger, getLoggerConfig, Logger, } from './utils/logger';
64
66
  export { getTalkenApiClient, setTalkenApiClient, } from './wallets/walletConnectors/abcWallet/api/TalkenApiSingleton';
65
67
  export { TalkenApiClient, createTalkenApiClient, WalletscanApi, GasApi, ConfigApi, TokenApi, SolanaApi, } from './wallets/walletConnectors/abcWallet/api';
package/dist/index.js CHANGED
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  en_US_default
4
4
  } from "./chunk-X4GSACNW.js";
5
+ import {
6
+ darkTheme
7
+ } from "./chunk-RZWDCITT.js";
5
8
  import {
6
9
  lightTheme
7
10
  } from "./chunk-72HZGUJA.js";
8
11
  import {
9
12
  midnightTheme
10
13
  } from "./chunk-7ZP3ENJ2.js";
11
- import {
12
- darkTheme
13
- } from "./chunk-RZWDCITT.js";
14
14
  import "./chunk-DQLAW7KN.js";
15
15
  import {
16
16
  BitcoinNetwork,
@@ -53,7 +53,7 @@ import {
53
53
  networkToChainId,
54
54
  resolveTalkenApiUrl,
55
55
  setTalkenApiClient
56
- } from "./chunk-KOK5ZBR4.js";
56
+ } from "./chunk-MI7TNBED.js";
57
57
  import {
58
58
  STORAGE_PREFIX,
59
59
  getCredentialManager
@@ -158,7 +158,7 @@ function useBitcoinWallet() {
158
158
  wallet: bitcoinWallet,
159
159
  emptyState: emptyWalletState,
160
160
  requestInterceptor,
161
- importProvider: async () => (await import("./abcWallet-2BVT5XFX.js")).AbcBitcoinProvider,
161
+ importProvider: async () => (await import("./abcWallet-TLGPQAMU.js")).AbcBitcoinProvider,
162
162
  mapState: (nextWallet, provider) => ({
163
163
  address: nextWallet.address,
164
164
  publicKey: nextWallet.publicKey,
@@ -1329,7 +1329,7 @@ function useSolanaWallet() {
1329
1329
  wallet: solanaWallet,
1330
1330
  emptyState: emptyWalletState,
1331
1331
  requestInterceptor,
1332
- importProvider: async () => (await import("./abcWallet-2BVT5XFX.js")).AbcSolanaProvider,
1332
+ importProvider: async () => (await import("./abcWallet-TLGPQAMU.js")).AbcSolanaProvider,
1333
1333
  mapState: (nextWallet, provider) => ({
1334
1334
  address: nextWallet.address,
1335
1335
  publicKey: nextWallet.publicKey,
@@ -1907,7 +1907,7 @@ var ENHANCED_PROVIDER_ENABLED = Boolean(
1907
1907
  var enhancedProviderHttp = createHttpClient({
1908
1908
  baseUrl: "https://enhanced-provider.rainbow.me",
1909
1909
  headers: {
1910
- "x-api-key": typeof process !== "undefined" && typeof process.env !== "undefined" && process.env.RAINBOW_PROVIDER_API_KEY || "undefined"
1910
+ "x-api-key": typeof process !== "undefined" && typeof process.env !== "undefined" && process.env.RAINBOW_PROVIDER_API_KEY || ""
1911
1911
  }
1912
1912
  });
1913
1913
 
@@ -5585,7 +5585,7 @@ function NonEvmTransferConfirmationModal({
5585
5585
  /* @__PURE__ */ React34.createElement("span", { className: feeLabel }, "Estimated Gas Fee"),
5586
5586
  /* @__PURE__ */ React34.createElement("span", { className: feeLabel }, request.estimatedFee, " ", request.feeSymbol || "")
5587
5587
  ),
5588
- /* @__PURE__ */ React34.createElement("div", { className: actions }, /* @__PURE__ */ React34.createElement("button", { type: "button", onClick: onClose, className: cancelButton }, "Cancel"), /* @__PURE__ */ React34.createElement("button", { type: "button", onClick: onConfirm, className: confirmButton }, "Sign")),
5588
+ /* @__PURE__ */ React34.createElement("div", { className: actions }, /* @__PURE__ */ React34.createElement("button", { type: "button", onClick: onClose, className: cancelButton }, "Cancel"), /* @__PURE__ */ React34.createElement("button", { type: "button", onClick: onConfirm, className: confirmButton }, "Send")),
5589
5589
  /* @__PURE__ */ React34.createElement(Toast, { message: toastMessage, isVisible: toastVisible2 })
5590
5590
  )
5591
5591
  );
@@ -8038,7 +8038,7 @@ function setRainbowKitVersion({ version }) {
8038
8038
  }
8039
8039
  function useFingerprint() {
8040
8040
  const fingerprint = useCallback14(() => {
8041
- setRainbowKitVersion({ version: "2.4.28" });
8041
+ setRainbowKitVersion({ version: "2.4.30" });
8042
8042
  }, []);
8043
8043
  useEffect19(() => {
8044
8044
  fingerprint();
@@ -10373,7 +10373,7 @@ function AbcWaasAuthSections(props) {
10373
10373
  setAbcWaasConfirmPassword
10374
10374
  } = props;
10375
10375
  const [email, setEmail] = useState24("");
10376
- const isTelegramMiniApp = typeof window !== "undefined" && !!window.Telegram?.WebApp && window.Telegram.WebApp.platform !== "unknown";
10376
+ const isTelegramMiniApp = typeof window !== "undefined" && (!!window.Telegram?.WebApp && window.Telegram.WebApp.platform !== "unknown" || window.location.hash.includes("tgWebAppData"));
10377
10377
  const isGoogleEnabled = !isTelegramMiniApp && typeof process !== "undefined" && process.env && process.env.NEXT_PUBLIC_GOOGLE_OAUTH_ENABLED === "true" && !!process.env.NEXT_PUBLIC_FIREBASE_API_KEY;
10378
10378
  const isAppleEnabled = !isTelegramMiniApp && typeof process !== "undefined" && process.env && process.env.NEXT_PUBLIC_APPLE_OAUTH_ENABLED === "true" && !!process.env.NEXT_PUBLIC_APPLE_OAUTH_CLIENT_ID;
10379
10379
  const isKakaoEnabled = !isTelegramMiniApp && typeof process !== "undefined" && process.env && process.env.NEXT_PUBLIC_KAKAO_OAUTH_ENABLED === "true" && !!process.env.NEXT_PUBLIC_KAKAO_JS_KEY;
@@ -10467,38 +10467,18 @@ function AbcWaasAuthSections(props) {
10467
10467
  style: { flexGrow: 1 }
10468
10468
  }
10469
10469
  )
10470
- )), abcWaasStep === "PASSWORD" /* Password */ && /* @__PURE__ */ React76.createElement(Box, { marginX: "6", marginBottom: "16" }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalText", size: "16", weight: "semibold" }, "Enter your password"), /* @__PURE__ */ React76.createElement(Box, { marginTop: "4" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalTextSecondary", size: "14", weight: "medium" }, abcWaasEmail))), /* @__PURE__ */ React76.createElement("form", { onSubmit: handlePasswordSubmit }, /* @__PURE__ */ React76.createElement(
10471
- Box,
10470
+ )), abcWaasStep === "PASSWORD" /* Password */ && /* @__PURE__ */ React76.createElement(Box, { marginX: "6", marginBottom: "16" }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalText", size: "16", weight: "semibold" }, "Enter your password"), /* @__PURE__ */ React76.createElement(Box, { marginTop: "4" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalTextSecondary", size: "14", weight: "medium" }, abcWaasEmail))), /* @__PURE__ */ React76.createElement("form", { onSubmit: handlePasswordSubmit }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement("div", { className: emailFormContainer }, /* @__PURE__ */ React76.createElement(
10471
+ "input",
10472
10472
  {
10473
- marginBottom: "12",
10474
- style: {
10475
- padding: "12px 16px",
10476
- borderRadius: "12px",
10477
- backgroundColor: "#ffffff",
10478
- border: "1px solid #d1d5db"
10479
- }
10480
- },
10481
- /* @__PURE__ */ React76.createElement(
10482
- "input",
10483
- {
10484
- type: "password",
10485
- placeholder: "Enter password",
10486
- value: abcWaasPassword,
10487
- onChange: (e) => setAbcWaasPassword(e.target.value),
10488
- disabled: isAbcWaasLoading,
10489
- required: true,
10490
- style: {
10491
- width: "100%",
10492
- border: "none",
10493
- outline: "none",
10494
- background: "transparent",
10495
- fontSize: "16px",
10496
- color: "#111827",
10497
- fontFamily: "inherit"
10498
- }
10499
- }
10500
- )
10501
- ), /* @__PURE__ */ React76.createElement(Box, { display: "flex", gap: "12" }, /* @__PURE__ */ React76.createElement(
10473
+ type: "password",
10474
+ placeholder: "Enter password",
10475
+ value: abcWaasPassword,
10476
+ onChange: (e) => setAbcWaasPassword(e.target.value),
10477
+ disabled: isAbcWaasLoading,
10478
+ required: true,
10479
+ className: emailInputStyle
10480
+ }
10481
+ ))), /* @__PURE__ */ React76.createElement(Box, { display: "flex", gap: "12" }, /* @__PURE__ */ React76.createElement(
10502
10482
  Box,
10503
10483
  {
10504
10484
  as: "button",
@@ -10571,7 +10551,7 @@ function AbcWaasAuthSections(props) {
10571
10551
  color: themeVars.colors.modalText,
10572
10552
  fontFamily: "inherit",
10573
10553
  textAlign: "center",
10574
- letterSpacing: "0.3em"
10554
+ letterSpacing: "0.15em"
10575
10555
  }
10576
10556
  }
10577
10557
  )
@@ -10618,39 +10598,19 @@ function AbcWaasAuthSections(props) {
10618
10598
  }
10619
10599
  },
10620
10600
  "Verify"
10621
- ))), abcWaasError && /* @__PURE__ */ React76.createElement(Box, { marginTop: "8" }, /* @__PURE__ */ React76.createElement(Text, { color: "error", size: "14", weight: "medium" }, abcWaasError))), abcWaasStep === "PASSWORD_SETUP" /* PasswordSetup */ && /* @__PURE__ */ React76.createElement(Box, { marginX: "6", marginBottom: "16" }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalText", size: "16", weight: "semibold" }, "Create a password"), /* @__PURE__ */ React76.createElement(Box, { marginTop: "4" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalTextSecondary", size: "14", weight: "medium" }, "Must be at least 6 characters"))), /* @__PURE__ */ React76.createElement("form", { onSubmit: handlePasswordSetupSubmit }, /* @__PURE__ */ React76.createElement(
10622
- Box,
10601
+ ))), abcWaasError && /* @__PURE__ */ React76.createElement(Box, { marginTop: "8" }, /* @__PURE__ */ React76.createElement(Text, { color: "error", size: "14", weight: "medium" }, abcWaasError))), abcWaasStep === "PASSWORD_SETUP" /* PasswordSetup */ && /* @__PURE__ */ React76.createElement(Box, { marginX: "6", marginBottom: "16" }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalText", size: "16", weight: "semibold" }, "Create a password"), /* @__PURE__ */ React76.createElement(Box, { marginTop: "4" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalTextSecondary", size: "14", weight: "medium" }, "Must be at least 6 characters"))), /* @__PURE__ */ React76.createElement("form", { onSubmit: handlePasswordSetupSubmit }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement("div", { className: emailFormContainer }, /* @__PURE__ */ React76.createElement(
10602
+ "input",
10623
10603
  {
10624
- marginBottom: "12",
10625
- style: {
10626
- padding: "12px 16px",
10627
- borderRadius: "12px",
10628
- backgroundColor: themeVars.colors.modalBackground,
10629
- border: `1px solid ${themeVars.colors.actionButtonBorder}`
10630
- }
10631
- },
10632
- /* @__PURE__ */ React76.createElement(
10633
- "input",
10634
- {
10635
- type: "password",
10636
- placeholder: "Enter password",
10637
- value: abcWaasNewPassword,
10638
- onChange: (e) => setAbcWaasNewPassword(e.target.value),
10639
- disabled: isAbcWaasLoading,
10640
- required: true,
10641
- minLength: 6,
10642
- style: {
10643
- width: "100%",
10644
- border: "none",
10645
- outline: "none",
10646
- background: "transparent",
10647
- fontSize: "16px",
10648
- color: themeVars.colors.modalText,
10649
- fontFamily: "inherit"
10650
- }
10651
- }
10652
- )
10653
- ), /* @__PURE__ */ React76.createElement(Box, { display: "flex", gap: "12" }, /* @__PURE__ */ React76.createElement(
10604
+ type: "password",
10605
+ placeholder: "Enter password",
10606
+ value: abcWaasNewPassword,
10607
+ onChange: (e) => setAbcWaasNewPassword(e.target.value),
10608
+ disabled: isAbcWaasLoading,
10609
+ required: true,
10610
+ minLength: 6,
10611
+ className: emailInputStyle
10612
+ }
10613
+ ))), /* @__PURE__ */ React76.createElement(Box, { display: "flex", gap: "12" }, /* @__PURE__ */ React76.createElement(
10654
10614
  Box,
10655
10615
  {
10656
10616
  as: "button",
@@ -10693,38 +10653,18 @@ function AbcWaasAuthSections(props) {
10693
10653
  }
10694
10654
  },
10695
10655
  "Continue"
10696
- ))), abcWaasError && /* @__PURE__ */ React76.createElement(Box, { marginTop: "8" }, /* @__PURE__ */ React76.createElement(Text, { color: "error", size: "14", weight: "medium" }, abcWaasError))), abcWaasStep === "PASSWORD_CONFIRM" /* PasswordConfirm */ && /* @__PURE__ */ React76.createElement(Box, { marginX: "6", marginBottom: "16" }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalText", size: "16", weight: "semibold" }, "Confirm your password"), /* @__PURE__ */ React76.createElement(Box, { marginTop: "4" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalTextSecondary", size: "14", weight: "medium" }, "Re-enter your password to confirm"))), /* @__PURE__ */ React76.createElement("form", { onSubmit: handlePasswordConfirmSubmit }, /* @__PURE__ */ React76.createElement(
10697
- Box,
10656
+ ))), abcWaasError && /* @__PURE__ */ React76.createElement(Box, { marginTop: "8" }, /* @__PURE__ */ React76.createElement(Text, { color: "error", size: "14", weight: "medium" }, abcWaasError))), abcWaasStep === "PASSWORD_CONFIRM" /* PasswordConfirm */ && /* @__PURE__ */ React76.createElement(Box, { marginX: "6", marginBottom: "16" }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalText", size: "16", weight: "semibold" }, "Confirm your password"), /* @__PURE__ */ React76.createElement(Box, { marginTop: "4" }, /* @__PURE__ */ React76.createElement(Text, { color: "modalTextSecondary", size: "14", weight: "medium" }, "Re-enter your password to confirm"))), /* @__PURE__ */ React76.createElement("form", { onSubmit: handlePasswordConfirmSubmit }, /* @__PURE__ */ React76.createElement(Box, { marginBottom: "12" }, /* @__PURE__ */ React76.createElement("div", { className: emailFormContainer }, /* @__PURE__ */ React76.createElement(
10657
+ "input",
10698
10658
  {
10699
- marginBottom: "12",
10700
- style: {
10701
- padding: "12px 16px",
10702
- borderRadius: "12px",
10703
- backgroundColor: themeVars.colors.modalBackground,
10704
- border: `1px solid ${themeVars.colors.actionButtonBorder}`
10705
- }
10706
- },
10707
- /* @__PURE__ */ React76.createElement(
10708
- "input",
10709
- {
10710
- type: "password",
10711
- placeholder: "Confirm password",
10712
- value: abcWaasConfirmPassword,
10713
- onChange: (e) => setAbcWaasConfirmPassword(e.target.value),
10714
- disabled: isAbcWaasLoading,
10715
- required: true,
10716
- style: {
10717
- width: "100%",
10718
- border: "none",
10719
- outline: "none",
10720
- background: "transparent",
10721
- fontSize: "16px",
10722
- color: themeVars.colors.modalText,
10723
- fontFamily: "inherit"
10724
- }
10725
- }
10726
- )
10727
- ), /* @__PURE__ */ React76.createElement(Box, { display: "flex", gap: "12" }, /* @__PURE__ */ React76.createElement(
10659
+ type: "password",
10660
+ placeholder: "Confirm password",
10661
+ value: abcWaasConfirmPassword,
10662
+ onChange: (e) => setAbcWaasConfirmPassword(e.target.value),
10663
+ disabled: isAbcWaasLoading,
10664
+ required: true,
10665
+ className: emailInputStyle
10666
+ }
10667
+ ))), /* @__PURE__ */ React76.createElement(Box, { display: "flex", gap: "12" }, /* @__PURE__ */ React76.createElement(
10728
10668
  Box,
10729
10669
  {
10730
10670
  as: "button",
@@ -18006,7 +17946,7 @@ function useTronWallet() {
18006
17946
  wallet: tronWallet,
18007
17947
  emptyState: emptyWalletState,
18008
17948
  requestInterceptor,
18009
- importProvider: async () => (await import("./abcWallet-2BVT5XFX.js")).AbcTronProvider,
17949
+ importProvider: async () => (await import("./abcWallet-TLGPQAMU.js")).AbcTronProvider,
18010
17950
  mapState: (nextWallet, provider) => ({
18011
17951
  address: nextWallet.address,
18012
17952
  publicKey: nextWallet.publicKey,
@@ -18057,6 +17997,61 @@ function useTronWallet() {
18057
17997
  };
18058
17998
  }
18059
17999
 
18000
+ // src/hooks/useEstimateFee.ts
18001
+ import { useCallback as useCallback30 } from "react";
18002
+ var INPUT_PER_BYTE = 141;
18003
+ var BUFFER = 500;
18004
+ function useEstimateFee() {
18005
+ const estimateFee = useCallback30(
18006
+ async (params) => {
18007
+ switch (params.chain) {
18008
+ case "evm": {
18009
+ const api = getTalkenApiClient();
18010
+ if (!api)
18011
+ throw new Error("TalkenApiClient not initialized");
18012
+ const [gasEstimate, gasPriceResponse] = await Promise.all([
18013
+ api.evm.estimateGas({
18014
+ network: params.network,
18015
+ from: params.fromAddress || "",
18016
+ to: params.toAddress,
18017
+ value: params.amount,
18018
+ data: params.data
18019
+ }),
18020
+ api.evm.getGasPrice(params.network)
18021
+ ]);
18022
+ const gasLimit = BigInt(gasEstimate.result || "21000");
18023
+ const gasPrice = BigInt(gasPriceResponse.result || "0");
18024
+ const fee = (gasLimit * gasPrice).toString();
18025
+ return { fee };
18026
+ }
18027
+ case "bitcoin": {
18028
+ const api = getTalkenApiClient();
18029
+ if (!api)
18030
+ throw new Error("TalkenApiClient not initialized");
18031
+ const result = await api.bitcoin.getFeeRate(
18032
+ params.network
18033
+ );
18034
+ const feeRate = Number(result.feeRate) || 1;
18035
+ const fee = Math.floor(feeRate * 2 * INPUT_PER_BYTE + BUFFER);
18036
+ return { fee: String(fee) };
18037
+ }
18038
+ case "solana": {
18039
+ return { fee: "5000" };
18040
+ }
18041
+ case "tron": {
18042
+ const isTrc20 = !!params.tokenAddress;
18043
+ const fee = isTrc20 ? "13000000" : "1000000";
18044
+ return { fee };
18045
+ }
18046
+ default:
18047
+ throw new Error(`Unsupported chain: ${params.chain}`);
18048
+ }
18049
+ },
18050
+ []
18051
+ );
18052
+ return { estimateFee };
18053
+ }
18054
+
18060
18055
  // src/utils/embeddedTxAdapter.ts
18061
18056
  function bigintToHex(value) {
18062
18057
  return `0x${value.toString(16)}`;
@@ -18210,6 +18205,7 @@ export {
18210
18205
  useChainModal,
18211
18206
  useConnectModal,
18212
18207
  useDeviceType,
18208
+ useEstimateFee,
18213
18209
  useMultiChain,
18214
18210
  useNonEvmConfirmation,
18215
18211
  usePin,
@@ -3,7 +3,7 @@ import {
3
3
  AbcBitcoinProvider,
4
4
  BITCOIN_NETWORKS,
5
5
  BitcoinProviderError
6
- } from "../chunk-IM7DEERX.js";
6
+ } from "../chunk-3LF7FVL6.js";
7
7
  import "../chunk-6WF4SXLB.js";
8
8
  import "../chunk-DPTDOCWL.js";
9
9
  export {
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import {
3
3
  abcConnector
4
- } from "../chunk-NLA45GHJ.js";
4
+ } from "../chunk-HHZ3JZRH.js";
5
5
  import "../chunk-R6ZE7JAZ.js";
6
+ import "../chunk-GFWUFYT2.js";
6
7
  import "../chunk-O4AU63LK.js";
7
- import "../chunk-NU3ITJNK.js";
8
+ import "../chunk-OMOYFHBT.js";
8
9
  import "../chunk-A66MTFML.js";
9
- import "../chunk-GFWUFYT2.js";
10
- import "../chunk-J3YPHDHM.js";
11
- import "../chunk-6WF4SXLB.js";
10
+ import "../chunk-BHEVY4QY.js";
12
11
  import "../chunk-4P3SPC44.js";
12
+ import "../chunk-6WF4SXLB.js";
13
13
  import "../chunk-DPTDOCWL.js";
14
14
  export {
15
15
  abcConnector
@@ -3,10 +3,10 @@ import {
3
3
  AbcEvmProvider,
4
4
  createAbcEvmProvider,
5
5
  createAbcProvider
6
- } from "../chunk-NU3ITJNK.js";
6
+ } from "../chunk-OMOYFHBT.js";
7
7
  import "../chunk-A66MTFML.js";
8
- import "../chunk-6WF4SXLB.js";
9
8
  import "../chunk-4P3SPC44.js";
9
+ import "../chunk-6WF4SXLB.js";
10
10
  import "../chunk-DPTDOCWL.js";
11
11
  export {
12
12
  AbcEvmProvider,
@@ -2,16 +2,16 @@
2
2
  import {
3
3
  AbcSolanaProvider,
4
4
  SolanaProviderError
5
- } from "../chunk-L6WDO3ZN.js";
5
+ } from "../chunk-IN3HEGZM.js";
6
6
  import "../chunk-JGXJY3SB.js";
7
+ import "../chunk-OTLZVWY7.js";
7
8
  import "../chunk-NULM3THX.js";
8
9
  import "../chunk-MO2AXXLI.js";
9
- import "../chunk-VDWJ3NQ5.js";
10
10
  import "../chunk-YPM7FC4M.js";
11
- import "../chunk-OTLZVWY7.js";
12
- import "../chunk-J3YPHDHM.js";
13
- import "../chunk-6WF4SXLB.js";
11
+ import "../chunk-VDWJ3NQ5.js";
12
+ import "../chunk-BHEVY4QY.js";
14
13
  import "../chunk-4P3SPC44.js";
14
+ import "../chunk-6WF4SXLB.js";
15
15
  import "../chunk-DPTDOCWL.js";
16
16
  export {
17
17
  AbcSolanaProvider,
@@ -4,11 +4,11 @@ import {
4
4
  } from "../chunk-GFWUFYT2.js";
5
5
  import {
6
6
  createTalkenApiClient
7
- } from "../chunk-J3YPHDHM.js";
7
+ } from "../chunk-BHEVY4QY.js";
8
+ import "../chunk-4P3SPC44.js";
8
9
  import {
9
10
  getCredentialManager
10
11
  } from "../chunk-6WF4SXLB.js";
11
- import "../chunk-4P3SPC44.js";
12
12
  import {
13
13
  STORAGE_PREFIX
14
14
  } from "../chunk-DPTDOCWL.js";
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  import {
3
3
  abcWallet
4
- } from "../chunk-VNL7XEWF.js";
5
- import "../chunk-NLA45GHJ.js";
4
+ } from "../chunk-XNA5NIFE.js";
5
+ import "../chunk-HHZ3JZRH.js";
6
6
  import "../chunk-R6ZE7JAZ.js";
7
+ import "../chunk-GFWUFYT2.js";
7
8
  import "../chunk-O4AU63LK.js";
8
- import "../chunk-NU3ITJNK.js";
9
+ import "../chunk-OMOYFHBT.js";
9
10
  import "../chunk-A66MTFML.js";
10
- import "../chunk-GFWUFYT2.js";
11
- import "../chunk-J3YPHDHM.js";
12
- import "../chunk-6WF4SXLB.js";
11
+ import "../chunk-BHEVY4QY.js";
13
12
  import "../chunk-4P3SPC44.js";
13
+ import "../chunk-6WF4SXLB.js";
14
14
  import "../chunk-DPTDOCWL.js";
15
15
  export {
16
16
  abcWallet
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  TalkenApiClient,
4
4
  createTalkenApiClient
5
- } from "../../chunk-J3YPHDHM.js";
6
- import "../../chunk-6WF4SXLB.js";
5
+ } from "../../chunk-BHEVY4QY.js";
7
6
  import "../../chunk-4P3SPC44.js";
7
+ import "../../chunk-6WF4SXLB.js";
8
8
  import "../../chunk-DPTDOCWL.js";
9
9
  export {
10
10
  TalkenApiClient,
@@ -1,26 +1,26 @@
1
1
  "use client";
2
2
  import "../../chunk-JGXJY3SB.js";
3
+ import {
4
+ SolanaApi
5
+ } from "../../chunk-OTLZVWY7.js";
3
6
  import {
4
7
  WalletscanApi
5
8
  } from "../../chunk-NULM3THX.js";
6
9
  import {
7
10
  TokenApi
8
11
  } from "../../chunk-MO2AXXLI.js";
9
- import {
10
- ConfigApi
11
- } from "../../chunk-VDWJ3NQ5.js";
12
12
  import {
13
13
  GasApi
14
14
  } from "../../chunk-YPM7FC4M.js";
15
15
  import {
16
- SolanaApi
17
- } from "../../chunk-OTLZVWY7.js";
16
+ ConfigApi
17
+ } from "../../chunk-VDWJ3NQ5.js";
18
18
  import {
19
19
  TalkenApiClient,
20
20
  createTalkenApiClient
21
- } from "../../chunk-J3YPHDHM.js";
22
- import "../../chunk-6WF4SXLB.js";
21
+ } from "../../chunk-BHEVY4QY.js";
23
22
  import "../../chunk-4P3SPC44.js";
23
+ import "../../chunk-6WF4SXLB.js";
24
24
  import "../../chunk-DPTDOCWL.js";
25
25
  export {
26
26
  ConfigApi,
@@ -10,48 +10,49 @@ import {
10
10
  generateMpcWallets,
11
11
  recoverMpcWallets,
12
12
  validateMpcWallets
13
- } from "../chunk-CABLJOMU.js";
13
+ } from "../chunk-JADQLTFW.js";
14
14
  import {
15
15
  AbcTronProvider,
16
16
  TRON_NETWORKS,
17
17
  TronProviderError
18
18
  } from "../chunk-YV6IZWGE.js";
19
- import {
20
- AbcBitcoinProvider,
21
- BITCOIN_NETWORKS,
22
- BitcoinProviderError
23
- } from "../chunk-IM7DEERX.js";
24
19
  import {
25
20
  AbcBitcoinConnector,
26
21
  createAbcBitcoinConnector
27
22
  } from "../chunk-BXH3GDX5.js";
23
+ import {
24
+ AbcBitcoinProvider,
25
+ BITCOIN_NETWORKS,
26
+ BitcoinProviderError
27
+ } from "../chunk-3LF7FVL6.js";
28
28
  import {
29
29
  AbcSolanaProvider,
30
30
  SolanaProviderError
31
- } from "../chunk-L6WDO3ZN.js";
31
+ } from "../chunk-IN3HEGZM.js";
32
32
  import "../chunk-JGXJY3SB.js";
33
+ import {
34
+ SolanaApi
35
+ } from "../chunk-OTLZVWY7.js";
33
36
  import {
34
37
  WalletscanApi
35
38
  } from "../chunk-NULM3THX.js";
36
39
  import {
37
40
  TokenApi
38
41
  } from "../chunk-MO2AXXLI.js";
39
- import {
40
- ConfigApi
41
- } from "../chunk-VDWJ3NQ5.js";
42
42
  import {
43
43
  GasApi
44
44
  } from "../chunk-YPM7FC4M.js";
45
45
  import {
46
- SolanaApi
47
- } from "../chunk-OTLZVWY7.js";
46
+ ConfigApi
47
+ } from "../chunk-VDWJ3NQ5.js";
48
48
  import {
49
49
  abcWallet
50
- } from "../chunk-VNL7XEWF.js";
50
+ } from "../chunk-XNA5NIFE.js";
51
51
  import {
52
52
  abcConnector
53
- } from "../chunk-NLA45GHJ.js";
53
+ } from "../chunk-HHZ3JZRH.js";
54
54
  import "../chunk-R6ZE7JAZ.js";
55
+ import "../chunk-GFWUFYT2.js";
55
56
  import {
56
57
  BitcoinNetwork,
57
58
  SolanaNetwork,
@@ -65,7 +66,7 @@ import {
65
66
  AbcEvmProvider,
66
67
  createAbcEvmProvider,
67
68
  createAbcProvider
68
- } from "../chunk-NU3ITJNK.js";
69
+ } from "../chunk-OMOYFHBT.js";
69
70
  import {
70
71
  calculateExpiryTimestamp,
71
72
  clearAuthState,
@@ -84,19 +85,18 @@ import {
84
85
  validateEmail,
85
86
  validatePin
86
87
  } from "../chunk-A66MTFML.js";
87
- import "../chunk-GFWUFYT2.js";
88
88
  import {
89
89
  TalkenApiClient,
90
90
  createTalkenApiClient
91
- } from "../chunk-J3YPHDHM.js";
92
- import {
93
- getCredentialManager
94
- } from "../chunk-6WF4SXLB.js";
91
+ } from "../chunk-BHEVY4QY.js";
95
92
  import {
96
93
  AbcError,
97
94
  AbcErrorCode,
98
95
  AbcStorageKey
99
96
  } from "../chunk-4P3SPC44.js";
97
+ import {
98
+ getCredentialManager
99
+ } from "../chunk-6WF4SXLB.js";
100
100
  import {
101
101
  ABC_EVENTS,
102
102
  ABC_FEATURES,
@@ -3,10 +3,10 @@ import {
3
3
  generateMpcWallets,
4
4
  recoverMpcWallets,
5
5
  validateMpcWallets
6
- } from "../chunk-CABLJOMU.js";
6
+ } from "../chunk-JADQLTFW.js";
7
7
  import "../chunk-O4AU63LK.js";
8
- import "../chunk-6WF4SXLB.js";
9
8
  import "../chunk-4P3SPC44.js";
9
+ import "../chunk-6WF4SXLB.js";
10
10
  import "../chunk-DPTDOCWL.js";
11
11
  export {
12
12
  generateMpcWallets,
@@ -445,6 +445,15 @@ var AbcBitcoinProvider = class extends EventEmitter {
445
445
  );
446
446
  }
447
447
  try {
448
+ const INPUT_PER_BYTE = 141;
449
+ const BUFFER = 500;
450
+ let estimatedFeeBtc;
451
+ try {
452
+ const feeRate = await this.estimateFee();
453
+ const estimatedSatoshi = feeRate * 2 * INPUT_PER_BYTE + BUFFER;
454
+ estimatedFeeBtc = (estimatedSatoshi / 1e8).toFixed(8).replace(/0+$/, "").replace(/\.$/, "");
455
+ } catch {
456
+ }
448
457
  await this.callInterceptor({
449
458
  chain: "bitcoin",
450
459
  method: "sendTransaction",
@@ -454,6 +463,7 @@ var AbcBitcoinProvider = class extends EventEmitter {
454
463
  symbol: "BTC",
455
464
  network: this.network.type,
456
465
  isNativeToken: true,
466
+ estimatedFee: estimatedFeeBtc,
457
467
  feeSymbol: "BTC"
458
468
  });
459
469
  console.log("[BitcoinProvider] \u{1F4B8} Starting high-level transaction...");
@@ -311,6 +311,7 @@ var AbcSolanaProvider = class extends EventEmitter {
311
311
  network: this.wallet.network,
312
312
  tokenAddress: params.mintAddress,
313
313
  isNativeToken: !params.mintAddress,
314
+ estimatedFee: "0.000005",
314
315
  feeSymbol: "SOL"
315
316
  });
316
317
  const pinHash = getCredentialManager().getPinHash();
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  abcConnector
4
- } from "./chunk-NLA45GHJ.js";
4
+ } from "./chunk-OHQXPSR6.js";
5
5
  import {
6
6
  resolveTalkenApiUrl
7
7
  } from "./chunk-GFWUFYT2.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  abcConnector
4
- } from "./chunk-FBJ5H6PM.js";
4
+ } from "./chunk-HHZ3JZRH.js";
5
5
  import {
6
6
  resolveTalkenApiUrl
7
7
  } from "./chunk-GFWUFYT2.js";
@@ -1,17 +1,23 @@
1
1
  "use client";
2
2
  import {
3
3
  abcWallet
4
- } from "./chunk-VNL7XEWF.js";
5
- import "./chunk-NLA45GHJ.js";
4
+ } from "./chunk-XNA5NIFE.js";
5
+ import {
6
+ zerionWallet
7
+ } from "./chunk-53IBFGVW.js";
8
+ import "./chunk-HHZ3JZRH.js";
6
9
  import "./chunk-R6ZE7JAZ.js";
10
+ import "./chunk-GFWUFYT2.js";
7
11
  import "./chunk-O4AU63LK.js";
8
- import "./chunk-NU3ITJNK.js";
12
+ import "./chunk-OMOYFHBT.js";
9
13
  import "./chunk-A66MTFML.js";
10
- import "./chunk-GFWUFYT2.js";
11
- import "./chunk-J3YPHDHM.js";
12
- import "./chunk-6WF4SXLB.js";
14
+ import "./chunk-BHEVY4QY.js";
13
15
  import "./chunk-4P3SPC44.js";
16
+ import "./chunk-6WF4SXLB.js";
14
17
  import "./chunk-DPTDOCWL.js";
18
+ import {
19
+ tokenaryWallet
20
+ } from "./chunk-U24COF36.js";
15
21
  import {
16
22
  trustWallet
17
23
  } from "./chunk-S2PY4MDO.js";
@@ -33,12 +39,12 @@ import {
33
39
  import {
34
40
  zealWallet
35
41
  } from "./chunk-SCOX5RF4.js";
36
- import {
37
- zerionWallet
38
- } from "./chunk-53IBFGVW.js";
39
42
  import {
40
43
  safeWallet
41
44
  } from "./chunk-Z2QCE6O6.js";
45
+ import {
46
+ safeheronWallet
47
+ } from "./chunk-PHF4VWKP.js";
42
48
  import {
43
49
  safepalWallet
44
50
  } from "./chunk-ATQWOE4J.js";
@@ -58,8 +64,8 @@ import {
58
64
  tokenPocketWallet
59
65
  } from "./chunk-5NM2LK2G.js";
60
66
  import {
61
- tokenaryWallet
62
- } from "./chunk-U24COF36.js";
67
+ oneInchWallet
68
+ } from "./chunk-OJT577AY.js";
63
69
  import {
64
70
  oneKeyWallet
65
71
  } from "./chunk-6UGYPEQE.js";
@@ -82,8 +88,8 @@ import {
82
88
  roninWallet
83
89
  } from "./chunk-D7U5WEH2.js";
84
90
  import {
85
- safeheronWallet
86
- } from "./chunk-PHF4VWKP.js";
91
+ ledgerWallet
92
+ } from "./chunk-BF3VSNPL.js";
87
93
  import {
88
94
  magicEdenWallet
89
95
  } from "./chunk-WB7EEKPS.js";
@@ -105,12 +111,6 @@ import {
105
111
  import {
106
112
  omniWallet
107
113
  } from "./chunk-RGPO7AY3.js";
108
- import {
109
- oneInchWallet
110
- } from "./chunk-OJT577AY.js";
111
- import {
112
- imTokenWallet
113
- } from "./chunk-EHE2536P.js";
114
114
  import {
115
115
  injectedWallet
116
116
  } from "./chunk-GDGRUMZB.js";
@@ -118,32 +118,26 @@ import {
118
118
  iopayWallet
119
119
  } from "./chunk-2W6UBYKX.js";
120
120
  import {
121
- kaiaWallet
122
- } from "./chunk-C7S72VGD.js";
121
+ berasigWallet
122
+ } from "./chunk-KM55XFBI.js";
123
123
  import {
124
124
  kaikasWallet
125
125
  } from "./chunk-BJYSWRV6.js";
126
+ import {
127
+ kaiaWallet
128
+ } from "./chunk-C7S72VGD.js";
126
129
  import {
127
130
  krakenWallet
128
131
  } from "./chunk-CYOZFCR6.js";
129
132
  import {
130
133
  kresusWallet
131
134
  } from "./chunk-CM3VR7OM.js";
132
- import {
133
- ledgerWallet
134
- } from "./chunk-BF3VSNPL.js";
135
- import {
136
- coreWallet
137
- } from "./chunk-FBI7UGNO.js";
138
135
  import {
139
136
  dawnWallet
140
137
  } from "./chunk-YMP3W2MO.js";
141
138
  import {
142
139
  desigWallet
143
140
  } from "./chunk-DVXPOWEC.js";
144
- import {
145
- enkryptWallet
146
- } from "./chunk-5QHPQU7J.js";
147
141
  import {
148
142
  foxWallet
149
143
  } from "./chunk-K6GEK4JB.js";
@@ -151,17 +145,20 @@ import {
151
145
  frameWallet
152
146
  } from "./chunk-CP45RGL4.js";
153
147
  import {
154
- frontierWallet
155
- } from "./chunk-JWO4ZQLK.js";
148
+ enkryptWallet
149
+ } from "./chunk-5QHPQU7J.js";
156
150
  import {
157
151
  gateWallet
158
152
  } from "./chunk-K6UZPSBG.js";
159
153
  import {
160
- bitgetWallet
161
- } from "./chunk-CULIWWLV.js";
154
+ frontierWallet
155
+ } from "./chunk-JWO4ZQLK.js";
162
156
  import {
163
- bitverseWallet
164
- } from "./chunk-6HCSSBZY.js";
157
+ imTokenWallet
158
+ } from "./chunk-EHE2536P.js";
159
+ import {
160
+ bloomWallet
161
+ } from "./chunk-3KPCADAF.js";
165
162
  import {
166
163
  braveWallet
167
164
  } from "./chunk-EYN3CVFM.js";
@@ -180,12 +177,12 @@ import {
180
177
  import {
181
178
  compassWallet
182
179
  } from "./chunk-3OO564GS.js";
180
+ import {
181
+ coreWallet
182
+ } from "./chunk-FBI7UGNO.js";
183
183
  import {
184
184
  argentWallet
185
185
  } from "./chunk-XT2WYPN5.js";
186
- import {
187
- berasigWallet
188
- } from "./chunk-KM55XFBI.js";
189
186
  import {
190
187
  bestWallet
191
188
  } from "./chunk-OPAPBEA5.js";
@@ -195,14 +192,17 @@ import {
195
192
  import {
196
193
  binanceWallet
197
194
  } from "./chunk-4T3UOJYR.js";
195
+ import {
196
+ bitgetWallet
197
+ } from "./chunk-CULIWWLV.js";
198
198
  import "./chunk-RETKWSKD.js";
199
199
  import {
200
200
  bitskiWallet
201
201
  } from "./chunk-DZB25PZ7.js";
202
202
  import "./chunk-MBBGZGXF.js";
203
203
  import {
204
- bloomWallet
205
- } from "./chunk-3KPCADAF.js";
204
+ bitverseWallet
205
+ } from "./chunk-6HCSSBZY.js";
206
206
  import "./chunk-PODFK4OS.js";
207
207
  export {
208
208
  abcWallet,
@@ -0,0 +1,3 @@
1
+ import type { DefaultWalletOptions, Wallet } from '../../Wallet';
2
+ export type KlipWalletOptions = DefaultWalletOptions;
3
+ export declare const klipWallet: ({ projectId, walletConnectParameters, }: KlipWalletOptions) => Wallet;
@@ -0,0 +1,68 @@
1
+ "use client";
2
+ import {
3
+ getWalletConnectConnector
4
+ } from "../chunk-PODFK4OS.js";
5
+
6
+ // src/wallets/walletConnectors/klipWallet/klipWallet.ts
7
+ var klipWallet = ({
8
+ projectId,
9
+ walletConnectParameters
10
+ }) => {
11
+ const shouldUseWalletConnect = true;
12
+ const getUriMobile = (uri) => {
13
+ return `klip://walletconnect?uri=${encodeURIComponent(uri)}`;
14
+ };
15
+ const getUriQR = (uri) => {
16
+ return uri;
17
+ };
18
+ const mobileConnector = {
19
+ getUri: shouldUseWalletConnect ? getUriMobile : void 0
20
+ };
21
+ let qrConnector = void 0;
22
+ if (shouldUseWalletConnect) {
23
+ qrConnector = {
24
+ getUri: getUriQR,
25
+ instructions: {
26
+ learnMoreUrl: "https://klipwallet.com",
27
+ steps: [
28
+ {
29
+ description: "wallet_connectors.klip.qr_code.step1.description",
30
+ step: "install",
31
+ title: "wallet_connectors.klip.qr_code.step1.title"
32
+ },
33
+ {
34
+ description: "wallet_connectors.klip.qr_code.step2.description",
35
+ step: "create",
36
+ title: "wallet_connectors.klip.qr_code.step2.title"
37
+ },
38
+ {
39
+ description: "wallet_connectors.klip.qr_code.step3.description",
40
+ step: "scan",
41
+ title: "wallet_connectors.klip.qr_code.step3.title"
42
+ }
43
+ ]
44
+ }
45
+ };
46
+ }
47
+ return {
48
+ id: "klip",
49
+ name: "Klip Wallet",
50
+ iconUrl: async () => (await import("../klipWallet-PPTYYB5G.js")).default,
51
+ iconBackground: "#FEE500",
52
+ downloadUrls: {
53
+ ios: "https://apps.apple.com/kr/app/klip/id1627665524",
54
+ android: "https://play.google.com/store/apps/details?id=com.klipwallet.app",
55
+ mobile: "https://klipwallet.com",
56
+ qrCode: "https://klipwallet.com"
57
+ },
58
+ mobile: mobileConnector,
59
+ qrCode: qrConnector,
60
+ createConnector: getWalletConnectConnector({
61
+ projectId,
62
+ walletConnectParameters
63
+ })
64
+ };
65
+ };
66
+ export {
67
+ klipWallet
68
+ };
@@ -0,0 +1,7 @@
1
+ "use client";
2
+
3
+ // src/wallets/walletConnectors/klipWallet/klipWallet.svg
4
+ var klipWallet_default = 'data:image/svg+xml,<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">%0A <rect width="28" height="28" rx="6" fill="%23FEE500"/>%0A <path d="M8 8H12V20H8V8Z" fill="%233C1E1E"/>%0A <path d="M14 8L20 14L14 20V8Z" fill="%233C1E1E"/>%0A</svg>%0A';
5
+ export {
6
+ klipWallet_default as default
7
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talken/talkenkit",
3
- "version": "2.4.28",
3
+ "version": "2.4.30",
4
4
  "description": "The best way to connect a wallet 🌈 🧰",
5
5
  "files": [
6
6
  "dist",
@@ -22,16 +22,6 @@
22
22
  "engines": {
23
23
  "node": ">=12.4"
24
24
  },
25
- "scripts": {
26
- "build": "node build.js",
27
- "build:watch": "node build.js --watch",
28
- "dev": "pnpm build:watch & pnpm typegen:watch",
29
- "prepare": "MINIFY_CSS=true pnpm build",
30
- "prebuild": "pnpm typegen",
31
- "typecheck": "pnpm tsc --noEmit",
32
- "typegen": "tsc --emitDeclarationOnly || true",
33
- "typegen:watch": "tsc --emitDeclarationOnly --watch"
34
- },
35
25
  "keywords": [
36
26
  "ens",
37
27
  "ethereum",
@@ -95,5 +85,14 @@
95
85
  "type": "git",
96
86
  "url": "git+https://github.com/talken-io/talken-kit.git",
97
87
  "directory": "packages/talkenkit"
88
+ },
89
+ "scripts": {
90
+ "build": "node build.js",
91
+ "build:watch": "node build.js --watch",
92
+ "dev": "pnpm build:watch & pnpm typegen:watch",
93
+ "prebuild": "pnpm typegen",
94
+ "typecheck": "pnpm tsc --noEmit",
95
+ "typegen": "tsc --emitDeclarationOnly || true",
96
+ "typegen:watch": "tsc --emitDeclarationOnly --watch"
98
97
  }
99
- }
98
+ }
@@ -2,6 +2,9 @@
2
2
  import {
3
3
  setTalkenApiClient
4
4
  } from "./chunk-R6ZE7JAZ.js";
5
+ import {
6
+ resolveTalkenApiUrl
7
+ } from "./chunk-GFWUFYT2.js";
5
8
  import {
6
9
  setGlobalDefaultBitcoinNetwork,
7
10
  setGlobalDefaultChainId,
@@ -17,9 +20,6 @@ import {
17
20
  loadFromStorage,
18
21
  saveAuthState
19
22
  } from "./chunk-A66MTFML.js";
20
- import {
21
- resolveTalkenApiUrl
22
- } from "./chunk-GFWUFYT2.js";
23
23
  import {
24
24
  createTalkenApiClient
25
25
  } from "./chunk-BHEVY4QY.js";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  setTalkenApiClient
4
4
  } from "./chunk-R6ZE7JAZ.js";
5
+ import {
6
+ createAbcEvmProvider
7
+ } from "./chunk-NU3ITJNK.js";
5
8
  import {
6
9
  setGlobalDefaultBitcoinNetwork,
7
10
  setGlobalDefaultChainId,
8
11
  setGlobalDefaultSolanaNetwork
9
12
  } from "./chunk-O4AU63LK.js";
10
- import {
11
- createAbcEvmProvider
12
- } from "./chunk-NU3ITJNK.js";
13
13
  import {
14
14
  clearAuthState,
15
15
  clearStorage,