@reown/appkit-adapter-ethers 1.7.2-rc2 → 1.7.2

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.
@@ -1,517 +0,0 @@
1
- import UniversalProvider from '@walletconnect/universal-provider';
2
- import { InfuraProvider, JsonRpcProvider } from 'ethers';
3
- import { beforeEach, describe, expect, it, vi } from 'vitest';
4
- import { WcConstantsUtil } from '@reown/appkit';
5
- import { ConstantsUtil as CommonConstantsUtil, Emitter } from '@reown/appkit-common';
6
- import { CaipNetworksUtil } from '@reown/appkit-utils';
7
- import { ProviderUtil } from '@reown/appkit-utils';
8
- import { mainnet, polygon } from '@reown/appkit/networks';
9
- import { EthersAdapter } from '../client';
10
- import { EthersMethods } from '../utils/EthersMethods';
11
- class ErrorWithCode extends Error {
12
- constructor(message, code) {
13
- super(message);
14
- this.code = code;
15
- }
16
- }
17
- vi.mock('ethers', async (importOriginal) => {
18
- const actual = await importOriginal();
19
- return {
20
- ...actual,
21
- formatEther: vi.fn(() => '1.5'),
22
- InfuraProvider: vi.fn(() => ({
23
- lookupAddress: vi.fn(),
24
- getAvatar: vi.fn()
25
- })),
26
- JsonRpcProvider: vi.fn(() => ({
27
- getBalance: vi.fn()
28
- })),
29
- BrowserProvider: vi.fn(() => ({
30
- on: vi.fn((event, callback) => {
31
- if (event === 'pending') {
32
- callback();
33
- }
34
- })
35
- }))
36
- };
37
- });
38
- vi.mock('../utils/EthersMethods', () => ({
39
- EthersMethods: {
40
- signMessage: vi.fn(),
41
- sendTransaction: vi.fn(),
42
- writeContract: vi.fn(),
43
- estimateGas: vi.fn(),
44
- getEnsAddress: vi.fn(),
45
- parseUnits: vi.fn(),
46
- formatUnits: vi.fn(),
47
- hexStringToNumber: vi.fn(hex => parseInt(hex, 16)),
48
- numberToHexString: vi.fn(num => `0x${num.toString(16)}`)
49
- }
50
- }));
51
- const mockProvider = {
52
- request: vi.fn(),
53
- on: vi.fn(),
54
- removeListener: vi.fn()
55
- };
56
- const mockWalletConnectProvider = {
57
- connect: vi.fn(),
58
- disconnect: vi.fn(),
59
- on: vi.fn(),
60
- removeListener: vi.fn(),
61
- session: true,
62
- setDefaultChain: vi.fn()
63
- };
64
- const mockAuthProvider = {
65
- connect: vi.fn(),
66
- disconnect: vi.fn(),
67
- switchNetwork: vi.fn(),
68
- getUser: vi.fn()
69
- };
70
- const mockNetworks = [mainnet, polygon];
71
- const mockCaipNetworks = CaipNetworksUtil.extendCaipNetworks(mockNetworks, {
72
- projectId: 'test-project-id',
73
- customNetworkImageUrls: {}
74
- });
75
- describe('EthersAdapter', () => {
76
- let adapter;
77
- beforeEach(() => {
78
- vi.clearAllMocks();
79
- adapter = new EthersAdapter();
80
- });
81
- describe('EthersAdapter -constructor', () => {
82
- it('should set adapterType', () => {
83
- expect(adapter.adapterType).toEqual(CommonConstantsUtil.ADAPTER_TYPES.ETHERS);
84
- });
85
- it('should set namespace', () => {
86
- expect(adapter.namespace).toEqual(CommonConstantsUtil.CHAIN.EVM);
87
- });
88
- it('should not set info property for injected connector', () => {
89
- const mockConnectors = [
90
- {
91
- id: 'Browser Wallet',
92
- name: 'Browser Wallet',
93
- type: 'injected',
94
- info: { rdns: 'Browser Wallet' }
95
- }
96
- ];
97
- adapter.syncConnectors(mockConnectors);
98
- const injectedConnector = mockConnectors.filter((c) => c.id === 'injected')[0];
99
- expect(injectedConnector?.info).toBeUndefined();
100
- });
101
- });
102
- describe('EthersAdapter - signMessage', () => {
103
- it('should sign message successfully', async () => {
104
- const mockSignature = '0xmocksignature';
105
- vi.mocked(EthersMethods.signMessage).mockResolvedValue(mockSignature);
106
- const result = await adapter.signMessage({
107
- message: 'Hello',
108
- address: '0x123',
109
- provider: mockProvider
110
- });
111
- expect(result.signature).toBe(mockSignature);
112
- });
113
- it('should throw error when provider is undefined', async () => {
114
- await expect(adapter.signMessage({
115
- message: 'Hello',
116
- address: '0x123'
117
- })).rejects.toThrow('Provider is undefined');
118
- });
119
- });
120
- describe('EthersAdapter -sendTransaction', () => {
121
- it('should send transaction successfully', async () => {
122
- const mockTxHash = '0xtxhash';
123
- vi.mocked(EthersMethods.sendTransaction).mockResolvedValue(mockTxHash);
124
- const result = await adapter.sendTransaction({
125
- value: BigInt(1000),
126
- to: '0x456',
127
- data: '0x',
128
- gas: BigInt(21000),
129
- gasPrice: BigInt(2000000000),
130
- address: '0x123',
131
- provider: mockProvider,
132
- caipNetwork: mockCaipNetworks[0]
133
- });
134
- expect(result.hash).toBe(mockTxHash);
135
- });
136
- it('should throw error when provider is undefined', async () => {
137
- await expect(adapter.sendTransaction({
138
- value: BigInt(1000),
139
- to: '0x456',
140
- data: '0x',
141
- gas: BigInt(21000),
142
- gasPrice: BigInt(2000000000),
143
- address: '0x123'
144
- })).rejects.toThrow('Provider is undefined');
145
- });
146
- });
147
- describe('EthersAdapter -writeContract', () => {
148
- it('should write contract successfully', async () => {
149
- const mockTxHash = '0xtxhash';
150
- vi.mocked(EthersMethods.writeContract).mockResolvedValue(mockTxHash);
151
- const result = await adapter.writeContract({
152
- abi: [],
153
- method: 'transfer',
154
- caipAddress: 'eip155:1:0x123',
155
- fromAddress: '0x123',
156
- args: ['0x789', BigInt(1000)],
157
- tokenAddress: '0x789',
158
- provider: mockProvider,
159
- caipNetwork: mockCaipNetworks[0],
160
- chainNamespace: 'eip155'
161
- });
162
- expect(result.hash).toBe(mockTxHash);
163
- });
164
- });
165
- describe('EthersAdapter -connect', () => {
166
- it('should connect with external provider', async () => {
167
- adapter.caipNetworks = mockCaipNetworks;
168
- vi.mocked(mockProvider.request).mockImplementation(request => {
169
- if (request.method === 'eth_requestAccounts')
170
- return Promise.resolve(['0x123']);
171
- if (request.method === 'eth_chainId')
172
- return Promise.resolve('0x1');
173
- if (request.method === 'wallet_switchEthereumChain')
174
- return Promise.resolve(null);
175
- return Promise.resolve(null);
176
- });
177
- const connectors = [
178
- {
179
- id: 'test',
180
- provider: mockProvider,
181
- chains: [1],
182
- type: 'EXTERNAL',
183
- chain: 1
184
- }
185
- ];
186
- Object.defineProperty(adapter, 'connectors', {
187
- value: connectors
188
- });
189
- const result = await adapter.connect({
190
- id: 'test',
191
- provider: mockProvider,
192
- type: 'EXTERNAL',
193
- chainId: 1
194
- });
195
- expect(result.address).toBe('0x123');
196
- expect(result.chainId).toBe(1);
197
- });
198
- it('should call switch network if wallet chain id is different than requested chain id', async () => {
199
- adapter.caipNetworks = mockCaipNetworks;
200
- vi.mocked(mockProvider.request).mockImplementation(request => {
201
- if (request.method === 'eth_requestAccounts')
202
- return Promise.resolve(['0x123']);
203
- if (request.method === 'eth_chainId')
204
- return Promise.resolve('137');
205
- if (request.method === 'wallet_switchEthereumChain')
206
- return Promise.resolve(null);
207
- return Promise.resolve(null);
208
- });
209
- const connectors = [
210
- {
211
- id: 'test',
212
- provider: mockProvider,
213
- chains: [1],
214
- type: 'EXTERNAL',
215
- chain: 1
216
- }
217
- ];
218
- Object.defineProperty(adapter, 'connectors', {
219
- value: connectors
220
- });
221
- const result = await adapter.connect({
222
- id: 'test',
223
- provider: mockProvider,
224
- type: 'EXTERNAL',
225
- chainId: 1
226
- });
227
- expect(mockProvider.request).toHaveBeenCalledWith({
228
- method: 'wallet_switchEthereumChain',
229
- params: [{ chainId: '0x1' }]
230
- });
231
- expect(result.address).toBe('0x123');
232
- expect(result.chainId).toBe(1);
233
- });
234
- });
235
- describe('EthersAdapter -disconnect', () => {
236
- it('should disconnect WalletConnect provider', async () => {
237
- await adapter.disconnect({
238
- provider: mockWalletConnectProvider,
239
- providerType: 'WALLET_CONNECT'
240
- });
241
- expect(mockWalletConnectProvider.disconnect).toHaveBeenCalled();
242
- });
243
- it('should disconnect Auth provider', async () => {
244
- await adapter.disconnect({
245
- provider: mockAuthProvider,
246
- providerType: 'AUTH'
247
- });
248
- expect(mockAuthProvider.disconnect).toHaveBeenCalled();
249
- });
250
- });
251
- describe('EthersAdapter -getBalance', () => {
252
- it('should get balance successfully', async () => {
253
- adapter.caipNetworks = mockCaipNetworks;
254
- const mockBalance = BigInt(1500000000000000000);
255
- vi.mocked(JsonRpcProvider).mockImplementation(() => ({
256
- getBalance: vi.fn().mockResolvedValue(mockBalance)
257
- }));
258
- const result = await adapter.getBalance({
259
- address: '0x123',
260
- chainId: 1
261
- });
262
- expect(result).toEqual({
263
- balance: '1.5',
264
- symbol: 'ETH'
265
- });
266
- });
267
- it('should call getBalance once even when multiple adapter requests are sent at the same time', async () => {
268
- adapter.caipNetworks = mockCaipNetworks;
269
- const mockBalance = BigInt(1500000000000000000);
270
- const latency = 1000;
271
- const numSimultaneousRequests = 10;
272
- const expectedSentRequests = 1;
273
- let mockedImplementationCalls = 0;
274
- vi.mocked(JsonRpcProvider).mockImplementation(() => ({
275
- getBalance: vi.fn().mockResolvedValue(new Promise(resolve => {
276
- mockedImplementationCalls++;
277
- setTimeout(() => resolve(mockBalance), latency);
278
- }))
279
- }));
280
- const result = await Promise.all([
281
- ...Array.from({ length: numSimultaneousRequests }).map(() => adapter.getBalance({
282
- address: '0x123',
283
- chainId: 1
284
- }))
285
- ]);
286
- expect(mockedImplementationCalls).to.eql(expectedSentRequests);
287
- expect(result.length).toBe(numSimultaneousRequests);
288
- expect(expectedSentRequests).to.be.lt(numSimultaneousRequests);
289
- for (const balance of result) {
290
- expect(balance).toEqual({
291
- balance: '1.5',
292
- symbol: 'ETH'
293
- });
294
- }
295
- });
296
- });
297
- describe('EthersAdapter -getProfile', () => {
298
- it('should get profile successfully', async () => {
299
- const mockEnsName = 'test.eth';
300
- const mockAvatar = 'https://avatar.com/test.jpg';
301
- vi.mocked(InfuraProvider).mockImplementation(() => ({
302
- lookupAddress: vi.fn().mockResolvedValue(mockEnsName),
303
- getAvatar: vi.fn().mockResolvedValue(mockAvatar)
304
- }));
305
- const result = await adapter.getProfile({
306
- address: '0x123',
307
- chainId: 1
308
- });
309
- expect(result).toEqual({
310
- profileName: mockEnsName,
311
- profileImage: mockAvatar
312
- });
313
- });
314
- });
315
- describe('EthersAdapter - switchNetwork', () => {
316
- const errorCodes = [
317
- WcConstantsUtil.ERROR_CODE_UNRECOGNIZED_CHAIN_ID,
318
- WcConstantsUtil.ERROR_INVALID_CHAIN_ID,
319
- WcConstantsUtil.ERROR_CODE_DEFAULT,
320
- { data: { originalError: { code: WcConstantsUtil.ERROR_CODE_UNRECOGNIZED_CHAIN_ID } } }
321
- ];
322
- errorCodes.forEach(errorCode => {
323
- it(`should add Ethereum chain when switch fails with error code: ${JSON.stringify(errorCode)}`, async () => {
324
- vi.mocked(mockProvider.request).mockImplementation(request => {
325
- if (request.method === 'wallet_switchEthereumChain') {
326
- if (typeof errorCode === 'object') {
327
- const error = new Error('Chain switch failed');
328
- Object.assign(error, errorCode);
329
- throw error;
330
- }
331
- throw new ErrorWithCode('Chain switch failed', errorCode);
332
- }
333
- return Promise.resolve(null);
334
- });
335
- const mockCaipNetwork = mockCaipNetworks[0];
336
- await adapter.switchNetwork({
337
- caipNetwork: mockCaipNetwork,
338
- provider: mockProvider,
339
- providerType: 'EXTERNAL'
340
- });
341
- expect(mockProvider.request).toHaveBeenCalledWith({
342
- method: 'wallet_addEthereumChain',
343
- params: [
344
- {
345
- chainId: '0x1',
346
- rpcUrls: [mockCaipNetwork.rpcUrls['chainDefault']?.http[0]],
347
- chainName: 'Ethereum',
348
- iconUrls: ['ba0ba0cd-17c6-4806-ad93-f9d174f17900'],
349
- nativeCurrency: {
350
- name: 'Ether',
351
- decimals: 18,
352
- symbol: 'ETH'
353
- },
354
- blockExplorerUrls: ['https://etherscan.io']
355
- }
356
- ]
357
- });
358
- });
359
- });
360
- it('should switch network with Auth provider', async () => {
361
- await adapter.switchNetwork({
362
- caipNetwork: mockCaipNetworks[0],
363
- provider: mockAuthProvider,
364
- providerType: 'AUTH'
365
- });
366
- expect(mockAuthProvider.switchNetwork).toHaveBeenCalledWith('eip155:1');
367
- expect(mockAuthProvider.getUser).toHaveBeenCalledWith({
368
- chainId: 'eip155:1',
369
- preferredAccountType: 'smartAccount'
370
- });
371
- });
372
- it('should add Ethereum chain with external provider and use chain default', async () => {
373
- vi.mocked(mockProvider.request).mockImplementation(request => {
374
- if (request.method === 'wallet_switchEthereumChain') {
375
- throw new ErrorWithCode('Chain switch failed', WcConstantsUtil.ERROR_CODE_UNRECOGNIZED_CHAIN_ID);
376
- }
377
- if (request.method === 'wallet_addEthereumChain') {
378
- throw new Error('Chain is not supported');
379
- }
380
- return Promise.resolve(null);
381
- });
382
- const mockCaipNetwork = mockCaipNetworks[0];
383
- await expect(adapter.switchNetwork({
384
- caipNetwork: mockCaipNetwork,
385
- provider: mockProvider,
386
- providerType: 'EXTERNAL'
387
- })).rejects.toThrow('Chain is not supported');
388
- });
389
- it('should call setDefaultChain and request from provider for WALLET_CONNECT', async () => {
390
- const adapter = new EthersAdapter();
391
- const mockProvider = {
392
- request: vi.fn(),
393
- setDefaultChain: vi.fn()
394
- };
395
- const params = {
396
- caipNetwork: {
397
- id: 1,
398
- caipNetworkId: 'eip155:1'
399
- },
400
- provider: mockProvider,
401
- providerType: 'WALLET_CONNECT'
402
- };
403
- await adapter.switchNetwork(params);
404
- expect(mockProvider.request).toHaveBeenCalledWith({
405
- method: 'wallet_switchEthereumChain',
406
- params: [{ chainId: '0x1' }]
407
- });
408
- });
409
- });
410
- describe('EthersAdapter -getWalletConnectProvider', () => {
411
- it('should return WalletConnect provider', () => {
412
- Object.defineProperty(adapter, 'availableConnectors', {
413
- value: [
414
- {
415
- id: 'walletconnect',
416
- type: 'WALLET_CONNECT',
417
- provider: mockWalletConnectProvider,
418
- chain: 'eip155',
419
- chains: []
420
- }
421
- ]
422
- });
423
- const result = adapter.getWalletConnectProvider();
424
- expect(result).toBe(mockWalletConnectProvider);
425
- });
426
- });
427
- describe('EthersAdapter -parseUnits and formatUnits', () => {
428
- it('should parse units correctly', () => {
429
- const mockBigInt = BigInt('1500000000000000000');
430
- vi.mocked(EthersMethods.parseUnits).mockReturnValue(mockBigInt);
431
- const result = adapter.parseUnits({
432
- value: '1.5',
433
- decimals: 18
434
- });
435
- expect(result).toBe(mockBigInt);
436
- });
437
- it('should format units correctly', () => {
438
- vi.mocked(EthersMethods.formatUnits).mockReturnValue('1.5');
439
- const result = adapter.formatUnits({
440
- value: BigInt('1500000000000000000'),
441
- decimals: 18
442
- });
443
- expect(result).toBe('1.5');
444
- });
445
- });
446
- describe('EthersAdapter - Permissions', () => {
447
- const mockProvider = {
448
- request: vi.fn()
449
- };
450
- beforeEach(() => {
451
- vi.spyOn(ProviderUtil, 'getProvider').mockImplementation(() => mockProvider);
452
- });
453
- it('should call wallet_getCapabilities', async () => {
454
- await adapter.getCapabilities('eip155:1:0x123');
455
- expect(mockProvider.request).toHaveBeenCalledWith({
456
- method: 'wallet_getCapabilities',
457
- params: ['eip155:1:0x123']
458
- });
459
- });
460
- it('should call wallet_grantPermissions', async () => {
461
- const mockParams = {
462
- pci: 'test-pci',
463
- expiry: 1234567890,
464
- address: '0x123',
465
- permissions: ['eth_accounts']
466
- };
467
- await adapter.grantPermissions(mockParams);
468
- expect(mockProvider.request).toHaveBeenCalledWith({
469
- method: 'wallet_grantPermissions',
470
- params: mockParams
471
- });
472
- });
473
- it('should call wallet_revokePermissions', async () => {
474
- vi.mocked(mockProvider.request).mockImplementation(() => Promise.resolve('0x123'));
475
- const mockParams = {
476
- pci: 'test-pci',
477
- expiry: 1234567890,
478
- address: '0x123',
479
- permissions: ['eth_accounts']
480
- };
481
- const result = await adapter.revokePermissions(mockParams);
482
- expect(mockProvider.request).toHaveBeenCalledWith({
483
- method: 'wallet_revokePermissions',
484
- params: [mockParams]
485
- });
486
- expect(result).toBe('0x123');
487
- });
488
- });
489
- describe('EthersAdapter - provider listener', () => {
490
- it('should disconnect if accountsChanged event emits no accounts', async () => {
491
- adapter.caipNetworks = mockCaipNetworks;
492
- const emitter = new Emitter();
493
- const mockProvider = {
494
- connect: vi.fn(),
495
- request: vi.fn().mockResolvedValue(['0x123']),
496
- removeListener: vi.fn(),
497
- on: emitter.on.bind(emitter),
498
- off: emitter.off.bind(emitter),
499
- emit: emitter.emit.bind(emitter)
500
- };
501
- Object.defineProperty(adapter, 'connectors', {
502
- value: [{ id: 'test', provider: mockProvider }]
503
- });
504
- await adapter.connect({
505
- id: 'test',
506
- type: 'EXTERNAL',
507
- chainId: 1
508
- });
509
- const disconnect = vi.fn();
510
- adapter.on('disconnect', disconnect);
511
- mockProvider.emit('accountsChanged', []);
512
- expect(disconnect).toHaveBeenCalled();
513
- expect(mockProvider.removeListener).toHaveBeenCalledWith('disconnect', expect.any(Function));
514
- });
515
- });
516
- });
517
- //# sourceMappingURL=client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../../src/tests/client.test.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- import { vi } from 'vitest';
2
- import { mainnet } from '@reown/appkit/networks';
3
- export const mockAppKit = {
4
- setIsConnected: vi.fn(),
5
- getIsConnectedState: vi.fn().mockReturnValue(true),
6
- setCaipAddress: vi.fn(),
7
- getCaipAddress: vi.fn().mockReturnValue('eip155:1:0xE62a3eD41B21447b67a63880607CD2E746A0E35d'),
8
- setRequestedCaipNetworks: vi.fn(),
9
- setConnectors: vi.fn(),
10
- getConnectors: vi.fn().mockReturnValue([]),
11
- setConnectedWalletInfo: vi.fn(),
12
- resetWcConnection: vi.fn(),
13
- resetNetwork: vi.fn(),
14
- resetAccount: vi.fn(),
15
- setPreferredAccountType: vi.fn(),
16
- getPreferredAccountType: vi.fn().mockReturnValue('eoa'),
17
- setEIP6963Enabled: vi.fn(),
18
- getCaipNetwork: vi.fn().mockReturnValue(mainnet),
19
- getCaipNetworks: vi.fn(),
20
- subscribeState: vi.fn().mockImplementation(callback => vi.fn(() => callback({}))),
21
- setApprovedCaipNetworksData: vi.fn(),
22
- getAddress: vi.fn().mockReturnValue('0xE62a3eD41B21447b67a63880607CD2E746A0E35d'),
23
- addConnector: vi.fn(),
24
- setCaipNetwork: vi.fn(),
25
- setLoading: vi.fn(),
26
- setSmartAccountEnabledNetworks: vi.fn(),
27
- setAllAccounts: vi.fn(),
28
- setStatus: vi.fn(),
29
- setSmartAccountDeployed: vi.fn(),
30
- open: vi.fn(),
31
- isOpen: vi.fn().mockReturnValue(false),
32
- isTransactionStackEmpty: vi.fn().mockReturnValue(true),
33
- replace: vi.fn(),
34
- redirect: vi.fn(),
35
- showErrorMessage: vi.fn(),
36
- close: vi.fn(),
37
- popTransactionStack: vi.fn(),
38
- setProfileName: vi.fn(),
39
- setProfileImage: vi.fn(),
40
- setAddressExplorerUrl: vi.fn(),
41
- setBalance: vi.fn(),
42
- getReownName: vi.fn().mockResolvedValue([]),
43
- fetchIdentity: vi.fn().mockResolvedValue(null),
44
- getActiveChainNamespace: vi.fn(),
45
- setClientId: vi.fn(),
46
- universalAdapter: {
47
- connectionControllerClient: {
48
- connectWalletConnect: vi.fn(),
49
- disconnect: vi.fn()
50
- },
51
- networkControllerClient: {
52
- switchCaipNetwork: vi.fn()
53
- }
54
- },
55
- getConnectorImage: vi.fn(),
56
- handleUnsafeRPCRequest: vi.fn().mockImplementation(() => {
57
- if (mockAppKit.isOpen()) {
58
- if (mockAppKit.isTransactionStackEmpty()) {
59
- return;
60
- }
61
- mockAppKit.redirect('ApproveTransaction');
62
- }
63
- else {
64
- mockAppKit.open({ view: 'ApproveTransaction' });
65
- }
66
- })
67
- };
68
- export default mockAppKit;
69
- //# sourceMappingURL=AppKit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppKit.js","sourceRoot":"","sources":["../../../../../src/tests/mocks/AppKit.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import { vi } from 'vitest';
2
- export const mockAuthConnector = {
3
- onRpcRequest: vi.fn(),
4
- onRpcError: vi.fn(),
5
- onRpcSuccess: vi.fn(),
6
- onNotConnected: vi.fn(),
7
- onIsConnected: vi.fn(),
8
- onConnect: vi.fn(),
9
- onSetPreferredAccount: vi.fn(),
10
- connect: vi.fn().mockResolvedValue({
11
- address: '0x1234567890123456789012345678901234567890',
12
- chainId: 1,
13
- smartAccountDeployed: true,
14
- preferredAccountType: 'eoa',
15
- accounts: []
16
- }),
17
- getSmartAccountEnabledNetworks: vi.fn().mockResolvedValue({
18
- smartAccountEnabledNetworks: [1, 137]
19
- }),
20
- on: vi.fn(),
21
- removeListener: vi.fn(),
22
- getLoginEmailUsed: vi.fn().mockReturnValue(false),
23
- isConnected: vi.fn().mockResolvedValue({ isConnected: false }),
24
- disconnect: vi.fn(),
25
- switchNetwork: vi.fn(),
26
- rejectRpcRequests: vi.fn(),
27
- request: vi.fn(),
28
- getUser: vi.fn().mockResolvedValue({
29
- address: '0x1234567890123456789012345678901234567890',
30
- chainId: 1,
31
- smartAccountDeployed: true,
32
- preferredAccountType: 'eoa',
33
- accounts: []
34
- })
35
- };
36
- //# sourceMappingURL=AuthConnector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthConnector.js","sourceRoot":"","sources":["../../../../../src/tests/mocks/AuthConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;IACvB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;IAClB,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC9B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACjC,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,CAAC;QACV,oBAAoB,EAAE,IAAI;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,EAAE;KACb,CAAC;IACF,8BAA8B,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACxD,2BAA2B,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;KACtC,CAAC;IACF,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;IACX,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;IACvB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;IACjD,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC9D,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC1B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACjC,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,CAAC;QACV,oBAAoB,EAAE,IAAI;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,EAAE;KACb,CAAC;CACH,CAAA"}