@talken/talkenkit 2.4.30 → 2.5.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 (25) hide show
  1. package/dist/{abcWallet-TLGPQAMU.js → abcWallet-5GTT47V6.js} +1 -1
  2. package/dist/{chunk-MI7TNBED.js → chunk-REVMSQIO.js} +287 -71
  3. package/dist/index.js +5 -5
  4. package/dist/wallets/walletConnectors/abcWallet/abcAccessKeyProvider.d.ts +43 -0
  5. package/dist/wallets/walletConnectors/abcWallet/abcAccessKeyProvider.js +11 -0
  6. package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +4 -2
  7. package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +2 -1
  8. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +1 -1
  9. package/dist/wallets/walletConnectors/abcWallet/abcWallet.d.ts +7 -0
  10. package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +5 -3
  11. package/dist/wallets/walletConnectors/abcWallet/api/index.js +3 -3
  12. package/dist/wallets/walletConnectors/abcWallet/index.js +8 -6
  13. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +2 -0
  14. package/dist/wallets/walletConnectors/{chunk-HHZ3JZRH.js → chunk-HWXOTEC3.js} +12 -2
  15. package/dist/wallets/walletConnectors/chunk-K66HU6GX.js +732 -0
  16. package/dist/wallets/walletConnectors/{chunk-XNA5NIFE.js → chunk-QSP2A4LA.js} +5 -2
  17. package/dist/wallets/walletConnectors/chunk-S2SQYPGR.js +220 -0
  18. package/dist/wallets/walletConnectors/{chunk-NU3ITJNK.js → chunk-TQHS6APN.js} +7 -731
  19. package/dist/wallets/walletConnectors/index.js +31 -29
  20. package/package.json +1 -1
  21. package/dist/wallets/walletConnectors/chunk-CABLJOMU.js +0 -194
  22. package/dist/wallets/walletConnectors/chunk-J3YPHDHM.js +0 -827
  23. package/dist/wallets/walletConnectors/chunk-J566FC7T.js +0 -54
  24. package/dist/wallets/walletConnectors/chunk-OHQXPSR6.js +0 -300
  25. package/dist/wallets/walletConnectors/chunk-OMOYFHBT.js +0 -1485
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  abcConnector
4
- } from "./chunk-HHZ3JZRH.js";
4
+ } from "./chunk-HWXOTEC3.js";
5
5
  import {
6
6
  resolveTalkenApiUrl
7
7
  } from "./chunk-GFWUFYT2.js";
@@ -21,6 +21,7 @@ var abcWallet = (specificOptions) => ({ projectId }) => {
21
21
  debug: specificOptions?.environment === "development"
22
22
  });
23
23
  setTalkenApiClient(talkenApi);
