wagmi 0.2.18 → 0.2.21

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/README.md CHANGED
@@ -1,34 +1,7 @@
1
- # wagmi
1
+ # wagmi [![Version](https://img.shields.io/npm/v/wagmi)](https://www.npmjs.com/package/wagmi) [![Downloads](https://img.shields.io/npm/dm/wagmi)](https://www.npmjs.com/package/wagmi) [![Sponsors](https://img.shields.io/github/sponsors/tmm)](https://github.com/sponsors/tmm)
2
2
 
3
3
  React Hooks library for Ethereum, built on [ethers.js](https://github.com/ethers-io/ethers.js).
4
4
 
5
- <p>
6
- <a aria-label="Version" href="https://www.npmjs.com/package/wagmi">
7
- <img
8
- alt=""
9
- src="https://img.shields.io/npm/v/wagmi?color=%23161b22&label=%20npm"
10
- />
11
- </a>
12
- <a aria-label="License" href="/LICENSE">
13
- <img
14
- alt=""
15
- src="https://img.shields.io/npm/l/wagmi?color=%23161b22"
16
- />
17
- </a>
18
- <a aria-label="Sponsors" href="https://github.com/sponsors/tmm">
19
- <img
20
- alt=""
21
- src="https://img.shields.io/github/sponsors/tmm?color=%23161b22"
22
- />
23
- </a>
24
- <a aria-label="Downloads" href="https://www.npmjs.com/package/wagmi">
25
- <img
26
- alt=""
27
- src="https://img.shields.io/npm/dm/wagmi?color=%23161b22"
28
- />
29
- </a>
30
- </p>
31
-
32
5
  ## Features
33
6
 
34
7
  - 🚀 20+ hooks for working with wallets, ENS, contracts, transactions, signing, etc.
@@ -41,7 +14,7 @@ React Hooks library for Ethereum, built on [ethers.js](https://github.com/ethers
41
14
 
42
15
  ## Documentation
43
16
 
44
- Visit https://wagmi-xyz.vercel.app to view the full documentation.
17
+ Visit https://wagmi.sh to view the full documentation.
45
18
 
46
19
  ## Usage
47
20
 
@@ -4,3 +4,4 @@ export { useConnect } from './useConnect';
4
4
  export { useNetwork } from './useNetwork';
5
5
  export { useSigner } from './useSigner';
6
6
  export { useSignMessage } from './useSignMessage';
7
+ export { useSignTypedData } from './useSignTypedData';
@@ -0,0 +1,33 @@
1
+ import { BigNumberish, BytesLike } from 'ethers/lib/ethers';
2
+ declare type TypedDataDomain = {
3
+ name?: string;
4
+ version?: string;
5
+ chainId?: BigNumberish;
6
+ verifyingContract?: string;
7
+ salt?: BytesLike;
8
+ };
9
+ declare type TypedDataField = {
10
+ name: string;
11
+ type: string;
12
+ };
13
+ export declare type Config = {
14
+ domain?: TypedDataDomain;
15
+ types?: Record<string, Array<TypedDataField>>;
16
+ value?: Record<string, any>;
17
+ };
18
+ export declare const useSignTypedData: ({ domain, types, value }?: Config) => readonly [{
19
+ readonly data: string | undefined;
20
+ readonly error: Error | undefined;
21
+ readonly loading: boolean | undefined;
22
+ }, (config?: {
23
+ domain?: Config['domain'];
24
+ types?: Config['types'];
25
+ value?: Config['value'];
26
+ } | undefined) => Promise<{
27
+ data: string;
28
+ error: undefined;
29
+ } | {
30
+ data: undefined;
31
+ error: Error;
32
+ }>];
33
+ export {};
@@ -1,4 +1,4 @@
1
- export { useAccount, useBalance, useConnect, useNetwork, useSigner, useSignMessage, } from './accounts';
1
+ export { useAccount, useBalance, useConnect, useNetwork, useSigner, useSignMessage, useSignTypedData, } from './accounts';
2
2
  export { useContract, useContractEvent, useContractRead, useContractWrite, useToken, } from './contracts';
3
3
  export { useEnsAvatar, useEnsLookup, useEnsResolveName, useEnsResolver, } from './ens';
4
4
  export { useBlockNumber, useFeeData } from './network-status';
@@ -1,5 +1,5 @@
1
1
  export { Provider, Provider as WagmiProvider, useContext, Context, } from './context';
2
2
  export type { Props as ProviderProps, Props as WagmiProviderProps, } from './context';
3
- export { useAccount, useBalance, useBlockNumber, useConnect, useContract, useContractEvent, useContractRead, useContractWrite, useEnsAvatar, useEnsLookup, useEnsResolveName, useEnsResolver, useFeeData, useNetwork, useProvider, useSigner, useSignMessage, useToken, useTransaction, useWaitForTransaction, useWebSocketProvider, } from './hooks';
3
+ export { useAccount, useBalance, useBlockNumber, useConnect, useContract, useContractEvent, useContractRead, useContractWrite, useEnsAvatar, useEnsLookup, useEnsResolveName, useEnsResolver, useFeeData, useNetwork, useProvider, useSigner, useSignMessage, useSignTypedData, useToken, useTransaction, useWaitForTransaction, useWebSocketProvider, } from './hooks';
4
4
  export { Connector, InjectedConnector, chain, allChains, defaultChains, defaultL2Chains, developmentChains, erc1155ABI, erc20ABI, erc721ABI, normalizeChainId, AddChainError, ChainNotConfiguredError, ConnectorAlreadyConnectedError, ConnectorNotFoundError, SwitchChainError, UserRejectedRequestError, } from 'wagmi-core';
5
5
  export type { Chain, ConnectorData } from 'wagmi-core';
@@ -172,7 +172,7 @@ var useLocalStorage = function useLocalStorage(key) {
172
172
  return [value, setLocalStorage];
173
173
  };
174
174
 
175
- var initialState$f = {
175
+ var initialState$g = {
176
176
  loading: false
177
177
  };
178
178
  var useEnsAvatar = function useEnsAvatar() {
@@ -182,7 +182,7 @@ var useEnsAvatar = function useEnsAvatar() {
182
182
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
183
183
  var cacheBuster = useCacheBuster();
184
184
  var provider = useProvider();
185
- var [state, setState] = React__namespace.useState(initialState$f);
185
+ var [state, setState] = React__namespace.useState(initialState$g);
186
186
  var cancelQuery = useCancel();
187
187
  var getEnsAvatar = React__namespace.useCallback( /*#__PURE__*/function () {
188
188
  var _ref = _asyncToGenerator(function* (config) {
@@ -247,7 +247,7 @@ var useEnsAvatar = function useEnsAvatar() {
247
247
  }, getEnsAvatar];
248
248
  };
249
249
 
250
- var initialState$e = {
250
+ var initialState$f = {
251
251
  loading: false
252
252
  };
253
253
  var useEnsLookup = function useEnsLookup() {
@@ -257,7 +257,7 @@ var useEnsLookup = function useEnsLookup() {
257
257
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
258
258
  var cacheBuster = useCacheBuster();
259
259
  var provider = useProvider();
260
- var [state, setState] = React__namespace.useState(initialState$e);
260
+ var [state, setState] = React__namespace.useState(initialState$f);
261
261
  var cancelQuery = useCancel();
262
262
  var lookupAddress = React__namespace.useCallback( /*#__PURE__*/function () {
263
263
  var _ref = _asyncToGenerator(function* (config) {
@@ -328,7 +328,7 @@ var useEnsLookup = function useEnsLookup() {
328
328
  }, lookupAddress];
329
329
  };
330
330
 
331
- var initialState$d = {
331
+ var initialState$e = {
332
332
  loading: false
333
333
  };
334
334
  var useEnsResolveName = function useEnsResolveName() {
@@ -338,7 +338,7 @@ var useEnsResolveName = function useEnsResolveName() {
338
338
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
339
339
  var cacheBuster = useCacheBuster();
340
340
  var provider = useProvider();
341
- var [state, setState] = React__namespace.useState(initialState$d);
341
+ var [state, setState] = React__namespace.useState(initialState$e);
342
342
  var cancelQuery = useCancel();
343
343
  var resolveName = React__namespace.useCallback( /*#__PURE__*/function () {
344
344
  var _ref = _asyncToGenerator(function* (config) {
@@ -409,7 +409,7 @@ var useEnsResolveName = function useEnsResolveName() {
409
409
  }, resolveName];
410
410
  };
411
411
 
412
- var initialState$c = {
412
+ var initialState$d = {
413
413
  loading: false
414
414
  };
415
415
  var useEnsResolver = function useEnsResolver() {
@@ -419,7 +419,7 @@ var useEnsResolver = function useEnsResolver() {
419
419
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
420
420
  var cacheBuster = useCacheBuster();
421
421
  var provider = useProvider();
422
- var [state, setState] = React__namespace.useState(initialState$c);
422
+ var [state, setState] = React__namespace.useState(initialState$d);
423
423
  var cancelQuery = useCancel();
424
424
  var getEnsResolver = React__namespace.useCallback( /*#__PURE__*/function () {
425
425
  var _ref = _asyncToGenerator(function* (config) {
@@ -543,7 +543,7 @@ var useAccount = function useAccount() {
543
543
  }, disconnect];
544
544
  };
545
545
 
546
- var initialState$b = {
546
+ var initialState$c = {
547
547
  loading: false
548
548
  };
549
549
  var useBlockNumber = function useBlockNumber() {
@@ -554,7 +554,7 @@ var useBlockNumber = function useBlockNumber() {
554
554
  var cacheBuster = useCacheBuster();
555
555
  var provider = useProvider();
556
556
  var webSocketProvider = useWebSocketProvider();
557
- var [state, setState] = React__namespace.useState(initialState$b);
557
+ var [state, setState] = React__namespace.useState(initialState$c);
558
558
  var cancelQuery = useCancel();
559
559
  var getBlockNumber = React__namespace.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
560
560
  var didCancel = false;
@@ -633,7 +633,7 @@ var useBlockNumber = function useBlockNumber() {
633
633
  }, getBlockNumber];
634
634
  };
635
635
 
636
- var initialState$a = {
636
+ var initialState$b = {
637
637
  loading: false
638
638
  };
639
639
  var useFeeData = function useFeeData() {
@@ -650,7 +650,7 @@ var useFeeData = function useFeeData() {
650
650
  watch
651
651
  });
652
652
  var cacheBuster = useCacheBuster();
653
- var [state, setState] = React__namespace.useState(initialState$a);
653
+ var [state, setState] = React__namespace.useState(initialState$b);
654
654
  var cancelQuery = useCancel();
655
655
  var getFeeData = React__namespace.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
656
656
  var didCancel = false;
@@ -721,7 +721,7 @@ var useFeeData = function useFeeData() {
721
721
  }, getFeeData];
722
722
  };
723
723
 
724
- var initialState$9 = {
724
+ var initialState$a = {
725
725
  loading: false
726
726
  };
727
727
  var useBalance = function useBalance() {
@@ -745,7 +745,7 @@ var useBalance = function useBalance() {
745
745
  skip: true,
746
746
  watch
747
747
  });
748
- var [state, setState] = React__namespace.useState(initialState$9);
748
+ var [state, setState] = React__namespace.useState(initialState$a);
749
749
  var cancelQuery = useCancel();
750
750
  var getBalance = React__namespace.useCallback( /*#__PURE__*/function () {
751
751
  var _ref = _asyncToGenerator(function* (config) {
@@ -832,7 +832,7 @@ var useBalance = function useBalance() {
832
832
  }, getBalance];
833
833
  };
834
834
 
835
- var initialState$8 = {
835
+ var initialState$9 = {
836
836
  loading: false
837
837
  };
838
838
  var useConnect = () => {
@@ -843,7 +843,7 @@ var useConnect = () => {
843
843
  setState: setGlobalState,
844
844
  setLastUsedConnector
845
845
  } = useContext();
846
- var [state, setState] = React__namespace.useState(initialState$8);
846
+ var [state, setState] = React__namespace.useState(initialState$9);
847
847
  var cancelQuery = useCancel();
848
848
  var connect = React__namespace.useCallback( /*#__PURE__*/function () {
849
849
  var _ref = _asyncToGenerator(function* (connector) {
@@ -919,7 +919,7 @@ var useConnect = () => {
919
919
  }, connect];
920
920
  };
921
921
 
922
- var initialState$7 = {
922
+ var initialState$8 = {
923
923
  loading: false
924
924
  };
925
925
  var useNetwork = () => {
@@ -931,7 +931,7 @@ var useNetwork = () => {
931
931
  data
932
932
  }
933
933
  } = useContext();
934
- var [state, setState] = React__namespace.useState(initialState$7);
934
+ var [state, setState] = React__namespace.useState(initialState$8);
935
935
  var chainId = data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id;
936
936
  var unsupported = data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.unsupported;
937
937
  var activeChains = (_connector$chains = connector === null || connector === void 0 ? void 0 : connector.chains) !== null && _connector$chains !== void 0 ? _connector$chains : [];
@@ -999,7 +999,7 @@ var useNetwork = () => {
999
999
  }, connector !== null && connector !== void 0 && connector.switchChain ? switchNetwork : undefined];
1000
1000
  };
1001
1001
 
1002
- var initialState$6 = {
1002
+ var initialState$7 = {
1003
1003
  data: undefined,
1004
1004
  error: undefined,
1005
1005
  loading: false
@@ -1014,7 +1014,7 @@ var useSigner = function useSigner() {
1014
1014
  connector
1015
1015
  }
1016
1016
  } = useContext();
1017
- var [state, setState] = React__namespace.useState(initialState$6);
1017
+ var [state, setState] = React__namespace.useState(initialState$7);
1018
1018
  var cancelQuery = useCancel();
1019
1019
  var getSigner = React__namespace.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
1020
1020
  var didCancel = false;
@@ -1061,7 +1061,7 @@ var useSigner = function useSigner() {
1061
1061
  return [state, getSigner];
1062
1062
  };
1063
1063
 
1064
- var initialState$5 = {
1064
+ var initialState$6 = {
1065
1065
  loading: false
1066
1066
  };
1067
1067
  var useSignMessage = function useSignMessage() {
@@ -1073,7 +1073,7 @@ var useSignMessage = function useSignMessage() {
1073
1073
  connector
1074
1074
  }
1075
1075
  } = useContext();
1076
- var [state, setState] = React__namespace.useState(initialState$5);
1076
+ var [state, setState] = React__namespace.useState(initialState$6);
1077
1077
  var cancelQuery = useCancel();
1078
1078
  var signMessage = React__namespace.useCallback( /*#__PURE__*/function () {
1079
1079
  var _ref = _asyncToGenerator(function* (config) {
@@ -1135,6 +1135,87 @@ var useSignMessage = function useSignMessage() {
1135
1135
  }, signMessage];
1136
1136
  };
1137
1137
 
1138
+ var initialState$5 = {
1139
+ loading: false
1140
+ };
1141
+ var useSignTypedData = function useSignTypedData() {
1142
+ var {
1143
+ domain,
1144
+ types,
1145
+ value
1146
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1147
+ var {
1148
+ state: {
1149
+ connector
1150
+ }
1151
+ } = useContext();
1152
+ var [state, setState] = React__namespace.useState(initialState$5);
1153
+ var cancelQuery = useCancel();
1154
+ var signTypedData = React__namespace.useCallback( /*#__PURE__*/function () {
1155
+ var _ref = _asyncToGenerator(function* (config) {
1156
+ var didCancel = false;
1157
+ cancelQuery(() => {
1158
+ didCancel = true;
1159
+ });
1160
+
1161
+ try {
1162
+ var config_ = config !== null && config !== void 0 ? config : {
1163
+ domain,
1164
+ types,
1165
+ value
1166
+ };
1167
+ if (!config_.domain) throw new Error('domain is required');
1168
+ if (!config_.types) throw new Error('type is required');
1169
+ if (!config_.value) throw new Error('value is required');
1170
+ if (!connector) throw new wagmiCore.ConnectorNotFoundError();
1171
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1172
+ error: undefined,
1173
+ loading: true
1174
+ }));
1175
+ var signer = yield connector.getSigner(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
1176
+
1177
+ var signature = yield signer._signTypedData(config_.domain, config_.types, config_.value);
1178
+
1179
+ if (!didCancel) {
1180
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1181
+ signature,
1182
+ loading: false
1183
+ }));
1184
+ }
1185
+
1186
+ return {
1187
+ data: signature,
1188
+ error: undefined
1189
+ };
1190
+ } catch (error_) {
1191
+ var error = error_;
1192
+ if (error_.code === 4001) error = new wagmiCore.UserRejectedRequestError();
1193
+
1194
+ if (!didCancel) {
1195
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1196
+ error,
1197
+ loading: false
1198
+ }));
1199
+ }
1200
+
1201
+ return {
1202
+ data: undefined,
1203
+ error
1204
+ };
1205
+ }
1206
+ });
1207
+
1208
+ return function (_x) {
1209
+ return _ref.apply(this, arguments);
1210
+ };
1211
+ }(), [cancelQuery, connector, domain, types, value]);
1212
+ return [{
1213
+ data: state.signature,
1214
+ error: state.error,
1215
+ loading: state.loading
1216
+ }, signTypedData];
1217
+ };
1218
+
1138
1219
  var getContract = _ref => {
1139
1220
  var {
1140
1221
  addressOrName,
@@ -1883,6 +1964,7 @@ exports.useFeeData = useFeeData;
1883
1964
  exports.useNetwork = useNetwork;
1884
1965
  exports.useProvider = useProvider;
1885
1966
  exports.useSignMessage = useSignMessage;
1967
+ exports.useSignTypedData = useSignTypedData;
1886
1968
  exports.useSigner = useSigner;
1887
1969
  exports.useToken = useToken;
1888
1970
  exports.useTransaction = useTransaction;
@@ -172,7 +172,7 @@ var useLocalStorage = function useLocalStorage(key) {
172
172
  return [value, setLocalStorage];
173
173
  };
174
174
 
175
- var initialState$f = {
175
+ var initialState$g = {
176
176
  loading: false
177
177
  };
178
178
  var useEnsAvatar = function useEnsAvatar() {
@@ -182,7 +182,7 @@ var useEnsAvatar = function useEnsAvatar() {
182
182
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
183
183
  var cacheBuster = useCacheBuster();
184
184
  var provider = useProvider();
185
- var [state, setState] = React__namespace.useState(initialState$f);
185
+ var [state, setState] = React__namespace.useState(initialState$g);
186
186
  var cancelQuery = useCancel();
187
187
  var getEnsAvatar = React__namespace.useCallback( /*#__PURE__*/function () {
188
188
  var _ref = _asyncToGenerator(function* (config) {
@@ -247,7 +247,7 @@ var useEnsAvatar = function useEnsAvatar() {
247
247
  }, getEnsAvatar];
248
248
  };
249
249
 
250
- var initialState$e = {
250
+ var initialState$f = {
251
251
  loading: false
252
252
  };
253
253
  var useEnsLookup = function useEnsLookup() {
@@ -257,7 +257,7 @@ var useEnsLookup = function useEnsLookup() {
257
257
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
258
258
  var cacheBuster = useCacheBuster();
259
259
  var provider = useProvider();
260
- var [state, setState] = React__namespace.useState(initialState$e);
260
+ var [state, setState] = React__namespace.useState(initialState$f);
261
261
  var cancelQuery = useCancel();
262
262
  var lookupAddress = React__namespace.useCallback( /*#__PURE__*/function () {
263
263
  var _ref = _asyncToGenerator(function* (config) {
@@ -328,7 +328,7 @@ var useEnsLookup = function useEnsLookup() {
328
328
  }, lookupAddress];
329
329
  };
330
330
 
331
- var initialState$d = {
331
+ var initialState$e = {
332
332
  loading: false
333
333
  };
334
334
  var useEnsResolveName = function useEnsResolveName() {
@@ -338,7 +338,7 @@ var useEnsResolveName = function useEnsResolveName() {
338
338
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
339
339
  var cacheBuster = useCacheBuster();
340
340
  var provider = useProvider();
341
- var [state, setState] = React__namespace.useState(initialState$d);
341
+ var [state, setState] = React__namespace.useState(initialState$e);
342
342
  var cancelQuery = useCancel();
343
343
  var resolveName = React__namespace.useCallback( /*#__PURE__*/function () {
344
344
  var _ref = _asyncToGenerator(function* (config) {
@@ -409,7 +409,7 @@ var useEnsResolveName = function useEnsResolveName() {
409
409
  }, resolveName];
410
410
  };
411
411
 
412
- var initialState$c = {
412
+ var initialState$d = {
413
413
  loading: false
414
414
  };
415
415
  var useEnsResolver = function useEnsResolver() {
@@ -419,7 +419,7 @@ var useEnsResolver = function useEnsResolver() {
419
419
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
420
420
  var cacheBuster = useCacheBuster();
421
421
  var provider = useProvider();
422
- var [state, setState] = React__namespace.useState(initialState$c);
422
+ var [state, setState] = React__namespace.useState(initialState$d);
423
423
  var cancelQuery = useCancel();
424
424
  var getEnsResolver = React__namespace.useCallback( /*#__PURE__*/function () {
425
425
  var _ref = _asyncToGenerator(function* (config) {
@@ -543,7 +543,7 @@ var useAccount = function useAccount() {
543
543
  }, disconnect];
544
544
  };
545
545
 
546
- var initialState$b = {
546
+ var initialState$c = {
547
547
  loading: false
548
548
  };
549
549
  var useBlockNumber = function useBlockNumber() {
@@ -554,7 +554,7 @@ var useBlockNumber = function useBlockNumber() {
554
554
  var cacheBuster = useCacheBuster();
555
555
  var provider = useProvider();
556
556
  var webSocketProvider = useWebSocketProvider();
557
- var [state, setState] = React__namespace.useState(initialState$b);
557
+ var [state, setState] = React__namespace.useState(initialState$c);
558
558
  var cancelQuery = useCancel();
559
559
  var getBlockNumber = React__namespace.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
560
560
  var didCancel = false;
@@ -633,7 +633,7 @@ var useBlockNumber = function useBlockNumber() {
633
633
  }, getBlockNumber];
634
634
  };
635
635
 
636
- var initialState$a = {
636
+ var initialState$b = {
637
637
  loading: false
638
638
  };
639
639
  var useFeeData = function useFeeData() {
@@ -650,7 +650,7 @@ var useFeeData = function useFeeData() {
650
650
  watch
651
651
  });
652
652
  var cacheBuster = useCacheBuster();
653
- var [state, setState] = React__namespace.useState(initialState$a);
653
+ var [state, setState] = React__namespace.useState(initialState$b);
654
654
  var cancelQuery = useCancel();
655
655
  var getFeeData = React__namespace.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
656
656
  var didCancel = false;
@@ -721,7 +721,7 @@ var useFeeData = function useFeeData() {
721
721
  }, getFeeData];
722
722
  };
723
723
 
724
- var initialState$9 = {
724
+ var initialState$a = {
725
725
  loading: false
726
726
  };
727
727
  var useBalance = function useBalance() {
@@ -745,7 +745,7 @@ var useBalance = function useBalance() {
745
745
  skip: true,
746
746
  watch
747
747
  });
748
- var [state, setState] = React__namespace.useState(initialState$9);
748
+ var [state, setState] = React__namespace.useState(initialState$a);
749
749
  var cancelQuery = useCancel();
750
750
  var getBalance = React__namespace.useCallback( /*#__PURE__*/function () {
751
751
  var _ref = _asyncToGenerator(function* (config) {
@@ -832,7 +832,7 @@ var useBalance = function useBalance() {
832
832
  }, getBalance];
833
833
  };
834
834
 
835
- var initialState$8 = {
835
+ var initialState$9 = {
836
836
  loading: false
837
837
  };
838
838
  var useConnect = () => {
@@ -843,7 +843,7 @@ var useConnect = () => {
843
843
  setState: setGlobalState,
844
844
  setLastUsedConnector
845
845
  } = useContext();
846
- var [state, setState] = React__namespace.useState(initialState$8);
846
+ var [state, setState] = React__namespace.useState(initialState$9);
847
847
  var cancelQuery = useCancel();
848
848
  var connect = React__namespace.useCallback( /*#__PURE__*/function () {
849
849
  var _ref = _asyncToGenerator(function* (connector) {
@@ -919,7 +919,7 @@ var useConnect = () => {
919
919
  }, connect];
920
920
  };
921
921
 
922
- var initialState$7 = {
922
+ var initialState$8 = {
923
923
  loading: false
924
924
  };
925
925
  var useNetwork = () => {
@@ -931,7 +931,7 @@ var useNetwork = () => {
931
931
  data
932
932
  }
933
933
  } = useContext();
934
- var [state, setState] = React__namespace.useState(initialState$7);
934
+ var [state, setState] = React__namespace.useState(initialState$8);
935
935
  var chainId = data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id;
936
936
  var unsupported = data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.unsupported;
937
937
  var activeChains = (_connector$chains = connector === null || connector === void 0 ? void 0 : connector.chains) !== null && _connector$chains !== void 0 ? _connector$chains : [];
@@ -999,7 +999,7 @@ var useNetwork = () => {
999
999
  }, connector !== null && connector !== void 0 && connector.switchChain ? switchNetwork : undefined];
1000
1000
  };
1001
1001
 
1002
- var initialState$6 = {
1002
+ var initialState$7 = {
1003
1003
  data: undefined,
1004
1004
  error: undefined,
1005
1005
  loading: false
@@ -1014,7 +1014,7 @@ var useSigner = function useSigner() {
1014
1014
  connector
1015
1015
  }
1016
1016
  } = useContext();
1017
- var [state, setState] = React__namespace.useState(initialState$6);
1017
+ var [state, setState] = React__namespace.useState(initialState$7);
1018
1018
  var cancelQuery = useCancel();
1019
1019
  var getSigner = React__namespace.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
1020
1020
  var didCancel = false;
@@ -1061,7 +1061,7 @@ var useSigner = function useSigner() {
1061
1061
  return [state, getSigner];
1062
1062
  };
1063
1063
 
1064
- var initialState$5 = {
1064
+ var initialState$6 = {
1065
1065
  loading: false
1066
1066
  };
1067
1067
  var useSignMessage = function useSignMessage() {
@@ -1073,7 +1073,7 @@ var useSignMessage = function useSignMessage() {
1073
1073
  connector
1074
1074
  }
1075
1075
  } = useContext();
1076
- var [state, setState] = React__namespace.useState(initialState$5);
1076
+ var [state, setState] = React__namespace.useState(initialState$6);
1077
1077
  var cancelQuery = useCancel();
1078
1078
  var signMessage = React__namespace.useCallback( /*#__PURE__*/function () {
1079
1079
  var _ref = _asyncToGenerator(function* (config) {
@@ -1135,6 +1135,87 @@ var useSignMessage = function useSignMessage() {
1135
1135
  }, signMessage];
1136
1136
  };
1137
1137
 
1138
+ var initialState$5 = {
1139
+ loading: false
1140
+ };
1141
+ var useSignTypedData = function useSignTypedData() {
1142
+ var {
1143
+ domain,
1144
+ types,
1145
+ value
1146
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1147
+ var {
1148
+ state: {
1149
+ connector
1150
+ }
1151
+ } = useContext();
1152
+ var [state, setState] = React__namespace.useState(initialState$5);
1153
+ var cancelQuery = useCancel();
1154
+ var signTypedData = React__namespace.useCallback( /*#__PURE__*/function () {
1155
+ var _ref = _asyncToGenerator(function* (config) {
1156
+ var didCancel = false;
1157
+ cancelQuery(() => {
1158
+ didCancel = true;
1159
+ });
1160
+
1161
+ try {
1162
+ var config_ = config !== null && config !== void 0 ? config : {
1163
+ domain,
1164
+ types,
1165
+ value
1166
+ };
1167
+ if (!config_.domain) throw new Error('domain is required');
1168
+ if (!config_.types) throw new Error('type is required');
1169
+ if (!config_.value) throw new Error('value is required');
1170
+ if (!connector) throw new wagmiCore.ConnectorNotFoundError();
1171
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1172
+ error: undefined,
1173
+ loading: true
1174
+ }));
1175
+ var signer = yield connector.getSigner(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
1176
+
1177
+ var signature = yield signer._signTypedData(config_.domain, config_.types, config_.value);
1178
+
1179
+ if (!didCancel) {
1180
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1181
+ signature,
1182
+ loading: false
1183
+ }));
1184
+ }
1185
+
1186
+ return {
1187
+ data: signature,
1188
+ error: undefined
1189
+ };
1190
+ } catch (error_) {
1191
+ var error = error_;
1192
+ if (error_.code === 4001) error = new wagmiCore.UserRejectedRequestError();
1193
+
1194
+ if (!didCancel) {
1195
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1196
+ error,
1197
+ loading: false
1198
+ }));
1199
+ }
1200
+
1201
+ return {
1202
+ data: undefined,
1203
+ error
1204
+ };
1205
+ }
1206
+ });
1207
+
1208
+ return function (_x) {
1209
+ return _ref.apply(this, arguments);
1210
+ };
1211
+ }(), [cancelQuery, connector, domain, types, value]);
1212
+ return [{
1213
+ data: state.signature,
1214
+ error: state.error,
1215
+ loading: state.loading
1216
+ }, signTypedData];
1217
+ };
1218
+
1138
1219
  var getContract = _ref => {
1139
1220
  var {
1140
1221
  addressOrName,
@@ -1883,6 +1964,7 @@ exports.useFeeData = useFeeData;
1883
1964
  exports.useNetwork = useNetwork;
1884
1965
  exports.useProvider = useProvider;
1885
1966
  exports.useSignMessage = useSignMessage;
1967
+ exports.useSignTypedData = useSignTypedData;
1886
1968
  exports.useSigner = useSigner;
1887
1969
  exports.useToken = useToken;
1888
1970
  exports.useTransaction = useTransaction;
package/dist/wagmi.esm.js CHANGED
@@ -149,7 +149,7 @@ var useLocalStorage = function useLocalStorage(key) {
149
149
  return [value, setLocalStorage];
150
150
  };
151
151
 
152
- var initialState$f = {
152
+ var initialState$g = {
153
153
  loading: false
154
154
  };
155
155
  var useEnsAvatar = function useEnsAvatar() {
@@ -159,7 +159,7 @@ var useEnsAvatar = function useEnsAvatar() {
159
159
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
160
160
  var cacheBuster = useCacheBuster();
161
161
  var provider = useProvider();
162
- var [state, setState] = React.useState(initialState$f);
162
+ var [state, setState] = React.useState(initialState$g);
163
163
  var cancelQuery = useCancel();
164
164
  var getEnsAvatar = React.useCallback( /*#__PURE__*/function () {
165
165
  var _ref = _asyncToGenerator(function* (config) {
@@ -224,7 +224,7 @@ var useEnsAvatar = function useEnsAvatar() {
224
224
  }, getEnsAvatar];
225
225
  };
226
226
 
227
- var initialState$e = {
227
+ var initialState$f = {
228
228
  loading: false
229
229
  };
230
230
  var useEnsLookup = function useEnsLookup() {
@@ -234,7 +234,7 @@ var useEnsLookup = function useEnsLookup() {
234
234
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
235
235
  var cacheBuster = useCacheBuster();
236
236
  var provider = useProvider();
237
- var [state, setState] = React.useState(initialState$e);
237
+ var [state, setState] = React.useState(initialState$f);
238
238
  var cancelQuery = useCancel();
239
239
  var lookupAddress = React.useCallback( /*#__PURE__*/function () {
240
240
  var _ref = _asyncToGenerator(function* (config) {
@@ -305,7 +305,7 @@ var useEnsLookup = function useEnsLookup() {
305
305
  }, lookupAddress];
306
306
  };
307
307
 
308
- var initialState$d = {
308
+ var initialState$e = {
309
309
  loading: false
310
310
  };
311
311
  var useEnsResolveName = function useEnsResolveName() {
@@ -315,7 +315,7 @@ var useEnsResolveName = function useEnsResolveName() {
315
315
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
316
316
  var cacheBuster = useCacheBuster();
317
317
  var provider = useProvider();
318
- var [state, setState] = React.useState(initialState$d);
318
+ var [state, setState] = React.useState(initialState$e);
319
319
  var cancelQuery = useCancel();
320
320
  var resolveName = React.useCallback( /*#__PURE__*/function () {
321
321
  var _ref = _asyncToGenerator(function* (config) {
@@ -386,7 +386,7 @@ var useEnsResolveName = function useEnsResolveName() {
386
386
  }, resolveName];
387
387
  };
388
388
 
389
- var initialState$c = {
389
+ var initialState$d = {
390
390
  loading: false
391
391
  };
392
392
  var useEnsResolver = function useEnsResolver() {
@@ -396,7 +396,7 @@ var useEnsResolver = function useEnsResolver() {
396
396
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
397
397
  var cacheBuster = useCacheBuster();
398
398
  var provider = useProvider();
399
- var [state, setState] = React.useState(initialState$c);
399
+ var [state, setState] = React.useState(initialState$d);
400
400
  var cancelQuery = useCancel();
401
401
  var getEnsResolver = React.useCallback( /*#__PURE__*/function () {
402
402
  var _ref = _asyncToGenerator(function* (config) {
@@ -520,7 +520,7 @@ var useAccount = function useAccount() {
520
520
  }, disconnect];
521
521
  };
522
522
 
523
- var initialState$b = {
523
+ var initialState$c = {
524
524
  loading: false
525
525
  };
526
526
  var useBlockNumber = function useBlockNumber() {
@@ -531,7 +531,7 @@ var useBlockNumber = function useBlockNumber() {
531
531
  var cacheBuster = useCacheBuster();
532
532
  var provider = useProvider();
533
533
  var webSocketProvider = useWebSocketProvider();
534
- var [state, setState] = React.useState(initialState$b);
534
+ var [state, setState] = React.useState(initialState$c);
535
535
  var cancelQuery = useCancel();
536
536
  var getBlockNumber = React.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
537
537
  var didCancel = false;
@@ -610,7 +610,7 @@ var useBlockNumber = function useBlockNumber() {
610
610
  }, getBlockNumber];
611
611
  };
612
612
 
613
- var initialState$a = {
613
+ var initialState$b = {
614
614
  loading: false
615
615
  };
616
616
  var useFeeData = function useFeeData() {
@@ -627,7 +627,7 @@ var useFeeData = function useFeeData() {
627
627
  watch
628
628
  });
629
629
  var cacheBuster = useCacheBuster();
630
- var [state, setState] = React.useState(initialState$a);
630
+ var [state, setState] = React.useState(initialState$b);
631
631
  var cancelQuery = useCancel();
632
632
  var getFeeData = React.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
633
633
  var didCancel = false;
@@ -698,7 +698,7 @@ var useFeeData = function useFeeData() {
698
698
  }, getFeeData];
699
699
  };
700
700
 
701
- var initialState$9 = {
701
+ var initialState$a = {
702
702
  loading: false
703
703
  };
704
704
  var useBalance = function useBalance() {
@@ -722,7 +722,7 @@ var useBalance = function useBalance() {
722
722
  skip: true,
723
723
  watch
724
724
  });
725
- var [state, setState] = React.useState(initialState$9);
725
+ var [state, setState] = React.useState(initialState$a);
726
726
  var cancelQuery = useCancel();
727
727
  var getBalance = React.useCallback( /*#__PURE__*/function () {
728
728
  var _ref = _asyncToGenerator(function* (config) {
@@ -809,7 +809,7 @@ var useBalance = function useBalance() {
809
809
  }, getBalance];
810
810
  };
811
811
 
812
- var initialState$8 = {
812
+ var initialState$9 = {
813
813
  loading: false
814
814
  };
815
815
  var useConnect = () => {
@@ -820,7 +820,7 @@ var useConnect = () => {
820
820
  setState: setGlobalState,
821
821
  setLastUsedConnector
822
822
  } = useContext();
823
- var [state, setState] = React.useState(initialState$8);
823
+ var [state, setState] = React.useState(initialState$9);
824
824
  var cancelQuery = useCancel();
825
825
  var connect = React.useCallback( /*#__PURE__*/function () {
826
826
  var _ref = _asyncToGenerator(function* (connector) {
@@ -896,7 +896,7 @@ var useConnect = () => {
896
896
  }, connect];
897
897
  };
898
898
 
899
- var initialState$7 = {
899
+ var initialState$8 = {
900
900
  loading: false
901
901
  };
902
902
  var useNetwork = () => {
@@ -908,7 +908,7 @@ var useNetwork = () => {
908
908
  data
909
909
  }
910
910
  } = useContext();
911
- var [state, setState] = React.useState(initialState$7);
911
+ var [state, setState] = React.useState(initialState$8);
912
912
  var chainId = data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id;
913
913
  var unsupported = data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.unsupported;
914
914
  var activeChains = (_connector$chains = connector === null || connector === void 0 ? void 0 : connector.chains) !== null && _connector$chains !== void 0 ? _connector$chains : [];
@@ -976,7 +976,7 @@ var useNetwork = () => {
976
976
  }, connector !== null && connector !== void 0 && connector.switchChain ? switchNetwork : undefined];
977
977
  };
978
978
 
979
- var initialState$6 = {
979
+ var initialState$7 = {
980
980
  data: undefined,
981
981
  error: undefined,
982
982
  loading: false
@@ -991,7 +991,7 @@ var useSigner = function useSigner() {
991
991
  connector
992
992
  }
993
993
  } = useContext();
994
- var [state, setState] = React.useState(initialState$6);
994
+ var [state, setState] = React.useState(initialState$7);
995
995
  var cancelQuery = useCancel();
996
996
  var getSigner = React.useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
997
997
  var didCancel = false;
@@ -1038,7 +1038,7 @@ var useSigner = function useSigner() {
1038
1038
  return [state, getSigner];
1039
1039
  };
1040
1040
 
1041
- var initialState$5 = {
1041
+ var initialState$6 = {
1042
1042
  loading: false
1043
1043
  };
1044
1044
  var useSignMessage = function useSignMessage() {
@@ -1050,7 +1050,7 @@ var useSignMessage = function useSignMessage() {
1050
1050
  connector
1051
1051
  }
1052
1052
  } = useContext();
1053
- var [state, setState] = React.useState(initialState$5);
1053
+ var [state, setState] = React.useState(initialState$6);
1054
1054
  var cancelQuery = useCancel();
1055
1055
  var signMessage = React.useCallback( /*#__PURE__*/function () {
1056
1056
  var _ref = _asyncToGenerator(function* (config) {
@@ -1112,6 +1112,87 @@ var useSignMessage = function useSignMessage() {
1112
1112
  }, signMessage];
1113
1113
  };
1114
1114
 
1115
+ var initialState$5 = {
1116
+ loading: false
1117
+ };
1118
+ var useSignTypedData = function useSignTypedData() {
1119
+ var {
1120
+ domain,
1121
+ types,
1122
+ value
1123
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1124
+ var {
1125
+ state: {
1126
+ connector
1127
+ }
1128
+ } = useContext();
1129
+ var [state, setState] = React.useState(initialState$5);
1130
+ var cancelQuery = useCancel();
1131
+ var signTypedData = React.useCallback( /*#__PURE__*/function () {
1132
+ var _ref = _asyncToGenerator(function* (config) {
1133
+ var didCancel = false;
1134
+ cancelQuery(() => {
1135
+ didCancel = true;
1136
+ });
1137
+
1138
+ try {
1139
+ var config_ = config !== null && config !== void 0 ? config : {
1140
+ domain,
1141
+ types,
1142
+ value
1143
+ };
1144
+ if (!config_.domain) throw new Error('domain is required');
1145
+ if (!config_.types) throw new Error('type is required');
1146
+ if (!config_.value) throw new Error('value is required');
1147
+ if (!connector) throw new ConnectorNotFoundError();
1148
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1149
+ error: undefined,
1150
+ loading: true
1151
+ }));
1152
+ var signer = yield connector.getSigner(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
1153
+
1154
+ var signature = yield signer._signTypedData(config_.domain, config_.types, config_.value);
1155
+
1156
+ if (!didCancel) {
1157
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1158
+ signature,
1159
+ loading: false
1160
+ }));
1161
+ }
1162
+
1163
+ return {
1164
+ data: signature,
1165
+ error: undefined
1166
+ };
1167
+ } catch (error_) {
1168
+ var error = error_;
1169
+ if (error_.code === 4001) error = new UserRejectedRequestError();
1170
+
1171
+ if (!didCancel) {
1172
+ setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
1173
+ error,
1174
+ loading: false
1175
+ }));
1176
+ }
1177
+
1178
+ return {
1179
+ data: undefined,
1180
+ error
1181
+ };
1182
+ }
1183
+ });
1184
+
1185
+ return function (_x) {
1186
+ return _ref.apply(this, arguments);
1187
+ };
1188
+ }(), [cancelQuery, connector, domain, types, value]);
1189
+ return [{
1190
+ data: state.signature,
1191
+ error: state.error,
1192
+ loading: state.loading
1193
+ }, signTypedData];
1194
+ };
1195
+
1115
1196
  var getContract = _ref => {
1116
1197
  var {
1117
1198
  addressOrName,
@@ -1772,4 +1853,4 @@ var useContext = () => {
1772
1853
  return context;
1773
1854
  };
1774
1855
 
1775
- export { Context, Provider, Provider as WagmiProvider, useAccount, useBalance, useBlockNumber, useConnect, useContext, useContract, useContractEvent, useContractRead, useContractWrite, useEnsAvatar, useEnsLookup, useEnsResolveName, useEnsResolver, useFeeData, useNetwork, useProvider, useSignMessage, useSigner, useToken, useTransaction, useWaitForTransaction, useWebSocketProvider };
1856
+ export { Context, Provider, Provider as WagmiProvider, useAccount, useBalance, useBlockNumber, useConnect, useContext, useContract, useContractEvent, useContractRead, useContractWrite, useEnsAvatar, useEnsLookup, useEnsResolveName, useEnsResolver, useFeeData, useNetwork, useProvider, useSignMessage, useSignTypedData, useSigner, useToken, useTransaction, useWaitForTransaction, useWebSocketProvider };
package/package.json CHANGED
@@ -2,10 +2,10 @@
2
2
  "name": "wagmi",
3
3
  "description": "React Hooks library for Ethereum",
4
4
  "license": "MIT",
5
- "version": "0.2.18",
5
+ "version": "0.2.21",
6
6
  "ethereum": "awkweb.eth",
7
7
  "repository": "tmm/wagmi",
8
- "homepage": "https://wagmi-xyz.vercel.app",
8
+ "homepage": "https://wagmi.sh",
9
9
  "sideEffects": false,
10
10
  "main": "dist/wagmi.cjs.js",
11
11
  "module": "dist/wagmi.esm.js",
@@ -46,18 +46,17 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@ethersproject/providers": "^5.5.1",
49
- "@walletconnect/ethereum-provider": "1.7.4",
50
- "wagmi-core": "0.1.14",
49
+ "@walletconnect/ethereum-provider": "1.7.5",
50
+ "wagmi-core": "0.1.15",
51
51
  "walletlink": "^2.5.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@testing-library/react-hooks": "^7.0.2",
55
55
  "@types/react": "^17.0.0",
56
- "wagmi-testing": "0.1.14",
57
- "@walletconnect/ethereum-provider": "1.7.4",
58
56
  "ethers": "^5.5.1",
59
57
  "react": "^17.0.0",
58
+ "wagmi-testing": "0.1.15",
60
59
  "walletlink": "^2.5.0"
61
60
  },
62
- "readme": "# wagmi\n\nReact Hooks library for Ethereum, built on [ethers.js](https://github.com/ethers-io/ethers.js).\n\n<p>\n <a aria-label=\"Version\" href=\"https://www.npmjs.com/package/wagmi\">\n <img\n alt=\"\"\n src=\"https://img.shields.io/npm/v/wagmi?color=%23161b22&label=%20npm\"\n />\n </a>\n <a aria-label=\"License\" href=\"/LICENSE\">\n <img\n alt=\"\"\n src=\"https://img.shields.io/npm/l/wagmi?color=%23161b22\"\n />\n </a>\n <a aria-label=\"Sponsors\" href=\"https://github.com/sponsors/tmm\">\n <img\n alt=\"\"\n src=\"https://img.shields.io/github/sponsors/tmm?color=%23161b22\"\n />\n </a>\n <a aria-label=\"Downloads\" href=\"https://www.npmjs.com/package/wagmi\">\n <img\n alt=\"\"\n src=\"https://img.shields.io/npm/dm/wagmi?color=%23161b22\"\n />\n </a>\n</p>\n\n## Features\n\n- 🚀 20+ hooks for working with wallets, ENS, contracts, transactions, signing, etc.\n- 💼 Built-in wallet connectors for MetaMask, WalletConnect, and Coinbase Wallet\n- 🌀 Auto-refresh data on wallet and network changes\n- 🦄 TypeScript ready\n- 💨 Zero-dependencies (besides ethers.js peer dependency)\n- 🌳 Test suite and documentation\n- 📖 MIT License\n\n## Documentation\n\nVisit https://wagmi-xyz.vercel.app to view the full documentation.\n\n## Usage\n\n1. Install the dependencies.\n\n```bash\nnpm add wagmi ethers\n```\n\n2. Wrap your app with the `Provider` component.\n\n```tsx\nimport { Provider } from 'wagmi'\n\nconst App = () => (\n <Provider>\n <YourRoutes />\n </Provider>\n)\n```\n\n3. Use hooks.\n\n```tsx\nimport { useAccount } from 'wagmi'\n\nconst Page = () => {\n const [{ data, error, loading }, disconnect] = useAccount({\n fetchEns: true,\n })\n\n return ...\n}\n```\n\nEvery component inside the `Provider` is set up with the default `InjectedConnector` for connecting wallets and ethers.js [Default Provider](https://docs.ethers.io/v5/api/providers/#providers-getDefaultProvider) for fetching data.\n\nWant to learn more? Check out the [guides](https://wagmi-xyz.vercel.app/guides/connect-wallet) or browse the [API docs](https://wagmi-xyz.vercel.app/docs/provider).\n\n## Community\n\n- Join the [discussions on GitHub](https://github.com/tmm/wagmi/discussions)\n- Follow [@awkweb](https://twitter.com/awkweb) on Twitter for project updates\n- Sign the [guestbook](https://github.com/tmm/wagmi/discussions/2)\n- Share [your project/organization](https://github.com/tmm/wagmi/discussions/201) that uses wagmi\n\n## Support\n\n- awkweb.eth\n- [GitHub Sponsors](https://github.com/sponsors/tmm)\n- [Gitcoin Grant](https://gitcoin.co/grants/4493/wagmi-react-hooks-library-for-ethereum)\n\n## Thanks\n\n- [ricmoo.eth](https://twitter.com/ricmoo) for creating and continued work on [ethers.js](https://github.com/ethers-io/ethers.js)\n- [Mirror](https://mirror.xyz) for creating space to do good work\n\n## License\n\nMIT.\n\n<br />\n\nwagmi\n"
61
+ "readme": "# wagmi [![Version](https://img.shields.io/npm/v/wagmi)](https://www.npmjs.com/package/wagmi) [![Downloads](https://img.shields.io/npm/dm/wagmi)](https://www.npmjs.com/package/wagmi) [![Sponsors](https://img.shields.io/github/sponsors/tmm)](https://github.com/sponsors/tmm)\n\nReact Hooks library for Ethereum, built on [ethers.js](https://github.com/ethers-io/ethers.js).\n\n## Features\n\n- 🚀 20+ hooks for working with wallets, ENS, contracts, transactions, signing, etc.\n- 💼 Built-in wallet connectors for MetaMask, WalletConnect, and Coinbase Wallet\n- 🌀 Auto-refresh data on wallet and network changes\n- 🦄 TypeScript ready\n- 💨 Zero-dependencies (besides ethers.js peer dependency)\n- 🌳 Test suite and documentation\n- 📖 MIT License\n\n## Documentation\n\nVisit https://wagmi.sh to view the full documentation.\n\n## Usage\n\n1. Install the dependencies.\n\n```bash\nnpm add wagmi ethers\n```\n\n2. Wrap your app with the `Provider` component.\n\n```tsx\nimport { Provider } from 'wagmi'\n\nconst App = () => (\n <Provider>\n <YourRoutes />\n </Provider>\n)\n```\n\n3. Use hooks.\n\n```tsx\nimport { useAccount } from 'wagmi'\n\nconst Page = () => {\n const [{ data, error, loading }, disconnect] = useAccount({\n fetchEns: true,\n })\n\n return ...\n}\n```\n\nEvery component inside the `Provider` is set up with the default `InjectedConnector` for connecting wallets and ethers.js [Default Provider](https://docs.ethers.io/v5/api/providers/#providers-getDefaultProvider) for fetching data.\n\nWant to learn more? Check out the [guides](https://wagmi-xyz.vercel.app/guides/connect-wallet) or browse the [API docs](https://wagmi-xyz.vercel.app/docs/provider).\n\n## Community\n\n- Join the [discussions on GitHub](https://github.com/tmm/wagmi/discussions)\n- Follow [@awkweb](https://twitter.com/awkweb) on Twitter for project updates\n- Sign the [guestbook](https://github.com/tmm/wagmi/discussions/2)\n- Share [your project/organization](https://github.com/tmm/wagmi/discussions/201) that uses wagmi\n\n## Support\n\n- awkweb.eth\n- [GitHub Sponsors](https://github.com/sponsors/tmm)\n- [Gitcoin Grant](https://gitcoin.co/grants/4493/wagmi-react-hooks-library-for-ethereum)\n\n## Thanks\n\n- [ricmoo.eth](https://twitter.com/ricmoo) for creating and continued work on [ethers.js](https://github.com/ethers-io/ethers.js)\n- [Mirror](https://mirror.xyz) for creating space to do good work\n\n## License\n\nMIT.\n\n<br />\n\nwagmi\n"
63
62
  }