@mezo-org/passport 0.5.2-dev.4 → 0.5.2-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/src/hooks/index.d.ts +1 -1
  2. package/dist/src/hooks/index.d.ts.map +1 -1
  3. package/dist/src/hooks/index.js +1 -1
  4. package/dist/src/hooks/index.js.map +1 -1
  5. package/dist/src/hooks/useAssetsConversionRates.d.ts.map +1 -1
  6. package/dist/src/hooks/useAssetsConversionRates.js +36 -9
  7. package/dist/src/hooks/useAssetsConversionRates.js.map +1 -1
  8. package/dist/src/hooks/useBorrowData.d.ts +15 -0
  9. package/dist/src/hooks/useBorrowData.d.ts.map +1 -1
  10. package/dist/src/hooks/useBorrowData.js +25 -3
  11. package/dist/src/hooks/useBorrowData.js.map +1 -1
  12. package/dist/src/hooks/useTokensBalances.d.ts.map +1 -1
  13. package/dist/src/hooks/useTokensBalances.js +5 -7
  14. package/dist/src/hooks/useTokensBalances.js.map +1 -1
  15. package/dist/src/lib/contracts/index.d.ts +1 -1
  16. package/dist/src/lib/contracts/index.d.ts.map +1 -1
  17. package/dist/src/lib/contracts/index.js +1 -0
  18. package/dist/src/lib/contracts/index.js.map +1 -1
  19. package/dist/src/lib/contracts/priceOracle.d.ts +43 -0
  20. package/dist/src/lib/contracts/priceOracle.d.ts.map +1 -0
  21. package/dist/src/lib/contracts/priceOracle.js +52 -0
  22. package/dist/src/lib/contracts/priceOracle.js.map +1 -0
  23. package/package.json +1 -1
  24. package/src/hooks/index.ts +1 -0
  25. package/src/hooks/useAssetsConversionRates.ts +43 -10
  26. package/src/hooks/useBorrowData.ts +27 -5
  27. package/src/hooks/useTokensBalances.ts +5 -8
  28. package/src/lib/contracts/index.ts +2 -0
  29. package/src/lib/contracts/priceOracle.ts +53 -0
  30. package/dist/src/hooks/useCollateralPrice.d.ts +0 -17
  31. package/dist/src/hooks/useCollateralPrice.d.ts.map +0 -1
  32. package/dist/src/hooks/useCollateralPrice.js +0 -56
  33. package/dist/src/hooks/useCollateralPrice.js.map +0 -1
  34. package/src/hooks/useCollateralPrice.ts +0 -64
@@ -10,7 +10,7 @@ export * from "./useSignInWithDiscord";
10
10
  export * from "./useSignInWithWallet";
11
11
  export * from "./useSignOut";
12
12
  export * from "./useSignUpWithWallet";
13
- export { useInvalidateTokensBalances, useResetTokensBalances, } from "./useTokensBalances";
13
+ export { useTokensBalances, useInvalidateTokensBalances, useResetTokensBalances, } from "./useTokensBalances";
14
14
  export * from "./useUpdateMezoId";
15
15
  export * from "./useValidateMezoId";
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
@@ -10,7 +10,7 @@ export * from "./useSignInWithDiscord";
10
10
  export * from "./useSignInWithWallet";
11
11
  export * from "./useSignOut";
12
12
  export * from "./useSignUpWithWallet";
13
- export { useInvalidateTokensBalances, useResetTokensBalances, } from "./useTokensBalances";
13
+ export { useTokensBalances, useInvalidateTokensBalances, useResetTokensBalances, } from "./useTokensBalances";
14
14
  export * from "./useUpdateMezoId";
15
15
  export * from "./useValidateMezoId";
16
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAssetsConversionRates.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAK1C,eAAO,MAAM,SAAS,mCAAmC,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB;;;;;;UA4BvC"}
1
+ {"version":3,"file":"useAssetsConversionRates.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAK1C,eAAO,MAAM,SAAS,mCAAmC,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB;;;;;;UAwDvC"}
@@ -1,8 +1,13 @@
1
1
  import { useQuery } from "@tanstack/react-query";
2
+ import { useConfig } from "wagmi";
3
+ import { readContract } from "wagmi/actions";
2
4
  import { parseUnits } from "viem";
3
5
  import { ONE_SECOND_MS } from "../utils/time";
4
6
  import { usePortalApiClient } from "./usePortalApiClient";
5
- import { useCollateralPrice } from "./useCollateralPrice";
7
+ import { priceOracleContract } from "../lib/contracts";
8
+ import { CHAIN_ID } from "../constants";
9
+ import { usePassportContext } from "./usePassportContext";
10
+ import { normalizePrecision } from "../utils/numbers";
6
11
  export const CONVERSION_RATE_DECIMALS = 18;
7
12
  // If the oracle has not been updated in at least 60 seconds, it is stale.
8
13
  const MAX_PRICE_DELAY = 60 * ONE_SECOND_MS;
@@ -17,24 +22,46 @@ export const QUERY_KEY = "passport.assetsConversionRates";
17
22
  */
