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