@wagmi/core 0.4.0-test.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chains/dist/wagmi-core-chains.cjs.dev.js +1 -1
- package/chains/dist/wagmi-core-chains.cjs.prod.js +1 -1
- package/chains/dist/wagmi-core-chains.esm.js +1 -1
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +5 -5
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +5 -5
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +5 -5
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +6 -4
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +6 -4
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +6 -4
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +11 -7
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +11 -7
- package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +6 -6
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +19 -18
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +19 -18
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +19 -18
- package/dist/base-33eceda3.esm.js +302 -0
- package/dist/base-457b5f55.cjs.prod.js +328 -0
- package/dist/base-6f16410c.cjs.dev.js +328 -0
- package/dist/{chains-d045862c.cjs.prod.js → chains-1390c48d.cjs.prod.js} +56 -4
- package/dist/{chains-7e369752.cjs.dev.js → chains-2ca34f98.cjs.dev.js} +56 -4
- package/dist/{chains-fa406563.esm.js → chains-e98fda1e.esm.js} +56 -4
- package/dist/{client-60ee0298.esm.js → client-71653c40.esm.js} +21 -44
- package/dist/{client-42cf11b7.cjs.dev.js → client-7864fb0c.cjs.prod.js} +21 -44
- package/dist/{client-ed3aaa6a.cjs.prod.js → client-b3902dbf.cjs.dev.js} +21 -44
- package/dist/declarations/src/actions/accounts/getAccount.d.ts +31 -2
- package/dist/declarations/src/actions/accounts/getNetwork.d.ts +1 -2
- package/dist/declarations/src/actions/accounts/signTypedData.d.ts +11 -13
- package/dist/declarations/src/actions/accounts/watchAccount.d.ts +9 -1
- package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +8 -1
- package/dist/declarations/src/actions/contracts/index.d.ts +5 -3
- package/dist/declarations/src/actions/contracts/multicall.d.ts +21 -0
- package/dist/declarations/src/actions/contracts/readContract.d.ts +7 -4
- package/dist/declarations/src/actions/contracts/readContracts.d.ts +19 -0
- package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +3 -3
- package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +2 -3
- package/dist/declarations/src/actions/contracts/watchReadContracts.d.ts +6 -0
- package/dist/declarations/src/actions/contracts/writeContract.d.ts +10 -4
- package/dist/declarations/src/actions/index.d.ts +1 -1
- package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +6 -1
- package/dist/declarations/src/client.d.ts +6 -11
- package/dist/declarations/src/connectors/base.d.ts +4 -3
- package/dist/declarations/src/connectors/mock/connector.d.ts +2 -9
- package/dist/declarations/src/connectors/mock/provider.d.ts +2 -1
- package/dist/declarations/src/connectors/walletConnect.d.ts +5 -4
- package/dist/declarations/src/constants/index.d.ts +1 -0
- package/dist/declarations/src/constants/multicall.d.ts +25 -0
- package/dist/declarations/src/errors.d.ts +27 -5
- package/dist/declarations/src/index.d.ts +4 -4
- package/dist/declarations/src/providers/alchemy.d.ts +2 -2
- package/dist/declarations/src/providers/infura.d.ts +2 -2
- package/dist/declarations/src/providers/jsonRpc.d.ts +2 -2
- package/dist/declarations/src/providers/public.d.ts +2 -2
- package/dist/declarations/src/types/index.d.ts +17 -5
- package/dist/declarations/src/utils/configureChains.d.ts +10 -4
- package/dist/wagmi-core.cjs.dev.js +578 -231
- package/dist/wagmi-core.cjs.prod.js +578 -231
- package/dist/wagmi-core.esm.js +576 -239
- package/package.json +15 -3
- package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.dev.js +3 -1
- package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.prod.js +3 -1
- package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.esm.js +3 -1
- package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.d.ts +0 -1
- package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.dev.js +0 -200
- package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.js +0 -7
- package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.prod.js +0 -200
- package/connectors/injected/dist/wagmi-core-connectors-injected.esm.js +0 -196
- package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.d.ts +0 -11
- package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.js +0 -16
- package/dist/base-7f682723.cjs.prod.js +0 -623
- package/dist/base-ae774f26.cjs.dev.js +0 -623
- package/dist/base-c546f171.esm.js +0 -603
- package/dist/declarations/src/utils/eventemitter.d.ts +0 -135
package/dist/wagmi-core.esm.js
CHANGED
|
@@ -1,23 +1,16 @@
|
|
|
1
|
-
import { c as client, g as getClient } from './client-
|
|
2
|
-
export { C as Client, I as InjectedConnector, a as createClient, b as createStorage, n as noopStorage } from './client-
|
|
3
|
-
import { C as ConnectorAlreadyConnectedError, a as ConnectorNotFoundError, U as UserRejectedRequestError, S as SwitchChainNotSupportedError } from './base-
|
|
4
|
-
export { A as AddChainError, c as ChainNotConfiguredError,
|
|
5
|
-
import { Contract } from 'ethers/lib/ethers';
|
|
6
|
-
import { formatUnits, getAddress } from 'ethers/lib/utils';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
import { providers, Contract as Contract$1 } from 'ethers';
|
|
1
|
+
import { c as client, g as getClient } from './client-71653c40.esm.js';
|
|
2
|
+
export { C as Client, I as InjectedConnector, a as createClient, b as createStorage, n as noopStorage } from './client-71653c40.esm.js';
|
|
3
|
+
import { C as ConnectorAlreadyConnectedError, P as ProviderChainsNotFound, a as ChainDoesNotSupportMulticallError, b as ConnectorNotFoundError, c as ChainMismatchError, U as UserRejectedRequestError, S as SwitchChainNotSupportedError } from './base-33eceda3.esm.js';
|
|
4
|
+
export { A as AddChainError, a as ChainDoesNotSupportMulticallError, c as ChainMismatchError, e as ChainNotConfiguredError, d as Connector, C as ConnectorAlreadyConnectedError, b as ConnectorNotFoundError, P as ProviderChainsNotFound, f as ProviderRpcError, R as ResourceUnavailableError, g as RpcError, h as SwitchChainError, S as SwitchChainNotSupportedError, U as UserRejectedRequestError, n as normalizeChainId } from './base-33eceda3.esm.js';
|
|
5
|
+
import { logger, Contract as Contract$1 } from 'ethers/lib/ethers';
|
|
6
|
+
import { isAddress, Logger, formatUnits, getAddress } from 'ethers/lib/utils';
|
|
7
|
+
import { providers, Contract } from 'ethers';
|
|
8
|
+
import shallow from 'zustand/shallow';
|
|
10
9
|
export { a as alchemyRpcUrls, i as infuraRpcUrls } from './rpcs-7cfbd91c.esm.js';
|
|
10
|
+
export { a as allChains, c as chain, b as chainId, d as defaultChains, e as defaultL2Chains, f as etherscanBlockExplorers } from './chains-e98fda1e.esm.js';
|
|
11
11
|
import 'zustand/vanilla';
|
|
12
12
|
import 'zustand/middleware';
|
|
13
|
-
|
|
14
|
-
// https://ethereum.org/en/developers/docs/standards/tokens/erc-20
|
|
15
|
-
const erc20ABI = ['event Approval(address indexed _owner, address indexed _spender, uint256 _value)', 'event Transfer(address indexed _from, address indexed _to, uint256 _value)', 'function allowance(address _owner, address _spender) public view returns (uint256 remaining)', 'function approve(address _spender, uint256 _value) public returns (bool success)', 'function balanceOf(address _owner) public view returns (uint256 balance)', 'function decimals() public view returns (uint8)', 'function name() public view returns (string)', 'function symbol() public view returns (string)', 'function totalSupply() public view returns (uint256)', 'function transfer(address _to, uint256 _value) public returns (bool success)', 'function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)']; // https://ethereum.org/en/developers/docs/standards/tokens/erc-721
|
|
16
|
-
|
|
17
|
-
const erc721ABI = ['event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)', 'event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)', 'event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)', 'function approve(address _approved, uint256 _tokenId) external payable', 'function balanceOf(address _owner) external view returns (uint256)', 'function getApproved(uint256 _tokenId) external view returns (address)', 'function isApprovedForAll(address _owner, address _operator) external view returns (bool)', 'function name() view returns (string memory)', 'function ownerOf(uint256 _tokenId) external view returns (address)', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable', 'function setApprovalForAll(address _operator, bool _approved) external', 'function symbol() view returns (string memory)', 'function tokenByIndex(uint256 _index) view returns (uint256)', 'function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns (uint256 tokenId)', 'function tokenURI(uint256 _tokenId) view returns (string memory)', 'function totalSupply() view returns (uint256)', 'function transferFrom(address _from, address _to, uint256 _tokenId) external payable'];
|
|
18
|
-
|
|
19
|
-
// https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
|
|
20
|
-
const units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
|
|
13
|
+
import 'eventemitter3';
|
|
21
14
|
|
|
22
15
|
function configureChains(defaultChains, providers) {
|
|
23
16
|
let {
|
|
@@ -75,9 +68,13 @@ function configureChains(defaultChains, providers) {
|
|
|
75
68
|
const activeChainId = chainId && chains.some(x => x.id === chainId) ? chainId : (_defaultChains$ = defaultChains[0]) === null || _defaultChains$ === void 0 ? void 0 : _defaultChains$.id;
|
|
76
69
|
const chainProviders = providers_[activeChainId];
|
|
77
70
|
if (!chainProviders) throw new Error("No providers configured for chain \"".concat(activeChainId, "\""));
|
|
78
|
-
if (chainProviders.length === 1) return (_chainProviders$ = chainProviders[0]) === null || _chainProviders$ === void 0 ? void 0 : _chainProviders$.call(chainProviders)
|
|
79
|
-
|
|
71
|
+
if (chainProviders.length === 1) return Object.assign(((_chainProviders$ = chainProviders[0]) === null || _chainProviders$ === void 0 ? void 0 : _chainProviders$.call(chainProviders)) || {}, {
|
|
72
|
+
chains
|
|
73
|
+
});
|
|
74
|
+
return Object.assign(fallbackProvider(targetQuorum, minQuorum, chainProviders, {
|
|
80
75
|
stallTimeout
|
|
76
|
+
}), {
|
|
77
|
+
chains
|
|
81
78
|
});
|
|
82
79
|
},
|
|
83
80
|
webSocketProvider: _ref3 => {
|
|
@@ -89,10 +86,14 @@ function configureChains(defaultChains, providers) {
|
|
|
89
86
|
const activeChainId = chainId && chains.some(x => x.id === chainId) ? chainId : (_defaultChains$2 = defaultChains[0]) === null || _defaultChains$2 === void 0 ? void 0 : _defaultChains$2.id;
|
|
90
87
|
const chainWebSocketProviders = webSocketProviders_[activeChainId];
|
|
91
88
|
if (!chainWebSocketProviders) return undefined;
|
|
92
|
-
if (chainWebSocketProviders.length === 1) return (_chainWebSocketProvid = chainWebSocketProviders[0]) === null || _chainWebSocketProvid === void 0 ? void 0 : _chainWebSocketProvid.call(chainWebSocketProviders)
|
|
89
|
+
if (chainWebSocketProviders.length === 1) return Object.assign(((_chainWebSocketProvid = chainWebSocketProviders[0]) === null || _chainWebSocketProvid === void 0 ? void 0 : _chainWebSocketProvid.call(chainWebSocketProviders)) || {}, {
|
|
90
|
+
chains
|
|
91
|
+
}); // WebSockets do not work with `fallbackProvider`
|
|
93
92
|
// Default to first available
|
|
94
93
|
|
|
95
|
-
return (_chainWebSocketProvid2 = chainWebSocketProviders[0]) === null || _chainWebSocketProvid2 === void 0 ? void 0 : _chainWebSocketProvid2.call(chainWebSocketProviders)
|
|
94
|
+
return Object.assign(((_chainWebSocketProvid2 = chainWebSocketProviders[0]) === null || _chainWebSocketProvid2 === void 0 ? void 0 : _chainWebSocketProvid2.call(chainWebSocketProviders)) || {}, {
|
|
95
|
+
chains
|
|
96
|
+
});
|
|
96
97
|
}
|
|
97
98
|
};
|
|
98
99
|
}
|
|
@@ -128,6 +129,52 @@ function fallbackProvider(targetQuorum, minQuorum, providers_, _ref4) {
|
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
|
|
132
|
+
// https://ethereum.org/en/developers/docs/standards/tokens/erc-20
|
|
133
|
+
const erc20ABI = ['event Approval(address indexed _owner, address indexed _spender, uint256 _value)', 'event Transfer(address indexed _from, address indexed _to, uint256 _value)', 'function allowance(address _owner, address _spender) public view returns (uint256 remaining)', 'function approve(address _spender, uint256 _value) public returns (bool success)', 'function balanceOf(address _owner) public view returns (uint256 balance)', 'function decimals() public view returns (uint8)', 'function name() public view returns (string)', 'function symbol() public view returns (string)', 'function totalSupply() public view returns (uint256)', 'function transfer(address _to, uint256 _value) public returns (bool success)', 'function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)']; // https://ethereum.org/en/developers/docs/standards/tokens/erc-721
|
|
134
|
+
|
|
135
|
+
const erc721ABI = ['event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)', 'event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)', 'event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)', 'function approve(address _approved, uint256 _tokenId) external payable', 'function balanceOf(address _owner) external view returns (uint256)', 'function getApproved(uint256 _tokenId) external view returns (address)', 'function isApprovedForAll(address _owner, address _operator) external view returns (bool)', 'function name() view returns (string memory)', 'function ownerOf(uint256 _tokenId) external view returns (address)', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable', 'function setApprovalForAll(address _operator, bool _approved) external', 'function symbol() view returns (string memory)', 'function tokenByIndex(uint256 _index) view returns (uint256)', 'function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns (uint256 tokenId)', 'function tokenURI(uint256 _tokenId) view returns (string memory)', 'function totalSupply() view returns (uint256)', 'function transferFrom(address _from, address _to, uint256 _tokenId) external payable'];
|
|
136
|
+
|
|
137
|
+
const multicallInterface = [{
|
|
138
|
+
inputs: [{
|
|
139
|
+
components: [{
|
|
140
|
+
internalType: 'address',
|
|
141
|
+
name: 'target',
|
|
142
|
+
type: 'address'
|
|
143
|
+
}, {
|
|
144
|
+
internalType: 'bool',
|
|
145
|
+
name: 'allowFailure',
|
|
146
|
+
type: 'bool'
|
|
147
|
+
}, {
|
|
148
|
+
internalType: 'bytes',
|
|
149
|
+
name: 'callData',
|
|
150
|
+
type: 'bytes'
|
|
151
|
+
}],
|
|
152
|
+
internalType: 'struct Multicall3.Call3[]',
|
|
153
|
+
name: 'calls',
|
|
154
|
+
type: 'tuple[]'
|
|
155
|
+
}],
|
|
156
|
+
name: 'aggregate3',
|
|
157
|
+
outputs: [{
|
|
158
|
+
components: [{
|
|
159
|
+
internalType: 'bool',
|
|
160
|
+
name: 'success',
|
|
161
|
+
type: 'bool'
|
|
162
|
+
}, {
|
|
163
|
+
internalType: 'bytes',
|
|
164
|
+
name: 'returnData',
|
|
165
|
+
type: 'bytes'
|
|
166
|
+
}],
|
|
167
|
+
internalType: 'struct Multicall3.Result[]',
|
|
168
|
+
name: 'returnData',
|
|
169
|
+
type: 'tuple[]'
|
|
170
|
+
}],
|
|
171
|
+
stateMutability: 'view',
|
|
172
|
+
type: 'function'
|
|
173
|
+
}];
|
|
174
|
+
|
|
175
|
+
// https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
|
|
176
|
+
const units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
|
|
177
|
+
|
|
131
178
|
async function connect(_ref) {
|
|
132
179
|
let {
|
|
133
180
|
chainId,
|
|
@@ -135,19 +182,31 @@ async function connect(_ref) {
|
|
|
135
182
|
} = _ref;
|
|
136
183
|
const activeConnector = client.connector;
|
|
137
184
|
if (connector.id === (activeConnector === null || activeConnector === void 0 ? void 0 : activeConnector.id)) throw new ConnectorAlreadyConnectedError();
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
connector
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
185
|
+
|
|
186
|
+
try {
|
|
187
|
+
client.setState(x => ({ ...x,
|
|
188
|
+
status: 'connecting'
|
|
189
|
+
}));
|
|
190
|
+
const data = await connector.connect({
|
|
191
|
+
chainId
|
|
192
|
+
});
|
|
193
|
+
client.setLastUsedConnector(connector.id);
|
|
194
|
+
client.setState(x => ({ ...x,
|
|
195
|
+
connector,
|
|
196
|
+
chains: connector === null || connector === void 0 ? void 0 : connector.chains,
|
|
197
|
+
data,
|
|
198
|
+
status: 'connected'
|
|
199
|
+
}));
|
|
200
|
+
client.storage.setItem('connected', true);
|
|
201
|
+
return { ...data,
|
|
202
|
+
connector
|
|
203
|
+
};
|
|
204
|
+
} catch (err) {
|
|
205
|
+
client.setState(x => ({ ...x,
|
|
206
|
+
status: 'disconnected'
|
|
207
|
+
}));
|
|
208
|
+
throw err;
|
|
209
|
+
}
|
|
151
210
|
}
|
|
152
211
|
|
|
153
212
|
async function disconnect() {
|
|
@@ -157,6 +216,15 @@ async function disconnect() {
|
|
|
157
216
|
client.storage.removeItem('connected');
|
|
158
217
|
}
|
|
159
218
|
|
|
219
|
+
function getContract(_ref) {
|
|
220
|
+
let {
|
|
221
|
+
addressOrName,
|
|
222
|
+
contractInterface,
|
|
223
|
+
signerOrProvider
|
|
224
|
+
} = _ref;
|
|
225
|
+
return new Contract(addressOrName, contractInterface, signerOrProvider);
|
|
226
|
+
}
|
|
227
|
+
|
|
160
228
|
function getProvider() {
|
|
161
229
|
let {
|
|
162
230
|
chainId
|
|
@@ -207,213 +275,152 @@ function watchWebSocketProvider(args, callback) {
|
|
|
207
275
|
return unsubscribe;
|
|
208
276
|
}
|
|
209
277
|
|
|
210
|
-
async function
|
|
211
|
-
var _client$connector$cha, _client$connector, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
|
|
212
|
-
|
|
278
|
+
async function readContract(_ref) {
|
|
213
279
|
let {
|
|
214
280
|
addressOrName,
|
|
281
|
+
args,
|
|
215
282
|
chainId,
|
|
216
|
-
|
|
217
|
-
|
|
283
|
+
contractInterface,
|
|
284
|
+
functionName,
|
|
285
|
+
overrides
|
|
218
286
|
} = _ref;
|
|
219
|
-
const client = getClient();
|
|
220
287
|
const provider = getProvider({
|
|
221
288
|
chainId
|
|
222
289
|
});
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
const chains = [...((_client$connector$cha = (_client$connector = client.connector) === null || _client$connector === void 0 ? void 0 : _client$connector.chains) !== null && _client$connector$cha !== void 0 ? _client$connector$cha : []), ...allChains];
|
|
237
|
-
const value = await provider.getBalance(addressOrName);
|
|
238
|
-
const chain = chains.find(x => x.id === provider.network.chainId);
|
|
239
|
-
return {
|
|
240
|
-
decimals: (_chain$nativeCurrency = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency2 = chain.nativeCurrency) === null || _chain$nativeCurrency2 === void 0 ? void 0 : _chain$nativeCurrency2.decimals) !== null && _chain$nativeCurrency !== void 0 ? _chain$nativeCurrency : 18,
|
|
241
|
-
formatted: formatUnits(value, unit),
|
|
242
|
-
symbol: (_chain$nativeCurrency3 = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency4 = chain.nativeCurrency) === null || _chain$nativeCurrency4 === void 0 ? void 0 : _chain$nativeCurrency4.symbol) !== null && _chain$nativeCurrency3 !== void 0 ? _chain$nativeCurrency3 : 'ETH',
|
|
243
|
-
unit,
|
|
244
|
-
value
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
async function fetchSigner() {
|
|
249
|
-
var _client$connector, _client$connector$get;
|
|
250
|
-
|
|
251
|
-
const client = getClient();
|
|
252
|
-
const signer = (await ((_client$connector = client.connector) === null || _client$connector === void 0 ? void 0 : (_client$connector$get = _client$connector.getSigner) === null || _client$connector$get === void 0 ? void 0 : _client$connector$get.call(_client$connector))) || null;
|
|
253
|
-
return signer;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
function getAccount() {
|
|
257
|
-
const {
|
|
258
|
-
data,
|
|
259
|
-
connector
|
|
260
|
-
} = getClient();
|
|
261
|
-
return {
|
|
262
|
-
address: data === null || data === void 0 ? void 0 : data.account,
|
|
263
|
-
connector
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
function getNetwork() {
|
|
268
|
-
var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
|
|
269
|
-
|
|
270
|
-
const client = getClient();
|
|
271
|
-
const chainId = (_client$data = client.data) === null || _client$data === void 0 ? void 0 : (_client$data$chain = _client$data.chain) === null || _client$data$chain === void 0 ? void 0 : _client$data$chain.id;
|
|
272
|
-
const activeChains = (_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
|
|
273
|
-
const activeChain = (_find = [...activeChains, ...allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
|
|
274
|
-
id: chainId,
|
|
275
|
-
name: "Chain ".concat(chainId),
|
|
276
|
-
network: "".concat(chainId),
|
|
277
|
-
rpcUrls: {
|
|
278
|
-
default: ''
|
|
279
|
-
}
|
|
280
|
-
};
|
|
281
|
-
return {
|
|
282
|
-
chain: chainId ? { ...activeChain,
|
|
283
|
-
...((_client$data2 = client.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
|
|
284
|
-
id: chainId
|
|
285
|
-
} : undefined,
|
|
286
|
-
chains: activeChains
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
async function signMessage(args) {
|
|
291
|
-
try {
|
|
292
|
-
const signer = await fetchSigner();
|
|
293
|
-
if (!signer) throw new ConnectorNotFoundError();
|
|
294
|
-
return await signer.signMessage(args.message);
|
|
295
|
-
} catch (error) {
|
|
296
|
-
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
297
|
-
throw error;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
async function signTypedData(args) {
|
|
302
|
-
try {
|
|
303
|
-
const signer = await fetchSigner();
|
|
304
|
-
if (!signer) throw new ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
|
|
305
|
-
|
|
306
|
-
return await signer._signTypedData(args.domain, args.types, args.value);
|
|
307
|
-
} catch (error) {
|
|
308
|
-
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
309
|
-
throw error;
|
|
310
|
-
}
|
|
290
|
+
const contract = getContract({
|
|
291
|
+
addressOrName,
|
|
292
|
+
contractInterface,
|
|
293
|
+
signerOrProvider: provider
|
|
294
|
+
});
|
|
295
|
+
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
296
|
+
const contractFunction = contract[functionName];
|
|
297
|
+
if (!contractFunction) console.warn("\"".concat(functionName, "\" is not in the interface for contract \"").concat(addressOrName, "\""));
|
|
298
|
+
const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
|
|
299
|
+
return response;
|
|
311
300
|
}
|
|
312
301
|
|
|
313
|
-
async function
|
|
314
|
-
var _client$connector;
|
|
315
|
-
|
|
302
|
+
async function multicall(_ref) {
|
|
316
303
|
let {
|
|
317
|
-
|
|
304
|
+
allowFailure = true,
|
|
305
|
+
chainId,
|
|
306
|
+
contracts,
|
|
307
|
+
overrides
|
|
318
308
|
} = _ref;
|
|
319
|
-
const
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
309
|
+
const provider = getProvider({
|
|
310
|
+
chainId
|
|
311
|
+
});
|
|
312
|
+
if (!provider.chains) throw new ProviderChainsNotFound();
|
|
313
|
+
const chain = provider.chains.find(chain => chain.id === chainId) || provider.chains[0];
|
|
314
|
+
if (!chain) throw new ProviderChainsNotFound();
|
|
315
|
+
if (!(chain !== null && chain !== void 0 && chain.multicall)) throw new ChainDoesNotSupportMulticallError({
|
|
316
|
+
chain
|
|
317
|
+
});
|
|
318
|
+
if (typeof (overrides === null || overrides === void 0 ? void 0 : overrides.blockTag) === 'number' && (overrides === null || overrides === void 0 ? void 0 : overrides.blockTag) < chain.multicall.blockCreated) throw new ChainDoesNotSupportMulticallError({
|
|
319
|
+
blockNumber: overrides === null || overrides === void 0 ? void 0 : overrides.blockTag,
|
|
320
|
+
chain
|
|
321
|
+
});
|
|
322
|
+
const multicallContract = getContract({
|
|
323
|
+
addressOrName: chain.multicall.address,
|
|
324
|
+
contractInterface: multicallInterface,
|
|
325
|
+
signerOrProvider: provider
|
|
326
|
+
});
|
|
327
|
+
const calls = contracts.map(_ref2 => {
|
|
331
328
|
let {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
329
|
+
addressOrName,
|
|
330
|
+
contractInterface,
|
|
331
|
+
functionName,
|
|
332
|
+
...config
|
|
333
|
+
} = _ref2;
|
|
334
|
+
const {
|
|
335
|
+
args
|
|
336
|
+
} = config || {};
|
|
337
|
+
const contract = getContract({
|
|
338
|
+
addressOrName,
|
|
339
|
+
contractInterface
|
|
340
|
+
});
|
|
341
|
+
const params = Array.isArray(args) ? args : args ? [args] : [];
|
|
342
|
+
const callData = contract.interface.encodeFunctionData(functionName, params);
|
|
343
|
+
if (!contract[functionName]) console.warn("\"".concat(functionName, "\" is not in the interface for contract \"").concat(addressOrName, "\""));
|
|
335
344
|
return {
|
|
336
|
-
|
|
337
|
-
|
|
345
|
+
target: addressOrName,
|
|
346
|
+
allowFailure: allowFailure,
|
|
347
|
+
callData
|
|
338
348
|
};
|
|
339
|
-
}, handleChange, {
|
|
340
|
-
equalityFn: (selected, previous) => selected.account === previous.account && selected.connector === previous.connector
|
|
341
349
|
});
|
|
342
|
-
|
|
350
|
+
const params = [...[calls], ...(overrides ? [overrides] : [])];
|
|
351
|
+
const results = await multicallContract.aggregate3(...params);
|
|
352
|
+
return results.map((_ref3, i) => {
|
|
353
|
+
let {
|
|
354
|
+
returnData,
|
|
355
|
+
success
|
|
356
|
+
} = _ref3;
|
|
357
|
+
if (!success) return undefined;
|
|
358
|
+
const {
|
|
359
|
+
addressOrName,
|
|
360
|
+
contractInterface,
|
|
361
|
+
functionName
|
|
362
|
+
} = contracts[i];
|
|
363
|
+
const contract = getContract({
|
|
364
|
+
addressOrName,
|
|
365
|
+
contractInterface
|
|
366
|
+
});
|
|
367
|
+
const result = contract.interface.decodeFunctionResult(functionName, returnData);
|
|
368
|
+
return Array.isArray(result) && result.length === 1 ? result[0] : result;
|
|
369
|
+
});
|
|
343
370
|
}
|
|
344
371
|
|
|
345
|
-
function
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
372
|
+
async function readContracts(_ref) {
|
|
373
|
+
let {
|
|
374
|
+
allowFailure = true,
|
|
375
|
+
contracts,
|
|
376
|
+
overrides
|
|
377
|
+
} = _ref;
|
|
349
378
|
|
|
350
|
-
|
|
351
|
-
|
|
379
|
+
try {
|
|
380
|
+
const provider = getProvider();
|
|
381
|
+
const contractsByChainId = contracts.reduce((contracts, contract) => {
|
|
382
|
+
var _contract$chainId;
|
|
352
383
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
}
|
|
384
|
+
const chainId = (_contract$chainId = contract.chainId) !== null && _contract$chainId !== void 0 ? _contract$chainId : provider.network.chainId;
|
|
385
|
+
return { ...contracts,
|
|
386
|
+
[chainId]: [...(contracts[chainId] || []), contract]
|
|
387
|
+
};
|
|
388
|
+
}, {});
|
|
389
|
+
const promises = Object.entries(contractsByChainId).map(_ref2 => {
|
|
390
|
+
let [chainId, contracts] = _ref2;
|
|
391
|
+
return multicall({
|
|
392
|
+
allowFailure,
|
|
393
|
+
chainId: parseInt(chainId),
|
|
394
|
+
contracts,
|
|
395
|
+
overrides
|
|
396
|
+
});
|
|
397
|
+
});
|
|
366
398
|
|
|
367
|
-
|
|
368
|
-
|
|
399
|
+
if (allowFailure) {
|
|
400
|
+
return (await Promise.allSettled(promises)).map(result => {
|
|
401
|
+
if (result.status === 'fulfilled') return result.value;
|
|
369
402
|
|
|
370
|
-
|
|
403
|
+
if (result.reason instanceof ChainDoesNotSupportMulticallError) {
|
|
404
|
+
console.warn(result.reason.message);
|
|
405
|
+
throw result.reason;
|
|
406
|
+
}
|
|
371
407
|
|
|
372
|
-
|
|
373
|
-
|
|
408
|
+
return null;
|
|
409
|
+
}).flat();
|
|
410
|
+
}
|
|
374
411
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
account: data === null || data === void 0 ? void 0 : data.account,
|
|
381
|
-
chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
|
|
382
|
-
connector
|
|
383
|
-
};
|
|
384
|
-
}, handleChange, {
|
|
385
|
-
equalityFn: (selected, previous) => selected.account === previous.account && selected.chainId === previous.chainId && selected.connector === previous.connector
|
|
386
|
-
});
|
|
387
|
-
return unsubscribe;
|
|
388
|
-
}
|
|
412
|
+
return (await Promise.all(promises)).flat();
|
|
413
|
+
} catch (err) {
|
|
414
|
+
const promises = contracts.map(contract => readContract({ ...contract,
|
|
415
|
+
overrides
|
|
416
|
+
}));
|
|
389
417
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
contractInterface,
|
|
394
|
-
signerOrProvider
|
|
395
|
-
} = _ref;
|
|
396
|
-
return new Contract$1(addressOrName, contractInterface, signerOrProvider);
|
|
397
|
-
}
|
|
418
|
+
if (allowFailure) {
|
|
419
|
+
return (await Promise.allSettled(promises)).map(result => result.status === 'fulfilled' ? result.value : null);
|
|
420
|
+
}
|
|
398
421
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
args,
|
|
402
|
-
chainId,
|
|
403
|
-
overrides
|
|
404
|
-
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
405
|
-
const provider = getProvider({
|
|
406
|
-
chainId
|
|
407
|
-
});
|
|
408
|
-
const contract = getContract({
|
|
409
|
-
signerOrProvider: provider,
|
|
410
|
-
...contractConfig
|
|
411
|
-
});
|
|
412
|
-
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
413
|
-
const contractFunction = contract[functionName];
|
|
414
|
-
if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(contractConfig.addressOrName, "\""));
|
|
415
|
-
const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
|
|
416
|
-
return response;
|
|
422
|
+
return Promise.all(promises);
|
|
423
|
+
}
|
|
417
424
|
}
|
|
418
425
|
|
|
419
426
|
function watchContractEvent(
|
|
@@ -457,7 +464,7 @@ eventName, callback) {
|
|
|
457
464
|
webSocketProvider
|
|
458
465
|
};
|
|
459
466
|
}, watchEvent, {
|
|
460
|
-
equalityFn:
|
|
467
|
+
equalityFn: shallow
|
|
461
468
|
});
|
|
462
469
|
return () => {
|
|
463
470
|
var _contract2;
|
|
@@ -519,7 +526,7 @@ function watchBlockNumber(args, callback) {
|
|
|
519
526
|
|
|
520
527
|
callback(await fetchBlockNumber());
|
|
521
528
|
}, {
|
|
522
|
-
equalityFn:
|
|
529
|
+
equalityFn: shallow
|
|
523
530
|
});
|
|
524
531
|
return () => {
|
|
525
532
|
unsubscribe();
|
|
@@ -527,12 +534,10 @@ function watchBlockNumber(args, callback) {
|
|
|
527
534
|
};
|
|
528
535
|
}
|
|
529
536
|
|
|
530
|
-
function watchReadContract(
|
|
531
|
-
let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
532
|
-
let callback = arguments.length > 3 ? arguments[3] : undefined;
|
|
537
|
+
function watchReadContract(config, callback) {
|
|
533
538
|
const client = getClient();
|
|
534
539
|
|
|
535
|
-
const handleChange = async () => callback(await readContract(
|
|
540
|
+
const handleChange = async () => callback(await readContract(config));
|
|
536
541
|
|
|
537
542
|
const unwatch = config.listenToBlock ? watchBlockNumber({
|
|
538
543
|
listen: true
|
|
@@ -549,29 +554,335 @@ function watchReadContract(contractConfig, functionName) {
|
|
|
549
554
|
};
|
|
550
555
|
}
|
|
551
556
|
|
|
552
|
-
|
|
557
|
+
function watchReadContracts(config, callback) {
|
|
558
|
+
const client = getClient();
|
|
559
|
+
|
|
560
|
+
const handleChange = async () => callback(await readContracts(config));
|
|
561
|
+
|
|
562
|
+
const unwatch = config.listenToBlock ? watchBlockNumber({
|
|
563
|
+
listen: true
|
|
564
|
+
}, handleChange) : undefined;
|
|
565
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
566
|
+
let {
|
|
567
|
+
provider
|
|
568
|
+
} = _ref;
|
|
569
|
+
return provider;
|
|
570
|
+
}, handleChange);
|
|
571
|
+
return () => {
|
|
572
|
+
unsubscribe();
|
|
573
|
+
unwatch === null || unwatch === void 0 ? void 0 : unwatch();
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
async function writeContract(_ref) {
|
|
553
578
|
let {
|
|
579
|
+
addressOrName,
|
|
554
580
|
args,
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
581
|
+
chainId,
|
|
582
|
+
contractInterface,
|
|
583
|
+
functionName,
|
|
584
|
+
overrides,
|
|
585
|
+
signerOrProvider
|
|
586
|
+
} = _ref;
|
|
587
|
+
const {
|
|
588
|
+
connector
|
|
589
|
+
} = getClient();
|
|
590
|
+
if (!connector) throw new ConnectorNotFoundError();
|
|
559
591
|
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
560
592
|
|
|
561
593
|
try {
|
|
562
|
-
|
|
563
|
-
|
|
594
|
+
var _chain;
|
|
595
|
+
|
|
596
|
+
let chain;
|
|
597
|
+
|
|
598
|
+
if (chainId) {
|
|
599
|
+
const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
|
|
600
|
+
|
|
601
|
+
if (chainId !== activeChainId) {
|
|
602
|
+
var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
|
|
603
|
+
|
|
604
|
+
if (connector.switchChain) chain = await connector.switchChain(chainId);else throw new ChainMismatchError({
|
|
605
|
+
activeChain: (_connector$chains$fin = (_connector$chains$fin2 = connector.chains.find(x => x.id === activeChainId)) === null || _connector$chains$fin2 === void 0 ? void 0 : _connector$chains$fin2.name) !== null && _connector$chains$fin !== void 0 ? _connector$chains$fin : "Chain ".concat(activeChainId),
|
|
606
|
+
targetChain: (_connector$chains$fin3 = (_connector$chains$fin4 = connector.chains.find(x => x.id === chainId)) === null || _connector$chains$fin4 === void 0 ? void 0 : _connector$chains$fin4.name) !== null && _connector$chains$fin3 !== void 0 ? _connector$chains$fin3 : "Chain ".concat(chainId)
|
|
607
|
+
});
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
const signer = await connector.getSigner({
|
|
612
|
+
chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
|
|
613
|
+
});
|
|
614
|
+
const contract = getContract({
|
|
615
|
+
addressOrName,
|
|
616
|
+
contractInterface,
|
|
617
|
+
signerOrProvider
|
|
618
|
+
});
|
|
564
619
|
const contractWithSigner = contract.connect(signer);
|
|
565
620
|
const contractFunction = contractWithSigner[functionName];
|
|
566
|
-
if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(
|
|
567
|
-
|
|
568
|
-
|
|
621
|
+
if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(addressOrName, "\""));
|
|
622
|
+
return await contractFunction(...params);
|
|
623
|
+
} catch (error) {
|
|
624
|
+
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
625
|
+
throw error;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
async function fetchBalance(_ref) {
|
|
630
|
+
var _client$chains, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
|
|
631
|
+
|
|
632
|
+
let {
|
|
633
|
+
addressOrName,
|
|
634
|
+
chainId,
|
|
635
|
+
formatUnits: unit = 'ether',
|
|
636
|
+
token
|
|
637
|
+
} = _ref;
|
|
638
|
+
const client = getClient();
|
|
639
|
+
const provider = getProvider({
|
|
640
|
+
chainId
|
|
641
|
+
});
|
|
642
|
+
|
|
643
|
+
if (token) {
|
|
644
|
+
const erc20Config = {
|
|
645
|
+
addressOrName: token,
|
|
646
|
+
contractInterface: erc20ABI,
|
|
647
|
+
chainId
|
|
648
|
+
}; // Convert ENS name to address if required
|
|
649
|
+
|
|
650
|
+
let resolvedAddress;
|
|
651
|
+
if (isAddress(addressOrName)) resolvedAddress = addressOrName;else {
|
|
652
|
+
const address = await provider.resolveName(addressOrName); // Same error `provider.getBalance` throws for invalid ENS name
|
|
653
|
+
|
|
654
|
+
if (!address) logger.throwError('ENS name not configured', Logger.errors.UNSUPPORTED_OPERATION, {
|
|
655
|
+
operation: "resolveName(".concat(JSON.stringify(addressOrName), ")")
|
|
656
|
+
});
|
|
657
|
+
resolvedAddress = address;
|
|
658
|
+
}
|
|
659
|
+
const [value, decimals, symbol] = await readContracts({
|
|
660
|
+
allowFailure: false,
|
|
661
|
+
contracts: [{ ...erc20Config,
|
|
662
|
+
functionName: 'balanceOf',
|
|
663
|
+
args: resolvedAddress
|
|
664
|
+
}, { ...erc20Config,
|
|
665
|
+
functionName: 'decimals'
|
|
666
|
+
}, { ...erc20Config,
|
|
667
|
+
functionName: 'symbol'
|
|
668
|
+
}]
|
|
669
|
+
});
|
|
670
|
+
return {
|
|
671
|
+
decimals,
|
|
672
|
+
formatted: formatUnits(value !== null && value !== void 0 ? value : '0', unit),
|
|
673
|
+
symbol,
|
|
674
|
+
unit,
|
|
675
|
+
value
|
|
676
|
+
};
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
const chains = [...(client.provider.chains || []), ...((_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [])];
|
|
680
|
+
const value = await provider.getBalance(addressOrName);
|
|
681
|
+
const chain = chains.find(x => x.id === provider.network.chainId);
|
|
682
|
+
return {
|
|
683
|
+
decimals: (_chain$nativeCurrency = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency2 = chain.nativeCurrency) === null || _chain$nativeCurrency2 === void 0 ? void 0 : _chain$nativeCurrency2.decimals) !== null && _chain$nativeCurrency !== void 0 ? _chain$nativeCurrency : 18,
|
|
684
|
+
formatted: formatUnits(value !== null && value !== void 0 ? value : '0', unit),
|
|
685
|
+
symbol: (_chain$nativeCurrency3 = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency4 = chain.nativeCurrency) === null || _chain$nativeCurrency4 === void 0 ? void 0 : _chain$nativeCurrency4.symbol) !== null && _chain$nativeCurrency3 !== void 0 ? _chain$nativeCurrency3 : 'ETH',
|
|
686
|
+
unit,
|
|
687
|
+
value
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
async function fetchSigner() {
|
|
692
|
+
var _client$connector, _client$connector$get;
|
|
693
|
+
|
|
694
|
+
const client = getClient();
|
|
695
|
+
const signer = (await ((_client$connector = client.connector) === null || _client$connector === void 0 ? void 0 : (_client$connector$get = _client$connector.getSigner) === null || _client$connector$get === void 0 ? void 0 : _client$connector$get.call(_client$connector))) || null;
|
|
696
|
+
return signer;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
function getAccount() {
|
|
700
|
+
const {
|
|
701
|
+
data,
|
|
702
|
+
connector,
|
|
703
|
+
status
|
|
704
|
+
} = getClient();
|
|
705
|
+
|
|
706
|
+
switch (status) {
|
|
707
|
+
case 'connected':
|
|
708
|
+
return {
|
|
709
|
+
address: data === null || data === void 0 ? void 0 : data.account,
|
|
710
|
+
connector: connector,
|
|
711
|
+
isConnected: true,
|
|
712
|
+
isConnecting: false,
|
|
713
|
+
isDisconnected: false,
|
|
714
|
+
isReconnecting: false,
|
|
715
|
+
status
|
|
716
|
+
};
|
|
717
|
+
|
|
718
|
+
case 'reconnecting':
|
|
719
|
+
return {
|
|
720
|
+
address: data === null || data === void 0 ? void 0 : data.account,
|
|
721
|
+
connector,
|
|
722
|
+
isConnected: !!(data !== null && data !== void 0 && data.account),
|
|
723
|
+
isConnecting: false,
|
|
724
|
+
isDisconnected: false,
|
|
725
|
+
isReconnecting: true,
|
|
726
|
+
status
|
|
727
|
+
};
|
|
728
|
+
|
|
729
|
+
case 'connecting':
|
|
730
|
+
return {
|
|
731
|
+
address: undefined,
|
|
732
|
+
connector: undefined,
|
|
733
|
+
isConnected: false,
|
|
734
|
+
isConnecting: true,
|
|
735
|
+
isDisconnected: false,
|
|
736
|
+
isReconnecting: false,
|
|
737
|
+
status
|
|
738
|
+
};
|
|
739
|
+
|
|
740
|
+
case 'disconnected':
|
|
741
|
+
return {
|
|
742
|
+
address: undefined,
|
|
743
|
+
connector: undefined,
|
|
744
|
+
isConnected: false,
|
|
745
|
+
isConnecting: false,
|
|
746
|
+
isDisconnected: true,
|
|
747
|
+
isReconnecting: false,
|
|
748
|
+
status
|
|
749
|
+
};
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
function getNetwork() {
|
|
754
|
+
var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
|
|
755
|
+
|
|
756
|
+
const client = getClient();
|
|
757
|
+
const chainId = (_client$data = client.data) === null || _client$data === void 0 ? void 0 : (_client$data$chain = _client$data.chain) === null || _client$data$chain === void 0 ? void 0 : _client$data$chain.id;
|
|
758
|
+
const activeChains = (_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
|
|
759
|
+
const activeChain = (_find = [...(client.provider.chains || []), ...activeChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
|
|
760
|
+
id: chainId,
|
|
761
|
+
name: "Chain ".concat(chainId),
|
|
762
|
+
network: "".concat(chainId),
|
|
763
|
+
rpcUrls: {
|
|
764
|
+
default: ''
|
|
765
|
+
}
|
|
766
|
+
};
|
|
767
|
+
return {
|
|
768
|
+
chain: chainId ? { ...activeChain,
|
|
769
|
+
...((_client$data2 = client.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
|
|
770
|
+
id: chainId
|
|
771
|
+
} : undefined,
|
|
772
|
+
chains: activeChains
|
|
773
|
+
};
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
async function signMessage(args) {
|
|
777
|
+
try {
|
|
778
|
+
const signer = await fetchSigner();
|
|
779
|
+
if (!signer) throw new ConnectorNotFoundError();
|
|
780
|
+
return await signer.signMessage(args.message);
|
|
569
781
|
} catch (error) {
|
|
570
782
|
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
571
783
|
throw error;
|
|
572
784
|
}
|
|
573
785
|
}
|
|
574
786
|
|
|
787
|
+
async function signTypedData(args) {
|
|
788
|
+
try {
|
|
789
|
+
const signer = await fetchSigner();
|
|
790
|
+
if (!signer) throw new ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
|
|
791
|
+
|
|
792
|
+
return await signer._signTypedData(args.domain, args.types, args.value);
|
|
793
|
+
} catch (error) {
|
|
794
|
+
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
795
|
+
throw error;
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
async function switchNetwork(_ref) {
|
|
800
|
+
let {
|
|
801
|
+
chainId
|
|
802
|
+
} = _ref;
|
|
803
|
+
const {
|
|
804
|
+
connector
|
|
805
|
+
} = getClient();
|
|
806
|
+
if (!connector) throw new ConnectorNotFoundError();
|
|
807
|
+
if (!connector.switchChain) throw new SwitchChainNotSupportedError({
|
|
808
|
+
connector
|
|
809
|
+
});
|
|
810
|
+
return await connector.switchChain(chainId);
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
function watchAccount(callback) {
|
|
814
|
+
let {
|
|
815
|
+
selector = x => x
|
|
816
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
817
|
+
const client = getClient();
|
|
818
|
+
|
|
819
|
+
const handleChange = () => callback(getAccount());
|
|
820
|
+
|
|
821
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
822
|
+
let {
|
|
823
|
+
data,
|
|
824
|
+
connector,
|
|
825
|
+
status
|
|
826
|
+
} = _ref;
|
|
827
|
+
return selector({
|
|
828
|
+
address: data === null || data === void 0 ? void 0 : data.account,
|
|
829
|
+
connector,
|
|
830
|
+
status
|
|
831
|
+
});
|
|
832
|
+
}, handleChange, {
|
|
833
|
+
equalityFn: shallow
|
|
834
|
+
});
|
|
835
|
+
return unsubscribe;
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
function watchNetwork(callback) {
|
|
839
|
+
let {
|
|
840
|
+
selector = x => x
|
|
841
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
842
|
+
const client = getClient();
|
|
843
|
+
|
|
844
|
+
const handleChange = () => callback(getNetwork());
|
|
845
|
+
|
|
846
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
847
|
+
var _data$chain;
|
|
848
|
+
|
|
849
|
+
let {
|
|
850
|
+
data,
|
|
851
|
+
chains
|
|
852
|
+
} = _ref;
|
|
853
|
+
return selector({
|
|
854
|
+
chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
|
|
855
|
+
chains
|
|
856
|
+
});
|
|
857
|
+
}, handleChange, {
|
|
858
|
+
equalityFn: shallow
|
|
859
|
+
});
|
|
860
|
+
return unsubscribe;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
function watchSigner(callback) {
|
|
864
|
+
const client = getClient();
|
|
865
|
+
|
|
866
|
+
const handleChange = async () => callback(await fetchSigner());
|
|
867
|
+
|
|
868
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
869
|
+
var _data$chain;
|
|
870
|
+
|
|
871
|
+
let {
|
|
872
|
+
data,
|
|
873
|
+
connector
|
|
874
|
+
} = _ref;
|
|
875
|
+
return {
|
|
876
|
+
account: data === null || data === void 0 ? void 0 : data.account,
|
|
877
|
+
chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
|
|
878
|
+
connector
|
|
879
|
+
};
|
|
880
|
+
}, handleChange, {
|
|
881
|
+
equalityFn: shallow
|
|
882
|
+
});
|
|
883
|
+
return unsubscribe;
|
|
884
|
+
}
|
|
885
|
+
|
|
575
886
|
async function fetchEnsAddress(_ref) {
|
|
576
887
|
let {
|
|
577
888
|
chainId,
|
|
@@ -654,7 +965,7 @@ async function fetchToken(_ref) {
|
|
|
654
965
|
const provider = getProvider({
|
|
655
966
|
chainId
|
|
656
967
|
});
|
|
657
|
-
const contract = new Contract(address, erc20ABI, provider);
|
|
968
|
+
const contract = new Contract$1(address, erc20ABI, provider);
|
|
658
969
|
const [symbol, decimals, totalSupply] = await Promise.all([contract.symbol(), contract.decimals(), contract.totalSupply()]);
|
|
659
970
|
const token = {
|
|
660
971
|
address,
|
|
@@ -668,12 +979,38 @@ async function fetchToken(_ref) {
|
|
|
668
979
|
return token;
|
|
669
980
|
}
|
|
670
981
|
|
|
671
|
-
async function sendTransaction(
|
|
982
|
+
async function sendTransaction(_ref) {
|
|
983
|
+
let {
|
|
984
|
+
chainId,
|
|
985
|
+
request
|
|
986
|
+
} = _ref;
|
|
987
|
+
const {
|
|
988
|
+
connector
|
|
989
|
+
} = getClient();
|
|
990
|
+
if (!connector) throw new ConnectorNotFoundError();
|
|
991
|
+
|
|
672
992
|
try {
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
993
|
+
var _chain;
|
|
994
|
+
|
|
995
|
+
let chain;
|
|
996
|
+
|
|
997
|
+
if (chainId) {
|
|
998
|
+
const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
|
|
999
|
+
|
|
1000
|
+
if (chainId !== activeChainId) {
|
|
1001
|
+
var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
|
|
1002
|
+
|
|
1003
|
+
if (connector.switchChain) chain = await connector.switchChain(chainId);else throw new ChainMismatchError({
|
|
1004
|
+
activeChain: (_connector$chains$fin = (_connector$chains$fin2 = connector.chains.find(x => x.id === activeChainId)) === null || _connector$chains$fin2 === void 0 ? void 0 : _connector$chains$fin2.name) !== null && _connector$chains$fin !== void 0 ? _connector$chains$fin : "Chain ".concat(activeChainId),
|
|
1005
|
+
targetChain: (_connector$chains$fin3 = (_connector$chains$fin4 = connector.chains.find(x => x.id === chainId)) === null || _connector$chains$fin4 === void 0 ? void 0 : _connector$chains$fin4.name) !== null && _connector$chains$fin3 !== void 0 ? _connector$chains$fin3 : "Chain ".concat(chainId)
|
|
1006
|
+
});
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
const signer = await connector.getSigner({
|
|
1011
|
+
chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
|
|
1012
|
+
});
|
|
1013
|
+
return await signer.sendTransaction(request);
|
|
677
1014
|
} catch (error) {
|
|
678
1015
|
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
679
1016
|
throw error;
|
|
@@ -700,4 +1037,4 @@ async function waitForTransaction(_ref) {
|
|
|
700
1037
|
return await promise;
|
|
701
1038
|
}
|
|
702
1039
|
|
|
703
|
-
export { configureChains, connect, disconnect, erc20ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, getAccount, getContract, getNetwork, getProvider, getWebSocketProvider, readContract, sendTransaction, signMessage, signTypedData, switchNetwork, units, waitForTransaction, watchAccount, watchBlockNumber, watchContractEvent, watchNetwork, watchProvider, watchReadContract, watchSigner, watchWebSocketProvider, writeContract };
|
|
1040
|
+
export { configureChains, connect, disconnect, erc20ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, getAccount, getContract, getNetwork, getProvider, getWebSocketProvider, readContract, readContracts, sendTransaction, signMessage, signTypedData, switchNetwork, units, waitForTransaction, watchAccount, watchBlockNumber, watchContractEvent, watchNetwork, watchProvider, watchReadContract, watchReadContracts, watchSigner, watchWebSocketProvider, writeContract };
|