@meshconnect/web-link-sdk 3.0.12 → 3.1.0-rc.1

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 (50) hide show
  1. package/Link.js +169 -203
  2. package/package.json +5 -5
  3. package/utils/connectors/evm/chainConfigs.d.ts +2 -0
  4. package/utils/connectors/evm/chainConfigs.js +115 -0
  5. package/utils/connectors/evm/chainSwitching.d.ts +15 -0
  6. package/utils/connectors/evm/chainSwitching.js +242 -0
  7. package/utils/connectors/evm/index.d.ts +8 -0
  8. package/utils/connectors/evm/index.js +8 -0
  9. package/utils/connectors/evm/provider.d.ts +6 -0
  10. package/utils/connectors/evm/provider.js +13 -0
  11. package/utils/connectors/evm/signing.d.ts +1 -0
  12. package/utils/connectors/evm/signing.js +78 -0
  13. package/utils/connectors/evm/transactions.d.ts +9 -0
  14. package/utils/connectors/evm/transactions.js +201 -0
  15. package/utils/connectors/evm/types.d.ts +58 -0
  16. package/utils/connectors/evm/types.js +1 -0
  17. package/utils/connectors/evm/walletConnection.d.ts +20 -0
  18. package/utils/connectors/evm/walletConnection.js +161 -0
  19. package/utils/connectors/evm/walletDiscovery.d.ts +10 -0
  20. package/utils/connectors/evm/walletDiscovery.js +55 -0
  21. package/utils/connectors/solana/connection.d.ts +3 -0
  22. package/utils/connectors/solana/connection.js +94 -0
  23. package/utils/connectors/solana/index.d.ts +5 -0
  24. package/utils/connectors/solana/index.js +5 -0
  25. package/utils/connectors/solana/providerDiscovery.d.ts +3 -0
  26. package/utils/connectors/solana/providerDiscovery.js +75 -0
  27. package/utils/connectors/solana/signing.d.ts +1 -0
  28. package/utils/connectors/solana/signing.js +59 -0
  29. package/utils/connectors/solana/transaction.d.ts +2 -0
  30. package/utils/connectors/solana/transaction.js +158 -0
  31. package/utils/connectors/solana/types.d.ts +68 -0
  32. package/utils/connectors/solana/types.js +8 -0
  33. package/utils/event-types.d.ts +10 -2
  34. package/utils/event-types.js +2 -1
  35. package/utils/types.d.ts +38 -29
  36. package/utils/version.d.ts +1 -1
  37. package/utils/version.js +1 -1
  38. package/utils/wallet/EVMWalletStrategy.d.ts +23 -0
  39. package/utils/wallet/EVMWalletStrategy.js +205 -0
  40. package/utils/wallet/SolanaWalletStrategy.d.ts +29 -0
  41. package/utils/wallet/SolanaWalletStrategy.js +194 -0
  42. package/utils/wallet/WalletStrategy.d.ts +45 -0
  43. package/utils/wallet/WalletStrategy.js +25 -0
  44. package/utils/wallet/WalletStrategyFactory.d.ts +15 -0
  45. package/utils/wallet/WalletStrategyFactory.js +31 -0
  46. package/utils/wallet/index.d.ts +4 -0
  47. package/utils/wallet/index.js +4 -0
  48. package/utils/wallet-browser-event-types.d.ts +16 -2
  49. package/utils/wagmiCoreConnectorsUtils.d.ts +0 -11
  50. package/utils/wagmiCoreConnectorsUtils.js +0 -396