18
23
  export function useAssetsConversionRates() {
19
24
  const portalApiClient = usePortalApiClient();
20
- const { data: collateralPriceData } = useCollateralPrice();
21
- const collateralPrice = collateralPriceData?.toString();
25
+ const { environment = "mainnet" } = usePassportContext();
26
+ const config = useConfig();
22
27
  return useQuery({
23
- queryKey: [QUERY_KEY, collateralPrice],
24
- queryFn: async () => Promise.all([portalApiClient.getPortalStatistics()]),
25
- enabled: !!collateralPrice,
26
- select: ([portalStatistics]) => {
28
+ queryKey: [QUERY_KEY],
29
+ queryFn: async () => Promise.all([
30
+ portalApiClient.getPortalStatistics(),
31
+ readContract(config, {
32
+ ...priceOracleContract,
33
+ functionName: "latestRoundData",
34
+ chainId: CHAIN_ID[environment],
35
+ }),
36
+ ]),
37
+ select: ([portalStatistics, btcPriceData]) => {
27
38
  const tTokenConversionRate = portalStatistics.tTokenPrice;
39
+ const [, btcConversionRate] = btcPriceData;
28
40
  const tPrice = parseUnits(tTokenConversionRate.toString(), CONVERSION_RATE_DECIMALS);
41
+ const btcPrice = normalizePrecision(btcConversionRate, CONVERSION_RATE_DECIMALS);
29
42
  return {
30
43
  rates: {
31
44
  mT: tPrice,
32
- BTC: BigInt(collateralPrice),
45
+ BTC: btcPrice,
33
46
  },
34
47
  decimals: CONVERSION_RATE_DECIMALS,
35
48
  };
36
49
  },
37
- refetchInterval: MAX_PRICE_DELAY,
50
+ refetchInterval: ({ state }) => {
51
+ if (!state.data)
52
+ return MAX_PRICE_DELAY;
53
+ const [, btcPriceData] = state.data;
54
+ const [, , , updatedAt] = btcPriceData;
55
+ if (!updatedAt)
56
+ return MAX_PRICE_DELAY;
57
+ const age = Date.now() - Number(updatedAt) * 1000;
58
+ return age > MAX_PRICE_DELAY
59
+ ? // If the data is stale, we want to refetch as soon as possible, but
60
+ // not faster than once per second, to avoid excessive requests.
61
+ // Math.max ensures the interval is at least 1 second.
62
+ Math.max(ONE_SECOND_MS, MAX_PRICE_DELAY - age)
63
+ : MAX_PRICE_DELAY - age;
64
+ },
38
65
  });
39
66
  }
40
67
  //# sourceMappingURL=useAssetsConversionRates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAssetsConversionRates.js","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAA;AAE1C,0EAA0E;AAC1E,MAAM,eAAe,GAAG,EAAE,GAAG,aAAa,CAAA;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,gCAAgC,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;IAC5C,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAE1D,MAAM,eAAe,GAAG,mBAAmB,EAAE,QAAQ,EAAE,CAAA;IAEvD,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;QACtC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC,CAAC,eAAe;QAC1B,MAAM,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE;YAC7B,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,CAAA;YAEzD,MAAM,MAAM,GAAG,UAAU,CACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,wBAAwB,CACzB,CAAA;YAED,OAAO;gBACL,KAAK,EAAE;oBACL,EAAE,EAAE,MAAM;oBACV,GAAG,EAAE,MAAM,CAAC,eAAgB,CAAC;iBAC9B;gBACD,QAAQ,EAAE,wBAAwB;aACnC,CAAA;QACH,CAAC;QACD,eAAe,EAAE,eAAe;KACjC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"useAssetsConversionRates.js","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAA;AAE1C,0EAA0E;AAC1E,MAAM,eAAe,GAAG,EAAE,GAAG,aAAa,CAAA;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,gCAAgC,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;IAC5C,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAA;IACxD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,SAAS,CAAC;QACrB,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,OAAO,CAAC,GAAG,CAAC;YACV,eAAe,CAAC,mBAAmB,EAAE;YACrC,YAAY,CAAC,MAAM,EAAE;gBACnB,GAAG,mBAAmB;gBACtB,YAAY,EAAE,iBAAiB;gBAC/B,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC;aAC/B,CAAC;SACH,CAAC;QACJ,MAAM,EAAE,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,EAAE;YAC3C,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,CAAA;YACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC,GAAG,YAAY,CAAA;YAE1C,MAAM,MAAM,GAAG,UAAU,CACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,wBAAwB,CACzB,CAAA;YAED,MAAM,QAAQ,GAAG,kBAAkB,CACjC,iBAAiB,EACjB,wBAAwB,CACzB,CAAA;YAED,OAAO;gBACL,KAAK,EAAE;oBACL,EAAE,EAAE,MAAM;oBACV,GAAG,EAAE,QAAQ;iBACd;gBACD,QAAQ,EAAE,wBAAwB;aACnC,CAAA;QACH,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI;gBAAE,OAAO,eAAe,CAAA;YAEvC,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;YACnC,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,SAAS,CAAC,GAAG,YAAY,CAAA;YAEtC,IAAI,CAAC,SAAS;gBAAE,OAAO,eAAe,CAAA;YAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;YAEjD,OAAO,GAAG,GAAG,eAAe;gBAC1B,CAAC,CAAC,oEAAoE;oBACpE,gEAAgE;oBAChE,sDAAsD;oBACtD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,GAAG,GAAG,CAAC;gBAChD,CAAC,CAAC,eAAe,GAAG,GAAG,CAAA;QAC3B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -58,6 +58,21 @@ export declare function useBorrowData(queryOptions?: {}): import("wagmi").UseRea
58
58
  readonly address: `0x${string}`;
59
59
  readonly functionName: "MUSD_GAS_COMPENSATION";
60
60
  readonly chainId: number;
61
+ }, {
62
+ readonly abi: readonly [{
63
+ readonly inputs: readonly [];
64
+ readonly name: "fetchPrice";
65
+ readonly outputs: readonly [{
66
+ readonly internalType: "uint256";
67
+ readonly name: "";
68
+ readonly type: "uint256";
69
+ }];
70
+ readonly stateMutability: "view";
71
+ readonly type: "function";
72
+ }];
73
+ readonly address: `0x${string}`;
74
+ readonly functionName: "fetchPrice";
75
+ readonly chainId: number;
61
76
  }], true, {
62
77
  collateral: {
63
78
  value: bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"useBorrowData.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBorrowData.ts"],"names":[],"mappings":"AAwFA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0F9C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB;;EAatC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB;;EAajC"}
1
+ {"version":3,"file":"useBorrowData.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBorrowData.ts"],"names":[],"mappings":"AAuGA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiG9C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB;;EAatC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB;;EAajC"}
@@ -10,7 +10,6 @@ import { bigIntMax, normalizePrecision } from "../utils/numbers";
10
10
  import useWalletAccount from "./useWalletAccount";
11
11
  import { getAsset } from "../utils/assets";
12
12
  import { convertToUsd } from "../utils/currency";
13
- import { useCollateralPrice } from "./useCollateralPrice";
14
13
  const DEBT_AND_COLL_PRECISION = 18;
15
14
  // Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
16
15
  // support importing JSON as const yet so types cannot be inferred from the
@@ -78,6 +77,21 @@ const BORROWER_OPERATIONS_ABI = [
78
77
  type: "function",
79
78
  },
80
79
  ];
