@wagmi/core 0.4.0-test.2 → 0.4.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.
- package/chains/dist/wagmi-core-chains.cjs.dev.js +2 -2
- package/chains/dist/wagmi-core-chains.cjs.prod.js +2 -2
- package/chains/dist/wagmi-core-chains.esm.js +2 -2
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +9 -7
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +9 -7
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +9 -7
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +7 -5
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +7 -5
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +7 -5
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +12 -8
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +12 -8
- package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +7 -7
- 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-2d484f6c.cjs.prod.js +329 -0
- package/dist/base-e66f9622.esm.js +303 -0
- package/dist/base-e71ae4b2.cjs.dev.js +329 -0
- package/dist/{chains-7e369752.cjs.dev.js → chains-865492ea.cjs.prod.js} +79 -16
- package/dist/{chains-fa406563.esm.js → chains-c389721d.esm.js} +79 -16
- package/dist/{chains-d045862c.cjs.prod.js → chains-d970ee8d.cjs.dev.js} +79 -16
- package/dist/{client-42cf11b7.cjs.dev.js → client-1feb9121.cjs.prod.js} +29 -46
- package/dist/{client-ed3aaa6a.cjs.prod.js → client-53f2119c.cjs.dev.js} +29 -46
- package/dist/{client-60ee0298.esm.js → client-ffba0e25.esm.js} +29 -46
- 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 +17 -15
- 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 +2 -1
- package/dist/declarations/src/constants/multicall.d.ts +25 -0
- package/dist/declarations/src/constants/rpcs.d.ts +3 -1
- package/dist/declarations/src/errors.d.ts +27 -5
- package/dist/declarations/src/index.d.ts +5 -5
- 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/declarations/src/utils/normalizeChainId.d.ts +1 -1
- package/dist/{rpcs-9c4eb960.cjs.dev.js → rpcs-1fd0a12f.cjs.prod.js} +14 -0
- package/dist/{rpcs-7cfbd91c.esm.js → rpcs-b73a8f60.esm.js} +14 -1
- package/dist/{rpcs-b3c52116.cjs.prod.js → rpcs-f1d24f0e.cjs.dev.js} +14 -0
- package/dist/wagmi-core.cjs.dev.js +611 -234
- package/dist/wagmi-core.cjs.prod.js +611 -234
- package/dist/wagmi-core.esm.js +608 -242
- package/package.json +15 -3
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.dev.js +1 -1
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.prod.js +1 -1
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.esm.js +1 -1
- package/providers/infura/dist/wagmi-core-providers-infura.cjs.dev.js +1 -1
- package/providers/infura/dist/wagmi-core-providers-infura.cjs.prod.js +1 -1
- package/providers/infura/dist/wagmi-core-providers-infura.esm.js +1 -1
- 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
|
-
|
|
10
|
-
export { a as
|
|
1
|
+
import { c as client, g as getClient } from './client-ffba0e25.esm.js';
|
|
2
|
+
export { C as Client, I as InjectedConnector, a as createClient, b as createStorage, n as noopStorage } from './client-ffba0e25.esm.js';
|
|
3
|
+
import { C as ConnectorAlreadyConnectedError, P as ProviderChainsNotFound, a as ChainDoesNotSupportMulticallError, b as ConnectorNotFoundError, c as ChainMismatchError, U as UserRejectedRequestError, n as normalizeChainId, S as SwitchChainNotSupportedError } from './base-e66f9622.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-e66f9622.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';
|
|
9
|
+
export { a as alchemyRpcUrls, i as infuraRpcUrls, p as publicRpcUrls } from './rpcs-b73a8f60.esm.js';
|
|
10
|
+
export { a as allChains, c as chain, b as chainId, d as defaultChains, e as defaultL2Chains, f as etherscanBlockExplorers } from './chains-c389721d.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,24 +68,29 @@ 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 => {
|
|
84
|
-
var _defaultChains$2, _chainWebSocketProvid
|
|
81
|
+
var _defaultChains$2, _chainWebSocketProvid;
|
|
85
82
|
|
|
86
83
|
let {
|
|
87
84
|
chainId
|
|
88
85
|
} = _ref3;
|
|
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
|
-
if (!chainWebSocketProviders) return undefined;
|
|
92
|
-
if (chainWebSocketProviders.length === 1) return (_chainWebSocketProvid = chainWebSocketProviders[0]) === null || _chainWebSocketProvid === void 0 ? void 0 : _chainWebSocketProvid.call(chainWebSocketProviders); // WebSockets do not work with `fallbackProvider`
|
|
88
|
+
if (!chainWebSocketProviders) return undefined; // WebSockets do not work with `fallbackProvider`
|
|
93
89
|
// Default to first available
|
|
94
90
|
|
|
95
|
-
return (
|
|
91
|
+
return Object.assign(((_chainWebSocketProvid = chainWebSocketProviders[0]) === null || _chainWebSocketProvid === void 0 ? void 0 : _chainWebSocketProvid.call(chainWebSocketProviders)) || {}, {
|
|
92
|
+
chains
|
|
93
|
+
});
|
|
96
94
|
}
|
|
97
95
|
};
|
|
98
96
|
}
|
|
@@ -128,6 +126,52 @@ function fallbackProvider(targetQuorum, minQuorum, providers_, _ref4) {
|
|
|
128
126
|
}
|
|
129
127
|
}
|
|
130
128
|
|
|
129
|
+
// https://ethereum.org/en/developers/docs/standards/tokens/erc-20
|
|
130
|
+
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
|
|
131
|
+
|
|
132
|
+
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'];
|
|
133
|
+
|
|
134
|
+
const multicallInterface = [{
|
|
135
|
+
inputs: [{
|
|
136
|
+
components: [{
|
|
137
|
+
internalType: 'address',
|
|
138
|
+
name: 'target',
|
|
139
|
+
type: 'address'
|
|
140
|
+
}, {
|
|
141
|
+
internalType: 'bool',
|
|
142
|
+
name: 'allowFailure',
|
|
143
|
+
type: 'bool'
|
|
144
|
+
}, {
|
|
145
|
+
internalType: 'bytes',
|
|
146
|
+
name: 'callData',
|
|
147
|
+
type: 'bytes'
|
|
148
|
+
}],
|
|
149
|
+
internalType: 'struct Multicall3.Call3[]',
|
|
150
|
+
name: 'calls',
|
|
151
|
+
type: 'tuple[]'
|
|
152
|
+
}],
|
|
153
|
+
name: 'aggregate3',
|
|
154
|
+
outputs: [{
|
|
155
|
+
components: [{
|
|
156
|
+
internalType: 'bool',
|
|
157
|
+
name: 'success',
|
|
158
|
+
type: 'bool'
|
|
159
|
+
}, {
|
|
160
|
+
internalType: 'bytes',
|
|
161
|
+
name: 'returnData',
|
|
162
|
+
type: 'bytes'
|
|
163
|
+
}],
|
|
164
|
+
internalType: 'struct Multicall3.Result[]',
|
|
165
|
+
name: 'returnData',
|
|
166
|
+
type: 'tuple[]'
|
|
167
|
+
}],
|
|
168
|
+
stateMutability: 'view',
|
|
169
|
+
type: 'function'
|
|
170
|
+
}];
|
|
171
|
+
|
|
172
|
+
// https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
|
|
173
|
+
const units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
|
|
174
|
+
|
|
131
175
|
async function connect(_ref) {
|
|
132
176
|
let {
|
|
133
177
|
chainId,
|
|
@@ -135,19 +179,31 @@ async function connect(_ref) {
|
|
|
135
179
|
} = _ref;
|
|
136
180
|
const activeConnector = client.connector;
|
|
137
181
|
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
|
-
|
|
182
|
+
|
|
183
|
+
try {
|
|
184
|
+
client.setState(x => ({ ...x,
|
|
185
|
+
status: 'connecting'
|
|
186
|
+
}));
|
|
187
|
+
const data = await connector.connect({
|
|
188
|
+
chainId
|
|
189
|
+
});
|
|
190
|
+
client.setLastUsedConnector(connector.id);
|
|
191
|
+
client.setState(x => ({ ...x,
|
|
192
|
+
connector,
|
|
193
|
+
chains: connector === null || connector === void 0 ? void 0 : connector.chains,
|
|
194
|
+
data,
|
|
195
|
+
status: 'connected'
|
|
196
|
+
}));
|
|
197
|
+
client.storage.setItem('connected', true);
|
|
198
|
+
return { ...data,
|
|
199
|
+
connector
|
|
200
|
+
};
|
|
201
|
+
} catch (err) {
|
|
202
|
+
client.setState(x => ({ ...x,
|
|
203
|
+
status: 'disconnected'
|
|
204
|
+
}));
|
|
205
|
+
throw err;
|
|
206
|
+
}
|
|
151
207
|
}
|
|
152
208
|
|
|
153
209
|
async function disconnect() {
|
|
@@ -157,6 +213,15 @@ async function disconnect() {
|
|
|
157
213
|
client.storage.removeItem('connected');
|
|
158
214
|
}
|
|
159
215
|
|
|
216
|
+
function getContract(_ref) {
|
|
217
|
+
let {
|
|
218
|
+
addressOrName,
|
|
219
|
+
contractInterface,
|
|
220
|
+
signerOrProvider
|
|
221
|
+
} = _ref;
|
|
222
|
+
return new Contract(addressOrName, contractInterface, signerOrProvider);
|
|
223
|
+
}
|
|
224
|
+
|
|
160
225
|
function getProvider() {
|
|
161
226
|
let {
|
|
162
227
|
chainId
|
|
@@ -207,213 +272,152 @@ function watchWebSocketProvider(args, callback) {
|
|
|
207
272
|
return unsubscribe;
|
|
208
273
|
}
|
|
209
274
|
|
|
210
|
-
async function
|
|
211
|
-
var _client$connector$cha, _client$connector, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
|
|
212
|
-
|
|
275
|
+
async function readContract(_ref) {
|
|
213
276
|
let {
|
|
214
277
|
addressOrName,
|
|
278
|
+
args,
|
|
215
279
|
chainId,
|
|
216
|
-
|
|
217
|
-
|
|
280
|
+
contractInterface,
|
|
281
|
+
functionName,
|
|
282
|
+
overrides
|
|
218
283
|
} = _ref;
|
|
219
|
-
const client = getClient();
|
|
220
284
|
const provider = getProvider({
|
|
221
285
|
chainId
|
|
222
286
|
});
|
|
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
|
-
}
|
|
287
|
+
const contract = getContract({
|
|
288
|
+
addressOrName,
|
|
289
|
+
contractInterface,
|
|
290
|
+
signerOrProvider: provider
|
|
291
|
+
});
|
|
292
|
+
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
293
|
+
const contractFunction = contract[functionName];
|
|
294
|
+
if (!contractFunction) console.warn("\"".concat(functionName, "\" is not in the interface for contract \"").concat(addressOrName, "\""));
|
|
295
|
+
const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
|
|
296
|
+
return response;
|
|
311
297
|
}
|
|
312
298
|
|
|
313
|
-
async function
|
|
314
|
-
var _client$connector;
|
|
315
|
-
|
|
299
|
+
async function multicall(_ref) {
|
|
316
300
|
let {
|
|
317
|
-
|
|
301
|
+
allowFailure = true,
|
|
302
|
+
chainId,
|
|
303
|
+
contracts,
|
|
304
|
+
overrides
|
|
318
305
|
} = _ref;
|
|
319
|
-
const
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
306
|
+
const provider = getProvider({
|
|
307
|
+
chainId
|
|
308
|
+
});
|
|
309
|
+
if (!provider.chains) throw new ProviderChainsNotFound();
|
|
310
|
+
const chain = provider.chains.find(chain => chain.id === chainId) || provider.chains[0];
|
|
311
|
+
if (!chain) throw new ProviderChainsNotFound();
|
|
312
|
+
if (!(chain !== null && chain !== void 0 && chain.multicall)) throw new ChainDoesNotSupportMulticallError({
|
|
313
|
+
chain
|
|
314
|
+
});
|
|
315
|
+
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({
|
|
316
|
+
blockNumber: overrides === null || overrides === void 0 ? void 0 : overrides.blockTag,
|
|
317
|
+
chain
|
|
318
|
+
});
|
|
319
|
+
const multicallContract = getContract({
|
|
320
|
+
addressOrName: chain.multicall.address,
|
|
321
|
+
contractInterface: multicallInterface,
|
|
322
|
+
signerOrProvider: provider
|
|
323
|
+
});
|
|
324
|
+
const calls = contracts.map(_ref2 => {
|
|
331
325
|
let {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
326
|
+
addressOrName,
|
|
327
|
+
contractInterface,
|
|
328
|
+
functionName,
|
|
329
|
+
...config
|
|
330
|
+
} = _ref2;
|
|
331
|
+
const {
|
|
332
|
+
args
|
|
333
|
+
} = config || {};
|
|
334
|
+
const contract = getContract({
|
|
335
|
+
addressOrName,
|
|
336
|
+
contractInterface
|
|
337
|
+
});
|
|
338
|
+
const params = Array.isArray(args) ? args : args ? [args] : [];
|
|
339
|
+
const callData = contract.interface.encodeFunctionData(functionName, params);
|
|
340
|
+
if (!contract[functionName]) console.warn("\"".concat(functionName, "\" is not in the interface for contract \"").concat(addressOrName, "\""));
|
|
335
341
|
return {
|
|
336
|
-
|
|
337
|
-
|
|
342
|
+
target: addressOrName,
|
|
343
|
+
allowFailure: allowFailure,
|
|
344
|
+
callData
|
|
338
345
|
};
|
|
339
|
-
}, handleChange, {
|
|
340
|
-
equalityFn: (selected, previous) => selected.account === previous.account && selected.connector === previous.connector
|
|
341
346
|
});
|
|
342
|
-
|
|
347
|
+
const params = [...[calls], ...(overrides ? [overrides] : [])];
|
|
348
|
+
const results = await multicallContract.aggregate3(...params);
|
|
349
|
+
return results.map((_ref3, i) => {
|
|
350
|
+
let {
|
|
351
|
+
returnData,
|
|
352
|
+
success
|
|
353
|
+
} = _ref3;
|
|
354
|
+
if (!success) return undefined;
|
|
355
|
+
const {
|
|
356
|
+
addressOrName,
|
|
357
|
+
contractInterface,
|
|
358
|
+
functionName
|
|
359
|
+
} = contracts[i];
|
|
360
|
+
const contract = getContract({
|
|
361
|
+
addressOrName,
|
|
362
|
+
contractInterface
|
|
363
|
+
});
|
|
364
|
+
const result = contract.interface.decodeFunctionResult(functionName, returnData);
|
|
365
|
+
return Array.isArray(result) && result.length === 1 ? result[0] : result;
|
|
366
|
+
});
|
|
343
367
|
}
|
|
344
368
|
|
|
345
|
-
function
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
369
|
+
async function readContracts(_ref) {
|
|
370
|
+
let {
|
|
371
|
+
allowFailure = true,
|
|
372
|
+
contracts,
|
|
373
|
+
overrides
|
|
374
|
+
} = _ref;
|
|
349
375
|
|
|
350
|
-
|
|
351
|
-
|
|
376
|
+
try {
|
|
377
|
+
const provider = getProvider();
|
|
378
|
+
const contractsByChainId = contracts.reduce((contracts, contract) => {
|
|
379
|
+
var _contract$chainId;
|
|
352
380
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
}
|
|
381
|
+
const chainId = (_contract$chainId = contract.chainId) !== null && _contract$chainId !== void 0 ? _contract$chainId : provider.network.chainId;
|
|
382
|
+
return { ...contracts,
|
|
383
|
+
[chainId]: [...(contracts[chainId] || []), contract]
|
|
384
|
+
};
|
|
385
|
+
}, {});
|
|
386
|
+
const promises = Object.entries(contractsByChainId).map(_ref2 => {
|
|
387
|
+
let [chainId, contracts] = _ref2;
|
|
388
|
+
return multicall({
|
|
389
|
+
allowFailure,
|
|
390
|
+
chainId: parseInt(chainId),
|
|
391
|
+
contracts,
|
|
392
|
+
overrides
|
|
393
|
+
});
|
|
394
|
+
});
|
|
366
395
|
|
|
367
|
-
|
|
368
|
-
|
|
396
|
+
if (allowFailure) {
|
|
397
|
+
return (await Promise.allSettled(promises)).map(result => {
|
|
398
|
+
if (result.status === 'fulfilled') return result.value;
|
|
369
399
|
|
|
370
|
-
|
|
400
|
+
if (result.reason instanceof ChainDoesNotSupportMulticallError) {
|
|
401
|
+
console.warn(result.reason.message);
|
|
402
|
+
throw result.reason;
|
|
403
|
+
}
|
|
371
404
|
|
|
372
|
-
|
|
373
|
-
|
|
405
|
+
return null;
|
|
406
|
+
}).flat();
|
|
407
|
+
}
|
|
374
408
|
|
|
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
|
-
}
|
|
409
|
+
return (await Promise.all(promises)).flat();
|
|
410
|
+
} catch (err) {
|
|
411
|
+
const promises = contracts.map(contract => readContract({ ...contract,
|
|
412
|
+
overrides
|
|
413
|
+
}));
|
|
389
414
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
contractInterface,
|
|
394
|
-
signerOrProvider
|
|
395
|
-
} = _ref;
|
|
396
|
-
return new Contract$1(addressOrName, contractInterface, signerOrProvider);
|
|
397
|
-
}
|
|
415
|
+
if (allowFailure) {
|
|
416
|
+
return (await Promise.allSettled(promises)).map(result => result.status === 'fulfilled' ? result.value : null);
|
|
417
|
+
}
|
|
398
418
|
|
|
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;
|
|
419
|
+
return Promise.all(promises);
|
|
420
|
+
}
|
|
417
421
|
}
|
|
418
422
|
|
|
419
423
|
function watchContractEvent(
|
|
@@ -457,7 +461,7 @@ eventName, callback) {
|
|
|
457
461
|
webSocketProvider
|
|
458
462
|
};
|
|
459
463
|
}, watchEvent, {
|
|
460
|
-
equalityFn:
|
|
464
|
+
equalityFn: shallow
|
|
461
465
|
});
|
|
462
466
|
return () => {
|
|
463
467
|
var _contract2;
|
|
@@ -519,7 +523,7 @@ function watchBlockNumber(args, callback) {
|
|
|
519
523
|
|
|
520
524
|
callback(await fetchBlockNumber());
|
|
521
525
|
}, {
|
|
522
|
-
equalityFn:
|
|
526
|
+
equalityFn: shallow
|
|
523
527
|
});
|
|
524
528
|
return () => {
|
|
525
529
|
unsubscribe();
|
|
@@ -527,12 +531,30 @@ function watchBlockNumber(args, callback) {
|
|
|
527
531
|
};
|
|
528
532
|
}
|
|
529
533
|
|
|
530
|
-
function watchReadContract(
|
|
531
|
-
|
|
532
|
-
|
|
534
|
+
function watchReadContract(config, callback) {
|
|
535
|
+
const client = getClient();
|
|
536
|
+
|
|
537
|
+
const handleChange = async () => callback(await readContract(config));
|
|
538
|
+
|
|
539
|
+
const unwatch = config.listenToBlock ? watchBlockNumber({
|
|
540
|
+
listen: true
|
|
541
|
+
}, handleChange) : undefined;
|
|
542
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
543
|
+
let {
|
|
544
|
+
provider
|
|
545
|
+
} = _ref;
|
|
546
|
+
return provider;
|
|
547
|
+
}, handleChange);
|
|
548
|
+
return () => {
|
|
549
|
+
unsubscribe();
|
|
550
|
+
unwatch === null || unwatch === void 0 ? void 0 : unwatch();
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
function watchReadContracts(config, callback) {
|
|
533
555
|
const client = getClient();
|
|
534
556
|
|
|
535
|
-
const handleChange = async () => callback(await
|
|
557
|
+
const handleChange = async () => callback(await readContracts(config));
|
|
536
558
|
|
|
537
559
|
const unwatch = config.listenToBlock ? watchBlockNumber({
|
|
538
560
|
listen: true
|
|
@@ -549,29 +571,347 @@ function watchReadContract(contractConfig, functionName) {
|
|
|
549
571
|
};
|
|
550
572
|
}
|
|
551
573
|
|
|
552
|
-
async function writeContract(
|
|
574
|
+
async function writeContract(_ref) {
|
|
553
575
|
let {
|
|
576
|
+
addressOrName,
|
|
554
577
|
args,
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
578
|
+
chainId,
|
|
579
|
+
contractInterface,
|
|
580
|
+
functionName,
|
|
581
|
+
overrides,
|
|
582
|
+
signerOrProvider
|
|
583
|
+
} = _ref;
|
|
584
|
+
const {
|
|
585
|
+
connector
|
|
586
|
+
} = getClient();
|
|
587
|
+
if (!connector) throw new ConnectorNotFoundError();
|
|
559
588
|
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
560
589
|
|
|
561
590
|
try {
|
|
562
|
-
|
|
563
|
-
|
|
591
|
+
var _chain;
|
|
592
|
+
|
|
593
|
+
let chain;
|
|
594
|
+
|
|
595
|
+
if (chainId) {
|
|
596
|
+
const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
|
|
597
|
+
|
|
598
|
+
if (chainId !== activeChainId) {
|
|
599
|
+
var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
|
|
600
|
+
|
|
601
|
+
if (connector.switchChain) chain = await connector.switchChain(chainId);else throw new ChainMismatchError({
|
|
602
|
+
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),
|
|
603
|
+
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)
|
|
604
|
+
});
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
const signer = await connector.getSigner({
|
|
609
|
+
chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
|
|
610
|
+
});
|
|
611
|
+
const contract = getContract({
|
|
612
|
+
addressOrName,
|
|
613
|
+
contractInterface,
|
|
614
|
+
signerOrProvider
|
|
615
|
+
});
|
|
564
616
|
const contractWithSigner = contract.connect(signer);
|
|
565
617
|
const contractFunction = contractWithSigner[functionName];
|
|
566
|
-
if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(
|
|
567
|
-
|
|
568
|
-
|
|
618
|
+
if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(addressOrName, "\""));
|
|
619
|
+
return await contractFunction(...params);
|
|
620
|
+
} catch (error) {
|
|
621
|
+
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
622
|
+
throw error;
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
async function fetchBalance(_ref) {
|
|
627
|
+
var _client$chains, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
|
|
628
|
+
|
|
629
|
+
let {
|
|
630
|
+
addressOrName,
|
|
631
|
+
chainId,
|
|
632
|
+
formatUnits: unit = 'ether',
|
|
633
|
+
token
|
|
634
|
+
} = _ref;
|
|
635
|
+
const client = getClient();
|
|
636
|
+
const provider = getProvider({
|
|
637
|
+
chainId
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
if (token) {
|
|
641
|
+
const erc20Config = {
|
|
642
|
+
addressOrName: token,
|
|
643
|
+
contractInterface: erc20ABI,
|
|
644
|
+
chainId
|
|
645
|
+
}; // Convert ENS name to address if required
|
|
646
|
+
|
|
647
|
+
let resolvedAddress;
|
|
648
|
+
if (isAddress(addressOrName)) resolvedAddress = addressOrName;else {
|
|
649
|
+
const address = await provider.resolveName(addressOrName); // Same error `provider.getBalance` throws for invalid ENS name
|
|
650
|
+
|
|
651
|
+
if (!address) logger.throwError('ENS name not configured', Logger.errors.UNSUPPORTED_OPERATION, {
|
|
652
|
+
operation: "resolveName(".concat(JSON.stringify(addressOrName), ")")
|
|
653
|
+
});
|
|
654
|
+
resolvedAddress = address;
|
|
655
|
+
}
|
|
656
|
+
const [value, decimals, symbol] = await readContracts({
|
|
657
|
+
allowFailure: false,
|
|
658
|
+
contracts: [{ ...erc20Config,
|
|
659
|
+
functionName: 'balanceOf',
|
|
660
|
+
args: resolvedAddress
|
|
661
|
+
}, { ...erc20Config,
|
|
662
|
+
functionName: 'decimals'
|
|
663
|
+
}, { ...erc20Config,
|
|
664
|
+
functionName: 'symbol'
|
|
665
|
+
}]
|
|
666
|
+
});
|
|
667
|
+
return {
|
|
668
|
+
decimals,
|
|
669
|
+
formatted: formatUnits(value !== null && value !== void 0 ? value : '0', unit),
|
|
670
|
+
symbol,
|
|
671
|
+
unit,
|
|
672
|
+
value
|
|
673
|
+
};
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
const chains = [...(client.provider.chains || []), ...((_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [])];
|
|
677
|
+
const value = await provider.getBalance(addressOrName);
|
|
678
|
+
const chain = chains.find(x => x.id === provider.network.chainId);
|
|
679
|
+
return {
|
|
680
|
+
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,
|
|
681
|
+
formatted: formatUnits(value !== null && value !== void 0 ? value : '0', unit),
|
|
682
|
+
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',
|
|
683
|
+
unit,
|
|
684
|
+
value
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
async function fetchSigner() {
|
|
689
|
+
var _client$connector, _client$connector$get;
|
|
690
|
+
|
|
691
|
+
const client = getClient();
|
|
692
|
+
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;
|
|
693
|
+
return signer;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
function getAccount() {
|
|
697
|
+
const {
|
|
698
|
+
data,
|
|
699
|
+
connector,
|
|
700
|
+
status
|
|
701
|
+
} = getClient();
|
|
702
|
+
|
|
703
|
+
switch (status) {
|
|
704
|
+
case 'connected':
|
|
705
|
+
return {
|
|
706
|
+
address: data === null || data === void 0 ? void 0 : data.account,
|
|
707
|
+
connector: connector,
|
|
708
|
+
isConnected: true,
|
|
709
|
+
isConnecting: false,
|
|
710
|
+
isDisconnected: false,
|
|
711
|
+
isReconnecting: false,
|
|
712
|
+
status
|
|
713
|
+
};
|
|
714
|
+
|
|
715
|
+
case 'reconnecting':
|
|
716
|
+
return {
|
|
717
|
+
address: data === null || data === void 0 ? void 0 : data.account,
|
|
718
|
+
connector,
|
|
719
|
+
isConnected: !!(data !== null && data !== void 0 && data.account),
|
|
720
|
+
isConnecting: false,
|
|
721
|
+
isDisconnected: false,
|
|
722
|
+
isReconnecting: true,
|
|
723
|
+
status
|
|
724
|
+
};
|
|
725
|
+
|
|
726
|
+
case 'connecting':
|
|
727
|
+
return {
|
|
728
|
+
address: undefined,
|
|
729
|
+
connector: undefined,
|
|
730
|
+
isConnected: false,
|
|
731
|
+
isConnecting: true,
|
|
732
|
+
isDisconnected: false,
|
|
733
|
+
isReconnecting: false,
|
|
734
|
+
status
|
|
735
|
+
};
|
|
736
|
+
|
|
737
|
+
case 'disconnected':
|
|
738
|
+
return {
|
|
739
|
+
address: undefined,
|
|
740
|
+
connector: undefined,
|
|
741
|
+
isConnected: false,
|
|
742
|
+
isConnecting: false,
|
|
743
|
+
isDisconnected: true,
|
|
744
|
+
isReconnecting: false,
|
|
745
|
+
status
|
|
746
|
+
};
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
function getNetwork() {
|
|
751
|
+
var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
|
|
752
|
+
|
|
753
|
+
const client = getClient();
|
|
754
|
+
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;
|
|
755
|
+
const activeChains = (_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
|
|
756
|
+
const activeChain = (_find = [...(client.provider.chains || []), ...activeChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
|
|
757
|
+
id: chainId,
|
|
758
|
+
name: "Chain ".concat(chainId),
|
|
759
|
+
network: "".concat(chainId),
|
|
760
|
+
rpcUrls: {
|
|
761
|
+
default: ''
|
|
762
|
+
}
|
|
763
|
+
};
|
|
764
|
+
return {
|
|
765
|
+
chain: chainId ? { ...activeChain,
|
|
766
|
+
...((_client$data2 = client.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
|
|
767
|
+
id: chainId
|
|
768
|
+
} : undefined,
|
|
769
|
+
chains: activeChains
|
|
770
|
+
};
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
async function signMessage(args) {
|
|
774
|
+
try {
|
|
775
|
+
const signer = await fetchSigner();
|
|
776
|
+
if (!signer) throw new ConnectorNotFoundError();
|
|
777
|
+
return await signer.signMessage(args.message);
|
|
778
|
+
} catch (error) {
|
|
779
|
+
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
780
|
+
throw error;
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
async function signTypedData(_ref) {
|
|
785
|
+
let {
|
|
786
|
+
domain,
|
|
787
|
+
types,
|
|
788
|
+
value
|
|
789
|
+
} = _ref;
|
|
790
|
+
const {
|
|
791
|
+
connector
|
|
792
|
+
} = getClient();
|
|
793
|
+
if (!connector) throw new ConnectorNotFoundError();
|
|
794
|
+
|
|
795
|
+
try {
|
|
796
|
+
var _chain;
|
|
797
|
+
|
|
798
|
+
const {
|
|
799
|
+
chainId
|
|
800
|
+
} = domain;
|
|
801
|
+
let chain;
|
|
802
|
+
|
|
803
|
+
if (chainId) {
|
|
804
|
+
const chainId_ = normalizeChainId(chainId);
|
|
805
|
+
const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
|
|
806
|
+
|
|
807
|
+
if (chainId !== activeChainId) {
|
|
808
|
+
var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
|
|
809
|
+
|
|
810
|
+
if (connector.switchChain) chain = await connector.switchChain(chainId_);else throw new ChainMismatchError({
|
|
811
|
+
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),
|
|
812
|
+
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_)
|
|
813
|
+
});
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
const signer = await connector.getSigner({
|
|
818
|
+
chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
|
|
819
|
+
}); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
|
|
820
|
+
|
|
821
|
+
return await signer._signTypedData(domain, types, value);
|
|
569
822
|
} catch (error) {
|
|
570
823
|
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
571
824
|
throw error;
|
|
572
825
|
}
|
|
573
826
|
}
|
|
574
827
|
|
|
828
|
+
async function switchNetwork(_ref) {
|
|
829
|
+
let {
|
|
830
|
+
chainId
|
|
831
|
+
} = _ref;
|
|
832
|
+
const {
|
|
833
|
+
connector
|
|
834
|
+
} = getClient();
|
|
835
|
+
if (!connector) throw new ConnectorNotFoundError();
|
|
836
|
+
if (!connector.switchChain) throw new SwitchChainNotSupportedError({
|
|
837
|
+
connector
|
|
838
|
+
});
|
|
839
|
+
return await connector.switchChain(chainId);
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
function watchAccount(callback) {
|
|
843
|
+
let {
|
|
844
|
+
selector = x => x
|
|
845
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
846
|
+
const client = getClient();
|
|
847
|
+
|
|
848
|
+
const handleChange = () => callback(getAccount());
|
|
849
|
+
|
|
850
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
851
|
+
let {
|
|
852
|
+
data,
|
|
853
|
+
connector,
|
|
854
|
+
status
|
|
855
|
+
} = _ref;
|
|
856
|
+
return selector({
|
|
857
|
+
address: data === null || data === void 0 ? void 0 : data.account,
|
|
858
|
+
connector,
|
|
859
|
+
status
|
|
860
|
+
});
|
|
861
|
+
}, handleChange, {
|
|
862
|
+
equalityFn: shallow
|
|
863
|
+
});
|
|
864
|
+
return unsubscribe;
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
function watchNetwork(callback) {
|
|
868
|
+
let {
|
|
869
|
+
selector = x => x
|
|
870
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
871
|
+
const client = getClient();
|
|
872
|
+
|
|
873
|
+
const handleChange = () => callback(getNetwork());
|
|
874
|
+
|
|
875
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
876
|
+
var _data$chain;
|
|
877
|
+
|
|
878
|
+
let {
|
|
879
|
+
data,
|
|
880
|
+
chains
|
|
881
|
+
} = _ref;
|
|
882
|
+
return selector({
|
|
883
|
+
chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
|
|
884
|
+
chains
|
|
885
|
+
});
|
|
886
|
+
}, handleChange, {
|
|
887
|
+
equalityFn: shallow
|
|
888
|
+
});
|
|
889
|
+
return unsubscribe;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
function watchSigner(callback) {
|
|
893
|
+
const client = getClient();
|
|
894
|
+
|
|
895
|
+
const handleChange = async () => callback(await fetchSigner());
|
|
896
|
+
|
|
897
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
898
|
+
var _data$chain;
|
|
899
|
+
|
|
900
|
+
let {
|
|
901
|
+
data,
|
|
902
|
+
connector
|
|
903
|
+
} = _ref;
|
|
904
|
+
return {
|
|
905
|
+
account: data === null || data === void 0 ? void 0 : data.account,
|
|
906
|
+
chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
|
|
907
|
+
connector
|
|
908
|
+
};
|
|
909
|
+
}, handleChange, {
|
|
910
|
+
equalityFn: shallow
|
|
911
|
+
});
|
|
912
|
+
return unsubscribe;
|
|
913
|
+
}
|
|
914
|
+
|
|
575
915
|
async function fetchEnsAddress(_ref) {
|
|
576
916
|
let {
|
|
577
917
|
chainId,
|
|
@@ -654,7 +994,7 @@ async function fetchToken(_ref) {
|
|
|
654
994
|
const provider = getProvider({
|
|
655
995
|
chainId
|
|
656
996
|
});
|
|
657
|
-
const contract = new Contract(address, erc20ABI, provider);
|
|
997
|
+
const contract = new Contract$1(address, erc20ABI, provider);
|
|
658
998
|
const [symbol, decimals, totalSupply] = await Promise.all([contract.symbol(), contract.decimals(), contract.totalSupply()]);
|
|
659
999
|
const token = {
|
|
660
1000
|
address,
|
|
@@ -668,12 +1008,38 @@ async function fetchToken(_ref) {
|
|
|
668
1008
|
return token;
|
|
669
1009
|
}
|
|
670
1010
|
|
|
671
|
-
async function sendTransaction(
|
|
1011
|
+
async function sendTransaction(_ref) {
|
|
1012
|
+
let {
|
|
1013
|
+
chainId,
|
|
1014
|
+
request
|
|
1015
|
+
} = _ref;
|
|
1016
|
+
const {
|
|
1017
|
+
connector
|
|
1018
|
+
} = getClient();
|
|
1019
|
+
if (!connector) throw new ConnectorNotFoundError();
|
|
1020
|
+
|
|
672
1021
|
try {
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
1022
|
+
var _chain;
|
|
1023
|
+
|
|
1024
|
+
let chain;
|
|
1025
|
+
|
|
1026
|
+
if (chainId) {
|
|
1027
|
+
const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
|
|
1028
|
+
|
|
1029
|
+
if (chainId !== activeChainId) {
|
|
1030
|
+
var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
|
|
1031
|
+
|
|
1032
|
+
if (connector.switchChain) chain = await connector.switchChain(chainId);else throw new ChainMismatchError({
|
|
1033
|
+
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),
|
|
1034
|
+
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)
|
|
1035
|
+
});
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
const signer = await connector.getSigner({
|
|
1040
|
+
chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
|
|
1041
|
+
});
|
|
1042
|
+
return await signer.sendTransaction(request);
|
|
677
1043
|
} catch (error) {
|
|
678
1044
|
if (error.code === 4001) throw new UserRejectedRequestError(error);
|
|
679
1045
|
throw error;
|
|
@@ -700,4 +1066,4 @@ async function waitForTransaction(_ref) {
|
|
|
700
1066
|
return await promise;
|
|
701
1067
|
}
|
|
702
1068
|
|
|
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 };
|
|
1069
|
+
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 };
|