@@ -0,0 +1,45 @@
1
+ import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload } from '../types';
2
+ export interface WalletStrategy {
3
+ connect(payload: WalletBrowserPayload): Promise<{
4
+ accounts: string[];
5
+ chainId: string | number;
6
+ isConnected: boolean;
7
+ }>;
8
+ disconnect(payload: DisconnectPayload): Promise<void>;
9
+ signMessage(payload: SignRequestPayload): Promise<string>;
10
+ switchChain(payload: ChainSwitchPayload): Promise<{
11
+ chainId: number | string;
12
+ accounts: string[];
13
+ }>;
14
+ sendNativeTransfer(payload: TransferPayload): Promise<string>;
15
+ sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
16
+ getProviders(): {
17
+ id: string;
18
+ type: string;
19
+ name?: string;
20
+ icon?: string;
21
+ }[];
22
+ }
23
+ export declare abstract class BaseWalletStrategy implements WalletStrategy {
24
+ abstract connect(payload: WalletBrowserPayload): Promise<{
25
+ accounts: string[];
26
+ chainId: string | number;
27
+ isConnected: boolean;
28
+ }>;
29
+ abstract disconnect(payload: DisconnectPayload): Promise<void>;
30
+ abstract signMessage(payload: SignRequestPayload): Promise<string>;
31
+ abstract switchChain(payload: ChainSwitchPayload): Promise<{
32
+ chainId: number | string;
33
+ accounts: string[];
34
+ }>;
35
+ abstract sendNativeTransfer(payload: TransferPayload): Promise<string>;
36
+ abstract sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
37
+ abstract getProviders(): {
38
+ id: string;
39
+ type: string;
40
+ name?: string;
41
+ icon?: string;
42
+ }[];
43
+ protected handleError(error: unknown, operation: string): Error;
44
+ protected isUserRejection(error: any): boolean;
45
+ }
@@ -0,0 +1,25 @@
1
+ var BaseWalletStrategy = /** @class */ (function () {
2
+ function BaseWalletStrategy() {
3
+ }
4
+ BaseWalletStrategy.prototype.handleError = function (error, operation) {
5
+ console.error("".concat(operation, " error:"), error);
6
+ if (error instanceof Error) {
7
+ return error;
8
+ }
9
+ return new Error("Failed to ".concat(operation));
10
+ };
11
+ BaseWalletStrategy.prototype.isUserRejection = function (error) {
12
+ var _a;
13
+ if (!error)
14
+ return false;
15
+ var message = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
16
+ //4001 - user reject, -32603 internal error
17
+ var errorCodes = [4001, -32603];
18
+ return (message.includes('user rejected') ||
19
+ message.includes('declined') ||
20
+ message.includes('cancelled') ||
21
+ errorCodes.includes(error.code));
22
+ };
23
+ return BaseWalletStrategy;
24
+ }());
25
+ export { BaseWalletStrategy };
@@ -0,0 +1,15 @@
1
+ import { WalletStrategy } from './WalletStrategy';
2
+ export type NetworkType = 'evm' | 'solana';
3
+ export declare class WalletStrategyFactory {
4
+ private static instance;
5
+ private strategies;
6
+ private constructor();
7
+ static getInstance(): WalletStrategyFactory;
8
+ getStrategy(networkType: NetworkType): WalletStrategy;
9
+ getAllProviders(): {
10
+ id: string;
11
+ type: string;
12
+ name?: string;
13
+ icon?: string;
14
+ }[];
15
+ }
@@ -0,0 +1,31 @@
1
+ import { EVMWalletStrategy } from './EVMWalletStrategy';
2
+ import { SolanaWalletStrategy } from './SolanaWalletStrategy';
3
+ var WalletStrategyFactory = /** @class */ (function () {
4
+ function WalletStrategyFactory() {
5
+ this.strategies = new Map();
6
+ this.strategies.set('evm', new EVMWalletStrategy());
7
+ this.strategies.set('solana', new SolanaWalletStrategy());
8
+ }
9
+ WalletStrategyFactory.getInstance = function () {
10
+ if (!WalletStrategyFactory.instance) {
11
+ WalletStrategyFactory.instance = new WalletStrategyFactory();
12
+ }
13
+ return WalletStrategyFactory.instance;
14
+ };
15
+ WalletStrategyFactory.prototype.getStrategy = function (networkType) {
16
+ var strategy = this.strategies.get(networkType);
17
+ if (!strategy) {
18
+ throw new Error("No strategy found for network type: ".concat(networkType));
19
+ }
20
+ return strategy;
21
+ };
22
+ WalletStrategyFactory.prototype.getAllProviders = function () {
23
+ var allProviders = [];
24
+ this.strategies.forEach(function (strategy) {
25
+ allProviders.push.apply(allProviders, strategy.getProviders());
26
+ });
27
+ return allProviders;
28
+ };
29
+ return WalletStrategyFactory;
30
+ }());
31
+ export { WalletStrategyFactory };
@@ -0,0 +1,4 @@
1
+ export * from './WalletStrategy';
2
+ export * from './EVMWalletStrategy';
3
+ export * from './SolanaWalletStrategy';
4
+ export * from './WalletStrategyFactory';
@@ -0,0 +1,4 @@
1
+ export * from './WalletStrategy';
2
+ export * from './EVMWalletStrategy';
3
+ export * from './SolanaWalletStrategy';
4
+ export * from './WalletStrategyFactory';
@@ -1,5 +1,6 @@
1
1
  export type WalletBrowserEventType = WalletBrowserInjectedWalletSelected | WalletBrowserSignRequest | WalletBrowserChainSwitchRequest | WalletBrowserTransferBalanceRequest | WalletBrowserNativeTransferRequest | WalletBrowserNonNativeTransferRequest | WalletBrowserNativeSmartDeposit | WalletBrowserNonNativeSmartDeposit | WalletBrowserDisconnect;
