@broxus/evm-connect 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/dist/cjs/components/EvmConnectButton/index.d.ts +21 -0
  4. package/dist/cjs/components/EvmConnectButton/index.js +52 -0
  5. package/dist/cjs/components/EvmConnectDialog/index.css +130 -0
  6. package/dist/cjs/components/EvmConnectDialog/index.d.ts +11 -0
  7. package/dist/cjs/components/EvmConnectDialog/index.js +65 -0
  8. package/dist/cjs/components/EvmConnector/index.css +37 -0
  9. package/dist/cjs/components/EvmConnector/index.d.ts +20 -0
  10. package/dist/cjs/components/EvmConnector/index.js +97 -0
  11. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.css +43 -0
  12. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +3 -0
  13. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.js +65 -0
  14. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.css +54 -0
  15. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.d.ts +11 -0
  16. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.js +93 -0
  17. package/dist/cjs/components/EvmProvidersDispatcher/index.css +13 -0
  18. package/dist/cjs/components/EvmProvidersDispatcher/index.d.ts +5 -0
  19. package/dist/cjs/components/EvmProvidersDispatcher/index.js +49 -0
  20. package/dist/cjs/components/index.d.ts +4 -0
  21. package/dist/cjs/components/index.js +20 -0
  22. package/dist/cjs/constants.d.ts +1 -0
  23. package/dist/cjs/constants.js +4 -0
  24. package/dist/cjs/context/EvmWalletProvidersContext.d.ts +20 -0
  25. package/dist/cjs/context/EvmWalletProvidersContext.js +95 -0
  26. package/dist/cjs/context/EvmWalletServiceContext.d.ts +10 -0
  27. package/dist/cjs/context/EvmWalletServiceContext.js +55 -0
  28. package/dist/cjs/context/index.d.ts +2 -0
  29. package/dist/cjs/context/index.js +18 -0
  30. package/dist/cjs/core/EIP6963Connector.d.ts +17 -0
  31. package/dist/cjs/core/EIP6963Connector.js +127 -0
  32. package/dist/cjs/core/EthereumConnector.d.ts +43 -0
  33. package/dist/cjs/core/EthereumConnector.js +190 -0
  34. package/dist/cjs/core/MetaMask.d.ts +24 -0
  35. package/dist/cjs/core/MetaMask.js +159 -0
  36. package/dist/cjs/core/WalletConnect.d.ts +20 -0
  37. package/dist/cjs/core/WalletConnect.js +141 -0
  38. package/dist/cjs/core/index.d.ts +4 -0
  39. package/dist/cjs/core/index.js +20 -0
  40. package/dist/cjs/hooks/index.d.ts +4 -0
  41. package/dist/cjs/hooks/index.js +20 -0
  42. package/dist/cjs/hooks/useEIP6963Connections.d.ts +6 -0
  43. package/dist/cjs/hooks/useEIP6963Connections.js +47 -0
  44. package/dist/cjs/hooks/useFilteredConnections.d.ts +2 -0
  45. package/dist/cjs/hooks/useFilteredConnections.js +7 -0
  46. package/dist/cjs/hooks/useOrderedConnections.d.ts +2 -0
  47. package/dist/cjs/hooks/useOrderedConnections.js +41 -0
  48. package/dist/cjs/hooks/useRecentConnectionMeta.d.ts +15 -0
  49. package/dist/cjs/hooks/useRecentConnectionMeta.js +80 -0
  50. package/dist/cjs/index.d.ts +8 -0
  51. package/dist/cjs/index.js +24 -0
  52. package/dist/cjs/intl/index.d.ts +107 -0
  53. package/dist/cjs/intl/index.js +110 -0
  54. package/dist/cjs/services/EvmWalletService.d.ts +165 -0
  55. package/dist/cjs/services/EvmWalletService.js +430 -0
  56. package/dist/cjs/services/index.d.ts +1 -0
  57. package/dist/cjs/services/index.js +17 -0
  58. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  59. package/dist/cjs/types.d.ts +47 -0
  60. package/dist/cjs/types.js +15 -0
  61. package/dist/cjs/utils/get-evm-provider-platform-link.d.ts +2 -0
  62. package/dist/cjs/utils/get-evm-provider-platform-link.js +14 -0
  63. package/dist/cjs/utils/index.d.ts +2 -0
  64. package/dist/cjs/utils/index.js +18 -0
  65. package/dist/cjs/utils/parse-chain-id.d.ts +1 -0
  66. package/dist/cjs/utils/parse-chain-id.js +7 -0
  67. package/dist/esm/components/EvmConnectButton/index.d.ts +21 -0
  68. package/dist/esm/components/EvmConnectButton/index.js +26 -0
  69. package/dist/esm/components/EvmConnectDialog/index.css +130 -0
  70. package/dist/esm/components/EvmConnectDialog/index.d.ts +11 -0
  71. package/dist/esm/components/EvmConnectDialog/index.js +36 -0
  72. package/dist/esm/components/EvmConnector/index.css +37 -0
  73. package/dist/esm/components/EvmConnector/index.d.ts +20 -0
  74. package/dist/esm/components/EvmConnector/index.js +68 -0
  75. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.css +43 -0
  76. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +3 -0
  77. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.js +35 -0
  78. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.css +54 -0
  79. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.d.ts +11 -0
  80. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.js +64 -0
  81. package/dist/esm/components/EvmProvidersDispatcher/index.css +13 -0
  82. package/dist/esm/components/EvmProvidersDispatcher/index.d.ts +5 -0
  83. package/dist/esm/components/EvmProvidersDispatcher/index.js +23 -0
  84. package/dist/esm/components/index.d.ts +4 -0
  85. package/dist/esm/components/index.js +4 -0
  86. package/dist/esm/constants.d.ts +1 -0
  87. package/dist/esm/constants.js +1 -0
  88. package/dist/esm/context/EvmWalletProvidersContext.d.ts +20 -0
  89. package/dist/esm/context/EvmWalletProvidersContext.js +68 -0
  90. package/dist/esm/context/EvmWalletServiceContext.d.ts +10 -0
  91. package/dist/esm/context/EvmWalletServiceContext.js +28 -0
  92. package/dist/esm/context/index.d.ts +2 -0
  93. package/dist/esm/context/index.js +2 -0
  94. package/dist/esm/core/EIP6963Connector.d.ts +17 -0
  95. package/dist/esm/core/EIP6963Connector.js +123 -0
  96. package/dist/esm/core/EthereumConnector.d.ts +43 -0
  97. package/dist/esm/core/EthereumConnector.js +186 -0
  98. package/dist/esm/core/MetaMask.d.ts +24 -0
  99. package/dist/esm/core/MetaMask.js +152 -0
  100. package/dist/esm/core/WalletConnect.d.ts +20 -0
  101. package/dist/esm/core/WalletConnect.js +134 -0
  102. package/dist/esm/core/index.d.ts +4 -0
  103. package/dist/esm/core/index.js +4 -0
  104. package/dist/esm/hooks/index.d.ts +4 -0
  105. package/dist/esm/hooks/index.js +4 -0
  106. package/dist/esm/hooks/useEIP6963Connections.d.ts +6 -0
  107. package/dist/esm/hooks/useEIP6963Connections.js +20 -0
  108. package/dist/esm/hooks/useFilteredConnections.d.ts +2 -0
  109. package/dist/esm/hooks/useFilteredConnections.js +3 -0
  110. package/dist/esm/hooks/useOrderedConnections.d.ts +2 -0
  111. package/dist/esm/hooks/useOrderedConnections.js +14 -0
  112. package/dist/esm/hooks/useRecentConnectionMeta.d.ts +15 -0
  113. package/dist/esm/hooks/useRecentConnectionMeta.js +51 -0
  114. package/dist/esm/index.d.ts +8 -0
  115. package/dist/esm/index.js +8 -0
  116. package/dist/esm/intl/index.d.ts +107 -0
  117. package/dist/esm/intl/index.js +108 -0
  118. package/dist/esm/services/EvmWalletService.d.ts +165 -0
  119. package/dist/esm/services/EvmWalletService.js +423 -0
  120. package/dist/esm/services/index.d.ts +1 -0
  121. package/dist/esm/services/index.js +1 -0
  122. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  123. package/dist/esm/types.d.ts +47 -0
  124. package/dist/esm/types.js +12 -0
  125. package/dist/esm/utils/get-evm-provider-platform-link.d.ts +2 -0
  126. package/dist/esm/utils/get-evm-provider-platform-link.js +10 -0
  127. package/dist/esm/utils/index.d.ts +2 -0
  128. package/dist/esm/utils/index.js +2 -0
  129. package/dist/esm/utils/parse-chain-id.d.ts +1 -0
  130. package/dist/esm/utils/parse-chain-id.js +3 -0
  131. package/package.json +82 -0
