@meshconnect/web-link-sdk 3.1.11 → 3.2.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.
package/Link.js CHANGED
@@ -53,8 +53,9 @@ import { WalletStrategyFactory } from './utils/wallet';
53
53
  var currentOptions;
54
54
  var targetOrigin;
55
55
  var linkTokenOrigin;
56
+ var currentIframeId = iframeId;
56
57
  var iframeElement = function () {
57
- return document.getElementById(iframeId);
58
+ return document.getElementById(currentIframeId);
58
59
  };
59
60
  function sendMessageToIframe(message) {
60
61
  var _a;
@@ -158,7 +159,7 @@ function handleLinkEvent(event) {
158
159
  }
159
160
  function handleWalletBrowserEvent(event) {
160
161
  return __awaiter(this, void 0, void 0, function () {
161
- var walletFactory, _a, payload, networkType, strategy, result, error_1, payload, networkType, strategy, result, error_2, payload, networkType, strategy, result, error_3, payload, networkType, strategy, result, error_4, payload, getResponseType, networkType, strategy, result, responseType, error_5, errorType, payload, networkType, strategy, error_6;
162
+ var walletFactory, _a, payload, networkType, strategy, result, error_1, payload, networkType, strategy, result, error_2, payload, networkType, strategy, result, error_3, payload, networkType, strategy, result, error_4, payload, getResponseType, networkType, strategy, result, responseType, error_5, errorType, payload, responseType, networkType, strategy, result, error_6, payload, networkType, strategy, error_7;
162
163
  var _b;
163
164
  return __generator(this, function (_c) {
164
165
  switch (_c.label) {
@@ -173,9 +174,10 @@ function handleWalletBrowserEvent(event) {
173
174
  case 'walletBrowserNonNativeTransferRequest': return [3 /*break*/, 21];
174
175
  case 'walletBrowserNativeSmartDeposit': return [3 /*break*/, 21];
175
176
  case 'walletBrowserNonNativeSmartDeposit': return [3 /*break*/, 21];
176
- case 'walletBrowserDisconnect': return [3 /*break*/, 26];
177
+ case 'walletBrowserTransactionBatchRequest': return [3 /*break*/, 26];
178
+ case 'walletBrowserDisconnect': return [3 /*break*/, 31];
177
179
  }
178
- return [3 /*break*/, 34];
180
+ return [3 /*break*/, 39];
179
181
  case 1:
180
182
  payload = event.data.payload;
181
183
  _c.label = 2;
@@ -200,7 +202,7 @@ function handleWalletBrowserEvent(event) {
200
202
  console.error('Connection error:', error_1);
201
203
  handleErrorAndSendMessage(error_1, 'SDKinjectedConnectionCompleted');
202
204
  return [3 /*break*/, 5];
203
- case 5: return [3 /*break*/, 34];
205
+ case 5: return [3 /*break*/, 39];
204
206
  case 6:
205
207
  payload = event.data.payload;
206
208
  _c.label = 7;
@@ -220,7 +222,7 @@ function handleWalletBrowserEvent(event) {
220
222
  error_2 = _c.sent();
221
223
  handleErrorAndSendMessage(error_2, 'SDKsignRequestCompleted');
222
224
  return [3 /*break*/, 10];
223
- case 10: return [3 /*break*/, 34];
225
+ case 10: return [3 /*break*/, 39];
224
226
  case 11:
225
227
  payload = event.data.payload;
226
228
  _c.label = 12;
@@ -245,7 +247,7 @@ function handleWalletBrowserEvent(event) {
245
247
  console.error('Chain switch failed:', error_3);
246
248
  handleErrorAndSendMessage(error_3, 'SDKswitchChainCompleted');
247
249
  return [3 /*break*/, 15];
248
- case 15: return [3 /*break*/, 34];
250
+ case 15: return [3 /*break*/, 39];
249
251
  case 16:
250
252
  payload = event.data.payload;
251
253
  _c.label = 17;
@@ -265,7 +267,7 @@ function handleWalletBrowserEvent(event) {
265
267
  error_4 = _c.sent();
266
268
  handleErrorAndSendMessage(error_4, 'SDKnativeTransferCompleted');
267
269
  return [3 /*break*/, 20];
268
- case 20: return [3 /*break*/, 34];
270
+ case 20: return [3 /*break*/, 39];
269
271
  case 21:
270
272
  payload = event.data.payload;
271
273
  getResponseType = function (type) {
@@ -301,41 +303,64 @@ function handleWalletBrowserEvent(event) {
301
303
  errorType = getResponseType(event.data.type);
302
304
  handleErrorAndSendMessage(error_5, errorType);
303
305
  return [3 /*break*/, 25];
304
- case 25: return [3 /*break*/, 34];
306
+ case 25: return [3 /*break*/, 39];
305
307
  case 26:
306
308
  payload = event.data.payload;
309
+ responseType = 'SDKtransactionBatchCompleted';
307
310
  _c.label = 27;
308
311
  case 27:
309
- _c.trys.push([27, 32, , 33]);
310
- if (!(payload === null || payload === void 0 ? void 0 : payload.networkType)) return [3 /*break*/, 29];
312
+ _c.trys.push([27, 29, , 30]);
313
+ networkType = (payload.from.startsWith('0x') ? 'evm' : 'solana');
314
+ strategy = walletFactory.getStrategy(networkType);
315
+ return [4 /*yield*/, strategy.sendTransactionBatch(payload)];
316
+ case 28:
317
+ result = _c.sent();
318
+ sendMessageToIframe({
319
+ type: responseType,
320
+ payload: {
321
+ txHash: result
322
+ }
323
+ });
324
+ return [3 /*break*/, 30];
325
+ case 29:
326
+ error_6 = _c.sent();
327
+ handleErrorAndSendMessage(error_6, responseType);
328
+ return [3 /*break*/, 30];
329
+ case 30: return [3 /*break*/, 39];
330
+ case 31:
331
+ payload = event.data.payload;
332
+ _c.label = 32;
333
+ case 32:
334
+ _c.trys.push([32, 37, , 38]);
335
+ if (!(payload === null || payload === void 0 ? void 0 : payload.networkType)) return [3 /*break*/, 34];
311
336
  networkType = (payload.networkType === 'solana' ? 'solana' : 'evm');
312
337
  strategy = walletFactory.getStrategy(networkType);
313
338
  return [4 /*yield*/, strategy.disconnect(payload)];
314
- case 28:
339
+ case 33:
315
340
  _c.sent();
316
- return [3 /*break*/, 31];
317
- case 29:
341
+ return [3 /*break*/, 36];
342
+ case 34:
318
343
  // Disconnect from all if no specific network type
319
344
  return [4 /*yield*/, Promise.all([
320
345
  walletFactory.getStrategy('solana').disconnect(payload),
321
346
  walletFactory.getStrategy('evm').disconnect(payload)
322
347
  ])];
323
- case 30:
348
+ case 35:
324
349
  // Disconnect from all if no specific network type
325
350
  _c.sent();
326
- _c.label = 31;
327
- case 31:
351
+ _c.label = 36;
352
+ case 36:
328
353
  sendMessageToIframe({
329
354
  type: 'SDKdisconnectSuccess'
330
355
  });
331
- return [3 /*break*/, 33];
332
- case 32:
333
- error_6 = _c.sent();
334
- console.error('Error during disconnect:', error_6);
335
- handleErrorAndSendMessage(error_6, 'SDKdisconnectSuccess');
336
- return [3 /*break*/, 33];
337
- case 33: return [3 /*break*/, 34];
338
- case 34: return [2 /*return*/];
356
+ return [3 /*break*/, 38];
357
+ case 37:
358
+ error_7 = _c.sent();
359
+ console.error('Error during disconnect:', error_7);
360
+ handleErrorAndSendMessage(error_7, 'SDKdisconnectSuccess');
361
+ return [3 /*break*/, 38];
362
+ case 38: return [3 /*break*/, 39];
363
+ case 39: return [2 /*return*/];
339
364
  }
340
365
  });
341
366
  });
@@ -372,24 +397,35 @@ function handleErrorAndSendMessage(error, messageType) {
372
397
  });
373
398
  }
374
399
  export var createLink = function (options) {
375
- var openLink = function (linkToken) { return __awaiter(void 0, void 0, void 0, function () {
376
- var linkUrl;
400
+ var openLink = function (linkToken, customIframeId) {
377
401
  var _a;
378
- return __generator(this, function (_b) {
379
- if (!linkToken) {
380
- (_a = options === null || options === void 0 ? void 0 : options.onExit) === null || _a === void 0 ? void 0 : _a.call(options, 'Invalid link token!');
381
- return [2 /*return*/];
402
+ if (!linkToken) {
403
+ (_a = options === null || options === void 0 ? void 0 : options.onExit) === null || _a === void 0 ? void 0 : _a.call(options, 'Invalid link token!');
404
+ return;
405
+ }
406
+ currentOptions = options;
407
+ var linkUrl = window.atob(linkToken);
408
+ linkUrl = addLanguage(linkUrl, currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.language);
409
+ linkTokenOrigin = new URL(linkUrl).origin;
410
+ window.removeEventListener('message', eventsListener);
411
+ if (customIframeId) {
412
+ var iframe = document.getElementById(customIframeId);
413
+ if (iframe) {
414
+ iframe.allow = 'clipboard-read *; clipboard-write *';
415
+ iframe.src = linkUrl;
416
+ currentIframeId = customIframeId;
382
417
  }
383
- currentOptions = options;
384
- linkUrl = window.atob(linkToken);
385
- linkTokenOrigin = new URL(linkUrl).origin;
386
- window.removeEventListener('message', eventsListener);
387
- addPopup(linkUrl, currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.language);
388
- window.addEventListener('message', eventsListener);
389
- targetOrigin = window.location.origin;
390
- return [2 /*return*/];
391
- });
392
- }); };
418
+ else {
419
+ console.warn("Mesh SDK: No iframe found with id ".concat(customIframeId));
420
+ }
421
+ }
422
+ else {
423
+ currentIframeId = iframeId;
424
+ addPopup(linkUrl);
425
+ }
426
+ window.addEventListener('message', eventsListener);
427
+ targetOrigin = window.location.origin;
428
+ };
393
429
  var closeLink = function () {
394
430
  var _a;
395
431
  removePopup();
@@ -401,3 +437,6 @@ export var createLink = function (options) {
401
437
  closeLink: closeLink
402
438
  };
403
439
  };
440
+ function addLanguage(linkUrl, language) {
441
+ return "".concat(linkUrl).concat(linkUrl.includes('?') ? '&' : '?', "lng=").concat(language || 'en');
442
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/web-link-sdk",
3
- "version": "3.1.11",
3
+ "version": "3.2.0",
4
4
  "description": "A client-side JS library for integrating with Mesh Connect",
5
5
  "exports": "./index.js",
6
6
  "license": "MIT",
@@ -2,8 +2,22 @@ import { ethers } from 'ethers';
2
2
  /**
3
3
  * Sends a native EVM transaction
4
4
  */
5
- export declare const sendEVMTransaction: (toAddress: string, amount: bigint, fromAddress: string) => Promise<string | Error>;
5
+ export declare const sendEVMTransaction: (toAddress: string, amount: bigint, fromAddress: string, gasLimit?: number | null, maxFeePerGas?: number | null, maxPriorityFeePerGas?: number | null) => Promise<string | Error>;
6
6
  /**
7
7
  * Sends an EVM token transaction
8
8
  */
9
- export declare const sendEVMTokenTransaction: (contractAddress: string, abi: ethers.InterfaceAbi, functionName: string, args: unknown[], fromAddress: string, value?: bigint, gasLimit?: bigint) => Promise<string | Error>;
9
+ export declare const sendEVMTokenTransaction: (contractAddress: string, abi: ethers.InterfaceAbi, functionName: string, args: unknown[], fromAddress: string) => Promise<string | Error>;
10
+ /**
11
+ * Sends a batch of EVM transactions
12
+ */
13
+ export declare const sendEVMTransactionBatch: (params: {
14
+ version: string;
15
+ from: string;
16
+ chainId: string;
17
+ atomicRequired: boolean;
18
+ calls: {
19
+ to: string;
20
+ value: string;
21
+ data?: string;
22
+ }[];
23
+ }) => Promise<string | Error>;
@@ -34,15 +34,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
34
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
35
  }
36
36
  };
37
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
38
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
39
- if (ar || !(i in from)) {
40
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
41
- ar[i] = from[i];
42
- }
43
- }
44
- return to.concat(ar || Array.prototype.slice.call(from));
45
- };
46
37
  import { ethers } from 'ethers';
47
38
  import { getActiveRawProvider } from './provider';
48
39
  var isUserRejection = function (error) {
@@ -60,7 +51,7 @@ var isUserRejection = function (error) {
60
51
  /**
61
52
  * Sends a native EVM transaction
62
53
  */
63
- export var sendEVMTransaction = function (toAddress, amount, fromAddress) { return __awaiter(void 0, void 0, void 0, function () {
54
+ export var sendEVMTransaction = function (toAddress, amount, fromAddress, gasLimit, maxFeePerGas, maxPriorityFeePerGas) { return __awaiter(void 0, void 0, void 0, function () {
64
55
  var activeRawProvider, chainIdHex, chainId, provider, signer, network, tx, receipt, txError_1, error_1;
65
56
  return __generator(this, function (_a) {
66
57
  switch (_a.label) {
@@ -93,7 +84,14 @@ export var sendEVMTransaction = function (toAddress, amount, fromAddress) { retu
93
84
  _a.trys.push([4, 7, , 8]);
94
85
  return [4 /*yield*/, signer.sendTransaction({
95
86
  to: toAddress,
96
- value: amount
87
+ value: amount,
88
+ gasLimit: gasLimit ? BigInt(Math.floor(gasLimit)) : undefined,
89
+ maxFeePerGas: maxFeePerGas
90
+ ? BigInt(Math.floor(maxFeePerGas))
91
+ : undefined,
92
+ maxPriorityFeePerGas: maxPriorityFeePerGas
93
+ ? BigInt(Math.floor(maxPriorityFeePerGas))
94
+ : undefined
97
95
  })];
98
96
  case 5:
99
97
  tx = _a.sent();
@@ -127,12 +125,12 @@ export var sendEVMTransaction = function (toAddress, amount, fromAddress) { retu
127
125
  /**
128
126
  * Sends an EVM token transaction
129
127
  */
130
- export var sendEVMTokenTransaction = function (contractAddress, abi, functionName, args, fromAddress, value, gasLimit) { return __awaiter(void 0, void 0, void 0, function () {
131
- var activeRawProvider, chainIdHex, chainId, provider, signer, network, contract, txOptions, feeData, tx, receipt, txError_2, error_2;
128
+ export var sendEVMTokenTransaction = function (contractAddress, abi, functionName, args, fromAddress) { return __awaiter(void 0, void 0, void 0, function () {
129
+ var activeRawProvider, chainIdHex, chainId, provider, signer, network, contract, txOptions, gasLimit, maxFeePerGas, maxPriorityFeePerGas, tx, receipt, txError_2, error_2;
132
130
  return __generator(this, function (_a) {
133
131
  switch (_a.label) {
134
132
  case 0:
135
- _a.trys.push([0, 10, , 11]);
133
+ _a.trys.push([0, 9, , 10]);
136
134
  activeRawProvider = getActiveRawProvider();
137
135
  if (!activeRawProvider) {
138
136
  throw new Error('No active EVM provider');
@@ -157,34 +155,40 @@ export var sendEVMTokenTransaction = function (contractAddress, abi, functionNam
157
155
  }
158
156
  contract = new ethers.Contract(contractAddress, abi, signer);
159
157
  txOptions = {};
160
- return [4 /*yield*/, provider.getFeeData()];
161
- case 4:
162
- feeData = _a.sent();
163
- txOptions.gasPrice = feeData.gasPrice
164
- ? (feeData.gasPrice * BigInt(1000)) / BigInt(100)
158
+ gasLimit = (args === null || args === void 0 ? void 0 : args[2]) !== undefined ? toSafeNumber(args[2], 'gasLimit') : undefined;
159
+ maxFeePerGas = (args === null || args === void 0 ? void 0 : args[3]) !== undefined
160
+ ? toSafeNumber(args[3], 'maxFeePerGas')
165
161
  : undefined;
166
- txOptions.gasLimit = gasLimit;
167
- if (value) {
168
- txOptions.value = value;
169
- }
170
- _a.label = 5;
162
+ maxPriorityFeePerGas = (args === null || args === void 0 ? void 0 : args[4]) !== undefined
163
+ ? toSafeNumber(args[4], 'maxPriorityFeePerGas')
164
+ : undefined;
165
+ txOptions.gasLimit = gasLimit ? BigInt(Math.floor(gasLimit)) : undefined;
166
+ txOptions.maxFeePerGas = maxFeePerGas
167
+ ? BigInt(Math.floor(maxFeePerGas))
168
+ : undefined;
169
+ txOptions.maxPriorityFeePerGas = maxPriorityFeePerGas
170
+ ? BigInt(Math.floor(maxPriorityFeePerGas))
171
+ : undefined;
172
+ _a.label = 4;
173
+ case 4:
174
+ _a.trys.push([4, 7, , 8]);
175
+ return [4 /*yield*/, contract[functionName](args[0], args[1], txOptions)
176
+ // Wait for transaction confirmation
177
+ ];
171
178
  case 5:
172
- _a.trys.push([5, 8, , 9]);
173
- return [4 /*yield*/, contract[functionName].apply(contract, __spreadArray(__spreadArray([], args, false), [txOptions], false))];
174
- case 6:
175
179
  tx = _a.sent();
176
180
  return [4 /*yield*/, tx.wait()];
177
- case 7:
181
+ case 6:
178
182
  receipt = _a.sent();
179
183
  return [2 /*return*/, receipt ? receipt.hash : ''];
180
- case 8:
184
+ case 7:
181
185
  txError_2 = _a.sent();
182
186
  if (isUserRejection(txError_2)) {
183
187
  return [2 /*return*/, new Error('Transaction was rejected by user')];
184
188
  }
185
189
  throw txError_2;
186
- case 9: return [3 /*break*/, 11];
187
- case 10:
190
+ case 8: return [3 /*break*/, 10];
191
+ case 9:
188
192
  error_2 = _a.sent();
189
193
  console.error('Token transaction error:', error_2);
190
194
  if (isUserRejection(error_2)) {
@@ -196,6 +200,76 @@ export var sendEVMTokenTransaction = function (contractAddress, abi, functionNam
196
200
  return [2 /*return*/, error_2 instanceof Error
197
201
  ? error_2
198
202
  : new Error('Failed to send token transaction')];
203
+ case 10: return [2 /*return*/];
204
+ }
205
+ });
206
+ }); };
207
+ function toSafeNumber(value, name) {
208
+ if (typeof value !== 'number' || Number.isNaN(value)) {
209
+ throw new TypeError("Invalid ".concat(name, ": expected a number, got ").concat(typeof value, " (").concat(value, ")"));
210
+ }
211
+ return value;
212
+ }
213
+ /**
214
+ * Sends a batch of EVM transactions
215
+ */
216
+ export var sendEVMTransactionBatch = function (params) { return __awaiter(void 0, void 0, void 0, function () {
217
+ var activeRawProvider, provider, response, result, txError_3, error_3;
218
+ var _a, _b;
219
+ return __generator(this, function (_c) {
220
+ switch (_c.label) {
221
+ case 0:
222
+ _c.trys.push([0, 10, , 11]);
223
+ activeRawProvider = getActiveRawProvider();
224
+ if (!activeRawProvider) {
225
+ throw new Error('No active EVM provider');
226
+ }
227
+ provider = new ethers.BrowserProvider(activeRawProvider);
228
+ _c.label = 1;
229
+ case 1:
230
+ _c.trys.push([1, 8, , 9]);
231
+ return [4 /*yield*/, provider.send('wallet_sendCalls', [params])
232
+ // Wait for transaction confirmation
233
+ ];
234
+ case 2:
235
+ response = _c.sent();
236
+ result = void 0;
237
+ _c.label = 3;
238
+ case 3: return [4 /*yield*/, provider.send('wallet_getCallsStatus', [response.id])
239
+ // wait 1 second if receipt is not yet available
240
+ ];
241
+ case 4:
242
+ result = _c.sent();
243
+ if (!(result.status == 100)) return [3 /*break*/, 6];
244
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
245
+ case 5:
246
+ _c.sent();
247
+ _c.label = 6;
248
+ case 6:
249
+ if (result.status == 100) return [3 /*break*/, 3];
250
+ _c.label = 7;
251
+ case 7: return [2 /*return*/, (result === null || result === void 0 ? void 0 : result.status) != 200
252
+ ? new Error('Failed to send batched transactions')
253
+ : (_b = (_a = result.receipts.find(function (x) { return x; })) === null || _a === void 0 ? void 0 : _a.transactionHash) !== null && _b !== void 0 ? _b : new Error('Failed to get batched transactions receipt')];
254
+ case 8:
255
+ txError_3 = _c.sent();
256
+ if (isUserRejection(txError_3)) {
257
+ return [2 /*return*/, new Error('Transaction was rejected by user')];
258
+ }
259
+ throw txError_3;
260
+ case 9: return [3 /*break*/, 11];
261
+ case 10:
262
+ error_3 = _c.sent();
263
+ console.error('Token transaction error:', error_3);
264
+ if (isUserRejection(error_3)) {
265
+ return [2 /*return*/, new Error('Transaction was rejected by user')];
266
+ }
267
+ if (error_3.code === 'NETWORK_ERROR') {
268
+ return [2 /*return*/, new Error('Network changed during transaction. Please try again.')];
269
+ }
270
+ return [2 /*return*/, error_3 instanceof Error
271
+ ? error_3
272
+ : new Error('Failed to send token transaction')];
199
273
  case 11: return [2 /*return*/];
200
274
  }
201
275
  });
package/utils/popup.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export declare const iframeId = "mesh-link-popup__iframe";
2
2
  export declare function removePopup(): void;
3
- export declare function addPopup(iframeLink: string, language: string | undefined): void;
3
+ export declare function addPopup(iframeLink: string): void;
package/utils/popup.js CHANGED
@@ -12,14 +12,13 @@ export function removePopup() {
12
12
  var existingStyles = window.document.getElementById(stylesId);
13
13
  (_b = existingStyles === null || existingStyles === void 0 ? void 0 : existingStyles.parentElement) === null || _b === void 0 ? void 0 : _b.removeChild(existingStyles);
14
14
  }
15
- export function addPopup(iframeLink, language) {
15
+ export function addPopup(iframeLink) {
16
16
  removePopup();
17
17
  var styleElement = document.createElement('style');
18
18
  styleElement.id = stylesId;
19
19
  var style = getLinkStyle(iframeLink);
20
20
  styleElement.textContent = getStylesContent(style);
21
21
  window.document.head.appendChild(styleElement);
22
- iframeLink = "".concat(iframeLink).concat(iframeLink.includes('?') ? '&' : '?', "lng=").concat(language || 'en');
23
22
  var popupRootElement = document.createElement('div');
24
23
  popupRootElement.id = popupId;
25
24
  var popupBackdropElement = document.createElement('div');
package/utils/types.d.ts CHANGED
@@ -4,8 +4,10 @@ export type EventType = 'brokerageAccountAccessToken' | 'delayedAuthentication'
4
4
  export interface Link {
5
5
  /**
6
6
  * A function that takes linkToken parameter from `/api/v1/linktoken` endpoint as an input, and opens the Link UI popup
7
+ * @param linkToken - Base64 encoded link token from the `/api/v1/linktoken` endpoint
8
+ * @param customIframeId - Optional custom ID for the existing iframe element. If not provided, a new iframe element will be created
7
9
  */
8
- openLink: (linkToken: string) => Promise<void>;
10
+ openLink: (linkToken: string, customIframeId?: string) => void;
9
11
  /**
10
12
  * A function to close Link UI popup
11
13
  */
@@ -119,6 +121,9 @@ export interface TransferPayload {
119
121
  network: string;
120
122
  blockhash?: string;
121
123
  walletName?: string;
124
+ gasLimit?: number | null;
125
+ maxFeePerGas?: number | null;
126
+ maxPriorityFeePerGas?: number | null;
122
127
  }
123
128
  export interface SmartContractPayload {
124
129
  address: string;
@@ -129,7 +134,20 @@ export interface SmartContractPayload {
129
134
  value?: string;
130
135
  walletName?: string;
131
136
  blockhash?: string;
132
- gasLimit?: string;
137
+ gasLimit?: number | null;
138
+ maxFeePerGas?: number | null;
139
+ maxPriorityFeePerGas?: number | null;
140
+ }
141
+ export interface TransactionBatchPayload {
142
+ version: string;
143
+ from: string;
144
+ chainId: string;
145
+ atomicRequired: boolean;
146
+ calls: {
147
+ to: string;
148
+ value: string;
149
+ data?: string;
150
+ }[];
133
151
  }
134
152
  export interface DisconnectPayload {
135
153
  networkType?: string;
@@ -1 +1 @@
1
- export declare const sdkVersion = "3.1.11";
1
+ export declare const sdkVersion = "3.2.0";
package/utils/version.js CHANGED
@@ -1 +1 @@
1
- export var sdkVersion = '3.1.11';
1
+ export var sdkVersion = '3.2.0';
@@ -1,5 +1,5 @@
1
1
  import { BaseWalletStrategy } from './WalletStrategy';
2
- import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload } from '../types';
2
+ import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload, TransactionBatchPayload } from '../types';
3
3
  export declare class EVMWalletStrategy extends BaseWalletStrategy {
4
4
  connect(payload: WalletBrowserPayload): Promise<{
5
5
  accounts: string[];
@@ -14,6 +14,7 @@ export declare class EVMWalletStrategy extends BaseWalletStrategy {
14
14
  }>;
15
15
  sendNativeTransfer(payload: TransferPayload): Promise<string>;
16
16
  sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
17
+ sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
17
18
  getProviders(): {
18
19
  icon: string | undefined;
19
20
  id: string;
@@ -50,7 +50,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
50
50
  }
51
51
  };
52
52
  import { BaseWalletStrategy } from './WalletStrategy';
53
- import { connectToEVMWallet, disconnectFromEVMWallet, signEVMMessage, sendEVMTransaction, sendEVMTokenTransaction, switchEVMChain, findAvailableProviders } from '../connectors/evm';
53
+ import { connectToEVMWallet, disconnectFromEVMWallet, signEVMMessage, sendEVMTransaction, sendEVMTokenTransaction, switchEVMChain, findAvailableProviders, sendEVMTransactionBatch } from '../connectors/evm';
54
54
  var EVMWalletStrategy = /** @class */ (function (_super) {
55
55
  __extends(EVMWalletStrategy, _super);
56
56
  function EVMWalletStrategy() {
@@ -155,7 +155,7 @@ var EVMWalletStrategy = /** @class */ (function (_super) {
155
155
  switch (_a.label) {
156
156
  case 0:
157
157
  _a.trys.push([0, 2, , 3]);
158
- return [4 /*yield*/, sendEVMTransaction(payload.toAddress, BigInt(payload.amount * Math.pow(10, payload.decimalPlaces)), payload.account)];
158
+ return [4 /*yield*/, sendEVMTransaction(payload.toAddress, BigInt(payload.amount * Math.pow(10, payload.decimalPlaces)), payload.account, payload.gasLimit, payload.maxFeePerGas, payload.maxPriorityFeePerGas)];
159
159
  case 1:
160
160
  result = _a.sent();
161
161
  if (result instanceof Error) {
@@ -177,7 +177,7 @@ var EVMWalletStrategy = /** @class */ (function (_super) {
177
177
  switch (_a.label) {
178
178
  case 0:
179
179
  _a.trys.push([0, 2, , 3]);
180
- return [4 /*yield*/, sendEVMTokenTransaction(payload.address, JSON.parse(payload.abi), payload.functionName, payload.args, payload.account, payload.value ? BigInt(payload.value) : undefined, payload.gasLimit ? BigInt(payload.gasLimit) : undefined)];
180
+ return [4 /*yield*/, sendEVMTokenTransaction(payload.address, JSON.parse(payload.abi), payload.functionName, payload.args, payload.account)];
181
181
  case 1:
182
182
  result = _a.sent();
183
183
  if (result instanceof Error) {
@@ -192,6 +192,28 @@ var EVMWalletStrategy = /** @class */ (function (_super) {
192
192
  });
193
193
  });
194
194
  };
195
+ EVMWalletStrategy.prototype.sendTransactionBatch = function (payload) {
196
+ return __awaiter(this, void 0, void 0, function () {
197
+ var result, error_7;
198
+ return __generator(this, function (_a) {
199
+ switch (_a.label) {
200
+ case 0:
201
+ _a.trys.push([0, 2, , 3]);
202
+ return [4 /*yield*/, sendEVMTransactionBatch(payload)];
203
+ case 1:
204
+ result = _a.sent();
205
+ if (result instanceof Error) {
206
+ throw result;
207
+ }
208
+ return [2 /*return*/, result];
209
+ case 2:
210
+ error_7 = _a.sent();
211
+ throw this.handleError(error_7, 'send EVM smart contract interaction');
212
+ case 3: return [2 /*return*/];
213
+ }
214
+ });
215
+ });
216
+ };
195
217
  EVMWalletStrategy.prototype.getProviders = function () {
196
218
  return findAvailableProviders().map(function (provider) { return ({
197
219
  icon: provider.icon,
@@ -18,6 +18,7 @@ export declare class SolanaWalletStrategy extends BaseWalletStrategy {
18
18
  }>;
19
19
  sendNativeTransfer(payload: TransferPayload): Promise<string>;
20
20
  sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
21
+ sendTransactionBatch(): Promise<string>;
21
22
  getProviders(): {
22
23
  id: string;
23
24
  type: string;
@@ -209,6 +209,9 @@ var SolanaWalletStrategy = /** @class */ (function (_super) {
209
209
  });
210
210
  });
211
211
  };
212
+ SolanaWalletStrategy.prototype.sendTransactionBatch = function () {
213
+ throw new Error('Method not implemented.');
214
+ };
212
215
  SolanaWalletStrategy.prototype.getProviders = function () {
213
216
  var solanaProviderMap = findAvailableSolanaProviders();
214
217
  return Object.keys(solanaProviderMap).map(function (id) { return ({
@@ -1,4 +1,4 @@
1
- import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload } from '../types';
1
+ import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload, TransactionBatchPayload } from '../types';
2
2
  export interface WalletStrategy {
3
3
  connect(payload: WalletBrowserPayload): Promise<{
4
4
  accounts: string[];
@@ -13,6 +13,7 @@ export interface WalletStrategy {
13
13
  }>;
14
14
  sendNativeTransfer(payload: TransferPayload): Promise<string>;
15
15
  sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
16
+ sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
16
17
  getProviders(): {
17
18
  id: string;
18
19
  type: string;
@@ -34,6 +35,7 @@ export declare abstract class BaseWalletStrategy implements WalletStrategy {
34
35
  }>;
35
36
  abstract sendNativeTransfer(payload: TransferPayload): Promise<string>;
36
37
  abstract sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
38
+ abstract sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
37
39
  abstract getProviders(): {
38
40
  id: string;
39
41
  type: string;
@@ -1,5 +1,5 @@
1
- export type WalletBrowserEventType = WalletBrowserInjectedWalletSelected | WalletBrowserSignRequest | WalletBrowserChainSwitchRequest | WalletBrowserTransferBalanceRequest | WalletBrowserNativeTransferRequest | WalletBrowserNonNativeTransferRequest | WalletBrowserNativeSmartDeposit | WalletBrowserNonNativeSmartDeposit | WalletBrowserDisconnect;
2
- declare const WALLET_BROWSER_EVENT_TYPE_KEYS: readonly ["walletBrowserInjectedWalletSelected", "walletBrowserSignRequest", "walletBrowserChainSwitchRequest", "walletBrowserTransferBalanceRequest", "walletBrowserNativeTransferRequest", "walletBrowserNonNativeTransferRequest", "walletBrowserNativeSmartDeposit", "walletBrowserNonNativeSmartDeposit", "walletBrowserDisconnect"];
1
+ export type WalletBrowserEventType = WalletBrowserInjectedWalletSelected | WalletBrowserSignRequest | WalletBrowserChainSwitchRequest | WalletBrowserTransferBalanceRequest | WalletBrowserNativeTransferRequest | WalletBrowserNonNativeTransferRequest | WalletBrowserNativeSmartDeposit | WalletBrowserNonNativeSmartDeposit | WalletBrowserDisconnect | WalletBrowserTransactionBatch;
2
+ declare const WALLET_BROWSER_EVENT_TYPE_KEYS: readonly ["walletBrowserInjectedWalletSelected", "walletBrowserSignRequest", "walletBrowserChainSwitchRequest", "walletBrowserTransferBalanceRequest", "walletBrowserNativeTransferRequest", "walletBrowserNonNativeTransferRequest", "walletBrowserNativeSmartDeposit", "walletBrowserNonNativeSmartDeposit", "walletBrowserDisconnect", "walletBrowserTransactionBatchRequest"];
3
3
  export type NetworkType = 'unknown' | 'evm' | 'solana' | 'bitcoin' | 'cardano' | 'tron' | 'avalancheX' | 'tezos' | 'dogecoin' | 'ripple' | 'stellar' | 'litecoin' | 'sui' | 'aptos' | 'tvm';
4
4
  export type WalletBrowserEventTypeKeys = (typeof WALLET_BROWSER_EVENT_TYPE_KEYS)[number];
5
5
  export declare function isWalletBrowserEventTypeKey(key: string): key is WalletBrowserEventTypeKeys;
@@ -77,4 +77,18 @@ export interface WalletBrowserDisconnect extends WalletBrowserEventBase {
77
77
  walletName?: string;
78
78
  };
79
79
  }
80
+ export interface WalletBrowserTransactionBatch extends WalletBrowserEventBase {
81
+ type: 'walletBrowserTransactionBatchRequest';
82
+ payload: {
83
+ version: string;
84
+ from: string;
85
+ chainId: string;
86
+ atomicRequired: boolean;
87
+ calls: {
88
+ to: string;
89
+ value: string;
90
+ data?: string;
91
+ }[];
92
+ };
93
+ }
80
94
  export {};
@@ -7,7 +7,8 @@ var WALLET_BROWSER_EVENT_TYPE_KEYS = [
7
7
  'walletBrowserNonNativeTransferRequest',
8
8
  'walletBrowserNativeSmartDeposit',
9
9
  'walletBrowserNonNativeSmartDeposit',
10
- 'walletBrowserDisconnect'
10
+ 'walletBrowserDisconnect',
11
+ 'walletBrowserTransactionBatchRequest'
11
12
  ];
12
13
  export function isWalletBrowserEventTypeKey(key) {
13
14
  return WALLET_BROWSER_EVENT_TYPE_KEYS.includes(key);