2
2
  declare const WALLET_BROWSER_EVENT_TYPE_KEYS: readonly ["walletBrowserInjectedWalletSelected", "walletBrowserSignRequest", "walletBrowserChainSwitchRequest", "walletBrowserTransferBalanceRequest", "walletBrowserNativeTransferRequest", "walletBrowserNonNativeTransferRequest", "walletBrowserNativeSmartDeposit", "walletBrowserNonNativeSmartDeposit", "walletBrowserDisconnect"];
3
+ export type NetworkType = 'unknown' | 'evm' | 'solana' | 'bitcoin' | 'cardano' | 'tron' | 'avalancheX' | 'tezos' | 'dogecoin' | 'ripple' | 'stellar' | 'litecoin' | 'sui' | 'aptos' | 'tvm';
3
4
  export type WalletBrowserEventTypeKeys = (typeof WALLET_BROWSER_EVENT_TYPE_KEYS)[number];
4
5
  export declare function isWalletBrowserEventTypeKey(key: string): key is WalletBrowserEventTypeKeys;
5
6
  interface WalletBrowserEventBase {
@@ -9,6 +10,8 @@ export interface WalletBrowserInjectedWalletSelected extends WalletBrowserEventB
9
10
  type: 'walletBrowserInjectedWalletSelected';
10
11
  payload: {
11
12
  integrationName: string;
13
+ networkType?: string;
14
+ targetChainId?: number;
12
15
  };
13
16
  }
14
17
  export interface WalletBrowserSignRequest extends WalletBrowserEventBase {
@@ -16,12 +19,15 @@ export interface WalletBrowserSignRequest extends WalletBrowserEventBase {
16
19
  payload: {
17
20
  address: `0x${string}`;
18
21
  message: string;
22
+ walletName?: string;
23
+ networkType?: NetworkType;
19
24
  };
20
25
  }
21
26
  export interface WalletBrowserChainSwitchRequest extends WalletBrowserEventBase {
22
27
  type: 'walletBrowserChainSwitchRequest';
23
28
  payload: {
24
29
  chainId: number;
30
+ networkType: NetworkType;
25
31
  };
26
32
  }
27
33
  export interface WalletBrowserTransferBalanceRequest extends WalletBrowserEventBase {
@@ -39,14 +45,18 @@ export interface WalletBrowserNativeTransferRequest extends WalletBrowserEventBa
39
45
  decimalPlaces: number;
40
46
  chainId: number;
41
47
  account: string;
48
+ network: string;
49
+ blockhash?: string;
50
+ walletName?: string;
42
51
  };
43
52
  }