@@ -0,0 +1,165 @@
1
+ import { type EvmNetworkConfig } from '@broxus/js-bridge-essentials';
2
+ import { AbstractStore, type NativeCurrency } from '@broxus/js-core';
3
+ import { type IReactionDisposer } from 'mobx';
4
+ import Web3 from 'web3';
5
+ import { type EthereumConnector } from '../core';
6
+ import { type AddEthereumChainParams, type EvmWalletProviderConfig } from '../types';
7
+ export interface EvmWalletServiceCtorParams {
8
+ defaultNetworkId?: number;
9
+ /**
10
+ * List of supported networks
11
+ */
12
+ networks?: Readonly<EvmNetworkConfig[]>;
13
+ providerId?: string;
14
+ /**
15
+ * List of supported Providers
16
+ */
17
+ providers?: Readonly<EvmWalletProviderConfig[]>;
18
+ }
19
+ export interface EvmWalletServiceData {
20
+ balance?: string;
21
+ networks: Readonly<EvmNetworkConfig[]>;
22
+ }
23
+ export interface EvmWalletServiceState {
24
+ isSyncing?: boolean;
25
+ providerId?: string;
26
+ }
27
+ export declare class EvmWalletService extends AbstractStore<EvmWalletServiceData, EvmWalletServiceState> {
28
+ protected readonly params?: Readonly<EvmWalletServiceCtorParams> | undefined;
29
+ constructor(params?: Readonly<EvmWalletServiceCtorParams> | undefined);
30
+ /**
31
+ * Manually connect to the wallet
32
+ * @returns {Promise<void>}
33
+ */
34
+ connect(): Promise<void>;
35
+ /**
36
+ * Manually disconnect from the wallet
37
+ * @returns {Promise<void>}
38
+ */
39
+ disconnect(force?: boolean): Promise<void>;
40
+ /**
41
+ * Switch network or add a new one if not exists in the current connected wallet
42
+ * @param {number|AddEthereumChainParams} chainIdOrParams
43
+ * @returns {Promise<void>}
44
+ */
45
+ switchNetwork(chainIdOrParams: number | AddEthereumChainParams): Promise<void>;
46
+ /**
47
+ * Define current provider connector
48
+ * @returns {EthereumConnector|undefined}
49
+ */
50
+ get connector(): EthereumConnector | undefined;
51
+ /**
52
+ * An independent RPC connection that allows you to receive data from the blockchain without being
53
+ * able to send transactions.
54
+ *
55
+ * This connection does not require connection permissions and wrapped on `Web3` interface.
56
+ * @returns {Web3|undefined}
57
+ */
58
+ get connection(): Web3 | undefined;
59
+ /**
60
+ * Returns current Web3 Instance
61
+ */
62
+ get provider(): Web3 | undefined;
63
+ /**
64
+ * Returns computed wallet balance value
65
+ * @returns {EvmWalletServiceData["balance"]}
66
+ */
67
+ get balance(): EvmWalletServiceData['balance'];
68
+ /**
69
+ * List of the supported networks
70
+ * @returns {EvmWalletServiceData["networks"]}
71
+ */
72
+ get networks(): EvmWalletServiceData['networks'];
73
+ /**
74
+ * Returns `true` if wallet contract is updating
75
+ * @returns {EvmWalletServiceState["isSyncing"]}
76
+ */
77
+ get isSyncing(): EvmWalletServiceState['isSyncing'];
78
+ /**
79
+ A unique identifier of the connected wallet (provider)
80
+ * @returns {EvmWalletServiceState["providerId"]}
81
+ */
82
+ get providerId(): EvmWalletServiceState['providerId'];
83
+ /**
84
+ * Returns computed wallet address value
85
+ * @returns {string|undefined}
86
+ */
87
+ get address(): string | undefined;
88
+ /**
89
+ * Returns wallet native currency
90
+ * @returns {Readonly<NativeCurrency<string>>}
91
+ */
92
+ get currency(): Readonly<NativeCurrency<string>>;
93
+ /**
94
+ * Returns `true` if provider is available.
95
+ * That means extension is installed and activated, else `false`
96
+ * @returns {boolean}
97
+ */
98
+ get hasProvider(): boolean;
99
+ /**
100
+ * Returns `true` if wallet is connected
101
+ * @returns {boolean}
102
+ */
103
+ get isConnected(): boolean;
104
+ /**
105
+ * Returns `true` if wallet is initialized and connected
106
+ * @returns {boolean}
107
+ */
108
+ get isReady(): boolean;
109
+ /**
110
+ * Checks network support
111
+ * @returns {boolean}
112
+ */
113
+ get isUnsupportedNetwork(): boolean;
114
+ /**
115
+ * Returns current network config
116
+ * @returns {Readonly<EvmNetworkConfig|undefined>}
117
+ */
118
+ get network(): Readonly<EvmNetworkConfig | undefined>;
119
+ /**
120
+ Returns details about current connected provider
121
+ * @returns {EvmWalletProviderConfig["info"]|undefined}
122
+ */
123
+ get providerInfo(): EvmWalletProviderConfig['info'] | undefined;
124
+ /**
125
+ * The list of the supported providers
126
+ * @returns {Readonly<EvmWalletProviderConfig[]|undefined>}
127
+ */
128
+ get providers(): Readonly<EvmWalletProviderConfig[] | undefined>;
129
+ /**
130
+ * Returns current network chain id
131
+ * @returns {EthereumConnector["chainId"]}
132
+ */
133
+ get chainId(): EthereumConnector['chainId'];
134
+ /**
135
+ * Returns `true` if wallet is connecting
136
+ * @returns {EthereumConnector["isConnecting"]}
137
+ */
138
+ get isConnecting(): EthereumConnector['isConnecting'];
139
+ /**
140
+ * Returns `true` if wallet is disconnecting
141
+ * @returns {EthereumConnector["isDisconnecting"]}
142
+ */
143
+ get isDisconnecting(): EthereumConnector['isDisconnecting'];
144
+ /**
145
+ * Returns `true` if wallet is initialized
146
+ * @returns {EthereumConnector["isInitialized"]}
147
+ */
148
+ get isInitialized(): EthereumConnector['isInitialized'];
149
+ /**
150
+ * Returns `true` if wallet is initializing
151
+ * @returns {EthereumConnector["isInitializing"]}
152
+ */
153
+ get isInitializing(): EthereumConnector['isInitializing'];
154
+ /**
155
+ * Sync account balance
156
+ */
157
+ protected syncBalance(): Promise<void>;
158
+ /**
159
+ * Trying to resolve EVM Wallet connection
160
+ * @protected
161
+ */
162
+ protected init(): Promise<void>;
163
+ protected accountDisposer: IReactionDisposer | undefined;
164
+ protected networkDisposer: IReactionDisposer | undefined;
165
+ }
@@ -0,0 +1,430 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.EvmWalletService = void 0;
16
+ const js_core_1 = require("@broxus/js-core");
17
+ const js_utils_1 = require("@broxus/js-utils");
18
+ const mobx_1 = require("mobx");
19
+ const web3_1 = __importDefault(require("web3"));
20
+ class EvmWalletService extends js_core_1.AbstractStore {
21
+ params;
22
+ constructor(params) {
23
+ super();
24
+ this.params = params;
25
+ this.setData(() => ({
26
+ networks: params?.networks || [],
27
+ }));
28
+ this.setState(() => ({
29
+ isSyncing: undefined,
30
+ providerId: params?.providerId,
31
+ }));
32
+ (0, mobx_1.makeObservable)(this);
33
+ this.init().catch(reason => {
34
+ (0, js_utils_1.error)('Wallet init failed with an error', reason);
35
+ });
36
+ }
37
+ /**
38
+ * Manually connect to the wallet
39
+ * @returns {Promise<void>}
40
+ */
41
+ async connect() {
42
+ if (this.isConnecting || this.isDisconnecting) {
43
+ return;
44
+ }
45
+ try {
46
+ const defaultNetworkId = this.params?.defaultNetworkId ?? this.network?.chainId ?? 1;
47
+ const chainParams = this.networks.find(network => network.chainId === defaultNetworkId?.toString());
48
+ await this.connector?.connect(chainParams ?? 1);
49
+ }
50
+ catch (e) {
51
+ (0, js_utils_1.error)('EVM Wallet connect error', e);
52
+ }
53
+ }
54
+ /**
55
+ * Manually disconnect from the wallet
56
+ * @returns {Promise<void>}
57
+ */
58
+ async disconnect(force) {
59
+ if ((this.isConnecting || this.isDisconnecting) && !force) {
60
+ return;
61
+ }
62
+ try {
63
+ await this.connector?.disconnect();
64
+ this.setData('balance', undefined);
65
+ this.setState('providerId', undefined);
66
+ }
67
+ catch (e) {
68
+ (0, js_utils_1.error)('EVM Wallet disconnect error', e);
69
+ }
70
+ finally {
71
+ //
72
+ }
73
+ }
74
+ /**
75
+ * Switch network or add a new one if not exists in the current connected wallet
76
+ * @param {number|AddEthereumChainParams} chainIdOrParams
77
+ * @returns {Promise<void>}
78
+ */
79
+ async switchNetwork(chainIdOrParams) {
80
+ await this.connector?.switchNetwork(chainIdOrParams);
81
+ }
82
+ /**
83
+ * Define current provider connector
84
+ * @returns {EthereumConnector|undefined}
85
+ */
86
+ get connector() {
87
+ return this.providers?.find(config => config.id === this.providerId)?.connector;
88
+ }
89
+ /**
90
+ * An independent RPC connection that allows you to receive data from the blockchain without being
91
+ * able to send transactions.
92
+ *
93
+ * This connection does not require connection permissions and wrapped on `Web3` interface.
94
+ * @returns {Web3|undefined}
95
+ */
96
+ get connection() {
97
+ return this.network?.rpcUrl ? new web3_1.default(new web3_1.default.providers.HttpProvider(this.network.rpcUrl)) : this.provider;
98
+ }
99
+ /**
100
+ * Returns current Web3 Instance
101
+ */
102
+ get provider() {
103
+ return this.connector?.provider != null ? new web3_1.default(this.connector.provider) : undefined;
104
+ }
105
+ /**
106
+ * Returns computed wallet balance value
107
+ * @returns {EvmWalletServiceData["balance"]}
108
+ */
109
+ get balance() {
110
+ return this._data.balance ?? '0';
111
+ }
112
+ /**
113
+ * List of the supported networks
114
+ * @returns {EvmWalletServiceData["networks"]}
115
+ */
116
+ get networks() {
117
+ return this._data?.networks;
118
+ }
119
+ /**
120
+ * Returns `true` if wallet contract is updating
121
+ * @returns {EvmWalletServiceState["isSyncing"]}
122
+ */
123
+ get isSyncing() {
124
+ return this._state.isSyncing;
125
+ }
126
+ /**
127
+ A unique identifier of the connected wallet (provider)
128
+ * @returns {EvmWalletServiceState["providerId"]}
129
+ */
130
+ get providerId() {
131
+ return this._state.providerId;
132
+ }
133
+ /**
134
+ * Returns computed wallet address value
135
+ * @returns {string|undefined}
136
+ */
137
+ get address() {
138
+ return this.connector?.accounts?.[0];
139
+ }
140
+ /**
141
+ * Returns wallet native currency
142
+ * @returns {Readonly<NativeCurrency<string>>}
143
+ */
144
+ get currency() {
145
+ return {
146
+ balance: this.balance,
147
+ decimals: this.network?.currency.decimals ?? 18,
148
+ icon: this.network?.currency.icon,
149
+ name: this.network?.currency.name,
150
+ symbol: this.network?.currency.symbol || 'ETH',
151
+ wrappedCurrencyAddress: this.network?.currency.wrappedCurrencyAddress,
152
+ };
153
+ }
154
+ /**
155
+ * Returns `true` if provider is available.
156
+ * That means extension is installed and activated, else `false`
157
+ * @returns {boolean}
158
+ */
159
+ get hasProvider() {
160
+ return this.connector?.provider != null;
161
+ }
162
+ /**
163
+ * Returns `true` if wallet is connected
164
+ * @returns {boolean}
165
+ */
166
+ get isConnected() {
167
+ return this.address !== undefined;
168
+ }
169
+ /**
170
+ * Returns `true` if wallet is initialized and connected
171
+ * @returns {boolean}
172
+ */
173
+ get isReady() {
174
+ return (!this.isInitializing
175
+ && !this.isConnecting
176
+ && !this.isDisconnecting
177
+ && this.isInitialized === true
178
+ && this.isConnected);
179
+ }
180
+ /**
181
+ * Checks network support
182
+ * @returns {boolean}
183
+ */
184
+ get isUnsupportedNetwork() {
185
+ if (this.chainId == null) {
186
+ return false;
187
+ }
188
+ return !(this.networks?.map(network => network.chainId)?.includes(this.chainId.toString()) ?? false);
189
+ }
190
+ /**
191
+ * Returns current network config
192
+ * @returns {Readonly<EvmNetworkConfig|undefined>}
193
+ */
194
+ get network() {
195
+ return this.networks?.find(network => network.type === 'evm' && network.chainId === this.chainId?.toString());
196
+ }
197
+ /**
198
+ Returns details about current connected provider
199
+ * @returns {EvmWalletProviderConfig["info"]|undefined}
200
+ */
201
+ get providerInfo() {
202
+ return this.providers?.find(config => config.id === this.providerId)?.info;
203
+ }
204
+ /**
205
+ * The list of the supported providers
206
+ * @returns {Readonly<EvmWalletProviderConfig[]|undefined>}
207
+ */
208
+ get providers() {
209
+ return this.params?.providers;
210
+ }
211
+ /**
212
+ * Returns current network chain id
213
+ * @returns {EthereumConnector["chainId"]}
214
+ */
215
+ get chainId() {
216
+ return this.connector?.chainId;
217
+ }
218
+ /**
219
+ * Returns `true` if wallet is connecting
220
+ * @returns {EthereumConnector["isConnecting"]}
221
+ */
222
+ get isConnecting() {
223
+ return this.connector?.isConnecting;
224
+ }
225
+ /**
226
+ * Returns `true` if wallet is disconnecting
227
+ * @returns {EthereumConnector["isDisconnecting"]}
228
+ */
229
+ get isDisconnecting() {
230
+ return this.connector?.isDisconnecting;
231
+ }
232
+ /**
233
+ * Returns `true` if wallet is initialized
234
+ * @returns {EthereumConnector["isInitialized"]}
235
+ */
236
+ get isInitialized() {
237
+ return this.connector?.isInitialized;
238
+ }
239
+ /**
240
+ * Returns `true` if wallet is initializing
241
+ * @returns {EthereumConnector["isInitializing"]}
242
+ */
243
+ get isInitializing() {
244
+ return this.connector?.isInitializing;
245
+ }
246
+ /**
247
+ * Sync account balance
248
+ */
249
+ async syncBalance() {
250
+ if (!this.provider) {
251
+ return;
252
+ }
253
+ try {
254
+ if (this.address) {
255
+ this.setState('isSyncing', this.isSyncing === undefined);
256
+ const balance = await this.provider.eth.getBalance(this.address);
257
+ this.setData('balance', balance.toString());
258
+ (0, js_utils_1.debug)(`Sync EVM balance: ${balance}`);
259
+ }
260
+ }
261
+ catch (e) {
262
+ (0, js_utils_1.error)('Sync EVM balance failed with an error', e);
263
+ this.setData('balance', undefined);
264
+ }
265
+ finally {
266
+ this.setState('isSyncing', false);
267
+ }
268
+ }
269
+ /**
270
+ * Trying to resolve EVM Wallet connection
271
+ * @protected
272
+ */
273
+ async init() {
274
+ this.accountDisposer = (0, mobx_1.reaction)(() => this.address, async (address, prevAddress) => {
275
+ if (address?.toLowerCase() !== prevAddress?.toLowerCase()) {
276
+ this.setState('isSyncing', undefined);
277
+ }
278
+ await this.syncBalance();
279
+ });
280
+ this.networkDisposer = (0, mobx_1.reaction)(() => this.chainId, async (chainId, prevChainId) => {
281
+ if (chainId !== prevChainId) {
282
+ this.setState('isSyncing', undefined);
283
+ }
284
+ await this.syncBalance();
285
+ });
286
+ const handler = (0, js_utils_1.debounce)(async () => {
287
+ await this.syncBalance();
288
+ handler();
289
+ }, 10_000);
290
+ handler();
291
+ }
292
+ accountDisposer;
293
+ networkDisposer;
294
+ }
295
+ exports.EvmWalletService = EvmWalletService;
296
+ __decorate([
297
+ mobx_1.action.bound,
298
+ __metadata("design:type", Function),
299
+ __metadata("design:paramtypes", []),
300
+ __metadata("design:returntype", Promise)
301
+ ], EvmWalletService.prototype, "connect", null);
302
+ __decorate([
303
+ mobx_1.action.bound,
304
+ __metadata("design:type", Function),
305
+ __metadata("design:paramtypes", [Boolean]),
306
+ __metadata("design:returntype", Promise)
307
+ ], EvmWalletService.prototype, "disconnect", null);
308
+ __decorate([
309
+ mobx_1.action.bound,
310
+ __metadata("design:type", Function),
311
+ __metadata("design:paramtypes", [Object]),
312
+ __metadata("design:returntype", Promise)
313
+ ], EvmWalletService.prototype, "switchNetwork", null);
314
+ __decorate([
315
+ mobx_1.computed,
316
+ __metadata("design:type", Object),
317
+ __metadata("design:paramtypes", [])
318
+ ], EvmWalletService.prototype, "connector", null);
319
+ __decorate([
320
+ mobx_1.computed,
321
+ __metadata("design:type", Object),
322
+ __metadata("design:paramtypes", [])
323
+ ], EvmWalletService.prototype, "connection", null);
324
+ __decorate([
325
+ mobx_1.computed,
326
+ __metadata("design:type", Object),
327
+ __metadata("design:paramtypes", [])
328
+ ], EvmWalletService.prototype, "provider", null);
329
+ __decorate([
330
+ mobx_1.computed,
331
+ __metadata("design:type", Object),
332
+ __metadata("design:paramtypes", [])
333
+ ], EvmWalletService.prototype, "balance", null);
334
+ __decorate([
335
+ mobx_1.computed,
336
+ __metadata("design:type", Object),
337
+ __metadata("design:paramtypes", [])
338
+ ], EvmWalletService.prototype, "networks", null);
339
+ __decorate([
340
+ mobx_1.computed,
341
+ __metadata("design:type", Object),
342
+ __metadata("design:paramtypes", [])
343
+ ], EvmWalletService.prototype, "isSyncing", null);
344
+ __decorate([
345
+ mobx_1.computed,
346
+ __metadata("design:type", Object),
347
+ __metadata("design:paramtypes", [])
348
+ ], EvmWalletService.prototype, "providerId", null);
349
+ __decorate([
350
+ mobx_1.computed,
351
+ __metadata("design:type", Object),
352
+ __metadata("design:paramtypes", [])
353
+ ], EvmWalletService.prototype, "address", null);
354
+ __decorate([
355
+ mobx_1.computed,
356
+ __metadata("design:type", Object),
357
+ __metadata("design:paramtypes", [])
358
+ ], EvmWalletService.prototype, "currency", null);
359
+ __decorate([
360
+ mobx_1.computed,
361
+ __metadata("design:type", Boolean),
362
+ __metadata("design:paramtypes", [])
363
+ ], EvmWalletService.prototype, "hasProvider", null);
364
+ __decorate([
365
+ mobx_1.computed,
366
+ __metadata("design:type", Boolean),
367
+ __metadata("design:paramtypes", [])
368
+ ], EvmWalletService.prototype, "isConnected", null);
369
+ __decorate([
370
+ mobx_1.computed,
371
+ __metadata("design:type", Boolean),
372
+ __metadata("design:paramtypes", [])
373
+ ], EvmWalletService.prototype, "isReady", null);
374
+ __decorate([
375
+ mobx_1.computed,
376
+ __metadata("design:type", Boolean),
377
+ __metadata("design:paramtypes", [])
378
+ ], EvmWalletService.prototype, "isUnsupportedNetwork", null);
379
+ __decorate([
380
+ mobx_1.computed,
381
+ __metadata("design:type", Object),
382
+ __metadata("design:paramtypes", [])
383
+ ], EvmWalletService.prototype, "network", null);
384
+ __decorate([
385
+ mobx_1.computed,
386
+ __metadata("design:type", Object),
387
+ __metadata("design:paramtypes", [])
388
+ ], EvmWalletService.prototype, "providerInfo", null);
389
+ __decorate([
390
+ mobx_1.computed,
391
+ __metadata("design:type", Object),
392
+ __metadata("design:paramtypes", [])
393
+ ], EvmWalletService.prototype, "providers", null);
394
+ __decorate([
395
+ mobx_1.computed,
396
+ __metadata("design:type", Object),
397
+ __metadata("design:paramtypes", [])
398
+ ], EvmWalletService.prototype, "chainId", null);
399
+ __decorate([
400
+ mobx_1.computed,
401
+ __metadata("design:type", Object),
402
+ __metadata("design:paramtypes", [])
403
+ ], EvmWalletService.prototype, "isConnecting", null);
404
+ __decorate([
405
+ mobx_1.computed,
406
+ __metadata("design:type", Object),
407
+ __metadata("design:paramtypes", [])
408
+ ], EvmWalletService.prototype, "isDisconnecting", null);
409
+ __decorate([
410
+ mobx_1.computed,
411
+ __metadata("design:type", Object),
412
+ __metadata("design:paramtypes", [])
413
+ ], EvmWalletService.prototype, "isInitialized", null);
414
+ __decorate([
415
+ mobx_1.computed,
416
+ __metadata("design:type", Object),
417
+ __metadata("design:paramtypes", [])
418
+ ], EvmWalletService.prototype, "isInitializing", null);
419
+ __decorate([
420
+ mobx_1.action.bound,
421
+ __metadata("design:type", Function),
422
+ __metadata("design:paramtypes", []),
423
+ __metadata("design:returntype", Promise)
424
+ ], EvmWalletService.prototype, "syncBalance", null);
425
+ __decorate([
426
+ mobx_1.action.bound,
427
+ __metadata("design:type", Function),
428
+ __metadata("design:paramtypes", []),
429
+ __metadata("design:returntype", Promise)
430
+ ], EvmWalletService.prototype, "init", null);
@@ -0,0 +1 @@
1
+ export * from '../services/EvmWalletService';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../services/EvmWalletService"), exports);