80
+ const PRICE_FEED_ABI = [
81
+ {
82
+ inputs: [],
83
+ name: "fetchPrice",
84
+ outputs: [
85
+ {
86
+ internalType: "uint256",
87
+ name: "",
88
+ type: "uint256",
89
+ },
90
+ ],
91
+ stateMutability: "view",
92
+ type: "function",
93
+ },
94
+ ];
81
95
  /**
82
96
  * Query hook for getting borrow data. Returns collateral and trove debt for the
83
97
  * connected account, based on it's evm address.
@@ -86,17 +100,18 @@ const BORROWER_OPERATIONS_ABI = [
86
100
  export function useBorrowData(queryOptions = {}) {
87
101
  const { environment = "mainnet" } = usePassportContext();
88
102
  const walletAccount = useWalletAccount();
89
- const { data: collateralPrice } = useCollateralPrice();
90
103
  const contractAddress = useMemo(() => {
91
104
  if (environment === "mainnet") {
92
105
  return {
93
106
  troveManager: mainnetBorrowContracts.TroveManager.address,
94
107
  borrowerOperations: mainnetBorrowContracts.BorrowerOperations.address,
108
+ priceFeed: mainnetBorrowContracts.PriceFeed.address,
95
109
  };
96
110
  }
97
111
  return {
98
112
  troveManager: testnetBorrowContracts.TroveManager.address,
99
113
  borrowerOperations: testnetBorrowContracts.BorrowerOperations.address,
114
+ priceFeed: testnetBorrowContracts.PriceFeed.address,
100
115
  };
101
116
  }, [environment]);
102
117
  const chainId = CHAIN_ID[environment];
@@ -117,9 +132,15 @@ export function useBorrowData(queryOptions = {}) {
117
132
  functionName: "MUSD_GAS_COMPENSATION",
118
133
  chainId,
119
134
  },
135
+ {
136
+ abi: PRICE_FEED_ABI,
137
+ address: contractAddress.priceFeed,
138
+ functionName: "fetchPrice",
139
+ chainId,
140
+ },
120
141
  ],
121
142
  query: {
122
- enabled: !!walletAccount.accountAddress && !!collateralPrice?.toString,
143
+ enabled: !!walletAccount.accountAddress,
123
144
  staleTime: 5 * ONE_MINUTE_MS,
124
145
  retry: 1,
125
146
  select: (data) => {
@@ -127,6 +148,7 @@ export function useBorrowData(queryOptions = {}) {
127
148
  throw new Error("No borrow data available");
128
149
  const [rawCollateral, principal, interest] = data[0].result;
129
150
  const gasCompensation = data[1].result;
151
+ const collateralPrice = data[2].result;
130
152
  const btcDetails = getAsset("BTC");
131
153
  const collateral = {
132
154
  value: rawCollateral,
@@ -1 +1 @@
1
- {"version":3,"file":"useBorrowData.js","sourceRoot":"","sources":["../../../src/hooks/useBorrowData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,uBAAuB,GAAG,EAAE,CAAA;AAElC,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAC9E,0BAA0B;AAC1B,qEAAqE;AAErE,MAAM,iBAAiB,GAAG;IACxB;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV,MAAM,uBAAuB,GAAG;IAC9B;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,YAAY,GAAG,EAAE;IAC7C,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAA;IACxD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEtD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACL,YAAY,EAAE,sBAAsB,CAAC,YAAY,CAAC,OAAO;gBACzD,kBAAkB,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,OAAO;aACtE,CAAA;QACH,CAAC;QACD,OAAO;YACL,YAAY,EAAE,sBAAsB,CAAC,YAAY,CAAC,OAAO;YACzD,kBAAkB,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,OAAO;SACtE,CAAA;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAErC,OAAO,gBAAgB,CAAC;QACtB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,iBAAiB;gBACtB,OAAO,EAAE,eAAe,CAAC,YAAY;gBACrC,YAAY,EAAE,sBAAsB;gBACpC,IAAI,EAAE,aAAa,CAAC,cAAc;oBAChC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC;oBAChC,CAAC,CAAC,CAAC,IAAsB,CAAC;gBAC5B,OAAO;aACR;YACD;gBACE,GAAG,EAAE,uBAAuB;gBAC5B,OAAO,EAAE,eAAe,CAAC,kBAAkB;gBAC3C,YAAY,EAAE,uBAAuB;gBACrC,OAAO;aACR;SACF;QACD,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,cAAc,IAAI,CAAC,CAAC,eAAe,EAAE,QAAQ;YACtE,SAAS,EAAE,CAAC,GAAG,aAAa;YAC5B,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;gBAE7C,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAO,CAAA;gBAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAO,CAAA;gBAEvC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAElC,MAAM,UAAU,GAAG;oBACjB,KAAK,EAAE,aAAa;oBACpB,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,SAAS,EAAE,WAAW,CAAC,aAAa,EAAE,uBAAuB,CAAC;oBAC9D,GAAG,EAAE,YAAY,CACf,aAAa,EACb,uBAAuB,EACvB,eAAgB,EAChB,uBAAuB,CACxB;iBACF,CAAA;gBAED,MAAM,cAAc,GAAG,SAAS,CAC9B,kBAAkB,CAChB,SAAS,GAAG,QAAQ,GAAG,eAAe,EACtC,uBAAuB,CACxB,EACD,EAAE,CACH,CAAA;gBACD,MAAM,kBAAkB,GAAG,WAAW,CACpC,cAAc,EACd,uBAAuB,CACxB,CAAA;gBAED,MAAM,SAAS,GAAG;oBAChB,KAAK,EAAE,cAAc;oBACrB,SAAS,EAAE,kBAAkB;iBAC9B,CAAA;gBAED,OAAO;oBACL,UAAU;oBACV,SAAS;iBACV,CAAA;YACH,CAAC;YACD,GAAG,YAAY;SAChB;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;IAEpC,MAAM,2BAA2B,GAAG,WAAW,CAC7C,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,EACjD,CAAC,WAAW,EAAE,QAAQ,CAAC,CACxB,CAAA;IAED,OAAO;QACL,oBAAoB,EAAE,2BAA2B;KAClD,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;IAEpC,MAAM,sBAAsB,GAAG,WAAW,CACxC,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,EAC5C,CAAC,WAAW,EAAE,QAAQ,CAAC,CACxB,CAAA;IAED,OAAO;QACL,eAAe,EAAE,sBAAsB;KACxC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"useBorrowData.js","sourceRoot":"","sources":["../../../src/hooks/useBorrowData.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokensBalances.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAEL,cAAc,EAEf,MAAM,kBAAkB,CAAA;AAmBzB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;EAoBH,CAAA;AAgBxB,KAAK,iCAAiC,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI;IACnE,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,YAAY,CAAC,EAAE,IAAI,CACjB,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,EAChD,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAC9C,CAAA;CACF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAC1D,OAAO,GAAE,iCAAiC,CAAC,CAAC,CAAM,kGA4HnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B;;EAS1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB;;EASrC"}
1
+ {"version":3,"file":"useTokensBalances.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAEL,cAAc,EAEf,MAAM,kBAAkB,CAAA;AAkBzB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;EAoBH,CAAA;AAgBxB,KAAK,iCAAiC,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI;IACnE,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,YAAY,CAAC,EAAE,IAAI,CACjB,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,EAChD,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAC9C,CAAA;CACF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAC1D,OAAO,GAAE,iCAAiC,CAAC,CAAC,CAAM,kGA0HnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B;;EAS1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB;;EASrC"}
@@ -1,9 +1,8 @@
1
- import { useConfig } from "wagmi";
1
+ import { useAccount, useConfig } from "wagmi";
2
2
  import { formatUnits } from "viem";
3
3
  import { useQuery, useQueryClient, } from "@tanstack/react-query";
4
4
  import { getBalance, readContracts } from "wagmi/actions";
5
5
  import { mainnetTokenContracts, testnetTokenContracts, } from "../lib/contracts";
6
- import useWalletAccount from "./useWalletAccount";
7
6
  import { getAsset, isBitcoinLikeCryptoAsset, isTTokenCryptoAsset, } from "../utils/assets";
8
7
  import { convertToUsd } from "../utils/currency";
9
8
  import { CHAIN_ID, mezoMainnet, mezoTestnet } from "../constants";
@@ -69,7 +68,7 @@ const TOKEN_BALANCES_QUERY_KEY = "passport.tokenBalances";
69
68
  */