44
53
  interface SmartContractPayload {
45
54
  address: string;
46
55
  abi: string;
47
56
  functionName: string;
48
- args: any[];
49
- value?: bigint;
57
+ args: unknown[];
58
+ account: string;
59
+ value?: string;
50
60
  }
51
61
  export interface WalletBrowserNonNativeTransferRequest extends WalletBrowserEventBase {
52
62
  type: 'walletBrowserNonNativeTransferRequest';
@@ -62,5 +72,9 @@ export interface WalletBrowserNonNativeSmartDeposit extends WalletBrowserEventBa
62
72
  }
63
73
  export interface WalletBrowserDisconnect extends WalletBrowserEventBase {
64
74
  type: 'walletBrowserDisconnect';
75
+ payload?: {
76
+ networkType?: NetworkType;
77
+ walletName?: string;
78
+ };
65
79
  }
66
80
  export {};
@@ -1,11 +0,0 @@
1
- import { type GetBalanceReturnType, type ConnectReturnType } from '@wagmi/core';
2
- import { WagmiInjectedConnectorData, Abi } from './types';
3
- import { Hash, Chain } from 'viem';
4
- export declare const getWagmiCoreInjectedData: () => Promise<WagmiInjectedConnectorData[] | Error>;
5
- export declare const connectToSpecificWallet: (walletName: string) => Promise<ConnectReturnType | Error>;
6
- export declare const signedMessage: (address: `0x${string}`, message: string) => Promise<Hash | Error>;
7
- export declare const walletBalance: (account: string, chainId: number) => Promise<GetBalanceReturnType | Error>;
8
- export declare const switchChainFromSDK: (chainId: number) => Promise<Chain | Error>;
9
- export declare const sendTransactionFromSDK: (toAddress: string, amount: number, decimalPlaces: number, chainId: number, account: string) => Promise<Hash | Error>;
10
- export declare const sendNonNativeTransactionFromSDK: (address: string, abi: Abi, functionName: string, args: any[], value?: bigint) => Promise<Hash | Error>;
11
- export declare const disconnectAllAccounts: () => Promise<void | Error>;
@@ -1,396 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
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
- import { getConnectors, connect, disconnect, getAccount, signMessage, getBalance, sendTransaction, switchChain, simulateContract, writeContract, createConfig, http, fallback, BaseError, ChainNotConfiguredError, ConnectorAccountNotFoundError, ConnectorAlreadyConnectedError, ConnectorNotConnectedError, ConnectorNotFoundError, ProviderNotFoundError, SwitchChainNotSupportedError } from '@wagmi/core';
47
- import { injected } from '@wagmi/connectors';
48
- import { parseUnits } from 'viem';
49
- var resolveConfigReady;
50
- var configReady = new Promise(function (resolve) {
51
- resolveConfigReady = resolve;
52
- });
53
- var setConfig = function (config) {
54
- try {
55
- var transports = {};
56
- for (var chainId in config.transports) {
57
- var urls = config.transports[chainId];
58
- if (Array.isArray(urls)) {
59
- // If the URL is an array, create a fallback transport with multiple transports
60
- transports[chainId] = fallback(urls.map(function (url) { return http(url); }));
61
- }
62
- else {
63
- // If the URL is a string, create a single HTTP transport
64
- transports[chainId] = http(urls);
65
- }
66
- }
67
- var chainsTuple = __spreadArray([], config.chains, true);
68
- var dynamicConfig = createConfig({
69
- chains: chainsTuple,
70
- multiInjectedProviderDiscovery: true,
71
- transports: transports,
72
- connectors: [injected()]
73
- });
74
- resolveConfigReady(dynamicConfig);
75
- }
76
- catch (error) {
77
- console.error('Error setting configuration:', error);
78
- }
79
- };
80
- window.addEventListener('message', function (event) {
81
- if (event.data.type === 'walletBrowserConfigInitialize') {
82
- try {
83
- var parsedConfig = JSON.parse(event.data.payload);
84
- setConfig(parsedConfig);
85
- }
86
- catch (error) {
87
- console.error('Error parsing configuration:', error);
88
- }
89
- }
90
- });
91
- var configPromise = configReady;
92
- export var getWagmiCoreInjectedData = function () { return __awaiter(void 0, void 0, void 0, function () {
93
- return __generator(this, function (_a) {
94
- return [2 /*return*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
95
- var config, connectors, mappedConnectors;
96
- return __generator(this, function (_a) {
97
- switch (_a.label) {
98
- case 0: return [4 /*yield*/, configPromise];
99
- case 1:
100
- config = _a.sent();
101
- return [4 /*yield*/, getConnectors(config)];
102
- case 2:
103
- connectors = _a.sent();
104
- mappedConnectors = connectors.map(function (_a) {
105
- var id = _a.id, name = _a.name, type = _a.type, uid = _a.uid, icon = _a.icon;
106
- return ({
107
- id: id,
108
- name: name,
109
- type: type,
110
- uid: uid,
111
- icon: icon || undefined
112
- });
113
- });
114
- return [2 /*return*/, mappedConnectors];
115
- }
116
- });
117
- }); })];
118
- });
119
- }); };
120
- export var connectToSpecificWallet = function (walletName) { return __awaiter(void 0, void 0, void 0, function () {
121
- return __generator(this, function (_a) {
122
- return [2 /*return*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
123
- var config, connectors, selectedConnector, result;
124
- return __generator(this, function (_a) {
125
- switch (_a.label) {
126
- case 0: return [4 /*yield*/, configPromise];
127
- case 1:
128
- config = _a.sent();
129
- connectors = getConnectors(config);
130
- selectedConnector = connectors.find(function (connector) {
131
- return connector.name.toLowerCase() === walletName.toLowerCase();
132
- });
133
- if (!selectedConnector) {
134
- throw new Error("No connector found for wallet: ".concat(walletName));
135
- }
136
- return [4 /*yield*/, disconnectCurrentAccount(config, selectedConnector)];
137
- case 2:
138
- _a.sent();
139
- return [4 /*yield*/, connect(config, { connector: selectedConnector })];
140
- case 3:
141
- result = _a.sent();
142
- return [2 /*return*/, {
143
- accounts: __spreadArray([], result.accounts, true),
144
- chainId: result.chainId
145
- }];
146
- }
147
- });
148
- }); })];
149
- });
150
- }); };
151
- export var signedMessage = function (address, message) { return __awaiter(void 0, void 0, void 0, function () {
152
- return __generator(this, function (_a) {
153
- return [2 /*return*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
154
- var config, signedMessage;
155
- return __generator(this, function (_a) {
156
- switch (_a.label) {
157
- case 0: return [4 /*yield*/, configPromise];
158
- case 1:
159
- config = _a.sent();
160
- return [4 /*yield*/, signMessage(config, {
161
- account: address,
162
- message: message
163
- })];
164
- case 2:
165
- signedMessage = _a.sent();
166
- return [2 /*return*/, signedMessage];
167
- }
168
- });
169
- }); })];
170
- });
171
- }); };
172
- export var walletBalance = function (account, chainId) { return __awaiter(void 0, void 0, void 0, function () {
173
- return __generator(this, function (_a) {
174
- return [2 /*return*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
175
- var config, balance;
176
- return __generator(this, function (_a) {
177
- switch (_a.label) {
178
- case 0: return [4 /*yield*/, configPromise];
179
- case 1:
180
- config = _a.sent();
181
- return [4 /*yield*/, getBalance(config, {
182
- address: account,
183
- chainId: chainId
184
- })];
185
- case 2:
186
- balance = _a.sent();
187
- return [2 /*return*/, balance];
188
- }
189
- });
190
- }); })];
191
- });
192
- }); };
193
- export var switchChainFromSDK = function (chainId) { return __awaiter(void 0, void 0, void 0, function () {
194
- return __generator(this, function (_a) {
195
- switch (_a.label) {
196
- case 0: return [4 /*yield*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
197
- var config, result;
198
- return __generator(this, function (_a) {
199
- switch (_a.label) {
200
- case 0: return [4 /*yield*/, configPromise];
201
- case 1:
202
- config = _a.sent();
203
- return [4 /*yield*/, switchChain(config, { chainId: chainId })];
204
- case 2:
205
- result = _a.sent();
206
- return [2 /*return*/, result];
207
- }
208
- });
209
- }); })];
210
- case 1: return [2 /*return*/, _a.sent()];
211
- }
212
- });
213
- }); };
214
- export var sendTransactionFromSDK = function (toAddress, amount, decimalPlaces, chainId, account) { return __awaiter(void 0, void 0, void 0, function () {
215
- return __generator(this, function (_a) {
216
- switch (_a.label) {
217
- case 0: return [4 /*yield*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
218
- var config, result;
219
- return __generator(this, function (_a) {
220
- switch (_a.label) {
221
- case 0: return [4 /*yield*/, configPromise];
222
- case 1:
223
- config = _a.sent();
224
- return [4 /*yield*/, sendTransaction(config, {
225
- to: formatAddress(toAddress),
226
- value: parseUnits(amount.toFixed(decimalPlaces) || '0', decimalPlaces),
227
- chainId: chainId,
228
- account: formatAddress(account)
229
- })];
230
- case 2:
231
- result = _a.sent();
232
- return [2 /*return*/, result];
233
- }
234
- });
235
- }); })];
236
- case 1: return [2 /*return*/, _a.sent()];
237
- }
238
- });
239
- }); };
240
- var formatAddress = function (address) {
241
- return address.startsWith('0x') ? address : "0x".concat(address);
242
- };
243
- export var sendNonNativeTransactionFromSDK = function (address, abi, functionName, args, // eslint-disable-line @typescript-eslint/no-explicit-any
244
- value) { return __awaiter(void 0, void 0, void 0, function () {
245
- return __generator(this, function (_a) {
246
- switch (_a.label) {
247
- case 0: return [4 /*yield*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
248
- var config, connector, request, result;
249
- return __generator(this, function (_a) {
250
- switch (_a.label) {
251
- case 0: return [4 /*yield*/, configPromise];
252
- case 1:
253
- config = _a.sent();
254
- return [4 /*yield*/, getAccount(config)];
255
- case 2:
256
- connector = (_a.sent()).connector;
257
- return [4 /*yield*/, simulateContract(config, {
258
- address: formatAddress(address),
259
- abi: abi,
260
- functionName: functionName,
261
- args: args,
262
- value: value,
263
- connector: connector
264
- })];
265
- case 3:
266
- request = (_a.sent()).request;
267
- return [4 /*yield*/, writeContract(config, request)];
268
- case 4:
269
- result = _a.sent();
270
- return [2 /*return*/, result];
271
- }
272
- });
273
- }); })];
274
- case 1: return [2 /*return*/, _a.sent()];
275
- }
276
- });
277
- }); };
278
- var disconnectCurrentAccount = function (config, currentConnector) { return __awaiter(void 0, void 0, void 0, function () {
279
- return __generator(this, function (_a) {
280
- switch (_a.label) {
281
- case 0: return [4 /*yield*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
282
- return __generator(this, function (_a) {
283
- switch (_a.label) {
284
- case 0: return [4 /*yield*/, disconnect(config, { connector: currentConnector })];
285
- case 1:
286
- _a.sent();
287
- return [2 /*return*/];
288
- }
289
- });
290
- }); })];
291
- case 1: return [2 /*return*/, _a.sent()];
292
- }
293
- });
294
- }); };
295
- export var disconnectAllAccounts = function () { return __awaiter(void 0, void 0, void 0, function () {
296
- var config;
297
- return __generator(this, function (_a) {
298
- switch (_a.label) {
299
- case 0: return [4 /*yield*/, configPromise];
300
- case 1:
301
- config = _a.sent();
302
- return [2 /*return*/, withWagmiErrorHandling(function () { return __awaiter(void 0, void 0, void 0, function () {
303
- return __generator(this, function (_a) {
304
- switch (_a.label) {
305
- case 0: return [4 /*yield*/, disconnect(config)];
306
- case 1:
307
- _a.sent();
308
- return [2 /*return*/];
309
- }
310
- });
311
- }); })];
312
- }
313
- });
314
- }); };
315
- /**
316
- * Wrapper function for Wagmi Core functions that handles errors
317
- * @param fn - The function to wrap
318
- * @returns - The result of the function or an error
319
- */
320
- function withWagmiErrorHandling(fn) {
321
- return __awaiter(this, void 0, void 0, function () {
322
- var error_1;
323
- return __generator(this, function (_a) {
324
- switch (_a.label) {
325
- case 0:
326
- _a.trys.push([0, 2, , 3]);
327
- return [4 /*yield*/, fn()];
328
- case 1: return [2 /*return*/, _a.sent()];
329
- case 2:
330
- error_1 = _a.sent();
331
- if (error_1 instanceof BaseError) {
332
- return [2 /*return*/, handleWagmiError(error_1)];
333
- }
334
- else {
335
- throw error_1;
336
- }
337
- return [3 /*break*/, 3];
338
- case 3: return [2 /*return*/];
339
- }
340
- });
341
- });
342
- }
343
- var handleWagmiError = function (error) {
344
- if (error instanceof ChainNotConfiguredError) {
345
- return handleChainNotConfiguredError(error);
346
- }
347
- else if (error instanceof ConnectorAccountNotFoundError) {
348
- return handleConnectorAccountNotFoundError(error);
349
- }
350
- else if (error instanceof ConnectorAlreadyConnectedError) {
351
- return handleConnectorAlreadyConnectedError(error);
352
- }
353
- else if (error instanceof ConnectorNotConnectedError) {
354
- return handleConnectorNotConnectedError(error);
355
- }
356
- else if (error instanceof ConnectorNotFoundError) {
357
- return handleConnectorNotFoundError(error);
358
- }
359
- else if (error instanceof ProviderNotFoundError) {
360
- return handleProviderNotFoundError(error);
361
- }
362
- else if (error instanceof SwitchChainNotSupportedError) {
363
- return handleSwitchChainNotSupportedError(error);
364
- }
365
- else if (error instanceof BaseError) {
366
- return handleBaseError(error);
367
- }
368
- else {
369
- throw error;
370
- }
371
- };
372
- // All errors extend base error
373
- var handleBaseError = function (error) {
374
- throw new Error(error.message);
375
- };
376
- var handleChainNotConfiguredError = function (error) {
377
- throw new Error("Chain not configured: ".concat(error.message));
378
- };
379
- var handleConnectorAccountNotFoundError = function (error) {
380
- throw new Error("Connector account not found: ".concat(error.message));
381
- };
382
- var handleConnectorAlreadyConnectedError = function (error) {
383
- throw new Error("Connector already connected: ".concat(error.message));
384
- };
385
- var handleConnectorNotConnectedError = function (error) {
386
- throw new Error("Connector not connected: ".concat(error.message));
387
- };
388
- var handleConnectorNotFoundError = function (error) {
389
- throw new Error("Connector not found: ".concat(error.message));
390
- };
391
- var handleProviderNotFoundError = function (error) {
392
- throw new Error("Provider not found: ".concat(error.message));
393
- };
394
- var handleSwitchChainNotSupportedError = function (error) {
395
- throw new Error("Switch chain not supported: ".concat(error.message));
396
- };