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

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"}
@@ -1,10 +1,11 @@
1
+ import { UseReadContractsReturnType } from "wagmi";
1
2
  /**
2
3
  * Query hook for getting borrow data. Returns collateral and trove debt for the
3
4
  * connected account, based on it's evm address.
4
5
  * @param queryOptions Query options passed to the underlying `useQuery` hook.
5
6
  */
6
- export declare function useBorrowData(queryOptions?: {}): import("wagmi").UseReadContractsReturnType<readonly [{
7
- readonly abi: readonly [{
7
+ export declare function useBorrowData(queryOptions?: {}): UseReadContractsReturnType<({
8
+ abi: readonly [{
8
9
  readonly inputs: readonly [{
9
10
  readonly internalType: "address";
10
11
  readonly name: "_borrower";
@@ -39,12 +40,12 @@ export declare function useBorrowData(queryOptions?: {}): import("wagmi").UseRea
39
40
  readonly stateMutability: "view";
40
41
  readonly type: "function";
41
42
  }];
42
- readonly address: `0x${string}`;
43
- readonly functionName: "getEntireDebtAndColl";
44
- readonly args: [`0x${string}`];
45
- readonly chainId: number;
46
- }, {
47
- readonly abi: readonly [{
43
+ address: `0x${string}`;
44
+ functionName: string;
45
+ args: `0x${string}`[];
46
+ chainId: number;
47
+ } | {
48
+ abi: readonly [{
48
49
  readonly inputs: readonly [];
49
50
  readonly name: "MUSD_GAS_COMPENSATION";
50
51
  readonly outputs: readonly [{
@@ -55,10 +56,11 @@ export declare function useBorrowData(queryOptions?: {}): import("wagmi").UseRea
55
56
  readonly stateMutability: "view";
56
57
  readonly type: "function";
57
58
  }];
58
- readonly address: `0x${string}`;
59
- readonly functionName: "MUSD_GAS_COMPENSATION";
60
- readonly chainId: number;
61
- }], true, {
59
+ address: `0x${string}`;
60
+ functionName: string;
61
+ chainId: number;
62
+ args?: undefined;
63
+ })[], true, {
62
64
  collateral: {
63
65
  value: bigint;
64
66
  decimals: number;
@@ -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":"AAAA,OAAO,EAAoB,0BAA0B,EAAE,MAAM,OAAO,CAAA;AAuFpE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgH9C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB;;EAatC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB;;EAajC"}
@@ -99,53 +99,55 @@ export function useBorrowData(queryOptions = {}) {
99
99
  };
100
100
  }, [environment]);
101
101
  const chainId = CHAIN_ID[environment];
102
+ const contracts = useMemo(() => [
103
+ {
104
+ abi: TROVE_MANAGER_ABI,
105
+ address: contractAddress.troveManager,
106
+ functionName: "getEntireDebtAndColl",
107
+ args: walletAccount.accountAddress
108
+ ? [walletAccount.accountAddress]
109
+ : ["0x"],
110
+ chainId,
111
+ },
112
+ {
113
+ abi: BORROWER_OPERATIONS_ABI,
114
+ address: contractAddress.borrowerOperations,
115
+ functionName: "MUSD_GAS_COMPENSATION",
116
+ chainId,
117
+ },
118
+ ], [chainId, contractAddress, walletAccount.accountAddress]);
119
+ const selectBorrowData = useCallback((data) => {
120
+ if (!data || data.some((item) => !item.result))
121
+ throw new Error("No borrow data available");
122
+ if (!collateralPrice)
123
+ throw new Error("Collateral price not available");
124
+ const [rawCollateral, principal, interest] = data[0].result;
125
+ const gasCompensation = data[1].result;
126
+ const btcDetails = getAsset("BTC");
127
+ const collateral = {
128
+ value: rawCollateral,
129
+ decimals: btcDetails.decimals,
130
+ symbol: btcDetails.symbol,
131
+ formatted: formatUnits(rawCollateral, DEBT_AND_COLL_PRECISION),
132
+ usd: convertToUsd(rawCollateral, DEBT_AND_COLL_PRECISION, collateralPrice, DEBT_AND_COLL_PRECISION),
133
+ };
134
+ const debtInUsdValue = bigIntMax(normalizePrecision(principal + interest - gasCompensation, DEBT_AND_COLL_PRECISION), 0n);
135
+ const formattedDebtInUsd = formatUnits(debtInUsdValue, DEBT_AND_COLL_PRECISION);
136
+ const debtInUsd = {
137
+ value: debtInUsdValue,
138
+ formatted: formattedDebtInUsd,
139
+ };
140
+ return {
141
+ collateral,
142
+ debtInUsd,
143
+ };
144
+ }, [collateralPrice]);
102
145
  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
- ],
146
+ contracts,
120
147
  query: {
121
148
  enabled: !!walletAccount.accountAddress && !!collateralPrice,
122
149
  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
- },
150
+ select: selectBorrowData,
149
151
  staleTime: borrowDataRefetchInterval,
150
152
  refetchInterval: borrowDataRefetchInterval,
151
153
  ...queryOptions,
@@ -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-dev.1",
3
+ "version": "0.7.2-dev.1",
4
4
  "main": "dist/src/index.js",
5
5
  "license": "GPL-3.0-only",
6
6
  "scripts": {
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,4 +1,4 @@
1
- import { useReadContracts } from "wagmi"
1
+ import { useReadContracts, UseReadContractsReturnType } from "wagmi"
2
2
  import { useCallback, useMemo } from "react"
3
3
  import { useQueryClient } from "@tanstack/react-query"
4
4
  import { formatUnits } from "viem"
@@ -112,8 +112,8 @@ export function useBorrowData(queryOptions = {}) {
112
112
 
113
113
  const chainId = CHAIN_ID[environment]
114
114
 
115
- return useReadContracts({
116
- contracts: [
115
+ const contracts = useMemo(
116
+ () => [
117
117
  {
118
118
  abi: TROVE_MANAGER_ABI,
119
119
  address: contractAddress.troveManager,
@@ -130,55 +130,73 @@ export function useBorrowData(queryOptions = {}) {
130
130
  chainId,
131
131
  },
132
132
  ],
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,
133
+ [chainId, contractAddress, walletAccount.accountAddress],
134
+ )
135
+
136
+ const selectBorrowData = useCallback(
137
+ (data: UseReadContractsReturnType<typeof contracts>["data"]) => {
138
+ if (!data || data.some((item) => !item.result))
139
+ throw new Error("No borrow data available")
140
+
141
+ if (!collateralPrice) throw new Error("Collateral price not available")
142
+
143
+ const [rawCollateral, principal, interest] = data[0].result! as readonly [
144
+ bigint,
145
+ bigint,
146
+ bigint,
147
+ bigint,
148
+ bigint,
149
+ bigint,
150
+ ]
151
+
152
+ const gasCompensation = data[1].result! as bigint
153
+
154
+ const btcDetails = getAsset("BTC")
155
+
156
+ const collateral = {
157
+ value: rawCollateral,
158
+ decimals: btcDetails.decimals,
159
+ symbol: btcDetails.symbol,
160
+ formatted: formatUnits(rawCollateral, DEBT_AND_COLL_PRECISION),
161
+ usd: convertToUsd(
162
+ rawCollateral,
163
+ DEBT_AND_COLL_PRECISION,
164
+ collateralPrice,
165
+ DEBT_AND_COLL_PRECISION,
166
+ ),
167
+ }
168
+
169
+ const debtInUsdValue = bigIntMax(
170
+ normalizePrecision(
171
+ principal + interest - gasCompensation,
169
172
  DEBT_AND_COLL_PRECISION,
170
- )
173
+ ),
174
+ 0n, // Ensure that debt is not negative
175
+ )
176
+ const formattedDebtInUsd = formatUnits(
177
+ debtInUsdValue,
178
+ DEBT_AND_COLL_PRECISION,
179
+ )
180
+
181
+ const debtInUsd = {
182
+ value: debtInUsdValue,
183
+ formatted: formattedDebtInUsd,
184
+ }
171
185
 
172
- const debtInUsd = {
173
- value: debtInUsdValue,
174
- formatted: formattedDebtInUsd,
175
- }
186
+ return {
187
+ collateral,
188
+ debtInUsd,
189
+ }
190
+ },
191
+ [collateralPrice],
192
+ )
176
193
 
177
- return {
178
- collateral,
179
- debtInUsd,
180
- }
181
- },
194
+ return useReadContracts({
195
+ contracts,
196
+ query: {
197
+ enabled: !!walletAccount.accountAddress && !!collateralPrice,
198
+ retry: 1,
199
+ select: selectBorrowData,
182
200
  staleTime: borrowDataRefetchInterval,
183
201
  refetchInterval: borrowDataRefetchInterval,
184
202
  ...queryOptions,
@@ -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