@mezo-org/passport 0.7.1 → 0.7.2-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { ApiClient } from "./client";
2
- type PortalStatistics = {
2
+ export type PortalStatistics = {
3
3
  btcPrice: number;
4
4
  ethPrice: number;
5
5
  tTokenPrice: number;
@@ -1 +1 @@
1
- {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../../src/api/portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,2BAA2B;;;CAGvC,CAAA;AAED,qBAAa,eAAgB,SAAQ,SAAS;gBAE1C,WAAW,GAAE,MAAM,OAAO,2BAAuC,EACjE,MAAM,CAAC,EAAE,MAAM;IAQX,mBAAmB;IAQnB,aAAa,CAAC,OAAO,EAAE,MAAM;CAUpC"}
1
+ {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../../src/api/portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,2BAA2B;;;CAGvC,CAAA;AAED,qBAAa,eAAgB,SAAQ,SAAS;gBAE1C,WAAW,GAAE,MAAM,OAAO,2BAAuC,EACjE,MAAM,CAAC,EAAE,MAAM;IAQX,mBAAmB;IAQnB,aAAa,CAAC,OAAO,EAAE,MAAM;CAUpC"}
@@ -1,3 +1,10 @@
1
+ export type AssetConversion = {
2
+ rates: {
3
+ mT: bigint;
4
+ BTC: bigint;
5
+ };
6
+ decimals: number;
7
+ };
1
8
  export declare const CONVERSION_RATE_DECIMALS = 18;
2
9
  export declare const QUERY_KEY = "passport.assetsConversionRates";
3
10
  /**
@@ -8,11 +15,5 @@ export declare const QUERY_KEY = "passport.assetsConversionRates";
8
15
  * @returns {}.isPending - Whether the request is pending.
9
16
  * @returns {}.isError - Whether there was an error fetching the price.
10
17
  */
11
- export declare function useAssetsConversionRates(): import("@tanstack/react-query").UseQueryResult<{
12
- rates: {
13
- mT: bigint;
14
- BTC: bigint;
15
- };
16
- decimals: number;
17
- }, Error>;
18
+ export declare function useAssetsConversionRates(): import("@tanstack/react-query").UseQueryResult<AssetConversion, Error>;
18
19
  //# sourceMappingURL=useAssetsConversionRates.d.ts.map
@@ -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;;;;;;UAuCvC"}
1
+ {"version":3,"file":"useAssetsConversionRates.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAK1C,eAAO,MAAM,SAAS,mCAAmC,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,2EA+CvC"}
@@ -1,3 +1,4 @@
1
+ import { useCallback } from "react";
1
2
  import { useQuery } from "@tanstack/react-query";
2
3
  import { parseUnits } from "viem";
3
4
  import { ONE_SECOND_MS } from "../utils/time";
@@ -19,6 +20,17 @@ export function useAssetsConversionRates() {
19
20
  const portalApiClient = usePortalApiClient();
20
21
  const { data: collateralPriceData } = useCollateralPrice();
21
22
  const collateralPrice = collateralPriceData?.toString();
23
+ const select = useCallback(([portalStatistics, btcPrice]) => {
24
+ const tTokenConversionRate = portalStatistics.tTokenPrice;
25
+ const tPrice = parseUnits(tTokenConversionRate.toString(), CONVERSION_RATE_DECIMALS);
26
+ return {
27
+ rates: {
28
+ mT: tPrice,
29
+ BTC: btcPrice,
30
+ },
31
+ decimals: CONVERSION_RATE_DECIMALS,
32
+ };
33
+ }, []);
22
34
  return useQuery({
23
35
  queryKey: [QUERY_KEY, collateralPrice],
24
36
  queryFn: () => {
@@ -33,17 +45,7 @@ export function useAssetsConversionRates() {
33
45
  ]);
34
46
  },
35
47
  enabled: !!collateralPrice,
36
- select: ([portalStatistics, btcPrice]) => {
37
- const tTokenConversionRate = portalStatistics.tTokenPrice;
38
- const tPrice = parseUnits(tTokenConversionRate.toString(), CONVERSION_RATE_DECIMALS);
39
- return {
40
- rates: {
41
- mT: tPrice,
42
- BTC: btcPrice,
43
- },
44
- decimals: CONVERSION_RATE_DECIMALS,
45
- };
46
- },
48
+ select,
47
49
  refetchInterval: MAX_PRICE_DELAY,
48
50
  });
49
51
  }
@@ -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,GAAG,EAAE;YACZ,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACvD,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC;gBACjB,eAAe,CAAC,mBAAmB,EAAE;gBACrC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACtB,OAAO,CAAC,mBAAmB,CAAC,CAAA;gBAC9B,CAAC,CAAwC;aAC1C,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,eAAe;QAC1B,MAAM,EAAE,CAAC,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAE,EAAE;YACvC,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,QAAQ;iBACd;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,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,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;AAQzD,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,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,CAAC,gBAAgB,EAAE,QAAQ,CAG3B,EAAmB,EAAE;QACpB,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,CAAA;QAEzD,MAAM,MAAM,GAAG,UAAU,CACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,wBAAwB,CACzB,CAAA;QAED,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAE,MAAM;gBACV,GAAG,EAAE,QAAQ;aACd;YACD,QAAQ,EAAE,wBAAwB;SACnC,CAAA;IACH,CAAC,EACD,EAAE,CACH,CAAA;IAED,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;QACtC,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACvD,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC;gBACjB,eAAe,CAAC,mBAAmB,EAAE;gBACrC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACtB,OAAO,CAAC,mBAAmB,CAAC,CAAA;gBAC9B,CAAC,CAAwC;aAC1C,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,eAAe;QAC1B,MAAM;QACN,eAAe,EAAE,eAAe;KACjC,CAAC,CAAA;AACJ,CAAC"}
@@ -3,62 +3,7 @@
3
3
  * connected account, based on it's evm address.
4
4
  * @param queryOptions Query options passed to the underlying `useQuery` hook.
5
5
  */
6
- export declare function useBorrowData(queryOptions?: {}): import("wagmi").UseReadContractsReturnType<readonly [{
7
- readonly abi: readonly [{
8
- readonly inputs: readonly [{
9
- readonly internalType: "address";
10
- readonly name: "_borrower";
11
- readonly type: "address";
12
- }];
13
- readonly name: "getEntireDebtAndColl";
14
- readonly outputs: readonly [{
15
- readonly internalType: "uint256";
16
- readonly name: "coll";
17
- readonly type: "uint256";
18
- }, {
19
- readonly internalType: "uint256";
20
- readonly name: "principal";
21
- readonly type: "uint256";
22
- }, {
23
- readonly internalType: "uint256";
24
- readonly name: "interest";
25
- readonly type: "uint256";
26
- }, {
27
- readonly internalType: "uint256";
28
- readonly name: "pendingCollateral";
29
- readonly type: "uint256";
30
- }, {
31
- readonly internalType: "uint256";
32
- readonly name: "pendingPrincipal";
33
- readonly type: "uint256";
34
- }, {
35
- readonly internalType: "uint256";
36
- readonly name: "pendingInterest";
37
- readonly type: "uint256";
38
- }];
39
- readonly stateMutability: "view";
40
- readonly type: "function";
41
- }];
42
- readonly address: `0x${string}`;
43
- readonly functionName: "getEntireDebtAndColl";
44
- readonly args: [`0x${string}`];
45
- readonly chainId: number;
46
- }, {
47
- readonly abi: readonly [{
48
- readonly inputs: readonly [];
49
- readonly name: "MUSD_GAS_COMPENSATION";
50
- readonly outputs: readonly [{
51
- readonly internalType: "uint256";
52
- readonly name: "";
53
- readonly type: "uint256";
54
- }];
55
- readonly stateMutability: "view";
56
- readonly type: "function";
57
- }];
58
- readonly address: `0x${string}`;
59
- readonly functionName: "MUSD_GAS_COMPENSATION";
60
- readonly chainId: number;
61
- }], true, {
6
+ export declare function useBorrowData(queryOptions?: {}): import("@tanstack/react-query").UseQueryResult<{
62
7
  collateral: {
63
8
  value: bigint;
64
9
  decimals: number;
@@ -73,7 +18,7 @@ export declare function useBorrowData(queryOptions?: {}): import("wagmi").UseRea
73
18
  value: bigint;
74
19
  formatted: string;
75
20
  };
76
- }>;
21
+ }, Error>;
77
22
  /**
78
23
  * Hook for for invalidating current user's borrow data. Can be used to
79
24
  * invalidate borrow data manually, which forces the data to be re-fetched.
@@ -1 +1 @@
1
- {"version":3,"file":"useBorrowData.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBorrowData.ts"],"names":[],"mappings":"AAuFA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8F9C;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":"AAyFA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,KAAK;;;;;;;;;;;;;;;UAoH9C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB;;EAWtC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB;;EAWjC"}
@@ -1,6 +1,7 @@
1
- import { useReadContracts } from "wagmi";
1
+ import { useConfig } from "wagmi";
2
+ import { readContracts } from "wagmi/actions";
2
3
  import { useCallback, useMemo } from "react";
3
- import { useQueryClient } from "@tanstack/react-query";
4
+ import { useQuery, useQueryClient } from "@tanstack/react-query";
4
5
  import { formatUnits } from "viem";
5
6
  import { mainnetBorrowContracts, testnetBorrowContracts, } from "../lib/contracts";
6
7
  import { usePassportContext } from "./usePassportContext";
@@ -11,6 +12,7 @@ import { getAsset } from "../utils/assets";
11
12
  import { convertToUsd } from "../utils/currency";
12
13
  import { useCollateralPrice } from "./useCollateralPrice";
13
14
  const DEBT_AND_COLL_PRECISION = 18;
15
+ const BORROW_DATA_QUERY_KEY = "passport.borrowData";
14
16
  // Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
15
17
  // support importing JSON as const yet so types cannot be inferred from the
16
18
  // imported contract. As a workaround there is minimal ABI definition that can
@@ -86,6 +88,7 @@ export function useBorrowData(queryOptions = {}) {
86
88
  const { environment = "mainnet", borrowDataRefetchInterval } = usePassportContext();
87
89
  const walletAccount = useWalletAccount();
88
90
  const { data: collateralPrice } = useCollateralPrice();
91
+ const config = useConfig();
89
92
  const contractAddress = useMemo(() => {
90
93
  if (environment === "mainnet") {
91
94
  return {
@@ -99,57 +102,61 @@ export function useBorrowData(queryOptions = {}) {
99
102
  };
100
103
  }, [environment]);
101
104
  const chainId = CHAIN_ID[environment];
102
- return useReadContracts({
103
- contracts: [
104
- {
105
- abi: TROVE_MANAGER_ABI,
106
- address: contractAddress.troveManager,
107
- functionName: "getEntireDebtAndColl",
108
- args: walletAccount.accountAddress
109
- ? [walletAccount.accountAddress]
110
- : ["0x"],
111
- chainId,
112
- },
113
- {
114
- abi: BORROWER_OPERATIONS_ABI,
115
- address: contractAddress.borrowerOperations,
116
- functionName: "MUSD_GAS_COMPENSATION",
117
- chainId,
118
- },
119
- ],
120
- query: {
121
- enabled: !!walletAccount.accountAddress && !!collateralPrice,
122
- retry: 1,
123
- select: (data) => {
124
- if (!data || data.some((item) => !item.result))
125
- throw new Error("No borrow data available");
126
- if (!collateralPrice)
127
- throw new Error("Collateral price not available");
128
- const [rawCollateral, principal, interest] = data[0].result;
129
- const gasCompensation = data[1].result;
130
- const btcDetails = getAsset("BTC");
131
- const collateral = {
132
- value: rawCollateral,
133
- decimals: btcDetails.decimals,
134
- symbol: btcDetails.symbol,
135
- formatted: formatUnits(rawCollateral, DEBT_AND_COLL_PRECISION),
136
- usd: convertToUsd(rawCollateral, DEBT_AND_COLL_PRECISION, collateralPrice, DEBT_AND_COLL_PRECISION),
137
- };
138
- const debtInUsdValue = bigIntMax(normalizePrecision(principal + interest - gasCompensation, DEBT_AND_COLL_PRECISION), 0n);
139
- const formattedDebtInUsd = formatUnits(debtInUsdValue, DEBT_AND_COLL_PRECISION);
140
- const debtInUsd = {
141
- value: debtInUsdValue,
142
- formatted: formattedDebtInUsd,
143
- };
144
- return {
145
- collateral,
146
- debtInUsd,
147
- };
148
- },
149
- staleTime: borrowDataRefetchInterval,
150
- refetchInterval: borrowDataRefetchInterval,
151
- ...queryOptions,
105
+ const contracts = useMemo(() => [
106
+ {
107
+ abi: TROVE_MANAGER_ABI,
108
+ address: contractAddress.troveManager,
109
+ functionName: "getEntireDebtAndColl",
110
+ args: walletAccount.accountAddress
111
+ ? [walletAccount.accountAddress]
112
+ : ["0x"],
113
+ chainId,
114
+ },
115
+ {
116
+ abi: BORROWER_OPERATIONS_ABI,
117
+ address: contractAddress.borrowerOperations,
118
+ functionName: "MUSD_GAS_COMPENSATION",
119
+ chainId,
120
+ },
121
+ ], [chainId, contractAddress, walletAccount.accountAddress]);
122
+ const selectBorrowData = useCallback((data) => {
123
+ if (!data || data.some((item) => !item.result))
124
+ throw new Error("No borrow data available");
125
+ if (!collateralPrice)
126
+ throw new Error("Collateral price not available");
127
+ const [rawCollateral, principal, interest] = data[0].result;
128
+ const gasCompensation = data[1].result;
129
+ const btcDetails = getAsset("BTC");
130
+ const collateral = {
131
+ value: rawCollateral,
132
+ decimals: btcDetails.decimals,
133
+ symbol: btcDetails.symbol,
134
+ formatted: formatUnits(rawCollateral, DEBT_AND_COLL_PRECISION),
135
+ usd: convertToUsd(rawCollateral, DEBT_AND_COLL_PRECISION, collateralPrice, DEBT_AND_COLL_PRECISION),
136
+ };
137
+ const debtInUsdValue = bigIntMax(normalizePrecision(principal + interest - gasCompensation, DEBT_AND_COLL_PRECISION), 0n);
138
+ const formattedDebtInUsd = formatUnits(debtInUsdValue, DEBT_AND_COLL_PRECISION);
139
+ const debtInUsd = {
140
+ value: debtInUsdValue,
141
+ formatted: formattedDebtInUsd,
142
+ };
143
+ return {
144
+ collateral,
145
+ debtInUsd,
146
+ };
147
+ }, [collateralPrice]);
148
+ return useQuery({
149
+ queryKey: [BORROW_DATA_QUERY_KEY, walletAccount.accountAddress],
150
+ queryFn: async () => {
151
+ const borrowData = await readContracts(config, { contracts });
152
+ return borrowData;
152
153
  },
154
+ enabled: !!walletAccount.accountAddress && !!collateralPrice,
155
+ retry: 1,
156
+ select: selectBorrowData,
157
+ staleTime: borrowDataRefetchInterval,
158
+ refetchInterval: borrowDataRefetchInterval,
159
+ ...queryOptions,
153
160
  });
154
161
  }
155
162
  /**
@@ -159,8 +166,7 @@ export function useBorrowData(queryOptions = {}) {
159
166
  */
160
167
  export function useInvalidateBorrowData() {
161
168
  const queryClient = useQueryClient();
162
- const { queryKey } = useBorrowData();
163
- const invalidateBorrowDataHandler = useCallback(() => queryClient.invalidateQueries({ queryKey }), [queryClient, queryKey]);
169
+ const invalidateBorrowDataHandler = useCallback(() => queryClient.invalidateQueries({ queryKey: [BORROW_DATA_QUERY_KEY] }), [queryClient]);
164
170
  return {
165
171
  invalidateBorrowData: invalidateBorrowDataHandler,
166
172
  };
@@ -172,8 +178,7 @@ export function useInvalidateBorrowData() {
172
178
  */
173
179
  export function useResetBorrowData() {
174
180
  const queryClient = useQueryClient();
175
- const { queryKey } = useBorrowData();
176
- const resetBorrowDataHandler = useCallback(() => queryClient.resetQueries({ queryKey }), [queryClient, queryKey]);
181
+ const resetBorrowDataHandler = useCallback(() => queryClient.resetQueries({ queryKey: [BORROW_DATA_QUERY_KEY] }), [queryClient]);
177
182
  return {
178
183
  resetBorrowData: resetBorrowDataHandler,
179
184
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useBorrowData.js","sourceRoot":"","sources":["../../../src/hooks/useBorrowData.ts"],"names":[],"mappings":"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"}
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,EAIL,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,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,kGA+HnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B;;EAY1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB;;EAWrC"}
1
+ {"version":3,"file":"useTokensBalances.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAEL,cAAc,EAEf,MAAM,kBAAkB,CAAA;AAsBzB,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,kGAiJnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B;;EAY1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB;;EAWrC"}
@@ -8,7 +8,7 @@ import useWalletAccount from "./useWalletAccount";
8
8
  import { getAsset, isBitcoinLikeCryptoAsset, isTTokenCryptoAsset, } from "../utils/assets";
9
9
  import { convertToUsd } from "../utils/currency";
10
10
  import { CHAIN_ID, mezoMainnet, mezoTestnet } from "../constants";
11
- import { useAssetsConversionRates } from "./useAssetsConversionRates";
11
+ import { useAssetsConversionRates, } from "./useAssetsConversionRates";
12
12
  import { normalizePrecision } from "../utils/numbers";
13
13
  import { usePassportContext } from "./usePassportContext";
14
14
  // Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
@@ -75,6 +75,41 @@ export function useTokensBalances(options = {}) {
75
75
  const { data: conversionRatesData } = useAssetsConversionRates();
76
76
  const { environment = "mainnet" } = usePassportContext();
77
77
  const chainId = environment === "testnet" ? mezoTestnet.id : mezoMainnet.id;
78
+ const selectBalances = useCallback(([btcBalance, tokensBalancesData, conversion]) => {
79
+ const parsedBtcBalance = {
80
+ ...btcBalance,
81
+ symbol: getAsset("BTC").symbol,
82
+ usd: convertToUsd(btcBalance.value, btcBalance.decimals, conversion.rates.BTC, conversion.decimals),
83
+ };
84
+ const parsedTokensBalances = tokensBalancesData.map((item, index) => {
85
+ const token = tokens[index];
86
+ const { decimals, symbol } = getAsset(token);
87
+ if (item.status === "failure") {
88
+ throw new Error(`Failed to fetch balance of ${token} for ${walletAccount?.accountAddress}.`);
89
+ }
90
+ const tokenBalance = {
91
+ value: item.result,
92
+ decimals,
93
+ symbol,
94
+ formatted: formatUnits(item.result, decimals),
95
+ };
96
+ let usd = {
97
+ value: normalizePrecision(tokenBalance.value, tokenBalance.decimals, conversion.decimals),
98
+ formatted: formatUnits(tokenBalance.value, tokenBalance.decimals),
99
+ };
100
+ if (isBitcoinLikeCryptoAsset(tokenBalance.symbol)) {
101
+ usd = convertToUsd(tokenBalance.value, tokenBalance.decimals, conversion.rates.BTC, conversion.decimals);
102
+ }
103
+ if (isTTokenCryptoAsset(tokenBalance.symbol)) {
104
+ usd = convertToUsd(tokenBalance.value, tokenBalance.decimals, conversion.rates.mT, conversion.decimals);
105
+ }
106
+ return { ...tokenBalance, usd };
107
+ });
108
+ return [parsedBtcBalance, ...parsedTokensBalances].reduce((acc, token) => ({
109
+ ...acc,
110
+ [token.symbol]: token,
111
+ }), {});
112
+ }, [tokens, walletAccount.accountAddress]);
78
113
  return useQuery({
79
114
  queryKey: [
80
115
  TOKEN_BALANCES_QUERY_KEY,
@@ -115,42 +150,7 @@ export function useTokensBalances(options = {}) {
115
150
  }),
116
151
  ]);
117
152
  },
118
- select: (data) => {
119
- const [btcBalance, tokensBalancesData, conversion] = data;
120
- const parsedBtcBalance = {
121
- ...btcBalance,
122
- symbol: getAsset("BTC").symbol,
123
- usd: convertToUsd(btcBalance.value, btcBalance.decimals, conversion.rates.BTC, conversion.decimals),
124
- };
125
- const parsedTokensBalances = tokensBalancesData.map((item, index) => {
126
- const token = tokens[index];
127
- const { decimals, symbol } = getAsset(token);
128
- if (item.status === "failure") {
129
- throw new Error(`Failed to fetch balance of ${token} for ${walletAccount?.accountAddress}.`);
130
- }
131
- const tokenBalance = {
132
- value: item.result,
133
- decimals,
134
- symbol,
135
- formatted: formatUnits(item.result, decimals),
136
- };
137
- let usd = {
138
- value: normalizePrecision(tokenBalance.value, tokenBalance.decimals, conversion.decimals),
139
- formatted: formatUnits(tokenBalance.value, tokenBalance.decimals),
140
- };
141
- if (isBitcoinLikeCryptoAsset(tokenBalance.symbol)) {
142
- usd = convertToUsd(tokenBalance.value, tokenBalance.decimals, conversion.rates.BTC, conversion.decimals);
143
- }
144
- if (isTTokenCryptoAsset(tokenBalance.symbol)) {
145
- usd = convertToUsd(tokenBalance.value, tokenBalance.decimals, conversion.rates.mT, conversion.decimals);
146
- }
147
- return { ...tokenBalance, usd };
148
- });
149
- return [parsedBtcBalance, ...parsedTokensBalances].reduce((acc, token) => ({
150
- ...acc,
151
- [token.symbol]: token,
152
- }), {});
153
- },
153
+ select: selectBalances,
154
154
  ...restQueryOptions,
155
155
  });
156
156
  }
@@ -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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useValidateMezoId.d.ts","sourceRoot":"","sources":["../../../src/hooks/useValidateMezoId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAkB,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGxD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAqBxC,cAAc,CAAC;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAC,CACH"}
1
+ {"version":3,"file":"useValidateMezoId.d.ts","sourceRoot":"","sources":["../../../src/hooks/useValidateMezoId.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAkB,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAIxD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GA0BxC,cAAc,CAAC;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAC,CACH"}
@@ -1,7 +1,13 @@
1
+ import { useCallback } from "react";
1
2
  import { validateMezoId } from "../utils/mezoId";
2
3
  import { useGetAccountByMezoId } from "./useGetAccountByMezoId";
3
4
  export function useValidateMezoId(mezoId) {
4
5
  const validationErrors = validateMezoId(mezoId);
6
+ const select = useCallback((data) => {
7
+ const isValid = validationErrors.length === 0;
8
+ const isAvailable = isValid ? !data : false;
9
+ return { isValid, isAvailable, errors: validationErrors };
10
+ }, [validationErrors]);
5
11
  return useGetAccountByMezoId(mezoId, {
6
12
  placeholderData: {
7
13
  // @ts-expect-error TODO: Couldn't fix type for placeholderData which for
@@ -14,11 +20,7 @@ export function useValidateMezoId(mezoId) {
14
20
  enabled: validationErrors.length === 0,
15
21
  // @ts-expect-error TODO: Couldn't fix type for select which for some reason
16
22
  // should return the same data as the data returned in queryFn.
17
- select: (data) => {
18
- const isValid = validationErrors.length === 0;
19
- const isAvailable = isValid ? !data : false;
20
- return { isValid, isAvailable, errors: validationErrors };
21
- },
23
+ select,
22
24
  });
23
25
  }
24
26
  //# sourceMappingURL=useValidateMezoId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useValidateMezoId.js","sourceRoot":"","sources":["../../../src/hooks/useValidateMezoId.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAU,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;IAE/C,OAAO,qBAAqB,CAAC,MAAM,EAAE;QACnC,eAAe,EAAE;YACf,yEAAyE;YACzE,kEAAkE;YAClE,WAAW;YACX,OAAO,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;YACtC,WAAW,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC1C,MAAM,EAAE,gBAAgB;SACzB;QACD,OAAO,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;QACtC,4EAA4E;QAC5E,+DAA+D;QAC/D,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAA;YAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;YAE3C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAA;QAC3D,CAAC;KACF,CAIC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"useValidateMezoId.js","sourceRoot":"","sources":["../../../src/hooks/useValidateMezoId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAU,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAG/D,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,IAAgD,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAA;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;QAE3C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAA;IAC3D,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB,CAAA;IAED,OAAO,qBAAqB,CAAC,MAAM,EAAE;QACnC,eAAe,EAAE;YACf,yEAAyE;YACzE,kEAAkE;YAClE,WAAW;YACX,OAAO,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;YACtC,WAAW,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC1C,MAAM,EAAE,gBAAgB;SACzB;QACD,OAAO,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;QACtC,4EAA4E;QAC5E,+DAA+D;QAC/D,MAAM;KACP,CAIC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mezo-org/passport",
3
- "version": "0.7.1",
3
+ "version": "0.7.2-dev.2",
4
4
  "main": "dist/src/index.js",
5
5
  "license": "GPL-3.0-only",
6
6
  "scripts": {
@@ -55,4 +55,4 @@
55
55
  "viem": "2.22.8",
56
56
  "wagmi": "2.5.12"
57
57
  }
58
- }
58
+ }
package/src/api/portal.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ApiClient } from "./client"
2
2
 
3
- type PortalStatistics = {
3
+ export type PortalStatistics = {
4
4
  btcPrice: number
5
5
  ethPrice: number
6
6
  tTokenPrice: number
@@ -1,8 +1,15 @@
1
+ import { useCallback } from "react"
1
2
  import { useQuery } from "@tanstack/react-query"
2
3
  import { parseUnits } from "viem"
3
4
  import { ONE_SECOND_MS } from "../utils/time"
4
5
  import { usePortalApiClient } from "./usePortalApiClient"
5
6
  import { useCollateralPrice } from "./useCollateralPrice"
7
+ import { PortalStatistics } from "../api"
8
+
9
+ export type AssetConversion = {
10
+ rates: { mT: bigint; BTC: bigint }
11
+ decimals: number
12
+ }
6
13
 
7
14
  export const CONVERSION_RATE_DECIMALS = 18
8
15
 
@@ -25,22 +32,11 @@ export function useAssetsConversionRates() {
25
32
 
26
33
  const collateralPrice = collateralPriceData?.toString()
27
34
 
28
- return useQuery({
29
- queryKey: [QUERY_KEY, collateralPrice],
30
- queryFn: () => {
31
- if (!collateralPriceData) {
32
- throw new Error("Collateral price is not available.")
33
- }
34
-
35
- return Promise.all([
36
- portalApiClient.getPortalStatistics(),
37
- new Promise((resolve) => {
38
- resolve(collateralPriceData)
39
- }) as Promise<typeof collateralPriceData>,
40
- ])
41
- },
42
- enabled: !!collateralPrice,
43
- select: ([portalStatistics, btcPrice]) => {
35
+ const select = useCallback(
36
+ ([portalStatistics, btcPrice]: [
37
+ PortalStatistics,
38
+ bigint,
39
+ ]): AssetConversion => {
44
40
  const tTokenConversionRate = portalStatistics.tTokenPrice
45
41
 
46
42
  const tPrice = parseUnits(
@@ -56,6 +52,25 @@ export function useAssetsConversionRates() {
56
52
  decimals: CONVERSION_RATE_DECIMALS,
57
53
  }
58
54
  },
55
+ [],
56
+ )
57
+
58
+ return useQuery({
59
+ queryKey: [QUERY_KEY, collateralPrice],
60
+ queryFn: () => {
61
+ if (!collateralPriceData) {
62
+ throw new Error("Collateral price is not available.")
63
+ }
64
+
65
+ return Promise.all([
66
+ portalApiClient.getPortalStatistics(),
67
+ new Promise((resolve) => {
68
+ resolve(collateralPriceData)
69
+ }) as Promise<typeof collateralPriceData>,
70
+ ])
71
+ },
72
+ enabled: !!collateralPrice,
73
+ select,
59
74
  refetchInterval: MAX_PRICE_DELAY,
60
75
  })
61
76
  }
@@ -1,6 +1,7 @@
1
- import { useReadContracts } from "wagmi"
1
+ import { useConfig, UseReadContractsReturnType } from "wagmi"
2
+ import { readContracts } from "wagmi/actions"
2
3
  import { useCallback, useMemo } from "react"
3
- import { useQueryClient } from "@tanstack/react-query"
4
+ import { useQuery, useQueryClient } from "@tanstack/react-query"
4
5
  import { formatUnits } from "viem"
5
6
  import {
6
7
  mainnetBorrowContracts,
@@ -15,6 +16,7 @@ import { convertToUsd } from "../utils/currency"
15
16
  import { useCollateralPrice } from "./useCollateralPrice"
16
17
 
17
18
  const DEBT_AND_COLL_PRECISION = 18
19
+ const BORROW_DATA_QUERY_KEY = "passport.borrowData"
18
20
 
19
21
  // Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
20
22
  // support importing JSON as const yet so types cannot be inferred from the
@@ -96,6 +98,7 @@ export function useBorrowData(queryOptions = {}) {
96
98
  const walletAccount = useWalletAccount()
97
99
 
98
100
  const { data: collateralPrice } = useCollateralPrice()
101
+ const config = useConfig()
99
102
 
100
103
  const contractAddress = useMemo(() => {
101
104
  if (environment === "mainnet") {
@@ -112,8 +115,8 @@ export function useBorrowData(queryOptions = {}) {
112
115
 
113
116
  const chainId = CHAIN_ID[environment]
114
117
 
115
- return useReadContracts({
116
- contracts: [
118
+ const contracts = useMemo(
119
+ () => [
117
120
  {
118
121
  abi: TROVE_MANAGER_ABI,
119
122
  address: contractAddress.troveManager,
@@ -130,59 +133,80 @@ export function useBorrowData(queryOptions = {}) {
130
133
  chainId,
131
134
  },
132
135
  ],
133
- query: {
134
- enabled: !!walletAccount.accountAddress && !!collateralPrice,
135
- retry: 1,
136
- select: (data) => {
137
- if (!data || data.some((item) => !item.result))
138
- throw new Error("No borrow data available")
139
-
140
- if (!collateralPrice) throw new Error("Collateral price not available")
141
-
142
- const [rawCollateral, principal, interest] = data[0].result!
143
- const gasCompensation = data[1].result!
144
-
145
- const btcDetails = getAsset("BTC")
146
-
147
- const collateral = {
148
- value: rawCollateral,
149
- decimals: btcDetails.decimals,
150
- symbol: btcDetails.symbol,
151
- formatted: formatUnits(rawCollateral, DEBT_AND_COLL_PRECISION),
152
- usd: convertToUsd(
153
- rawCollateral,
154
- DEBT_AND_COLL_PRECISION,
155
- collateralPrice,
156
- DEBT_AND_COLL_PRECISION,
157
- ),
158
- }
159
-
160
- const debtInUsdValue = bigIntMax(
161
- normalizePrecision(
162
- principal + interest - gasCompensation,
163
- DEBT_AND_COLL_PRECISION,
164
- ),
165
- 0n, // Ensure that debt is not negative
166
- )
167
- const formattedDebtInUsd = formatUnits(
168
- debtInUsdValue,
136
+ [chainId, contractAddress, walletAccount.accountAddress],
137
+ )
138
+
139
+ const selectBorrowData = useCallback(
140
+ (data: UseReadContractsReturnType<typeof contracts>["data"]) => {
141
+ if (!data || data.some((item) => !item.result))
142
+ throw new Error("No borrow data available")
143
+
144
+ if (!collateralPrice) throw new Error("Collateral price not available")
145
+
146
+ const [rawCollateral, principal, interest] = data[0].result! as readonly [
147
+ bigint,
148
+ bigint,
149
+ bigint,
150
+ bigint,
151
+ bigint,
152
+ bigint,
153
+ ]
154
+
155
+ const gasCompensation = data[1].result! as bigint
156
+
157
+ const btcDetails = getAsset("BTC")
158
+
159
+ const collateral = {
160
+ value: rawCollateral,
161
+ decimals: btcDetails.decimals,
162
+ symbol: btcDetails.symbol,
163
+ formatted: formatUnits(rawCollateral, DEBT_AND_COLL_PRECISION),
164
+ usd: convertToUsd(
165
+ rawCollateral,
169
166
  DEBT_AND_COLL_PRECISION,
170
- )
167
+ collateralPrice,
168
+ DEBT_AND_COLL_PRECISION,
169
+ ),
170
+ }
171
171
 
172
- const debtInUsd = {
173
- value: debtInUsdValue,
174
- formatted: formattedDebtInUsd,
175
- }
172
+ const debtInUsdValue = bigIntMax(
173
+ normalizePrecision(
174
+ principal + interest - gasCompensation,
175
+ DEBT_AND_COLL_PRECISION,
176
+ ),
177
+ 0n, // Ensure that debt is not negative
178
+ )
179
+ const formattedDebtInUsd = formatUnits(
180
+ debtInUsdValue,
181
+ DEBT_AND_COLL_PRECISION,
182
+ )
183
+
184
+ const debtInUsd = {
185
+ value: debtInUsdValue,
186
+ formatted: formattedDebtInUsd,
187
+ }
176
188
 
177
- return {
178
- collateral,
179
- debtInUsd,
180
- }
181
- },
182
- staleTime: borrowDataRefetchInterval,
183
- refetchInterval: borrowDataRefetchInterval,
184
- ...queryOptions,
189
+ return {
190
+ collateral,
191
+ debtInUsd,
192
+ }
185
193
  },
194
+ [collateralPrice],
195
+ )
196
+
197
+ return useQuery({
198
+ queryKey: [BORROW_DATA_QUERY_KEY, walletAccount.accountAddress],
199
+ queryFn: async () => {
200
+ const borrowData = await readContracts(config, { contracts })
201
+
202
+ return borrowData
203
+ },
204
+ enabled: !!walletAccount.accountAddress && !!collateralPrice,
205
+ retry: 1,
206
+ select: selectBorrowData,
207
+ staleTime: borrowDataRefetchInterval,
208
+ refetchInterval: borrowDataRefetchInterval,
209
+ ...queryOptions,
186
210
  })
187
211
  }
188
212
 
@@ -194,11 +218,9 @@ export function useBorrowData(queryOptions = {}) {
194
218
  export function useInvalidateBorrowData() {
195
219
  const queryClient = useQueryClient()
196
220
 
197
- const { queryKey } = useBorrowData()
198
-
199
221
  const invalidateBorrowDataHandler = useCallback(
200
- () => queryClient.invalidateQueries({ queryKey }),
201
- [queryClient, queryKey],
222
+ () => queryClient.invalidateQueries({ queryKey: [BORROW_DATA_QUERY_KEY] }),
223
+ [queryClient],
202
224
  )
203
225
 
204
226
  return {
@@ -214,11 +236,9 @@ export function useInvalidateBorrowData() {
214
236
  export function useResetBorrowData() {
215
237
  const queryClient = useQueryClient()
216
238
 
217
- const { queryKey } = useBorrowData()
218
-
219
239
  const resetBorrowDataHandler = useCallback(
220
- () => queryClient.resetQueries({ queryKey }),
221
- [queryClient, queryKey],
240
+ () => queryClient.resetQueries({ queryKey: [BORROW_DATA_QUERY_KEY] }),
241
+ [queryClient],
222
242
  )
223
243
 
224
244
  return {
@@ -6,7 +6,7 @@ import {
6
6
  useQueryClient,
7
7
  UseQueryOptions,
8
8
  } from "@tanstack/react-query"
9
- import { getBalance, readContracts } from "wagmi/actions"
9
+ import { getBalance, GetBalanceReturnType, readContracts } from "wagmi/actions"
10
10
  import { useCallback } from "react"
11
11
  import {
12
12
  mainnetTokenContracts,
@@ -21,7 +21,10 @@ import {
21
21
  } from "../utils/assets"
22
22
  import { convertToUsd } from "../utils/currency"
23
23
  import { CHAIN_ID, mezoMainnet, mezoTestnet } from "../constants"
24
- import { useAssetsConversionRates } from "./useAssetsConversionRates"
24
+ import {
25
+ AssetConversion,
26
+ useAssetsConversionRates,
27
+ } from "./useAssetsConversionRates"
25
28
  import { normalizePrecision } from "../utils/numbers"
26
29
  import { usePassportContext } from "./usePassportContext"
27
30
 
@@ -120,53 +123,23 @@ export function useTokensBalances<T extends MezoChainToken[]>(
120
123
 
121
124
  const chainId = environment === "testnet" ? mezoTestnet.id : mezoMainnet.id
122
125
 
123
- return useQuery({
124
- queryKey: [
125
- TOKEN_BALANCES_QUERY_KEY,
126
- walletAccount?.accountAddress,
127
- options.tokens,
128
- chainId,
129
- ],
130
- enabled: !!walletAccount?.accountAddress && !!conversionRatesData,
131
- placeholderData: keepPreviousData,
132
- queryFn: async () => {
133
- const isMainnet = chainId === CHAIN_ID.mainnet
134
- const contractsMap = isMainnet
135
- ? mainnetTokenContracts
136
- : testnetTokenContracts
137
-
138
- if (!walletAccount?.accountAddress) {
139
- throw new Error("Account address is not available.")
140
- }
141
-
142
- const tokenContracts = tokens.map((token) => {
143
- const { address } = contractsMap[token]
144
- return {
145
- address,
146
- abi: BALANCE_OF_ABI,
147
- functionName: "balanceOf" as const,
148
- args: [walletAccount?.accountAddress],
149
- chainId,
150
- }
151
- })
152
-
153
- if (!conversionRatesData) {
154
- throw new Error("Conversion rates data is not available.")
155
- }
156
-
157
- return Promise.all([
158
- getBalance(config, { address: walletAccount?.accountAddress, chainId }),
159
- readContracts(config, {
160
- contracts: tokenContracts,
161
- }),
162
- new Promise((resolve) => {
163
- resolve(conversionRatesData)
164
- }) as Promise<typeof conversionRatesData>,
165
- ])
166
- },
167
- select: (data) => {
168
- const [btcBalance, tokensBalancesData, conversion] = data
169
-
126
+ const selectBalances = useCallback(
127
+ ([btcBalance, tokensBalancesData, conversion]: [
128
+ GetBalanceReturnType,
129
+ (
130
+ | {
131
+ error?: undefined
132
+ result: bigint
133
+ status: "success"
134
+ }
135
+ | {
136
+ error: Error
137
+ result?: undefined
138
+ status: "failure"
139
+ }
140
+ )[],
141
+ AssetConversion,
142
+ ]) => {
170
143
  const parsedBtcBalance = {
171
144
  ...btcBalance,
172
145
  symbol: getAsset("BTC").symbol,
@@ -231,6 +204,54 @@ export function useTokensBalances<T extends MezoChainToken[]>(
231
204
  {} as Record<T[number] | "BTC", TokenBalance>,
232
205
  )
233
206
  },
207
+ [tokens, walletAccount.accountAddress],
208
+ )
209
+
210
+ return useQuery({
211
+ queryKey: [
212
+ TOKEN_BALANCES_QUERY_KEY,
213
+ walletAccount?.accountAddress,
214
+ options.tokens,
215
+ chainId,
216
+ ],
217
+ enabled: !!walletAccount?.accountAddress && !!conversionRatesData,
218
+ placeholderData: keepPreviousData,
219
+ queryFn: async () => {
220
+ const isMainnet = chainId === CHAIN_ID.mainnet
221
+ const contractsMap = isMainnet
222
+ ? mainnetTokenContracts
223
+ : testnetTokenContracts
224
+
225
+ if (!walletAccount?.accountAddress) {
226
+ throw new Error("Account address is not available.")
227
+ }
228
+
229
+ const tokenContracts = tokens.map((token) => {
230
+ const { address } = contractsMap[token]
231
+ return {
232
+ address,
233
+ abi: BALANCE_OF_ABI,
234
+ functionName: "balanceOf" as const,
235
+ args: [walletAccount?.accountAddress],
236
+ chainId,
237
+ }
238
+ })
239
+
240
+ if (!conversionRatesData) {
241
+ throw new Error("Conversion rates data is not available.")
242
+ }
243
+
244
+ return Promise.all([
245
+ getBalance(config, { address: walletAccount?.accountAddress, chainId }),
246
+ readContracts(config, {
247
+ contracts: tokenContracts,
248
+ }),
249
+ new Promise((resolve) => {
250
+ resolve(conversionRatesData)
251
+ }) as Promise<typeof conversionRatesData>,
252
+ ])
253
+ },
254
+ select: selectBalances,
234
255
  ...restQueryOptions,
235
256
  })
236
257
  }
@@ -1,10 +1,22 @@
1
+ import { useCallback } from "react"
1
2
  import { UseQueryResult } from "@tanstack/react-query"
2
3
  import { validateMezoId, MezoId } from "../utils/mezoId"
3
4
  import { useGetAccountByMezoId } from "./useGetAccountByMezoId"
5
+ import { GetAccountByMezoIdOrAddressResponse } from "../api"
4
6
 
5
7
  export function useValidateMezoId(mezoId: MezoId) {
6
8
  const validationErrors = validateMezoId(mezoId)
7
9
 
10
+ const select = useCallback(
11
+ (data: GetAccountByMezoIdOrAddressResponse | null) => {
12
+ const isValid = validationErrors.length === 0
13
+ const isAvailable = isValid ? !data : false
14
+
15
+ return { isValid, isAvailable, errors: validationErrors }
16
+ },
17
+ [validationErrors],
18
+ )
19
+
8
20
  return useGetAccountByMezoId(mezoId, {
9
21
  placeholderData: {
10
22
  // @ts-expect-error TODO: Couldn't fix type for placeholderData which for
@@ -17,12 +29,7 @@ export function useValidateMezoId(mezoId: MezoId) {
17
29
  enabled: validationErrors.length === 0,
18
30
  // @ts-expect-error TODO: Couldn't fix type for select which for some reason
19
31
  // should return the same data as the data returned in queryFn.
20
- select: (data) => {
21
- const isValid = validationErrors.length === 0
22
- const isAvailable = isValid ? !data : false
23
-
24
- return { isValid, isAvailable, errors: validationErrors }
25
- },
32
+ select,
26
33
  }) as UseQueryResult<{
27
34
  isValid: boolean
28
35
  isAvailable: boolean