70
69
  export function useTokensBalances(options = {}) {
71
70
  const { tokens = BALANCE_TOKENS, ...restQueryOptions } = options;
72
- const walletAccount = useWalletAccount();
71
+ const { address: accountAddress } = useAccount();
73
72
  const config = useConfig();
74
73
  const { data: conversionRatesData } = useAssetsConversionRates();
75
74
  const { environment = "mainnet" } = usePassportContext();
@@ -77,17 +76,16 @@ export function useTokensBalances(options = {}) {
77
76
  return useQuery({
78
77
  queryKey: [
79
78
  TOKEN_BALANCES_QUERY_KEY,
80
- walletAccount?.accountAddress,
79
+ accountAddress,
81
80
  options.tokens,
82
81
  chainId,
83
82
  ],
84
- enabled: !!walletAccount?.accountAddress && !!conversionRatesData,
83
+ enabled: !!accountAddress && !!conversionRatesData,
85
84
  queryFn: async () => {
86
85
  const isMainnet = chainId === CHAIN_ID.mainnet;
87
86
  const contractsMap = isMainnet
88
87
  ? mainnetTokenContracts
89
88
  : testnetTokenContracts;
90
- const accountAddress = walletAccount?.accountAddress;
91
89
  if (!accountAddress) {
92
90
  throw new Error("Account address is not available.");
93
91
  }
@@ -122,7 +120,7 @@ export function useTokensBalances(options = {}) {
122
120
  const token = tokens[index];
123
121
  const { decimals, symbol } = getAsset(token);
124
122
  if (item.status === "failure") {
125
- throw new Error(`Failed to fetch balance of ${token} for ${walletAccount?.accountAddress}.`);
123
+ throw new Error(`Failed to fetch balance of ${token} for ${accountAddress}.`);
126
124
  }
127
125
  const tokenBalance = {
128
126
  value: item.result,
@@ -1 +1 @@
1
- {"version":3,"file":"useTokensBalances.js","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTokensBalances.js","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAO,WAAW,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,EACL,QAAQ,EACR,cAAc,GAEf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EACL,qBAAqB,EAErB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAC9E,0BAA0B;AAC1B,qEAAqE;AAErE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACqB,CAAA;AAExB,MAAM,cAAc,GAAqB;IACvC,QAAQ;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,OAAO;IACP,OAAO;IACP,WAAW;IACX,MAAM;CACP,CAAA;AAqBD,MAAM,wBAAwB,GAAG,wBAAwB,CAAA;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAgD,EAAE;IAElD,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAA;IAEhE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAA;IAEhD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,wBAAwB,EAAE,CAAA;IAEhE,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAExD,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAA;IAE3E,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE;YACR,wBAAwB;YACxB,cAAc;YACd,OAAO,CAAC,MAAM;YACd,OAAO;SACR;QACD,OAAO,EAAE,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,mBAAmB;QAClD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,SAAS,GAAG,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAA;YAC9C,MAAM,YAAY,GAAG,SAAS;gBAC5B,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,qBAAqB,CAAA;YAEzB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;YACtD,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;gBACvC,OAAO;oBACL,OAAO;oBACP,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,WAAoB;oBAClC,IAAI,EAAE,CAAC,cAAc,CAAC;oBACtB,OAAO;iBACR,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAC,GAAG,CAAC;gBACjB,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;gBAC/C,aAAa,CAAC,MAAM,EAAE;oBACpB,SAAS,EAAE,cAAc;iBAC1B,CAAC;aACH,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAA;YAC7C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;YAC5D,CAAC;YAED,MAAM,gBAAgB,GAAG;gBACvB,GAAG,UAAU;gBACb,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM;gBAC9B,GAAG,EAAE,YAAY,CACf,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,QAAQ,EACnB,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAC7B,mBAAmB,CAAC,QAAQ,CAC7B;aACF,CAAA;YAED,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAClE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAE5C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,QAAQ,cAAc,GAAG,CAC7D,CAAA;gBACH,CAAC;gBAED,MAAM,YAAY,GAA8B;oBAC9C,KAAK,EAAE,IAAI,CAAC,MAAM;oBAClB,QAAQ;oBACR,MAAM;oBACN,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;iBAC9C,CAAA;gBAED,IAAI,GAAG,GAAG;oBACR,KAAK,EAAE,kBAAkB,CACvB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,QAAQ,EACrB,mBAAmB,CAAC,QAAQ,CAC7B;oBACD,SAAS,EAAE,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC;iBAClE,CAAA;gBACD,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClD,GAAG,GAAG,YAAY,CAChB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,QAAQ,EACrB,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAC7B,mBAAmB,CAAC,QAAQ,CAC7B,CAAA;gBACH,CAAC;gBACD,IAAI,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7C,GAAG,GAAG,YAAY,CAChB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,QAAQ,EACrB,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAC5B,mBAAmB,CAAC,QAAQ,CAC7B,CAAA;gBACH,CAAC;gBAED,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,CAAA;YACjC,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,gBAAgB,EAAE,GAAG,oBAAoB,CAAC,CAAC,MAAM,CACvD,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACf,GAAG,GAAG;gBACN,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;aACtB,CAAC,EACF,EAA6C,CAC9C,CAAA;QACH,CAAC;QACD,GAAG,gBAAgB;KACpB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAC3C,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAA;IAEzE,OAAO;QACL,wBAAwB,EAAE,+BAA+B;KAC1D,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CACrC,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAA;IAEpE,OAAO;QACL,kBAAkB,EAAE,yBAAyB;KAC9C,CAAA;AACH,CAAC"}
@@ -9,5 +9,5 @@ export declare const testnetTokenContracts: ContractsMap<MezoChainToken>;
9
9
  export declare const mainnetTokenContracts: ContractsMap<MezoChainToken>;
10
10
  export declare const mainnetBorrowContracts: ContractsMap<MezoBorrowContract>;
11
11
  export declare const testnetBorrowContracts: ContractsMap<MezoBorrowContract>;
12
- export {};
12
+ export { default as priceOracleContract } from "./priceOracle";
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,IAAI,GACJ,OAAO,GACP,OAAO,GACP,OAAO,GACP,WAAW,GACX,MAAM,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,oBAAoB,GACpB,WAAW,CAAA;AAEf,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAC1C,CAAC,EACD;IACE,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,CACF,CAAA;AAED,eAAO,MAAM,qBAAqB,EAYlB,YAAY,CAAC,cAAc,CAAC,CAAA;AAE5C,eAAO,MAAM,qBAAqB,EAYlB,YAAY,CAAC,cAAc,CAAC,CAAA;AAE5C,eAAO,MAAM,sBAAsB,EAInB,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAEhD,eAAO,MAAM,sBAAsB,EAInB,YAAY,CAAC,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,IAAI,GACJ,OAAO,GACP,OAAO,GACP,OAAO,GACP,WAAW,GACX,MAAM,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,oBAAoB,GACpB,WAAW,CAAA;AAEf,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAC1C,CAAC,EACD;IACE,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,CACF,CAAA;AAED,eAAO,MAAM,qBAAqB,EAYlB,YAAY,CAAC,cAAc,CAAC,CAAA;AAE5C,eAAO,MAAM,qBAAqB,EAYlB,YAAY,CAAC,cAAc,CAAC,CAAA;AAE5C,eAAO,MAAM,sBAAsB,EAInB,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAEhD,eAAO,MAAM,sBAAsB,EAInB,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAA"}
@@ -62,4 +62,5 @@ export const testnetBorrowContracts = {
62
62
  BorrowerOperations: borrowerOperationsTestnet,
63
63
  PriceFeed: priceFeedTestnet,
64
64
  };
65
+ export { default as priceOracleContract } from "./priceOracle";
65
66
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,UAAU,MAAM,yDAAyD,CAAA;AAChF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,cAAc,MAAM,6DAA6D,CAAA;AACxF,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,QAAQ,MAAM,uDAAuD,CAAA;AAC5E,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,eAAe,MAAM,8DAA8D,CAAA;AAC1F,OAAO,WAAW,MAAM,wDAAwD,CAAA;AAChF,OAAO,mBAAmB,MAAM,gEAAgE,CAAA;AAChG,OAAO,yBAAyB,MAAM,sEAAsE,CAAA;AAE5G,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,UAAU,MAAM,yDAAyD,CAAA;AAChF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,cAAc,MAAM,6DAA6D,CAAA;AACxF,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,QAAQ,MAAM,uDAAuD,CAAA;AAC5E,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,eAAe,MAAM,8DAA8D,CAAA;AAC1F,OAAO,WAAW,MAAM,wDAAwD,CAAA;AAChF,OAAO,mBAAmB,MAAM,gEAAgE,CAAA;AAChG,OAAO,yBAAyB,MAAM,sEAAsE,CAAA;AAC5G,OAAO,SAAS,MAAM,6DAA6D,CAAA;AACnF,OAAO,gBAAgB,MAAM,6DAA6D,CAAA;AA8B1F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,WAAW;CACyB,CAAA;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,WAAW;CACyB,CAAA;AAE5C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,SAAS,EAAE,SAAS;CAC0B,CAAA;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,SAAS,EAAE,gBAAgB;CACmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,UAAU,MAAM,yDAAyD,CAAA;AAChF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,cAAc,MAAM,6DAA6D,CAAA;AACxF,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,QAAQ,MAAM,uDAAuD,CAAA;AAC5E,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,eAAe,MAAM,8DAA8D,CAAA;AAC1F,OAAO,WAAW,MAAM,wDAAwD,CAAA;AAChF,OAAO,mBAAmB,MAAM,gEAAgE,CAAA;AAChG,OAAO,yBAAyB,MAAM,sEAAsE,CAAA;AAE5G,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,UAAU,MAAM,yDAAyD,CAAA;AAChF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,cAAc,MAAM,6DAA6D,CAAA;AACxF,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,QAAQ,MAAM,uDAAuD,CAAA;AAC5E,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,eAAe,MAAM,8DAA8D,CAAA;AAC1F,OAAO,WAAW,MAAM,wDAAwD,CAAA;AAChF,OAAO,mBAAmB,MAAM,gEAAgE,CAAA;AAChG,OAAO,yBAAyB,MAAM,sEAAsE,CAAA;AAC5G,OAAO,SAAS,MAAM,6DAA6D,CAAA;AACnF,OAAO,gBAAgB,MAAM,6DAA6D,CAAA;AA8B1F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,WAAW;CACyB,CAAA;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,WAAW;CACyB,CAAA;AAE5C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,SAAS,EAAE,SAAS;CAC0B,CAAA;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,SAAS,EAAE,gBAAgB;CACmB,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { Address } from "viem";
2
+ declare const _default: {
3
+ address: Address;
4
+ abi: readonly [{
5
+ readonly inputs: readonly [];
6
+ readonly name: "decimals";
7
+ readonly outputs: readonly [{
8
+ readonly internalType: "uint8";
9
+ readonly name: "";
10
+ readonly type: "uint8";
11
+ }];
12
+ readonly stateMutability: "view";
13
+ readonly type: "function";
14
+ }, {
15
+ readonly inputs: readonly [];
16
+ readonly name: "latestRoundData";
17
+ readonly outputs: readonly [{
18
+ readonly internalType: "uint80";
19
+ readonly name: "roundId";
20
+ readonly type: "uint80";
21
+ }, {
22
+ readonly internalType: "int256";
23
+ readonly name: "answer";
24
+ readonly type: "int256";
25
+ }, {
26
+ readonly internalType: "uint256";
27
+ readonly name: "startedAt";
28
+ readonly type: "uint256";
29
+ }, {
30
+ readonly internalType: "uint256";
31
+ readonly name: "updatedAt";
32
+ readonly type: "uint256";
33
+ }, {
34
+ readonly internalType: "uint80";
35
+ readonly name: "answeredInRound";
36
+ readonly type: "uint80";
37
+ }];
38
+ readonly stateMutability: "view";
39
+ readonly type: "function";
40
+ }];
41
+ };
42
+ export default _default;
43
+ //# sourceMappingURL=priceOracle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceOracle.d.ts","sourceRoot":"","sources":["../../../../src/lib/contracts/priceOracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;;aAG6B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AADlE,wBAkDC"}
@@ -0,0 +1,52 @@
1
+ export default {
2
+ address: "0x7b7c000000000000000000000000000000000015",
3
+ abi: [
4
+ {
5
+ inputs: [],
6
+ name: "decimals",
7
+ outputs: [
8
+ {
9
+ internalType: "uint8",
10
+ name: "",
11
+ type: "uint8",
12
+ },
13
+ ],
14
+ stateMutability: "view",
15
+ type: "function",
16
+ },
17
+ {
18
+ inputs: [],
19
+ name: "latestRoundData",
20
+ outputs: [
21
+ {
22
+ internalType: "uint80",
23
+ name: "roundId",
24
+ type: "uint80",
25
+ },
26
+ {
27
+ internalType: "int256",
28
+ name: "answer",
29
+ type: "int256",
30
+ },
31
+ {
32
+ internalType: "uint256",
33
+ name: "startedAt",
34
+ type: "uint256",
35
+ },
36
+ {
37
+ internalType: "uint256",
38
+ name: "updatedAt",
39
+ type: "uint256",
40
+ },
41
+ {
42
+ internalType: "uint80",
43
+ name: "answeredInRound",
44
+ type: "uint80",
45
+ },
46
+ ],
47
+ stateMutability: "view",
48
+ type: "function",
49
+ },
50
+ ],
51
+ };
52
+ //# sourceMappingURL=priceOracle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceOracle.js","sourceRoot":"","sources":["../../../../src/lib/contracts/priceOracle.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,OAAO,EAAE,4CAAuD;IAChE,GAAG,EAAE;QACH;YACE,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP;oBACE,YAAY,EAAE,OAAO;oBACrB,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,OAAO;iBACd;aACF;YACD,eAAe,EAAE,MAAM;YACvB,IAAI,EAAE,UAAU;SACjB;QACD;YACE,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE;gBACP;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,QAAQ;iBACf;gBACD;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;iBACf;gBACD;oBACE,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;iBAChB;gBACD;oBACE,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;iBAChB;gBACD;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,eAAe,EAAE,MAAM;YACvB,IAAI,EAAE,UAAU;SACjB;KACO;CACX,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mezo-org/passport",
3
- "version": "0.5.2-dev.4",
3
+ "version": "0.5.2-dev.6",
4
4
  "main": "dist/src/index.js",
5
5
  "license": "GPL-3.0-only",
6
6
  "scripts": {
@@ -18,6 +18,7 @@ export * from "./useSignInWithWallet"
18
18
  export * from "./useSignOut"
19
19
  export * from "./useSignUpWithWallet"
20
20
  export {
21
+ useTokensBalances,
21
22
  useInvalidateTokensBalances,
22
23
  useResetTokensBalances,
23
24
  } from "./useTokensBalances"
@@ -1,8 +1,13 @@
1
1
  import { useQuery } from "@tanstack/react-query"
2
+ import { useConfig } from "wagmi"
3
+ import { readContract } from "wagmi/actions"
2
4
  import { parseUnits } from "viem"
3
5
  import { ONE_SECOND_MS } from "../utils/time"
4
6
  import { usePortalApiClient } from "./usePortalApiClient"
5
- import { useCollateralPrice } from "./useCollateralPrice"
7
+ import { priceOracleContract } from "../lib/contracts"
8
+ import { CHAIN_ID } from "../constants"
9
+ import { usePassportContext } from "./usePassportContext"
10
+ import { normalizePrecision } from "../utils/numbers"
6
11
 
7
12
  export const CONVERSION_RATE_DECIMALS = 18
8
13
 
@@ -21,30 +26,58 @@ export const QUERY_KEY = "passport.assetsConversionRates"
21
26
  */
22
27
  export function useAssetsConversionRates() {
23
28
  const portalApiClient = usePortalApiClient()
24
- const { data: collateralPriceData } = useCollateralPrice()
25
-
26
- const collateralPrice = collateralPriceData?.toString()
29
+ const { environment = "mainnet" } = usePassportContext()
30
+ const config = useConfig()
27
31
 
28
32
  return useQuery({
29
- queryKey: [QUERY_KEY, collateralPrice],
30
- queryFn: async () => Promise.all([portalApiClient.getPortalStatistics()]),
31
- enabled: !!collateralPrice,
32
- select: ([portalStatistics]) => {
33
+ queryKey: [QUERY_KEY],
34
+ queryFn: async () =>
35
+ Promise.all([
36
+ portalApiClient.getPortalStatistics(),
37
+ readContract(config, {
38
+ ...priceOracleContract,
39
+ functionName: "latestRoundData",
40
+ chainId: CHAIN_ID[environment],
41
+ }),
42
+ ]),
43
+ select: ([portalStatistics, btcPriceData]) => {
33
44
  const tTokenConversionRate = portalStatistics.tTokenPrice
45
+ const [, btcConversionRate] = btcPriceData
34
46
 
35
47
  const tPrice = parseUnits(
36
48
  tTokenConversionRate.toString(),
37
49
  CONVERSION_RATE_DECIMALS,
38
50
  )
39
51
 
52
+ const btcPrice = normalizePrecision(
53
+ btcConversionRate,
54
+ CONVERSION_RATE_DECIMALS,
55
+ )
56
+
40
57
  return {
41
58
  rates: {
42
59
  mT: tPrice,
43
- BTC: BigInt(collateralPrice!),
60
+ BTC: btcPrice,
44
61
  },
45
62
  decimals: CONVERSION_RATE_DECIMALS,
46
63
  }
47
64
  },
48
- refetchInterval: MAX_PRICE_DELAY,
65
+ refetchInterval: ({ state }) => {
66
+ if (!state.data) return MAX_PRICE_DELAY
67
+
68
+ const [, btcPriceData] = state.data
69
+ const [, , , updatedAt] = btcPriceData
70
+
71
+ if (!updatedAt) return MAX_PRICE_DELAY
72
+
73
+ const age = Date.now() - Number(updatedAt) * 1000
74
+
75
+ return age > MAX_PRICE_DELAY
76
+ ? // If the data is stale, we want to refetch as soon as possible, but
77
+ // not faster than once per second, to avoid excessive requests.
78
+ // Math.max ensures the interval is at least 1 second.
79
+ Math.max(ONE_SECOND_MS, MAX_PRICE_DELAY - age)
80
+ : MAX_PRICE_DELAY - age
81
+ },
49
82
  })
50
83
  }
@@ -13,7 +13,6 @@ import { bigIntMax, normalizePrecision } from "../utils/numbers"
13
13
  import useWalletAccount from "./useWalletAccount"
14
14
  import { getAsset } from "../utils/assets"
15
15
  import { convertToUsd } from "../utils/currency"
16
- import { useCollateralPrice } from "./useCollateralPrice"
17
16
 
18
17
  const DEBT_AND_COLL_PRECISION = 18
19
18
 
@@ -86,6 +85,22 @@ const BORROWER_OPERATIONS_ABI = [
86
85
  },
87
86
  ] as const
88
87
 
88
+ const PRICE_FEED_ABI = [
89
+ {
90
+ inputs: [],
91
+ name: "fetchPrice",
92
+ outputs: [
93
+ {
94
+ internalType: "uint256",
95
+ name: "",
96
+ type: "uint256",
97
+ },
98
+ ],
99
+ stateMutability: "view",
100
+ type: "function",
101
+ },
102
+ ] as const
103
+
89
104
  /**
90
105
  * Query hook for getting borrow data. Returns collateral and trove debt for the
91
106
  * connected account, based on it's evm address.
@@ -95,18 +110,18 @@ export function useBorrowData(queryOptions = {}) {
95
110
  const { environment = "mainnet" } = usePassportContext()
96
111
  const walletAccount = useWalletAccount()
97
112
 
98
- const { data: collateralPrice } = useCollateralPrice()
99
-
100
113
  const contractAddress = useMemo(() => {
101
114
  if (environment === "mainnet") {
102
115
  return {
103
116
  troveManager: mainnetBorrowContracts.TroveManager.address,
104
117
  borrowerOperations: mainnetBorrowContracts.BorrowerOperations.address,
118
+ priceFeed: mainnetBorrowContracts.PriceFeed.address,
105
119
  }
106
120
  }
107
121
  return {
108
122
  troveManager: testnetBorrowContracts.TroveManager.address,
109
123
  borrowerOperations: testnetBorrowContracts.BorrowerOperations.address,
124
+ priceFeed: testnetBorrowContracts.PriceFeed.address,
110
125
  }
111
126
  }, [environment])
112
127
 
@@ -129,9 +144,15 @@ export function useBorrowData(queryOptions = {}) {
129
144
  functionName: "MUSD_GAS_COMPENSATION",
130
145
  chainId,
131
146
  },
147
+ {
148
+ abi: PRICE_FEED_ABI,
149
+ address: contractAddress.priceFeed,
150
+ functionName: "fetchPrice",
151
+ chainId,
152
+ },
132
153
  ],
133
154
  query: {
134
- enabled: !!walletAccount.accountAddress && !!collateralPrice?.toString,
155
+ enabled: !!walletAccount.accountAddress,
135
156
  staleTime: 5 * ONE_MINUTE_MS,
136
157
  retry: 1,
137
158
  select: (data) => {
@@ -140,6 +161,7 @@ export function useBorrowData(queryOptions = {}) {
140
161
 
141
162
  const [rawCollateral, principal, interest] = data[0].result!
142
163
  const gasCompensation = data[1].result!
164
+ const collateralPrice = data[2].result!
143
165
 
144
166
  const btcDetails = getAsset("BTC")
145
167
 
@@ -151,7 +173,7 @@ export function useBorrowData(queryOptions = {}) {
151
173
  usd: convertToUsd(
152
174
  rawCollateral,
153
175
  DEBT_AND_COLL_PRECISION,
154
- collateralPrice!,
176
+ collateralPrice,
155
177
  DEBT_AND_COLL_PRECISION,
156
178
  ),
157
179
  }
@@ -1,4 +1,4 @@
1
- import { useConfig } from "wagmi"
1
+ import { useAccount, useConfig } from "wagmi"
2
2
  import { Abi, formatUnits } from "viem"
3
3
  import {
4
4
  useQuery,
@@ -11,7 +11,6 @@ import {
11
11
  MezoChainToken,
12
12
  testnetTokenContracts,
13
13
  } from "../lib/contracts"
14
- import useWalletAccount from "./useWalletAccount"
15
14
  import {
16
15
  getAsset,
17
16
  isBitcoinLikeCryptoAsset,
@@ -108,7 +107,7 @@ export function useTokensBalances<T extends MezoChainToken[]>(
108
107
  ) {
109
108
  const { tokens = BALANCE_TOKENS, ...restQueryOptions } = options
110
109
 
111
- const walletAccount = useWalletAccount()
110
+ const { address: accountAddress } = useAccount()
112
111
 
113
112
  const config = useConfig()
114
113
 
@@ -121,19 +120,17 @@ export function useTokensBalances<T extends MezoChainToken[]>(
121
120
  return useQuery({
122
121
  queryKey: [
123
122
  TOKEN_BALANCES_QUERY_KEY,
124
- walletAccount?.accountAddress,
123
+ accountAddress,
125
124
  options.tokens,
126
125
  chainId,
127
126
  ],
128
- enabled: !!walletAccount?.accountAddress && !!conversionRatesData,
127
+ enabled: !!accountAddress && !!conversionRatesData,
129
128
  queryFn: async () => {
130
129
  const isMainnet = chainId === CHAIN_ID.mainnet
131
130
  const contractsMap = isMainnet
132
131
  ? mainnetTokenContracts
133
132
  : testnetTokenContracts
134
133
 
135
- const accountAddress = walletAccount?.accountAddress
136
-
137
134
  if (!accountAddress) {
138
135
  throw new Error("Account address is not available.")
139
136
  }
@@ -179,7 +176,7 @@ export function useTokensBalances<T extends MezoChainToken[]>(
179
176
 
180
177
  if (item.status === "failure") {
181
178
  throw new Error(
182
- `Failed to fetch balance of ${token} for ${walletAccount?.accountAddress}.`,
179
+ `Failed to fetch balance of ${token} for ${accountAddress}.`,
183
180
  )
184
181
  }
185
182
 
@@ -95,3 +95,5 @@ export const testnetBorrowContracts = {
95
95
  BorrowerOperations: borrowerOperationsTestnet,
96
96
  PriceFeed: priceFeedTestnet,
97
97
  } as unknown as ContractsMap<MezoBorrowContract>
98
+
99
+ export { default as priceOracleContract } from "./priceOracle"
@@ -0,0 +1,53 @@
1
+ import { Address } from "viem"
2
+
3
+ export default {
4
+ address: "0x7b7c000000000000000000000000000000000015" as Address,
5
+ abi: [
6
+ {
7
+ inputs: [],
8
+ name: "decimals",
9
+ outputs: [
10
+ {
11
+ internalType: "uint8",
12
+ name: "",
13
+ type: "uint8",
14
+ },
15
+ ],
16
+ stateMutability: "view",
17
+ type: "function",
18
+ },
19
+ {
20
+ inputs: [],
21
+ name: "latestRoundData",
22
+ outputs: [
23
+ {
24
+ internalType: "uint80",
25
+ name: "roundId",
26
+ type: "uint80",
27
+ },
28
+ {
29
+ internalType: "int256",
30
+ name: "answer",
31
+ type: "int256",
32
+ },
33
+ {
34
+ internalType: "uint256",
35
+ name: "startedAt",
36
+ type: "uint256",
37
+ },
38
+ {
39
+ internalType: "uint256",
40
+ name: "updatedAt",
41
+ type: "uint256",
42
+ },
43
+ {
44
+ internalType: "uint80",
45
+ name: "answeredInRound",
46
+ type: "uint80",
47
+ },
48
+ ],
49
+ stateMutability: "view",
50
+ type: "function",
51
+ },
52
+ ] as const,
53
+ }
@@ -1,17 +0,0 @@
1
- /**
2
- * Query hook for getting borrow data. Returns collateral and trove debt for the
3
- * connected account, based on it's evm address.
4
- * @param queryOptions Query options passed to the underlying `useQuery` hook.
5
- */
6
- export declare function useCollateralPrice(queryOptions?: {}): import("wagmi").UseReadContractReturnType<readonly [{
7
- readonly inputs: readonly [];
8
- readonly name: "fetchPrice";
9
- readonly outputs: readonly [{
10
- readonly internalType: "uint256";
11
- readonly name: "";
12
- readonly type: "uint256";
13
- }];
14
- readonly stateMutability: "view";
15
- readonly type: "function";
16
- }], "fetchPrice", readonly [], bigint>;
17
- //# sourceMappingURL=useCollateralPrice.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCollateralPrice.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCollateralPrice.ts"],"names":[],"mappings":"AAiCA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,KAAK;;;;;;;;;;uCAyBnD"}
@@ -1,56 +0,0 @@
1
- import { useReadContract } from "wagmi";
2
- import { useMemo } from "react";
3
- import { ONE_MINUTE_MS } from "../utils/time";
4
- import { mainnetBorrowContracts, testnetBorrowContracts, } from "../lib/contracts";
5
- import { usePassportContext } from "./usePassportContext";
6
- import { CHAIN_ID } from "../constants";
7
- import useWalletAccount from "./useWalletAccount";
8
- // Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
9
- // support importing JSON as const yet so types cannot be inferred from the
10
- // imported contract. As a workaround there is minimal ABI definition that can
11
- // be asserted types from.
12
- // Ref: https://wagmi.sh/core/typescript#const-assert-abis-typed-data
13
- const PRICE_FEED_ABI = [
14
- {
15
- inputs: [],
16
- name: "fetchPrice",
17
- outputs: [
18
- {
19
- internalType: "uint256",
20
- name: "",
21
- type: "uint256",
22
- },
23
- ],
24
- stateMutability: "view",
25
- type: "function",
26
- },
27
- ];
28
- /**
29
- * Query hook for getting borrow data. Returns collateral and trove debt for the
30
- * connected account, based on it's evm address.
31
- * @param queryOptions Query options passed to the underlying `useQuery` hook.
32
- */
33
- export function useCollateralPrice(queryOptions = {}) {
34
- const { environment = "mainnet" } = usePassportContext();
35
- const walletAccount = useWalletAccount();
36
- const priceFeedContractAddress = useMemo(() => {
37
- if (environment === "mainnet") {
38
- return mainnetBorrowContracts.PriceFeed.address;
39
- }
40
- return testnetBorrowContracts.PriceFeed.address;
41
- }, [environment]);
42
- const chainId = CHAIN_ID[environment];
43
- return useReadContract({
44
- abi: PRICE_FEED_ABI,
45
- address: priceFeedContractAddress,
46
- functionName: "fetchPrice",
47
- chainId,
48
- query: {
49
- enabled: !!walletAccount.accountAddress,
50
- staleTime: 5 * ONE_MINUTE_MS,
51
- retry: 1,
52
- ...queryOptions,
53
- },
54
- });
55
- }
56
- //# sourceMappingURL=useCollateralPrice.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCollateralPrice.js","sourceRoot":"","sources":["../../../src/hooks/useCollateralPrice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AAEjD,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAC9E,0BAA0B;AAC1B,qEAAqE;AAErE,MAAM,cAAc,GAAG;IACrB;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAY,GAAG,EAAE;IAClD,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAA;IACxD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAA;QACjD,CAAC;QACD,OAAO,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAA;IACjD,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAErC,OAAO,eAAe,CAAC;QACrB,GAAG,EAAE,cAAc;QACnB,OAAO,EAAE,wBAAwB;QACjC,YAAY,EAAE,YAAY;QAC1B,OAAO;QACP,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,cAAc;YACvC,SAAS,EAAE,CAAC,GAAG,aAAa;YAC5B,KAAK,EAAE,CAAC;YACR,GAAG,YAAY;SAChB;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -1,64 +0,0 @@
1
- import { useReadContract } from "wagmi"
2
- import { useMemo } from "react"
3
- import { ONE_MINUTE_MS } from "../utils/time"
4
- import {
5
- mainnetBorrowContracts,
6
- testnetBorrowContracts,
7
- } from "../lib/contracts"
8
- import { usePassportContext } from "./usePassportContext"
9
- import { CHAIN_ID } from "../constants"
10
- import useWalletAccount from "./useWalletAccount"
11
-
12
- // Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
13
- // support importing JSON as const yet so types cannot be inferred from the
14
- // imported contract. As a workaround there is minimal ABI definition that can
15
- // be asserted types from.
16
- // Ref: https://wagmi.sh/core/typescript#const-assert-abis-typed-data
17
-
18
- const PRICE_FEED_ABI = [
19
- {
20
- inputs: [],
21
- name: "fetchPrice",
22
- outputs: [
23
- {
24
- internalType: "uint256",
25
- name: "",
26
- type: "uint256",
27
- },
28
- ],
29
- stateMutability: "view",
30
- type: "function",
31
- },
32
- ] as const
33
-
34
- /**
35
- * Query hook for getting borrow data. Returns collateral and trove debt for the
36
- * connected account, based on it's evm address.
37
- * @param queryOptions Query options passed to the underlying `useQuery` hook.
38
- */
39
- export function useCollateralPrice(queryOptions = {}) {
40
- const { environment = "mainnet" } = usePassportContext()
41
- const walletAccount = useWalletAccount()
42
-
43
- const priceFeedContractAddress = useMemo(() => {
44
- if (environment === "mainnet") {
45
- return mainnetBorrowContracts.PriceFeed.address
46
- }
47
- return testnetBorrowContracts.PriceFeed.address
48
- }, [environment])
49
-
50
- const chainId = CHAIN_ID[environment]
51
-
52
- return useReadContract({
53
- abi: PRICE_FEED_ABI,
54
- address: priceFeedContractAddress,
55
- functionName: "fetchPrice",
56
- chainId,
57
- query: {
58
- enabled: !!walletAccount.accountAddress,
59
- staleTime: 5 * ONE_MINUTE_MS,
60
- retry: 1,
61
- ...queryOptions,
62
- },
63
- })
64
- }