@meshconnect/web-link-sdk 3.2.3 → 3.2.4

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
@@ -159,7 +159,7 @@ function handleLinkEvent(event) {
159
159
  }
160
160
  function handleWalletBrowserEvent(event) {
161
161
  return __awaiter(this, void 0, void 0, function () {
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, responseType, networkType, strategy, result, error_7, payload, networkType, strategy, error_8;
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, getResponseType, networkType, strategy, result, responseType, error_6, errorType, payload, responseType, networkType, strategy, result, error_7, payload, responseType, networkType, strategy, result, error_8, payload, networkType, strategy, error_9;
163
163
  var _b;
164
164
  return __generator(this, function (_c) {
165
165
  switch (_c.label) {
@@ -172,13 +172,13 @@ function handleWalletBrowserEvent(event) {
172
172
  case 'walletBrowserChainSwitchRequest': return [3 /*break*/, 11];
173
173
  case 'walletBrowserNativeTransferRequest': return [3 /*break*/, 16];
174
174
  case 'walletBrowserNonNativeTransferRequest': return [3 /*break*/, 21];
175
- case 'walletBrowserNativeSmartDeposit': return [3 /*break*/, 21];
176
175
  case 'walletBrowserNonNativeSmartDeposit': return [3 /*break*/, 21];
177
- case 'walletBrowserTransactionBatchRequest': return [3 /*break*/, 26];
178
- case 'walletBrowserWalletCapabilities': return [3 /*break*/, 31];
179
- case 'walletBrowserDisconnect': return [3 /*break*/, 36];
176
+ case 'walletBrowserNativeSmartDeposit': return [3 /*break*/, 26];
177
+ case 'walletBrowserTransactionBatchRequest': return [3 /*break*/, 31];
178
+ case 'walletBrowserWalletCapabilities': return [3 /*break*/, 36];
179
+ case 'walletBrowserDisconnect': return [3 /*break*/, 41];
180
180
  }
181
- return [3 /*break*/, 44];
181
+ return [3 /*break*/, 49];
182
182
  case 1:
183
183
  payload = event.data.payload;
184
184
  _c.label = 2;
@@ -203,7 +203,7 @@ function handleWalletBrowserEvent(event) {
203
203
  console.error('Connection error:', error_1);
204
204
  handleErrorAndSendMessage(error_1, 'SDKinjectedConnectionCompleted');
205
205
  return [3 /*break*/, 5];
206
- case 5: return [3 /*break*/, 44];
206
+ case 5: return [3 /*break*/, 49];
207
207
  case 6:
208
208
  payload = event.data.payload;
209
209
  _c.label = 7;
@@ -223,7 +223,7 @@ function handleWalletBrowserEvent(event) {
223
223
  error_2 = _c.sent();
224
224
  handleErrorAndSendMessage(error_2, 'SDKsignRequestCompleted');
225
225
  return [3 /*break*/, 10];
226
- case 10: return [3 /*break*/, 44];
226
+ case 10: return [3 /*break*/, 49];
227
227
  case 11:
228
228
  payload = event.data.payload;
229
229
  _c.label = 12;
@@ -248,7 +248,7 @@ function handleWalletBrowserEvent(event) {
248
248
  console.error('Chain switch failed:', error_3);
249
249
  handleErrorAndSendMessage(error_3, 'SDKswitchChainCompleted');
250
250
  return [3 /*break*/, 15];
251
- case 15: return [3 /*break*/, 44];
251
+ case 15: return [3 /*break*/, 49];
252
252
  case 16:
253
253
  payload = event.data.payload;
254
254
  _c.label = 17;
@@ -268,7 +268,7 @@ function handleWalletBrowserEvent(event) {
268
268
  error_4 = _c.sent();
269
269
  handleErrorAndSendMessage(error_4, 'SDKnativeTransferCompleted');
270
270
  return [3 /*break*/, 20];
271
- case 20: return [3 /*break*/, 44];
271
+ case 20: return [3 /*break*/, 49];
272
272
  case 21:
273
273
  payload = event.data.payload;
274
274
  getResponseType = function (type) {
@@ -304,18 +304,30 @@ function handleWalletBrowserEvent(event) {
304
304
  errorType = getResponseType(event.data.type);
305
305
  handleErrorAndSendMessage(error_5, errorType);
306
306
  return [3 /*break*/, 25];
307
- case 25: return [3 /*break*/, 44];
307
+ case 25: return [3 /*break*/, 49];
308
308
  case 26:
309
309
  payload = event.data.payload;
310
- responseType = 'SDKtransactionBatchCompleted';
310
+ getResponseType = function (type) {
311
+ switch (type) {
312
+ case 'walletBrowserNonNativeTransferRequest':
313
+ return 'SDKnonNativeTransferCompleted';
314
+ case 'walletBrowserNativeSmartDeposit':
315
+ return 'SDKnativeSmartDepositCompleted';
316
+ case 'walletBrowserNonNativeSmartDeposit':
317
+ return 'SDKnonNativeSmartDepositCompleted';
318
+ default:
319
+ return 'SDKnonNativeTransferCompleted';
320
+ }
321
+ };
311
322
  _c.label = 27;
312
323
  case 27:
313
324
  _c.trys.push([27, 29, , 30]);
314
- networkType = (payload.from.startsWith('0x') ? 'evm' : 'solana');
325
+ networkType = (payload.address.startsWith('0x') ? 'evm' : 'solana');
315
326
  strategy = walletFactory.getStrategy(networkType);
316
- return [4 /*yield*/, strategy.sendTransactionBatch(payload)];
327
+ return [4 /*yield*/, strategy.sendNativeSmartContractInteraction(payload)];
317
328
  case 28:
318
329
  result = _c.sent();
330
+ responseType = getResponseType(event.data.type);
319
331
  sendMessageToIframe({
320
332
  type: responseType,
321
333
  payload: {
@@ -325,64 +337,88 @@ function handleWalletBrowserEvent(event) {
325
337
  return [3 /*break*/, 30];
326
338
  case 29:
327
339
  error_6 = _c.sent();
328
- handleErrorAndSendMessage(error_6, responseType);
340
+ errorType = getResponseType(event.data.type);
341
+ handleErrorAndSendMessage(error_6, errorType);
329
342
  return [3 /*break*/, 30];
330
- case 30: return [3 /*break*/, 44];
343
+ case 30: return [3 /*break*/, 49];
331
344
  case 31:
332
345
  payload = event.data.payload;
333
- responseType = 'SDKwalletCapabilitiesCompleted';
346
+ responseType = 'SDKtransactionBatchCompleted';
334
347
  _c.label = 32;
335
348
  case 32:
336
349
  _c.trys.push([32, 34, , 35]);
337
350
  networkType = (payload.from.startsWith('0x') ? 'evm' : 'solana');
338
351
  strategy = walletFactory.getStrategy(networkType);
339
- return [4 /*yield*/, strategy.getWalletCapabilities(payload)];
352
+ return [4 /*yield*/, strategy.sendTransactionBatch(payload)];
340
353
  case 33:
341
354
  result = _c.sent();
342
355
  sendMessageToIframe({
343
356
  type: responseType,
344
- payload: result
357
+ payload: {
358
+ txHash: result
359
+ }
345
360
  });
346
361
  return [3 /*break*/, 35];
347
362
  case 34:
348
363
  error_7 = _c.sent();
349
364
  handleErrorAndSendMessage(error_7, responseType);
350
365
  return [3 /*break*/, 35];
351
- case 35: return [3 /*break*/, 44];
366
+ case 35: return [3 /*break*/, 49];
352
367
  case 36:
353
368
  payload = event.data.payload;
369
+ responseType = 'SDKwalletCapabilitiesCompleted';
354
370
  _c.label = 37;
355
371
  case 37:
356
- _c.trys.push([37, 42, , 43]);
357
- if (!(payload === null || payload === void 0 ? void 0 : payload.networkType)) return [3 /*break*/, 39];
372
+ _c.trys.push([37, 39, , 40]);
373
+ networkType = (payload.from.startsWith('0x') ? 'evm' : 'solana');
374
+ strategy = walletFactory.getStrategy(networkType);
375
+ return [4 /*yield*/, strategy.getWalletCapabilities(payload)];
376
+ case 38:
377
+ result = _c.sent();
378
+ sendMessageToIframe({
379
+ type: responseType,
380
+ payload: result
381
+ });
382
+ return [3 /*break*/, 40];
383
+ case 39:
384
+ error_8 = _c.sent();
385
+ handleErrorAndSendMessage(error_8, responseType);
386
+ return [3 /*break*/, 40];
387
+ case 40: return [3 /*break*/, 49];
388
+ case 41:
389
+ payload = event.data.payload;
390
+ _c.label = 42;
391
+ case 42:
392
+ _c.trys.push([42, 47, , 48]);
393
+ if (!(payload === null || payload === void 0 ? void 0 : payload.networkType)) return [3 /*break*/, 44];
358
394
  networkType = (payload.networkType === 'solana' ? 'solana' : 'evm');
359
395
  strategy = walletFactory.getStrategy(networkType);
360
396
  return [4 /*yield*/, strategy.disconnect(payload)];
361
- case 38:
397
+ case 43:
362
398
  _c.sent();
363
- return [3 /*break*/, 41];
364
- case 39:
399
+ return [3 /*break*/, 46];
400
+ case 44:
365
401
  // Disconnect from all if no specific network type
366
402
  return [4 /*yield*/, Promise.all([
367
403
  walletFactory.getStrategy('solana').disconnect(payload),
368
404
  walletFactory.getStrategy('evm').disconnect(payload)
369
405
  ])];
370
- case 40:
406
+ case 45:
371
407
  // Disconnect from all if no specific network type
372
408
  _c.sent();
373
- _c.label = 41;
374
- case 41:
409
+ _c.label = 46;
410
+ case 46:
375
411
  sendMessageToIframe({
376
412
  type: 'SDKdisconnectSuccess'
377
413
  });
378
- return [3 /*break*/, 43];
379
- case 42:
380
- error_8 = _c.sent();
381
- console.error('Error during disconnect:', error_8);
382
- handleErrorAndSendMessage(error_8, 'SDKdisconnectSuccess');
383
- return [3 /*break*/, 43];
384
- case 43: return [3 /*break*/, 44];
385
- case 44: return [2 /*return*/];
414
+ return [3 /*break*/, 48];
415
+ case 47:
416
+ error_9 = _c.sent();
417
+ console.error('Error during disconnect:', error_9);
418
+ handleErrorAndSendMessage(error_9, 'SDKdisconnectSuccess');
419
+ return [3 /*break*/, 48];
420
+ case 48: return [3 /*break*/, 49];
421
+ case 49: return [2 /*return*/];
386
422
  }
387
423
  });
388
424
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/web-link-sdk",
3
- "version": "3.2.3",
3
+ "version": "3.2.4",
4
4
  "description": "A client-side JS library for integrating with Mesh Connect",
5
5
  "exports": "./index.js",
6
6
  "license": "MIT",
@@ -7,6 +7,10 @@ export declare const sendEVMTransaction: (toAddress: string, amount: bigint, fro
7
7
  * Sends an EVM token transaction
8
8
  */
9
9
  export declare const sendEVMTokenTransaction: (contractAddress: string, abi: ethers.InterfaceAbi, functionName: string, args: unknown[], fromAddress: string) => Promise<string | Error>;
10
+ /**
11
+ * Sends an native smart contract transaction
12
+ */
13
+ export declare const sendNativeSmartContractTransaction: (contractAddress: string, abi: ethers.InterfaceAbi, functionName: string, args: unknown[], fromAddress: string, value?: string) => Promise<string | Error>;
10
14
  /**
11
15
  * Sends a batch of EVM transactions
12
16
  */
@@ -204,6 +204,91 @@ export var sendEVMTokenTransaction = function (contractAddress, abi, functionNam
204
204
  }
205
205
  });
206
206
  }); };
207
+ /**
208
+ * Sends an native smart contract transaction
209
+ */
210
+ export var sendNativeSmartContractTransaction = function (contractAddress, abi, functionName, args, fromAddress, value) { return __awaiter(void 0, void 0, void 0, function () {
211
+ var activeRawProvider, chainIdHex, chainId, provider, signer, network, contract, txOptions, gasLimit, maxFeePerGas, maxPriorityFeePerGas, tx, receipt, txError_3, error_3;
212
+ return __generator(this, function (_a) {
213
+ switch (_a.label) {
214
+ case 0:
215
+ _a.trys.push([0, 9, , 10]);
216
+ activeRawProvider = getActiveRawProvider();
217
+ if (!activeRawProvider) {
218
+ throw new Error('No active EVM provider');
219
+ }
220
+ return [4 /*yield*/, activeRawProvider.request({
221
+ method: 'eth_chainId'
222
+ })];
223
+ case 1:
224
+ chainIdHex = _a.sent();
225
+ chainId = parseInt(chainIdHex, 16);
226
+ provider = new ethers.BrowserProvider(activeRawProvider);
227
+ return [4 /*yield*/, provider.getSigner(fromAddress)
228
+ // Verify we're still on the same network before proceeding
229
+ ];
230
+ case 2:
231
+ signer = _a.sent();
232
+ return [4 /*yield*/, provider.getNetwork()];
233
+ case 3:
234
+ network = _a.sent();
235
+ if (Number(network.chainId) !== chainId) {
236
+ throw new Error('Network changed during transaction setup');
237
+ }
238
+ contract = new ethers.Contract(contractAddress, abi, signer);
239
+ txOptions = {};
240
+ gasLimit = (args === null || args === void 0 ? void 0 : args[1]) !== undefined ? toSafeNumber(args[1], 'gasLimit') : undefined;
241
+ maxFeePerGas = (args === null || args === void 0 ? void 0 : args[2]) !== undefined
242
+ ? toSafeNumber(args[2], 'maxFeePerGas')
243
+ : undefined;
244
+ maxPriorityFeePerGas = (args === null || args === void 0 ? void 0 : args[3]) !== undefined
245
+ ? toSafeNumber(args[3], 'maxPriorityFeePerGas')
246
+ : undefined;
247
+ txOptions.gasLimit = gasLimit ? BigInt(Math.floor(gasLimit)) : undefined;
248
+ txOptions.maxFeePerGas = maxFeePerGas
249
+ ? BigInt(Math.floor(maxFeePerGas))
250
+ : undefined;
251
+ txOptions.maxPriorityFeePerGas = maxPriorityFeePerGas
252
+ ? BigInt(Math.floor(maxPriorityFeePerGas))
253
+ : undefined;
254
+ if (value) {
255
+ txOptions.value = value;
256
+ }
257
+ _a.label = 4;
258
+ case 4:
259
+ _a.trys.push([4, 7, , 8]);
260
+ return [4 /*yield*/, contract[functionName](args[0], txOptions)
261
+ // Wait for transaction confirmation
262
+ ];
263
+ case 5:
264
+ tx = _a.sent();
265
+ return [4 /*yield*/, tx.wait()];
266
+ case 6:
267
+ receipt = _a.sent();
268
+ return [2 /*return*/, receipt ? receipt.hash : ''];
269
+ case 7:
270
+ txError_3 = _a.sent();
271
+ if (isUserRejection(txError_3)) {
272
+ return [2 /*return*/, new Error('Transaction was rejected by user')];
273
+ }
274
+ throw txError_3;
275
+ case 8: return [3 /*break*/, 10];
276
+ case 9:
277
+ error_3 = _a.sent();
278
+ console.error('Token transaction error:', error_3);
279
+ if (isUserRejection(error_3)) {
280
+ return [2 /*return*/, new Error('Transaction was rejected by user')];
281
+ }
282
+ if (error_3.code === 'NETWORK_ERROR') {
283
+ return [2 /*return*/, new Error('Network changed during transaction. Please try again.')];
284
+ }
285
+ return [2 /*return*/, error_3 instanceof Error
286
+ ? error_3
287
+ : new Error('Failed to send token transaction')];
288
+ case 10: return [2 /*return*/];
289
+ }
290
+ });
291
+ }); };
207
292
  function toSafeNumber(value, name) {
208
293
  if (typeof value !== 'number' || Number.isNaN(value)) {
209
294
  throw new TypeError("Invalid ".concat(name, ": expected a number, got ").concat(typeof value, " (").concat(value, ")"));
@@ -214,7 +299,7 @@ function toSafeNumber(value, name) {
214
299
  * Sends a batch of EVM transactions
215
300
  */
216
301
  export var sendEVMTransactionBatch = function (params) { return __awaiter(void 0, void 0, void 0, function () {
217
- var activeRawProvider, provider, response, result, txError_3, error_3;
302
+ var activeRawProvider, provider, response, result, txError_4, error_4;
218
303
  var _a, _b;
219
304
  return __generator(this, function (_c) {
220
305
  switch (_c.label) {
@@ -252,23 +337,23 @@ export var sendEVMTransactionBatch = function (params) { return __awaiter(void 0
252
337
  ? new Error('Failed to send batched transactions')
253
338
  : (_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
339
  case 8:
255
- txError_3 = _c.sent();
256
- if (isUserRejection(txError_3)) {
340
+ txError_4 = _c.sent();
341
+ if (isUserRejection(txError_4)) {
257
342
  return [2 /*return*/, new Error('Transaction was rejected by user')];
258
343
  }
259
- throw txError_3;
344
+ throw txError_4;
260
345
  case 9: return [3 /*break*/, 11];
261
346
  case 10:
262
- error_3 = _c.sent();
263
- console.error('Token transaction error:', error_3);
264
- if (isUserRejection(error_3)) {
347
+ error_4 = _c.sent();
348
+ console.error('Token transaction error:', error_4);
349
+ if (isUserRejection(error_4)) {
265
350
  return [2 /*return*/, new Error('Transaction was rejected by user')];
266
351
  }
267
- if (error_3.code === 'NETWORK_ERROR') {
352
+ if (error_4.code === 'NETWORK_ERROR') {
268
353
  return [2 /*return*/, new Error('Network changed during transaction. Please try again.')];
269
354
  }
270
- return [2 /*return*/, error_3 instanceof Error
271
- ? error_3
355
+ return [2 /*return*/, error_4 instanceof Error
356
+ ? error_4
272
357
  : new Error('Failed to send token transaction')];
273
358
  case 11: return [2 /*return*/];
274
359
  }
@@ -1 +1 @@
1
- export declare const sdkVersion = "3.2.3";
1
+ export declare const sdkVersion = "3.2.4";
package/utils/version.js CHANGED
@@ -1 +1 @@
1
- export var sdkVersion = '3.2.3';
1
+ export var sdkVersion = '3.2.4';
@@ -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
+ sendNativeSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
17
18
  sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
18
19
  getWalletCapabilities(payload: WalletCapabilitiesPayload): Promise<{
19
20
  atomic: {
@@ -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, sendEVMTransactionBatch, getWalletCapabilities } from '../connectors/evm';
53
+ import { connectToEVMWallet, disconnectFromEVMWallet, signEVMMessage, sendEVMTransaction, sendEVMTokenTransaction, sendNativeSmartContractTransaction, switchEVMChain, findAvailableProviders, sendEVMTransactionBatch, getWalletCapabilities } from '../connectors/evm';
54
54
  var EVMWalletStrategy = /** @class */ (function (_super) {
55
55
  __extends(EVMWalletStrategy, _super);
56
56
  function EVMWalletStrategy() {
@@ -192,14 +192,14 @@ var EVMWalletStrategy = /** @class */ (function (_super) {
192
192
  });
193
193
  });
194
194
  };
195
- EVMWalletStrategy.prototype.sendTransactionBatch = function (payload) {
195
+ EVMWalletStrategy.prototype.sendNativeSmartContractInteraction = function (payload) {
196
196
  return __awaiter(this, void 0, void 0, function () {
197
197
  var result, error_7;
198
198
  return __generator(this, function (_a) {
199
199
  switch (_a.label) {
200
200
  case 0:
201
201
  _a.trys.push([0, 2, , 3]);
202
- return [4 /*yield*/, sendEVMTransactionBatch(payload)];
202
+ return [4 /*yield*/, sendNativeSmartContractTransaction(payload.address, JSON.parse(payload.abi), payload.functionName, payload.args, payload.account, payload.value)];
203
203
  case 1:
204
204
  result = _a.sent();
205
205
  if (result instanceof Error) {
@@ -214,6 +214,28 @@ var EVMWalletStrategy = /** @class */ (function (_super) {
214
214
  });
215
215
  });
216
216
  };
217
+ EVMWalletStrategy.prototype.sendTransactionBatch = function (payload) {
218
+ return __awaiter(this, void 0, void 0, function () {
219
+ var result, error_8;
220
+ return __generator(this, function (_a) {
221
+ switch (_a.label) {
222
+ case 0:
223
+ _a.trys.push([0, 2, , 3]);
224
+ return [4 /*yield*/, sendEVMTransactionBatch(payload)];
225
+ case 1:
226
+ result = _a.sent();
227
+ if (result instanceof Error) {
228
+ throw result;
229
+ }
230
+ return [2 /*return*/, result];
231
+ case 2:
232
+ error_8 = _a.sent();
233
+ throw this.handleError(error_8, 'send EVM smart contract interaction');
234
+ case 3: return [2 /*return*/];
235
+ }
236
+ });
237
+ });
238
+ };
217
239
  EVMWalletStrategy.prototype.getWalletCapabilities = function (payload) {
218
240
  return __awaiter(this, void 0, void 0, function () {
219
241
  var result;
@@ -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
+ sendNativeSmartContractInteraction(): Promise<string>;
21
22
  sendTransactionBatch(): Promise<string>;
22
23
  getWalletCapabilities(): Promise<{
23
24
  atomic: {
@@ -209,6 +209,9 @@ var SolanaWalletStrategy = /** @class */ (function (_super) {
209
209
  });
210
210
  });
211
211
  };
212
+ SolanaWalletStrategy.prototype.sendNativeSmartContractInteraction = function () {
213
+ throw new Error('Method not implemented.');
214
+ };
212
215
  SolanaWalletStrategy.prototype.sendTransactionBatch = function () {
213
216
  throw new Error('Method not implemented.');
214
217
  };
@@ -13,6 +13,7 @@ export interface WalletStrategy {
13
13
  }>;
14
14
  sendNativeTransfer(payload: TransferPayload): Promise<string>;
15
15
  sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
16
+ sendNativeSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
16
17
  sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
17
18
  getWalletCapabilities(payload: WalletCapabilitiesPayload): Promise<{
18
19
  atomic: {
@@ -40,6 +41,7 @@ export declare abstract class BaseWalletStrategy implements WalletStrategy {
40
41
  }>;
41
42
  abstract sendNativeTransfer(payload: TransferPayload): Promise<string>;
42
43
  abstract sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
44
+ abstract sendNativeSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
43
45
  abstract sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
44
46
  abstract getWalletCapabilities(payload: WalletCapabilitiesPayload): Promise<{
45
47
  atomic: {