24
+ const accessKey = specificOptions?.accessKey || (typeof localStorage !== "undefined" ? localStorage.getItem("talken_ak") : null) || null;
24
25
  const config = {
25
26
  talkenApiUrl,
26
27
  apiKey: specificOptions?.apiKey,
@@ -30,7 +31,8 @@ var abcWallet = (specificOptions) => ({ projectId }) => {
30
31
  defaultChainId: specificOptions?.defaultChainId,
31
32
  defaultSolanaNetwork: specificOptions?.defaultSolanaNetwork,
32
33
  defaultBitcoinNetwork: specificOptions?.defaultBitcoinNetwork,
33
- projectId
34
+ projectId,
35
+ ...accessKey && { accessKey }
34
36
  };
35
37
  return {
36
38
  id: ABC_WALLET_METADATA.id,
@@ -43,6 +45,7 @@ var abcWallet = (specificOptions) => ({ projectId }) => {
43
45
  // No download URLs for embedded wallet
44
46
  downloadUrls: void 0,
45
47
  // Create connector - wrapper function required by Wallet type
48
+ // If accessKey exists, abcConnector will use AbcAccessKeyProvider internally
46
49
  createConnector: (_walletDetails) => abcConnector({ config }),
47
50
  // Embedded wallet always available
48
51
  hidden: () => false
@@ -0,0 +1,220 @@
1
+ "use client";
2
+ import {
3
+ getChainKey
4
+ } from "./chunk-K66HU6GX.js";
5
+ import {
6
+ hexToNumber,
7
+ numberToHex
8
+ } from "./chunk-A66MTFML.js";
9
+
10
+ // src/wallets/walletConnectors/abcWallet/abcAccessKeyProvider.ts
11
+ var EventEmitter = class {
12
+ constructor() {
13
+ this.events = /* @__PURE__ */ new Map();
14
+ }
15
+ on(event, listener) {
16
+ if (!this.events.has(event))
17
+ this.events.set(event, []);
18
+ this.events.get(event).push(listener);
19
+ return this;
20
+ }
21
+ off(event, listener) {
22
+ const listeners = this.events.get(event);
23
+ if (listeners) {
24
+ const idx = listeners.indexOf(listener);
25
+ if (idx !== -1)
26
+ listeners.splice(idx, 1);
27
+ }
28
+ return this;
29
+ }
30
+ removeListener(event, listener) {
31
+ return this.off(event, listener);
32
+ }
33
+ emit(event, ...args) {
34
+ const listeners = this.events.get(event);
35
+ if (listeners) {
36
+ for (const listener of listeners)
37
+ listener(...args);
38
+ return true;
39
+ }
40
+ return false;
41
+ }
42
+ removeAllListeners(event) {
43
+ if (event)
44
+ this.events.delete(event);
45
+ else
46
+ this.events.clear();
47
+ return this;
48
+ }
49
+ };
50
+ var ErrorCode = {
51
+ USER_REJECTED: 4001,
52
+ UNAUTHORIZED: 4100,
53
+ UNSUPPORTED_METHOD: 4200,
54
+ DISCONNECTED: 4900,
55
+ INTERNAL_ERROR: -32603
56
+ };
57
+ var ProviderRpcError = class extends Error {
58
+ constructor(code, message, data) {
59
+ super(message);
60
+ this.code = code;
61
+ this.data = data;
62
+ this.name = "ProviderRpcError";
63
+ }
64
+ };
65
+ var AbcAccessKeyProvider = class extends EventEmitter {
66
+ constructor(accessKey, apiBaseUrl) {
67
+ super();
68
+ this.wallet = null;
69
+ this.chainId = 1;
70
+ this.connected = false;
71
+ this.accessKey = accessKey;
72
+ this.apiBaseUrl = apiBaseUrl || (typeof window !== "undefined" ? window.__TALKEN_API_URL__ || "" : "");
73
+ }
74
+ // ── Wallet management ─────────────────────────────────────
75
+ setWallet(wallet) {
76
+ this.wallet = wallet;
77
+ this.chainId = wallet.chainId || 1;
78
+ this.connected = true;
79
+ }
80
+ clearWallet() {
81
+ this.wallet = null;
82
+ this.connected = false;
83
+ }
84
+ isConnected() {
85
+ return this.connected && !!this.wallet;
86
+ }
87
+ getWallet() {
88
+ return this.wallet;
89
+ }
90
+ getChainId() {
91
+ return this.chainId;
92
+ }
93
+ setAccessKey(key) {
94
+ this.accessKey = key;
95
+ }
96
+ // ── EIP-1193 request ──────────────────────────────────────
97
+ async request(args) {
98
+ const { method, params } = args;
99
+ switch (method) {
100
+ case "eth_requestAccounts":
101
+ case "eth_accounts":
102
+ return this.wallet ? [this.wallet.address] : [];
103
+ case "eth_chainId":
104
+ return numberToHex(this.chainId);
105
+ case "wallet_switchEthereumChain": {
106
+ const p = params?.[0];
107
+ if (p?.chainId) {
108
+ this.chainId = hexToNumber(p.chainId);
109
+ this.emit("chainChanged", numberToHex(this.chainId));
110
+ }
111
+ return null;
112
+ }
113
+ case "eth_sendTransaction":
114
+ return this.sendTransaction(params);
115
+ case "personal_sign":
116
+ return this.personalSign(params);
117
+ case "eth_signTypedData":
118
+ case "eth_signTypedData_v4":
119
+ return this.signTypedData(params);
120
+ case "eth_estimateGas":
121
+ return this.rpcCall("eth_estimateGas", params);
122
+ case "eth_getTransactionCount":
123
+ return this.rpcCall("eth_getTransactionCount", params);
124
+ case "wallet_getCapabilities":
125
+ return {};
126
+ default:
127
+ return this.rpcCall(method, params);
128
+ }
129
+ }
130
+ // ── Signing via access-key (server-side, no PIN) ──────────
131
+ async sendTransaction(params) {
132
+ if (!this.wallet) {
133
+ throw new ProviderRpcError(
134
+ ErrorCode.UNAUTHORIZED,
135
+ "Wallet not connected"
136
+ );
137
+ }
138
+ const tx = params?.[0];
139
+ if (!tx) {
140
+ throw new ProviderRpcError(
141
+ ErrorCode.INTERNAL_ERROR,
142
+ "Missing transaction params"
143
+ );
144
+ }
145
+ const chainKey = getChainKey(this.chainId);
146
+ const result = await this.apiPost("/tx/relay-execute", {
147
+ chainKey,
148
+ user: this.wallet.address,
149
+ tokenIn: "0x0000000000000000000000000000000000000000",
150
+ amountIn: tx.value || "0",
151
+ target: tx.to,
152
+ targetCalldata: tx.data || "0x",
153
+ deadline: Math.floor(Date.now() / 1e3) + 600,
154
+ auth: { method: "auto" }
155
+ });
156
+ return result?.txHash || result?.hash;
157
+ }
158
+ async personalSign(params) {
159
+ if (!this.wallet) {
160
+ throw new ProviderRpcError(
161
+ ErrorCode.UNAUTHORIZED,
162
+ "Wallet not connected"
163
+ );
164
+ }
165
+ const p = params;
166
+ const message = p?.[0];
167
+ const result = await this.apiPost("/agent/sessions/sign", {
168
+ operation: "signMessage",
169
+ chainId: this.chainId,
170
+ payload: { message }
171
+ });
172
+ return result?.signature;
173
+ }
174
+ async signTypedData(params) {
175
+ if (!this.wallet) {
176
+ throw new ProviderRpcError(
177
+ ErrorCode.UNAUTHORIZED,
178
+ "Wallet not connected"
179
+ );
180
+ }
181
+ const p = params;
182
+ const typedData = typeof p?.[1] === "string" ? JSON.parse(p[1]) : p?.[1];
183
+ const result = await this.apiPost("/agent/sessions/sign", {
184
+ operation: "signTypedData",
185
+ chainId: this.chainId,
186
+ payload: typedData
187
+ });
188
+ return result?.signature;
189
+ }
190
+ // ── HTTP helpers ──────────────────────────────────────────
191
+ async apiPost(path, body) {
192
+ const url = `${this.apiBaseUrl}${path}`;
193
+ const res = await fetch(url, {
194
+ method: "POST",
195
+ headers: {
196
+ "Content-Type": "application/json",
197
+ "X-Access-Key": this.accessKey
198
+ },
199
+ body: JSON.stringify(body)
200
+ });
201
+ if (!res.ok) {
202
+ const err = await res.json().catch(() => ({ message: res.statusText }));
203
+ throw new ProviderRpcError(
204
+ ErrorCode.INTERNAL_ERROR,
205
+ err?.error?.message || err?.message || `API error: ${res.status}`
206
+ );
207
+ }
208
+ const json = await res.json();
209
+ return json?.data || json;
210
+ }
211
+ async rpcCall(method, params) {
212
+ const chainKey = getChainKey(this.chainId);
213
+ const result = await this.apiPost("/rpc", { chainKey, method, params });
214
+ return result?.result ?? result;
215
+ }
216
+ };
217
+
218
+ export {
219
+ AbcAccessKeyProvider
220
+ };