@talken/talkenkit 2.3.15 → 2.4.5
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.
- package/dist/{chunk-UWHLB4MJ.js → chunk-RQ637EP3.js} +0 -2
- package/dist/components/ConnectOptions/ExternalWallets/EthereumWallet/EthereumWalletList.d.ts +4 -4
- package/dist/index.d.ts +6 -5
- package/dist/index.js +6783 -6571
- package/dist/{secure-SSSSQ4NA.js → secure-X6ZSGFOB.js} +1 -1
- package/dist/services/AbcAuthService.d.ts +1 -1
- package/dist/solana/AbcSolanaAutoConnector.d.ts +7 -0
- package/dist/solana/SolanaWalletProvider.d.ts +18 -2
- package/dist/solana/config.d.ts +26 -0
- package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.d.ts +7 -0
- package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.js +37 -0
- package/dist/wallets/walletConnectors/abcWallet/abcApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +6 -6
- package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.d.ts +166 -0
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +725 -0
- package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.d.ts +5 -0
- package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/api/SigningApi.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.d.ts +16 -5
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/api/index.js +13 -13
- package/dist/wallets/walletConnectors/abcWallet/googleAuth.d.ts +1 -1
- package/dist/wallets/walletConnectors/abcWallet/googleAuth.js +5 -7
- package/dist/wallets/walletConnectors/abcWallet/index.d.ts +3 -7
- package/dist/wallets/walletConnectors/abcWallet/index.js +36 -46
- package/dist/wallets/walletConnectors/abcWallet/secure.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/sessionUtils.d.ts +38 -0
- package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +15 -0
- package/dist/wallets/walletConnectors/abcWallet/types.d.ts +34 -1
- package/dist/wallets/walletConnectors/abcWallet/types.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/utils.d.ts +1 -1
- package/dist/wallets/walletConnectors/abcWallet/utils.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +2 -2
- package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
- package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
- package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
- package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
- package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
- package/dist/wallets/walletConnectors/chunk-2GNL2GNB.js +154 -0
- package/dist/wallets/walletConnectors/{chunk-5DDAV4BZ.js → chunk-2NAY6X3G.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-ZIYAL44B.js → chunk-2NVHWZUE.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-LENPUTNQ.js → chunk-36J4NGMW.js} +12 -20
- package/dist/wallets/walletConnectors/{chunk-4MF5RSML.js → chunk-3CTIR723.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-AVPBPELO.js → chunk-3WLUH24A.js} +10 -10
- package/dist/wallets/walletConnectors/{chunk-YEHCPL4R.js → chunk-53LPTQ6J.js} +2 -2
- package/dist/wallets/walletConnectors/{chunk-GXGRTWJM.js → chunk-5CZGFT24.js} +10 -10
- package/dist/wallets/walletConnectors/{chunk-BJHGC546.js → chunk-5JIPWC5W.js} +12 -24
- package/dist/wallets/walletConnectors/{chunk-4N6JD6LY.js → chunk-5LPD35BU.js} +9 -9
- package/dist/wallets/walletConnectors/{chunk-UV5HHESJ.js → chunk-5RSS3SRV.js} +29 -12
- package/dist/wallets/walletConnectors/{chunk-3ZE57J3R.js → chunk-64TRAZ6V.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-KKPINUPY.js → chunk-6BAXMYSN.js} +2 -2
- package/dist/wallets/walletConnectors/{chunk-PPIFAF7N.js → chunk-7MOCKWA7.js} +65 -19
- package/dist/wallets/walletConnectors/{chunk-75RN2RLT.js → chunk-7TYZCXIR.js} +12 -12
- package/dist/wallets/walletConnectors/{chunk-HVPQO6ZG.js → chunk-7UIXGYOT.js} +5 -20
- package/dist/wallets/walletConnectors/{chunk-BL57XWJY.js → chunk-7UQQKSV7.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-FGBDWBWQ.js → chunk-AIKTQX6B.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-AO24PU7X.js +104 -0
- package/dist/wallets/walletConnectors/{chunk-4YJWX7I3.js → chunk-APLOMU6R.js} +1 -1
- package/dist/wallets/walletConnectors/chunk-AZAV5URB.js +267 -0
- package/dist/wallets/walletConnectors/chunk-BO6OI7XU.js +63 -0
- package/dist/wallets/walletConnectors/{chunk-P2GV6NQG.js → chunk-BV3DCJXA.js} +12 -20
- package/dist/wallets/walletConnectors/{chunk-KJHOGJ3A.js → chunk-CNRPEVLV.js} +16 -4
- package/dist/wallets/walletConnectors/{chunk-OC2O4BHA.js → chunk-COPAK5YT.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-CZVBS7QE.js +436 -0
- package/dist/wallets/walletConnectors/{chunk-QKUFFUM5.js → chunk-DA5J6GHZ.js} +14 -4
- package/dist/wallets/walletConnectors/chunk-FMDSZ2CE.js +63 -0
- package/dist/wallets/walletConnectors/{chunk-5CCU7PNU.js → chunk-FQTLYAWT.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-FUOQBONI.js +47 -0
- package/dist/wallets/walletConnectors/chunk-FWCS4HBL.js +1695 -0
- package/dist/wallets/walletConnectors/chunk-FY7UDC3W.js +63 -0
- package/dist/wallets/walletConnectors/chunk-GZUP3M2X.js +63 -0
- package/dist/wallets/walletConnectors/chunk-H52W4ZFE.js +272 -0
- package/dist/wallets/walletConnectors/chunk-HEQZLRTH.js +309 -0
- package/dist/wallets/walletConnectors/{chunk-ISAMATTH.js → chunk-HFC4AK72.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-HKIV22NT.js +63 -0
- package/dist/wallets/walletConnectors/chunk-HLC24OGS.js +63 -0
- package/dist/wallets/walletConnectors/{chunk-5TDZSXJ4.js → chunk-HTD7IRKM.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-IQJWD4IN.js +269 -0
- package/dist/wallets/walletConnectors/chunk-IZUAJRJ4.js +311 -0
- package/dist/wallets/walletConnectors/{chunk-NX5MQHSQ.js → chunk-J6VUIOSE.js} +23 -2
- package/dist/wallets/walletConnectors/chunk-JH2SJPEY.js +63 -0
- package/dist/wallets/walletConnectors/chunk-JQ57SCY6.js +313 -0
- package/dist/wallets/walletConnectors/{chunk-F5P2INHS.js → chunk-KB7OGAUC.js} +14 -4
- package/dist/wallets/walletConnectors/chunk-KXEAFXAA.js +226 -0
- package/dist/wallets/walletConnectors/{chunk-JR2C4XXX.js → chunk-LLWI2QWC.js} +74 -18
- package/dist/wallets/walletConnectors/{chunk-H2MX4NAL.js → chunk-LQ2U33WM.js} +29 -16
- package/dist/wallets/walletConnectors/{chunk-BNSBK5PQ.js → chunk-M7KXDTM6.js} +14 -4
- package/dist/wallets/walletConnectors/{chunk-CYYBGUSO.js → chunk-MKAXMNZM.js} +4 -4
- package/dist/wallets/walletConnectors/chunk-MNRRJSFM.js +272 -0
- package/dist/wallets/walletConnectors/chunk-MPFE6GP2.js +306 -0
- package/dist/wallets/walletConnectors/{chunk-EEY5CXKO.js → chunk-MPNSYA4E.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-NDLQSZ2F.js +63 -0
- package/dist/wallets/walletConnectors/{chunk-G2LI5MVX.js → chunk-NDYGTKP5.js} +0 -2
- package/dist/wallets/walletConnectors/chunk-NLBRSN6Q.js +63 -0
- package/dist/wallets/walletConnectors/{chunk-BSBRWKNG.js → chunk-NPF7NOA7.js} +69 -23
- package/dist/wallets/walletConnectors/{chunk-7DEZCGNV.js → chunk-NUJ6VD2U.js} +82 -16
- package/dist/wallets/walletConnectors/chunk-PSRATZTN.js +47 -0
- package/dist/wallets/walletConnectors/{chunk-MZOFZ2NQ.js → chunk-QCIIXMAZ.js} +2 -2
- package/dist/wallets/walletConnectors/{chunk-GHLLVM7O.js → chunk-RCI7QYCZ.js} +82 -18
- package/dist/wallets/walletConnectors/{chunk-QI2VB7LL.js → chunk-RHQXGWIW.js} +82 -16
- package/dist/wallets/walletConnectors/chunk-RPOLRZ4N.js +276 -0
- package/dist/wallets/walletConnectors/{chunk-5UEBEMEE.js → chunk-RQIUWXDF.js} +2 -1
- package/dist/wallets/walletConnectors/{chunk-RLR4Y5WO.js → chunk-SCD35IRD.js} +4 -0
- package/dist/wallets/walletConnectors/{chunk-EGOIRXTV.js → chunk-SOCVQ5N3.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-TTRSCIGA.js +194 -0
- package/dist/wallets/walletConnectors/chunk-TYUEB4VT.js +477 -0
- package/dist/wallets/walletConnectors/{chunk-WTYSUOKN.js → chunk-UZXTNCDO.js} +17 -5
- package/dist/wallets/walletConnectors/chunk-V33I7JGZ.js +156 -0
- package/dist/wallets/walletConnectors/chunk-V4Q3GNBX.js +484 -0
- package/dist/wallets/walletConnectors/chunk-VCCTIYUJ.js +63 -0
- package/dist/wallets/walletConnectors/chunk-VGOISIH3.js +223 -0
- package/dist/wallets/walletConnectors/chunk-XFGVJOQL.js +223 -0
- package/dist/wallets/walletConnectors/chunk-XIOPKI2F.js +47 -0
- package/dist/wallets/walletConnectors/{chunk-O6EAIC4G.js → chunk-XJ4SP35I.js} +4 -1
- package/dist/wallets/walletConnectors/chunk-XKGUE56S.js +226 -0
- package/dist/wallets/walletConnectors/chunk-XQEAXENJ.js +63 -0
- package/dist/wallets/walletConnectors/{chunk-RY4RAB3D.js → chunk-YCZ4CZQ6.js} +106 -66
- package/dist/wallets/walletConnectors/chunk-Z2DC2J7S.js +345 -0
- package/dist/wallets/walletConnectors/chunk-Z2K3RHWK.js +47 -0
- package/dist/wallets/walletConnectors/chunk-ZASMSEC3.js +63 -0
- package/dist/wallets/walletConnectors/{chunk-G7PEFBL6.js → chunk-ZNBWRE3K.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-ZNVFM2J2.js +156 -0
- package/dist/wallets/walletConnectors/chunk-ZQLQELFC.js +309 -0
- package/dist/wallets/walletConnectors/chunk-ZR7CEF64.js +63 -0
- package/dist/wallets/walletConnectors/chunk-ZSGFDK77.js +63 -0
- package/dist/wallets/walletConnectors/chunk-ZUIY2TRJ.js +1695 -0
- package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
- package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
- package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
- package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
- package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
- package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
- package/dist/wallets/walletConnectors/index.js +55 -55
- package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
- package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
- package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
- package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
- package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
- package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
- package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
- package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
- package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
- package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
- package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
- package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
- package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
- package/package.json +12 -11
- package/LICENSE +0 -9
- package/dist/solana/hooks/index.d.ts +0 -12
- package/dist/solana/hooks/useSolanaAccount.d.ts +0 -98
- package/dist/solana/hooks/useSolanaConnection.d.ts +0 -72
- package/dist/solana/hooks/useSolanaSendTransaction.d.ts +0 -98
- package/dist/solana/hooks/useSolanaSignMessage.d.ts +0 -82
- package/dist/wallets/walletConnectors/abcWallet/abcSolProvider.d.ts +0 -45
- package/dist/wallets/walletConnectors/abcWallet/abcSolProvider.js +0 -10
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaConnector.d.ts +0 -115
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaConnector.js +0 -12
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +0 -143
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +0 -13
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWallet.d.ts +0 -18
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWallet.js +0 -15
- package/dist/wallets/walletConnectors/chunk-2XZBPMQJ.js +0 -39
- package/dist/wallets/walletConnectors/chunk-3SVPZCA6.js +0 -71
- package/dist/wallets/walletConnectors/chunk-3ZZXE7EL.js +0 -39
- package/dist/wallets/walletConnectors/chunk-5QEUEPNY.js +0 -94
- package/dist/wallets/walletConnectors/chunk-75W4VLFA.js +0 -482
- package/dist/wallets/walletConnectors/chunk-B6JLYR3I.js +0 -66
- package/dist/wallets/walletConnectors/chunk-FROV5VDF.js +0 -346
- package/dist/wallets/walletConnectors/chunk-HKWBR5B7.js +0 -102
- package/dist/wallets/walletConnectors/chunk-K4APJ4PE.js +0 -96
- package/dist/wallets/walletConnectors/chunk-LJ2B47VF.js +0 -108
- package/dist/wallets/walletConnectors/chunk-LXINMUQC.js +0 -186
- package/dist/wallets/walletConnectors/chunk-MORUEOYX.js +0 -76
- package/dist/wallets/walletConnectors/chunk-MQTXA63X.js +0 -27
- package/dist/wallets/walletConnectors/chunk-N4FOYXQD.js +0 -63
- package/dist/wallets/walletConnectors/chunk-NEXFU6BZ.js +0 -39
- package/dist/wallets/walletConnectors/chunk-PMZJGS7X.js +0 -73
- package/dist/wallets/walletConnectors/chunk-QEHZXKRF.js +0 -39
- package/dist/wallets/walletConnectors/chunk-T6KJZAPR.js +0 -47
- package/dist/wallets/walletConnectors/chunk-UBCMBPX3.js +0 -58
- package/dist/wallets/walletConnectors/chunk-UGQXI3RN.js +0 -284
- package/dist/wallets/walletConnectors/chunk-WZZVA3LW.js +0 -101
- package/dist/wallets/walletConnectors/chunk-X4WUD7PF.js +0 -63
- package/dist/wallets/walletConnectors/chunk-XOQNQKZE.js +0 -98
- package/dist/wallets/walletConnectors/chunk-XPSCFUX6.js +0 -372
- package/dist/wallets/walletConnectors/chunk-Y3LWEDF6.js +0 -63
- package/dist/wallets/walletConnectors/chunk-ZJ6OFFD5.js +0 -95
|
@@ -0,0 +1,725 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
SolanaApi
|
|
4
|
+
} from "../chunk-XKGUE56S.js";
|
|
5
|
+
import "../chunk-LQ2U33WM.js";
|
|
6
|
+
import {
|
|
7
|
+
createAbcWaasClient
|
|
8
|
+
} from "../chunk-ZUIY2TRJ.js";
|
|
9
|
+
import "../chunk-NDYGTKP5.js";
|
|
10
|
+
import "../chunk-A7FIBI6X.js";
|
|
11
|
+
import "../chunk-TYUEB4VT.js";
|
|
12
|
+
import "../chunk-VETRBBA2.js";
|
|
13
|
+
import "../chunk-RQIUWXDF.js";
|
|
14
|
+
|
|
15
|
+
// src/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.ts
|
|
16
|
+
import {
|
|
17
|
+
BaseMessageSignerWalletAdapter,
|
|
18
|
+
WalletConnectionError,
|
|
19
|
+
WalletNotReadyError,
|
|
20
|
+
WalletReadyState,
|
|
21
|
+
WalletSendTransactionError,
|
|
22
|
+
WalletSignMessageError,
|
|
23
|
+
WalletSignTransactionError,
|
|
24
|
+
isVersionedTransaction
|
|
25
|
+
} from "@solana/wallet-adapter-base";
|
|
26
|
+
import {
|
|
27
|
+
PublicKey
|
|
28
|
+
} from "@solana/web3.js";
|
|
29
|
+
|
|
30
|
+
// src/utils/encryption.ts
|
|
31
|
+
async function hashPin(pin) {
|
|
32
|
+
const encoder = new TextEncoder();
|
|
33
|
+
const data = encoder.encode(pin);
|
|
34
|
+
const hash = await crypto.subtle.digest("SHA-256", data);
|
|
35
|
+
return Array.from(new Uint8Array(hash)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// src/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.ts
|
|
39
|
+
var AbcWalletName = "ABC Wallet";
|
|
40
|
+
var MODAL_STYLES = `
|
|
41
|
+
.abc-wallet-modal-overlay {
|
|
42
|
+
position: fixed;
|
|
43
|
+
top: 0;
|
|
44
|
+
left: 0;
|
|
45
|
+
right: 0;
|
|
46
|
+
bottom: 0;
|
|
47
|
+
background: rgba(0, 0, 0, 0.5);
|
|
48
|
+
display: flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
z-index: 10000;
|
|
52
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.abc-wallet-modal {
|
|
56
|
+
background: white;
|
|
57
|
+
border-radius: 16px;
|
|
58
|
+
padding: 24px;
|
|
59
|
+
min-width: 320px;
|
|
60
|
+
max-width: 400px;
|
|
61
|
+
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
|
|
62
|
+
animation: abc-wallet-modal-enter 0.3s ease-out;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@keyframes abc-wallet-modal-enter {
|
|
66
|
+
from {
|
|
67
|
+
opacity: 0;
|
|
68
|
+
transform: translateY(-20px);
|
|
69
|
+
}
|
|
70
|
+
to {
|
|
71
|
+
opacity: 1;
|
|
72
|
+
transform: translateY(0);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.abc-wallet-modal-header {
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
margin-bottom: 20px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.abc-wallet-modal-logo {
|
|
83
|
+
width: 48px;
|
|
84
|
+
height: 48px;
|
|
85
|
+
margin-right: 12px;
|
|
86
|
+
background: #007AFF;
|
|
87
|
+
border-radius: 8px;
|
|
88
|
+
display: flex;
|
|
89
|
+
align-items: center;
|
|
90
|
+
justify-content: center;
|
|
91
|
+
color: white;
|
|
92
|
+
font-weight: bold;
|
|
93
|
+
font-size: 20px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.abc-wallet-modal-title {
|
|
97
|
+
font-size: 20px;
|
|
98
|
+
font-weight: 600;
|
|
99
|
+
color: #333;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.abc-wallet-modal-subtitle {
|
|
103
|
+
font-size: 14px;
|
|
104
|
+
color: #666;
|
|
105
|
+
margin-bottom: 20px;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.abc-wallet-modal-input {
|
|
109
|
+
width: 100%;
|
|
110
|
+
padding: 12px;
|
|
111
|
+
border: 1px solid #ddd;
|
|
112
|
+
border-radius: 8px;
|
|
113
|
+
font-size: 16px;
|
|
114
|
+
margin-bottom: 12px;
|
|
115
|
+
box-sizing: border-box;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.abc-wallet-modal-input:focus {
|
|
119
|
+
outline: none;
|
|
120
|
+
border-color: #007AFF;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.abc-wallet-modal-button {
|
|
124
|
+
width: 100%;
|
|
125
|
+
padding: 12px;
|
|
126
|
+
background: #007AFF;
|
|
127
|
+
color: white;
|
|
128
|
+
border: none;
|
|
129
|
+
border-radius: 8px;
|
|
130
|
+
font-size: 16px;
|
|
131
|
+
font-weight: 600;
|
|
132
|
+
cursor: pointer;
|
|
133
|
+
transition: background 0.2s;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.abc-wallet-modal-button:hover {
|
|
137
|
+
background: #0056b3;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.abc-wallet-modal-button:disabled {
|
|
141
|
+
background: #ccc;
|
|
142
|
+
cursor: not-allowed;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.abc-wallet-modal-error {
|
|
146
|
+
color: #ff3333;
|
|
147
|
+
font-size: 14px;
|
|
148
|
+
margin-top: 8px;
|
|
149
|
+
text-align: center;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.abc-wallet-modal-pin-dots {
|
|
153
|
+
display: flex;
|
|
154
|
+
justify-content: center;
|
|
155
|
+
gap: 12px;
|
|
156
|
+
margin: 20px 0;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.abc-wallet-modal-pin-dot {
|
|
160
|
+
width: 16px;
|
|
161
|
+
height: 16px;
|
|
162
|
+
border: 2px solid #007AFF;
|
|
163
|
+
border-radius: 50%;
|
|
164
|
+
transition: background 0.2s;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.abc-wallet-modal-pin-dot.filled {
|
|
168
|
+
background: #007AFF;
|
|
169
|
+
}
|
|
170
|
+
`;
|
|
171
|
+
var AbcSolanaWalletAdapter = class extends BaseMessageSignerWalletAdapter {
|
|
172
|
+
/**
|
|
173
|
+
* Creates a new ABC Solana Wallet Adapter instance
|
|
174
|
+
* @param config - Optional configuration
|
|
175
|
+
*/
|
|
176
|
+
constructor(config = {}) {
|
|
177
|
+
super();
|
|
178
|
+
/**
|
|
179
|
+
* Wallet display name
|
|
180
|
+
*/
|
|
181
|
+
this.name = AbcWalletName;
|
|
182
|
+
/**
|
|
183
|
+
* Wallet website URL
|
|
184
|
+
*/
|
|
185
|
+
this.url = "https://myabcwallet.com";
|
|
186
|
+
/**
|
|
187
|
+
* Wallet icon (ABC logo)
|
|
188
|
+
*/
|
|
189
|
+
this.icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiByeD0iOCIgZmlsbD0iIzAwN0FGRiIvPgo8cGF0aCBkPSJNMTYgOEwxMCAxNkgxM1YyNEwxOSAxNkgxNlY4WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+";
|
|
190
|
+
/**
|
|
191
|
+
* Supported transaction versions
|
|
192
|
+
*/
|
|
193
|
+
this.supportedTransactionVersions = /* @__PURE__ */ new Set(["legacy", 0]);
|
|
194
|
+
this._styleInjected = false;
|
|
195
|
+
this._requestPinCallback = null;
|
|
196
|
+
this._connecting = false;
|
|
197
|
+
this._wallet = null;
|
|
198
|
+
this._publicKey = null;
|
|
199
|
+
this._config = {
|
|
200
|
+
waasUrl: config.waasUrl || "https://api.waas.myabcwallet.com",
|
|
201
|
+
environment: config.environment || "production",
|
|
202
|
+
network: config.network || "solana",
|
|
203
|
+
// ABC WaaS format (mainnet)
|
|
204
|
+
onRequestAuth: config.onRequestAuth,
|
|
205
|
+
onRequestPin: config.onRequestPin,
|
|
206
|
+
disableBuiltInAuth: config.disableBuiltInAuth ?? true
|
|
207
|
+
// Default: true (TalkenKit integration mode)
|
|
208
|
+
};
|
|
209
|
+
const plain = Array.from(crypto.getRandomValues(new Uint8Array(32))).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
210
|
+
const walletConfig = {
|
|
211
|
+
waasUrl: this._config.waasUrl,
|
|
212
|
+
plain,
|
|
213
|
+
environment: this._config.environment
|
|
214
|
+
};
|
|
215
|
+
this._client = createAbcWaasClient(walletConfig);
|
|
216
|
+
this._solanaApi = new SolanaApi(walletConfig);
|
|
217
|
+
this._injectStyles();
|
|
218
|
+
if (typeof window !== "undefined") {
|
|
219
|
+
this._handleStorageUpdate = this._handleStorageUpdate.bind(this);
|
|
220
|
+
window.addEventListener(
|
|
221
|
+
"talkenkit_storage_update",
|
|
222
|
+
this._handleStorageUpdate
|
|
223
|
+
);
|
|
224
|
+
document.addEventListener("visibilitychange", this._handleStorageUpdate);
|
|
225
|
+
setTimeout(() => this._handleStorageUpdate(), 100);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Public key of the connected wallet
|
|
230
|
+
*/
|
|
231
|
+
get publicKey() {
|
|
232
|
+
return this._publicKey;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Whether the wallet is currently connecting
|
|
236
|
+
*/
|
|
237
|
+
get connecting() {
|
|
238
|
+
return this._connecting;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Whether the wallet is connected
|
|
242
|
+
*/
|
|
243
|
+
get connected() {
|
|
244
|
+
return !!this._wallet && !!this._publicKey;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Wallet ready state - always ready for embedded wallet
|
|
248
|
+
*/
|
|
249
|
+
get readyState() {
|
|
250
|
+
return WalletReadyState.Installed;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Set PIN request callback (for InternalPinProvider integration)
|
|
254
|
+
*/
|
|
255
|
+
setRequestPinCallback(callback) {
|
|
256
|
+
this._requestPinCallback = callback;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Connect to ABC Wallet
|
|
260
|
+
*/
|
|
261
|
+
async connect() {
|
|
262
|
+
try {
|
|
263
|
+
if (this.connected || this.connecting)
|
|
264
|
+
return;
|
|
265
|
+
this._connecting = true;
|
|
266
|
+
const authState = localStorage.getItem("talkenkit_abc_auth_state");
|
|
267
|
+
if (authState) {
|
|
268
|
+
try {
|
|
269
|
+
const authData = JSON.parse(authState);
|
|
270
|
+
if (authData.accessToken && authData.refreshToken && authData.solanaWallet && authData.expiresAt) {
|
|
271
|
+
if (authData.expiresAt > Date.now()) {
|
|
272
|
+
const wallet = authData.solanaWallet;
|
|
273
|
+
const keyId = wallet.keyId || wallet.key_id;
|
|
274
|
+
const encryptedShare = wallet.encryptedShare || wallet.encrypted_share;
|
|
275
|
+
const secretStore = wallet.secretStore || wallet.secret_store;
|
|
276
|
+
if (!keyId || !encryptedShare) {
|
|
277
|
+
this._connecting = false;
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const normalizedWallet = {
|
|
281
|
+
...wallet,
|
|
282
|
+
keyId,
|
|
283
|
+
encryptedShare,
|
|
284
|
+
secretStore: secretStore || ""
|
|
285
|
+
};
|
|
286
|
+
this._client.setTokens(
|
|
287
|
+
authData.accessToken,
|
|
288
|
+
authData.refreshToken,
|
|
289
|
+
authData.expiresAt
|
|
290
|
+
);
|
|
291
|
+
this._solanaApi.setTokens(
|
|
292
|
+
authData.accessToken,
|
|
293
|
+
authData.refreshToken,
|
|
294
|
+
authData.expiresAt
|
|
295
|
+
);
|
|
296
|
+
this._wallet = normalizedWallet;
|
|
297
|
+
const addressOrPubkey = normalizedWallet.address || normalizedWallet.publicKey;
|
|
298
|
+
try {
|
|
299
|
+
this._publicKey = new PublicKey(addressOrPubkey);
|
|
300
|
+
} catch (_error) {
|
|
301
|
+
const hexKey = addressOrPubkey.startsWith("0x") ? addressOrPubkey.slice(2) : addressOrPubkey;
|
|
302
|
+
const bytes = new Uint8Array(Buffer.from(hexKey, "hex"));
|
|
303
|
+
this._publicKey = new PublicKey(bytes);
|
|
304
|
+
}
|
|
305
|
+
this._connecting = false;
|
|
306
|
+
const displayAddress2 = this._publicKey.toBase58();
|
|
307
|
+
console.log(
|
|
308
|
+
`[AbcSolanaWalletAdapter] \u2705 Wallet connected: ${displayAddress2.slice(0, 6)}...${displayAddress2.slice(-6)}`
|
|
309
|
+
);
|
|
310
|
+
this.emit("connect", this._publicKey);
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
console.log(
|
|
314
|
+
"[AbcSolanaWalletAdapter] Token expired, clearing session"
|
|
315
|
+
);
|
|
316
|
+
localStorage.removeItem("talkenkit_abc_auth_state");
|
|
317
|
+
}
|
|
318
|
+
} catch (error) {
|
|
319
|
+
console.error(
|
|
320
|
+
"[AbcSolanaWalletAdapter] Failed to restore session:",
|
|
321
|
+
error
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (this._config.disableBuiltInAuth && !this._config.onRequestAuth) {
|
|
326
|
+
this._connecting = false;
|
|
327
|
+
throw new WalletConnectionError(
|
|
328
|
+
"ABC Wallet requires authentication. Please connect via TalkenKit Connect button."
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
const authHandler = this._config.onRequestAuth || this._showAuthModal.bind(this);
|
|
332
|
+
const authResult = await authHandler();
|
|
333
|
+
const loginResponse = await this._client.snsLogin({
|
|
334
|
+
email: authResult.email,
|
|
335
|
+
token: "demo-token",
|
|
336
|
+
// Simplified authentication for standalone adapter
|
|
337
|
+
service: "google",
|
|
338
|
+
// Default to Google for now
|
|
339
|
+
audience: "abc_wallet"
|
|
340
|
+
});
|
|
341
|
+
const expiresAt = Date.now() + 3600 * 1e3;
|
|
342
|
+
this._client.setTokens(
|
|
343
|
+
loginResponse.access_token,
|
|
344
|
+
loginResponse.refresh_token,
|
|
345
|
+
expiresAt
|
|
346
|
+
);
|
|
347
|
+
this._solanaApi.setTokens(
|
|
348
|
+
loginResponse.access_token,
|
|
349
|
+
loginResponse.refresh_token,
|
|
350
|
+
expiresAt
|
|
351
|
+
);
|
|
352
|
+
const pinHandler = this._requestPinCallback || this._config.onRequestPin || this._showPinModal.bind(this);
|
|
353
|
+
const pin = await pinHandler();
|
|
354
|
+
const pinHash = await hashPin(pin);
|
|
355
|
+
let walletResult;
|
|
356
|
+
try {
|
|
357
|
+
walletResult = await this._solanaApi.generateSolanaWallet(pinHash);
|
|
358
|
+
} catch (error) {
|
|
359
|
+
if (error.response?.status === 409 || error.message?.includes("already exists")) {
|
|
360
|
+
walletResult = await this._solanaApi.recoverSolanaWallet(pinHash);
|
|
361
|
+
} else {
|
|
362
|
+
throw error;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
this._wallet = walletResult;
|
|
366
|
+
try {
|
|
367
|
+
this._publicKey = new PublicKey(walletResult.address);
|
|
368
|
+
} catch {
|
|
369
|
+
const hexKey = walletResult.address.startsWith("0x") ? walletResult.address.slice(2) : walletResult.address;
|
|
370
|
+
const bytes = new Uint8Array(Buffer.from(hexKey, "hex"));
|
|
371
|
+
this._publicKey = new PublicKey(bytes);
|
|
372
|
+
}
|
|
373
|
+
this._connecting = false;
|
|
374
|
+
const displayAddress = this._publicKey.toBase58();
|
|
375
|
+
console.log(
|
|
376
|
+
`[AbcSolanaWalletAdapter] \u2705 Wallet connected: ${displayAddress.slice(0, 6)}...${displayAddress.slice(-6)}`
|
|
377
|
+
);
|
|
378
|
+
this.emit("connect", this._publicKey);
|
|
379
|
+
} catch (error) {
|
|
380
|
+
this._connecting = false;
|
|
381
|
+
throw new WalletConnectionError(error?.message, error);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Disconnect from the wallet
|
|
386
|
+
*/
|
|
387
|
+
async disconnect() {
|
|
388
|
+
const wallet = this._wallet;
|
|
389
|
+
if (wallet) {
|
|
390
|
+
this._wallet = null;
|
|
391
|
+
this._publicKey = null;
|
|
392
|
+
try {
|
|
393
|
+
await this._client.logout();
|
|
394
|
+
} catch (error) {
|
|
395
|
+
this.emit("error", new WalletConnectionError(error?.message, error));
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
this.emit("disconnect");
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Sign a message
|
|
402
|
+
*/
|
|
403
|
+
async signMessage(message) {
|
|
404
|
+
try {
|
|
405
|
+
if (!this._wallet)
|
|
406
|
+
throw new WalletNotReadyError();
|
|
407
|
+
const messageHex = Buffer.from(message).toString("hex");
|
|
408
|
+
const signatureResponse = await this._solanaApi.signSolanaMessage({
|
|
409
|
+
keyId: this._wallet.keyId,
|
|
410
|
+
encryptedShare: this._wallet.encryptedShare,
|
|
411
|
+
secretStore: this._wallet.secretStore || "",
|
|
412
|
+
message: messageHex
|
|
413
|
+
});
|
|
414
|
+
const signatureBytes = Buffer.from(signatureResponse.signature, "base64");
|
|
415
|
+
return new Uint8Array(signatureBytes);
|
|
416
|
+
} catch (error) {
|
|
417
|
+
throw new WalletSignMessageError(error?.message, error);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Sign a transaction
|
|
422
|
+
*/
|
|
423
|
+
async signTransaction(transaction) {
|
|
424
|
+
try {
|
|
425
|
+
if (!this._wallet)
|
|
426
|
+
throw new WalletNotReadyError();
|
|
427
|
+
if (!this._publicKey)
|
|
428
|
+
throw new WalletNotReadyError();
|
|
429
|
+
const pinHandler = this._requestPinCallback || this._config.onRequestPin || this._showPinModal.bind(this);
|
|
430
|
+
const pin = await pinHandler();
|
|
431
|
+
const _pinHash = await hashPin(pin);
|
|
432
|
+
const serialized = isVersionedTransaction(transaction) ? Buffer.from(transaction.serialize()) : Buffer.from(transaction.serialize({ requireAllSignatures: false }));
|
|
433
|
+
const messageHex = serialized.toString("hex");
|
|
434
|
+
const signatureResponse = await this._solanaApi.signSolanaTransaction({
|
|
435
|
+
keyId: this._wallet.keyId,
|
|
436
|
+
encryptedShare: this._wallet.encryptedShare,
|
|
437
|
+
secretStore: this._wallet.secretStore || "",
|
|
438
|
+
message: messageHex
|
|
439
|
+
});
|
|
440
|
+
const signature = Buffer.from(signatureResponse.signature, "hex");
|
|
441
|
+
if (isVersionedTransaction(transaction)) {
|
|
442
|
+
transaction.addSignature(
|
|
443
|
+
this._publicKey,
|
|
444
|
+
signature
|
|
445
|
+
);
|
|
446
|
+
} else {
|
|
447
|
+
transaction.addSignature(this._publicKey, signature);
|
|
448
|
+
}
|
|
449
|
+
return transaction;
|
|
450
|
+
} catch (error) {
|
|
451
|
+
console.error(
|
|
452
|
+
"[AbcSolanaWalletAdapter] \u274C signTransaction failed:",
|
|
453
|
+
error
|
|
454
|
+
);
|
|
455
|
+
throw new WalletSignTransactionError(error?.message, error);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Sign multiple transactions
|
|
460
|
+
*/
|
|
461
|
+
async signAllTransactions(transactions) {
|
|
462
|
+
const signedTransactions = [];
|
|
463
|
+
for (const transaction of transactions) {
|
|
464
|
+
const signed = await this.signTransaction(transaction);
|
|
465
|
+
signedTransactions.push(signed);
|
|
466
|
+
}
|
|
467
|
+
return signedTransactions;
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Send a transaction
|
|
471
|
+
*
|
|
472
|
+
* Note: ABC WaaS requires using its own transaction generation API.
|
|
473
|
+
* This method extracts transfer details and uses the ABC WaaS standard flow:
|
|
474
|
+
* 1. Generate transaction (with fresh blockhash from ABC WaaS RPC)
|
|
475
|
+
* 2. Sign transaction
|
|
476
|
+
* 3. Broadcast transaction
|
|
477
|
+
*/
|
|
478
|
+
async sendTransaction(transaction, _connection, _options = {}) {
|
|
479
|
+
try {
|
|
480
|
+
if (!this._wallet)
|
|
481
|
+
throw new WalletNotReadyError();
|
|
482
|
+
if (!this._publicKey)
|
|
483
|
+
throw new WalletNotReadyError();
|
|
484
|
+
let toAddress;
|
|
485
|
+
let amount;
|
|
486
|
+
if (!isVersionedTransaction(transaction)) {
|
|
487
|
+
const { SystemProgram } = await import("@solana/web3.js");
|
|
488
|
+
for (const instruction of transaction.instructions) {
|
|
489
|
+
if (instruction.programId.equals(SystemProgram.programId)) {
|
|
490
|
+
if (instruction.data.length >= 12 && instruction.data[0] === 2) {
|
|
491
|
+
amount = Number(
|
|
492
|
+
new DataView(instruction.data.buffer).getBigUint64(4, true)
|
|
493
|
+
);
|
|
494
|
+
if (instruction.keys.length >= 2) {
|
|
495
|
+
toAddress = instruction.keys[1].pubkey.toBase58();
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
if (!toAddress || amount === void 0) {
|
|
502
|
+
throw new WalletSendTransactionError(
|
|
503
|
+
"Unable to extract transfer details from transaction. ABC Wallet currently only supports simple SOL transfers via sendTransaction."
|
|
504
|
+
);
|
|
505
|
+
}
|
|
506
|
+
const pinHandler = this._requestPinCallback || this._config.onRequestPin || this._showPinModal.bind(this);
|
|
507
|
+
const pin = await pinHandler();
|
|
508
|
+
const _pinHash = await hashPin(pin);
|
|
509
|
+
const network = this._config.network || "solana";
|
|
510
|
+
const txGenResponse = await this._solanaApi.generateTransferTransaction({
|
|
511
|
+
network,
|
|
512
|
+
amount,
|
|
513
|
+
fromAddress: this._publicKey.toBase58(),
|
|
514
|
+
toAddress,
|
|
515
|
+
feePayerAddress: this._publicKey.toBase58()
|
|
516
|
+
});
|
|
517
|
+
if (!txGenResponse.serialized_tx) {
|
|
518
|
+
throw new WalletSendTransactionError(
|
|
519
|
+
"Failed to generate transaction via ABC WaaS"
|
|
520
|
+
);
|
|
521
|
+
}
|
|
522
|
+
const signatureResponse = await this._solanaApi.signSolanaTransaction({
|
|
523
|
+
keyId: this._wallet.keyId,
|
|
524
|
+
encryptedShare: this._wallet.encryptedShare,
|
|
525
|
+
secretStore: this._wallet.secretStore || "",
|
|
526
|
+
message: txGenResponse.serialized_tx
|
|
527
|
+
});
|
|
528
|
+
const result = await this._solanaApi.sendSolanaTransaction({
|
|
529
|
+
network,
|
|
530
|
+
serializedTX: txGenResponse.serialized_tx,
|
|
531
|
+
signatures: [signatureResponse.signature]
|
|
532
|
+
});
|
|
533
|
+
console.log(
|
|
534
|
+
"[AbcSolanaWalletAdapter] \u2705 Transaction sent:",
|
|
535
|
+
result.txHash
|
|
536
|
+
);
|
|
537
|
+
return result.txHash;
|
|
538
|
+
} catch (error) {
|
|
539
|
+
console.error(
|
|
540
|
+
"[AbcSolanaWalletAdapter] \u274C sendTransaction - failed:",
|
|
541
|
+
error
|
|
542
|
+
);
|
|
543
|
+
throw new WalletSendTransactionError(error?.message, error);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Inject modal styles into the page
|
|
548
|
+
*/
|
|
549
|
+
_injectStyles() {
|
|
550
|
+
if (this._styleInjected || typeof window === "undefined")
|
|
551
|
+
return;
|
|
552
|
+
const style = document.createElement("style");
|
|
553
|
+
style.textContent = MODAL_STYLES;
|
|
554
|
+
document.head.appendChild(style);
|
|
555
|
+
this._styleInjected = true;
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Handle storage update events for auto-connection
|
|
559
|
+
*/
|
|
560
|
+
async _handleStorageUpdate() {
|
|
561
|
+
if (this.connected || this.connecting) {
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
const authState = localStorage.getItem("talkenkit_abc_auth_state");
|
|
565
|
+
if (!authState) {
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
try {
|
|
569
|
+
const authData = JSON.parse(authState);
|
|
570
|
+
if (!authData.solanaWallet || !authData.solanaWallet.address) {
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
const wallet = authData.solanaWallet;
|
|
574
|
+
const keyId = wallet.keyId || wallet.key_id;
|
|
575
|
+
const encryptedShare = wallet.encryptedShare || wallet.encrypted_share;
|
|
576
|
+
if (!keyId || !encryptedShare) {
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
await this.connect();
|
|
580
|
+
} catch (error) {
|
|
581
|
+
console.error("[AbcSolanaWalletAdapter] Auto-connect failed:", error);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
/**
|
|
585
|
+
* Show built-in authentication modal
|
|
586
|
+
*/
|
|
587
|
+
async _showAuthModal() {
|
|
588
|
+
return new Promise((resolve, reject) => {
|
|
589
|
+
const overlay = document.createElement("div");
|
|
590
|
+
overlay.className = "abc-wallet-modal-overlay";
|
|
591
|
+
const modal = document.createElement("div");
|
|
592
|
+
modal.className = "abc-wallet-modal";
|
|
593
|
+
modal.innerHTML = `
|
|
594
|
+
<div class="abc-wallet-modal-header">
|
|
595
|
+
<div class="abc-wallet-modal-logo">ABC</div>
|
|
596
|
+
<div class="abc-wallet-modal-title">ABC Wallet</div>
|
|
597
|
+
</div>
|
|
598
|
+
<div class="abc-wallet-modal-subtitle">Sign in with your email to continue</div>
|
|
599
|
+
<input type="email" class="abc-wallet-modal-input" id="abc-email" placeholder="Email address" />
|
|
600
|
+
<input type="password" class="abc-wallet-modal-input" id="abc-password" placeholder="Password" />
|
|
601
|
+
<button class="abc-wallet-modal-button" id="abc-login">Sign In</button>
|
|
602
|
+
<div class="abc-wallet-modal-error" id="abc-error" style="display: none;"></div>
|
|
603
|
+
`;
|
|
604
|
+
overlay.appendChild(modal);
|
|
605
|
+
document.body.appendChild(overlay);
|
|
606
|
+
const emailInput = modal.querySelector("#abc-email");
|
|
607
|
+
const passwordInput = modal.querySelector(
|
|
608
|
+
"#abc-password"
|
|
609
|
+
);
|
|
610
|
+
const loginButton = modal.querySelector(
|
|
611
|
+
"#abc-login"
|
|
612
|
+
);
|
|
613
|
+
const errorDiv = modal.querySelector("#abc-error");
|
|
614
|
+
const handleLogin = () => {
|
|
615
|
+
const email = emailInput.value.trim();
|
|
616
|
+
const password = passwordInput.value.trim();
|
|
617
|
+
if (!email || !password) {
|
|
618
|
+
errorDiv.textContent = "Please enter email and password";
|
|
619
|
+
errorDiv.style.display = "block";
|
|
620
|
+
return;
|
|
621
|
+
}
|
|
622
|
+
document.body.removeChild(overlay);
|
|
623
|
+
resolve({ email, password, provider: "email" });
|
|
624
|
+
};
|
|
625
|
+
loginButton.addEventListener("click", handleLogin);
|
|
626
|
+
passwordInput.addEventListener("keypress", (e) => {
|
|
627
|
+
if (e.key === "Enter")
|
|
628
|
+
handleLogin();
|
|
629
|
+
});
|
|
630
|
+
emailInput.focus();
|
|
631
|
+
overlay.addEventListener("click", (e) => {
|
|
632
|
+
if (e.target === overlay) {
|
|
633
|
+
document.body.removeChild(overlay);
|
|
634
|
+
reject(new WalletConnectionError("User cancelled authentication"));
|
|
635
|
+
}
|
|
636
|
+
});
|
|
637
|
+
});
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* Show built-in PIN modal
|
|
641
|
+
*/
|
|
642
|
+
async _showPinModal() {
|
|
643
|
+
return new Promise((resolve, reject) => {
|
|
644
|
+
const overlay = document.createElement("div");
|
|
645
|
+
overlay.className = "abc-wallet-modal-overlay";
|
|
646
|
+
const modal = document.createElement("div");
|
|
647
|
+
modal.className = "abc-wallet-modal";
|
|
648
|
+
modal.innerHTML = `
|
|
649
|
+
<div class="abc-wallet-modal-header">
|
|
650
|
+
<div class="abc-wallet-modal-logo">ABC</div>
|
|
651
|
+
<div class="abc-wallet-modal-title">Enter PIN</div>
|
|
652
|
+
</div>
|
|
653
|
+
<div class="abc-wallet-modal-subtitle">Enter your 6-digit PIN to continue</div>
|
|
654
|
+
<div class="abc-wallet-modal-pin-dots">
|
|
655
|
+
<div class="abc-wallet-modal-pin-dot"></div>
|
|
656
|
+
<div class="abc-wallet-modal-pin-dot"></div>
|
|
657
|
+
<div class="abc-wallet-modal-pin-dot"></div>
|
|
658
|
+
<div class="abc-wallet-modal-pin-dot"></div>
|
|
659
|
+
<div class="abc-wallet-modal-pin-dot"></div>
|
|
660
|
+
<div class="abc-wallet-modal-pin-dot"></div>
|
|
661
|
+
</div>
|
|
662
|
+
<input type="password" class="abc-wallet-modal-input" id="abc-pin"
|
|
663
|
+
placeholder="Enter 6-digit PIN" maxlength="6"
|
|
664
|
+
style="text-align: center; letter-spacing: 8px;" />
|
|
665
|
+
<button class="abc-wallet-modal-button" id="abc-submit" disabled>Submit</button>
|
|
666
|
+
<div class="abc-wallet-modal-error" id="abc-error" style="display: none;"></div>
|
|
667
|
+
`;
|
|
668
|
+
overlay.appendChild(modal);
|
|
669
|
+
document.body.appendChild(overlay);
|
|
670
|
+
const pinInput = modal.querySelector("#abc-pin");
|
|
671
|
+
const submitButton = modal.querySelector(
|
|
672
|
+
"#abc-submit"
|
|
673
|
+
);
|
|
674
|
+
const errorDiv = modal.querySelector("#abc-error");
|
|
675
|
+
const dots = modal.querySelectorAll(".abc-wallet-modal-pin-dot");
|
|
676
|
+
pinInput.addEventListener("input", (e) => {
|
|
677
|
+
const value = e.target.value;
|
|
678
|
+
if (!/^\d*$/.test(value)) {
|
|
679
|
+
pinInput.value = value.replace(/\D/g, "");
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
dots.forEach((dot, i) => {
|
|
683
|
+
if (i < value.length) {
|
|
684
|
+
dot.classList.add("filled");
|
|
685
|
+
} else {
|
|
686
|
+
dot.classList.remove("filled");
|
|
687
|
+
}
|
|
688
|
+
});
|
|
689
|
+
submitButton.disabled = value.length !== 6;
|
|
690
|
+
if (value.length === 6) {
|
|
691
|
+
handleSubmit();
|
|
692
|
+
}
|
|
693
|
+
});
|
|
694
|
+
const handleSubmit = () => {
|
|
695
|
+
const pin = pinInput.value.trim();
|
|
696
|
+
if (pin.length !== 6 || !/^\d{6}$/.test(pin)) {
|
|
697
|
+
errorDiv.textContent = "Please enter a valid 6-digit PIN";
|
|
698
|
+
errorDiv.style.display = "block";
|
|
699
|
+
return;
|
|
700
|
+
}
|
|
701
|
+
document.body.removeChild(overlay);
|
|
702
|
+
resolve(pin);
|
|
703
|
+
};
|
|
704
|
+
submitButton.addEventListener("click", handleSubmit);
|
|
705
|
+
pinInput.addEventListener("keypress", (e) => {
|
|
706
|
+
if (e.key === "Enter" && pinInput.value.length === 6) {
|
|
707
|
+
handleSubmit();
|
|
708
|
+
}
|
|
709
|
+
});
|
|
710
|
+
pinInput.focus();
|
|
711
|
+
overlay.addEventListener("click", (e) => {
|
|
712
|
+
if (e.target === overlay) {
|
|
713
|
+
document.body.removeChild(overlay);
|
|
714
|
+
reject(new WalletConnectionError("User cancelled PIN entry"));
|
|
715
|
+
}
|
|
716
|
+
});
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
};
|
|
720
|
+
var abcSolanaWalletAdapter_default = AbcSolanaWalletAdapter;
|
|
721
|
+
export {
|
|
722
|
+
AbcSolanaWalletAdapter,
|
|
723
|
+
AbcWalletName,
|
|
724
|
+
abcSolanaWalletAdapter_default as default
|
|
725
|
+
};
|