@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.
- package/dist/src/hooks/index.d.ts +1 -1
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -1
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/useAssetsConversionRates.d.ts.map +1 -1
- package/dist/src/hooks/useAssetsConversionRates.js +36 -9
- package/dist/src/hooks/useAssetsConversionRates.js.map +1 -1
- package/dist/src/hooks/useBorrowData.d.ts +15 -0
- package/dist/src/hooks/useBorrowData.d.ts.map +1 -1
- package/dist/src/hooks/useBorrowData.js +25 -3
- package/dist/src/hooks/useBorrowData.js.map +1 -1
- package/dist/src/hooks/useTokensBalances.d.ts.map +1 -1
- package/dist/src/hooks/useTokensBalances.js +5 -7
- package/dist/src/hooks/useTokensBalances.js.map +1 -1
- package/dist/src/lib/contracts/index.d.ts +1 -1
- package/dist/src/lib/contracts/index.d.ts.map +1 -1
- package/dist/src/lib/contracts/index.js +1 -0
- package/dist/src/lib/contracts/index.js.map +1 -1
- package/dist/src/lib/contracts/priceOracle.d.ts +43 -0
- package/dist/src/lib/contracts/priceOracle.d.ts.map +1 -0
- package/dist/src/lib/contracts/priceOracle.js +52 -0
- package/dist/src/lib/contracts/priceOracle.js.map +1 -0
- package/package.json +1 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useAssetsConversionRates.ts +43 -10
- package/src/hooks/useBorrowData.ts +27 -5
- package/src/hooks/useTokensBalances.ts +5 -8
- package/src/lib/contracts/index.ts +2 -0
- package/src/lib/contracts/priceOracle.ts +53 -0
- package/dist/src/hooks/useCollateralPrice.d.ts +0 -17
- package/dist/src/hooks/useCollateralPrice.d.ts.map +0 -1
- package/dist/src/hooks/useCollateralPrice.js +0 -56
- package/dist/src/hooks/useCollateralPrice.js.map +0 -1
- 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"}
|
package/dist/src/hooks/index.js
CHANGED
|
@@ -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":"
|
|
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 {
|
|
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 {
|
|
21
|
-
const
|
|
25
|
+
const { environment = "mainnet" } = usePassportContext();
|
|
26
|
+
const config = useConfig();
|
|
22
27
|
return useQuery({
|
|
23
|
-
queryKey: [QUERY_KEY
|
|
24
|
-
queryFn: async () => Promise.all([
|
|
25
|
-
|
|
26
|
-
|
|
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:
|
|
45
|
+
BTC: btcPrice,
|
|
33
46
|
},
|
|
34
47
|
decimals: CONVERSION_RATE_DECIMALS,
|
|
35
48
|
};
|
|
36
49
|
},
|
|
37
|
-
refetchInterval:
|
|
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;
|
|
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":"
|
|
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
|
|
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;
|
|
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;
|
|
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
|
|
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
|
-
|
|
79
|
+
accountAddress,
|
|
81
80
|
options.tokens,
|
|
82
81
|
chainId,
|
|
83
82
|
],
|
|
84
|
-
enabled: !!
|
|
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 ${
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useTokensBalances.js","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -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
package/src/hooks/index.ts
CHANGED
|
@@ -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 {
|
|
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 {
|
|
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
|
|
30
|
-
queryFn: async () =>
|
|
31
|
-
|
|
32
|
-
|
|
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:
|
|
60
|
+
BTC: btcPrice,
|
|
44
61
|
},
|
|
45
62
|
decimals: CONVERSION_RATE_DECIMALS,
|
|
46
63
|
}
|
|
47
64
|
},
|
|
48
|
-
refetchInterval:
|
|
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
|
|
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
|
|
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
|
-
|
|
123
|
+
accountAddress,
|
|
125
124
|
options.tokens,
|
|
126
125
|
chainId,
|
|
127
126
|
],
|
|
128
|
-
enabled: !!
|
|
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 ${
|
|
179
|
+
`Failed to fetch balance of ${token} for ${accountAddress}.`,
|
|
183
180
|
)
|
|
184
181
|
}
|
|
185
182
|
|
|
@@ -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
|
-
}
|