@mezo-org/passport 0.5.3 → 0.5.4-dev.0
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/api/portal.d.ts +1 -1
- package/dist/src/api/portal.d.ts.map +1 -1
- 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 +9 -36
- package/dist/src/hooks/useAssetsConversionRates.js.map +1 -1
- package/dist/src/hooks/useBorrowData.d.ts +0 -15
- package/dist/src/hooks/useBorrowData.d.ts.map +1 -1
- package/dist/src/hooks/useBorrowData.js +7 -26
- package/dist/src/hooks/useBorrowData.js.map +1 -1
- package/dist/src/hooks/useCollateralPrice.d.ts +17 -0
- package/dist/src/hooks/useCollateralPrice.d.ts.map +1 -0
- package/dist/src/hooks/useCollateralPrice.js +54 -0
- package/dist/src/hooks/useCollateralPrice.js.map +1 -0
- package/dist/src/hooks/useTokensBalances.d.ts.map +1 -1
- package/dist/src/hooks/useTokensBalances.js +7 -3
- 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 +0 -1
- package/dist/src/lib/contracts/index.js.map +1 -1
- package/dist/src/utils/numbers.test.js.map +1 -1
- package/package.json +1 -1
- package/src/api/portal.ts +1 -1
- package/src/hooks/index.ts +0 -1
- package/src/hooks/useAssetsConversionRates.ts +10 -43
- package/src/hooks/useBorrowData.ts +9 -27
- package/src/hooks/useCollateralPrice.ts +62 -0
- package/src/hooks/useTokensBalances.ts +8 -3
- package/src/lib/contracts/index.ts +0 -2
- package/src/utils/numbers.test.ts +0 -1
- package/dist/src/lib/contracts/priceOracle.d.ts +0 -43
- package/dist/src/lib/contracts/priceOracle.d.ts.map +0 -1
- package/dist/src/lib/contracts/priceOracle.js +0 -52
- package/dist/src/lib/contracts/priceOracle.js.map +0 -1
- package/src/lib/contracts/priceOracle.ts +0 -53
package/dist/src/api/portal.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
|
@@ -10,7 +10,7 @@ export * from "./useSignInWithDiscord";
|
|
|
10
10
|
export * from "./useSignInWithWallet";
|
|
11
11
|
export * from "./useSignOut";
|
|
12
12
|
export * from "./useSignUpWithWallet";
|
|
13
|
-
export {
|
|
13
|
+
export { 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,
|
|
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"}
|
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 {
|
|
13
|
+
export { 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,
|
|
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 +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":"AAMA,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAK1C,eAAO,MAAM,SAAS,mCAAmC,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB;;;;;;UA4BvC"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import { useQuery } from "@tanstack/react-query";
|
|
2
|
-
import { useConfig } from "wagmi";
|
|
3
|
-
import { readContract } from "wagmi/actions";
|
|
4
2
|
import { parseUnits } from "viem";
|
|
5
3
|
import { ONE_SECOND_MS } from "../utils/time";
|
|
6
4
|
import { usePortalApiClient } from "./usePortalApiClient";
|
|
7
|
-
import {
|
|
8
|
-
import { CHAIN_ID } from "../constants";
|
|
9
|
-
import { usePassportContext } from "./usePassportContext";
|
|
10
|
-
import { normalizePrecision } from "../utils/numbers";
|
|
5
|
+
import { useCollateralPrice } from "./useCollateralPrice";
|
|
11
6
|
export const CONVERSION_RATE_DECIMALS = 18;
|
|
12
7
|
// If the oracle has not been updated in at least 60 seconds, it is stale.
|
|
13
8
|
const MAX_PRICE_DELAY = 60 * ONE_SECOND_MS;
|
|
@@ -22,46 +17,24 @@ export const QUERY_KEY = "passport.assetsConversionRates";
|
|
|
22
17
|
*/
|
|
23
18
|
export function useAssetsConversionRates() {
|
|
24
19
|
const portalApiClient = usePortalApiClient();
|
|
25
|
-
const {
|
|
26
|
-
const
|
|
20
|
+
const { data: collateralPriceData } = useCollateralPrice();
|
|
21
|
+
const collateralPrice = collateralPriceData?.toString();
|
|
27
22
|
return useQuery({
|
|
28
|
-
queryKey: [QUERY_KEY],
|
|
29
|
-
queryFn: async () => Promise.all([
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
...priceOracleContract,
|
|
33
|
-
functionName: "latestRoundData",
|
|
34
|
-
chainId: CHAIN_ID[environment],
|
|
35
|
-
}),
|
|
36
|
-
]),
|
|
37
|
-
select: ([portalStatistics, btcPriceData]) => {
|
|
23
|
+
queryKey: [QUERY_KEY, collateralPrice],
|
|
24
|
+
queryFn: async () => Promise.all([portalApiClient.getPortalStatistics()]),
|
|
25
|
+
enabled: !!collateralPrice,
|
|
26
|
+
select: ([portalStatistics]) => {
|
|
38
27
|
const tTokenConversionRate = portalStatistics.tTokenPrice;
|
|
39
|
-
const [, btcConversionRate] = btcPriceData;
|
|
40
28
|
const tPrice = parseUnits(tTokenConversionRate.toString(), CONVERSION_RATE_DECIMALS);
|
|
41
|
-
const btcPrice = normalizePrecision(btcConversionRate, CONVERSION_RATE_DECIMALS);
|
|
42
29
|
return {
|
|
43
30
|
rates: {
|
|
44
31
|
mT: tPrice,
|
|
45
|
-
BTC:
|
|
32
|
+
BTC: BigInt(collateralPrice),
|
|
46
33
|
},
|
|
47
34
|
decimals: CONVERSION_RATE_DECIMALS,
|
|
48
35
|
};
|
|
49
36
|
},
|
|
50
|
-
refetchInterval:
|
|
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
|
-
},
|
|
37
|
+
refetchInterval: MAX_PRICE_DELAY,
|
|
65
38
|
});
|
|
66
39
|
}
|
|
67
40
|
//# 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,
|
|
1
|
+
{"version":3,"file":"useAssetsConversionRates.js","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAA;AAE1C,0EAA0E;AAC1E,MAAM,eAAe,GAAG,EAAE,GAAG,aAAa,CAAA;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,gCAAgC,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;IAC5C,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAE1D,MAAM,eAAe,GAAG,mBAAmB,EAAE,QAAQ,EAAE,CAAA;IAEvD,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;QACtC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC,CAAC,eAAe;QAC1B,MAAM,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE;YAC7B,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,CAAA;YAEzD,MAAM,MAAM,GAAG,UAAU,CACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,wBAAwB,CACzB,CAAA;YAED,OAAO;gBACL,KAAK,EAAE;oBACL,EAAE,EAAE,MAAM;oBACV,GAAG,EAAE,MAAM,CAAC,eAAgB,CAAC;iBAC9B;gBACD,QAAQ,EAAE,wBAAwB;aACnC,CAAA;QACH,CAAC;QACD,eAAe,EAAE,eAAe;KACjC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -58,21 +58,6 @@ 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;
|
|
76
61
|
}], true, {
|
|
77
62
|
collateral: {
|
|
78
63
|
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":"AAwFA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8F9C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB;;EAatC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB;;EAajC"}
|
|
@@ -10,6 +10,7 @@ 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";
|
|
13
14
|
const DEBT_AND_COLL_PRECISION = 18;
|
|
14
15
|
// Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
|
|
15
16
|
// support importing JSON as const yet so types cannot be inferred from the
|
|
@@ -77,21 +78,6 @@ const BORROWER_OPERATIONS_ABI = [
|
|
|
77
78
|
type: "function",
|
|
78
79
|
},
|
|
79
80
|
];
|
|
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
|
-
];
|
|
95
81
|
/**
|
|
96
82
|
* Query hook for getting borrow data. Returns collateral and trove debt for the
|
|
97
83
|
* connected account, based on it's evm address.
|
|
@@ -100,18 +86,18 @@ const PRICE_FEED_ABI = [
|
|
|
100
86
|
export function useBorrowData(queryOptions = {}) {
|
|
101
87
|
const { environment = "mainnet" } = usePassportContext();
|
|
102
88
|
const walletAccount = useWalletAccount();
|
|
89
|
+
const { data: collateralPriceData } = useCollateralPrice();
|
|
90
|
+
const collateralPrice = collateralPriceData?.toString();
|
|
103
91
|
const contractAddress = useMemo(() => {
|
|
104
92
|
if (environment === "mainnet") {
|
|
105
93
|
return {
|
|
106
94
|
troveManager: mainnetBorrowContracts.TroveManager.address,
|
|
107
95
|
borrowerOperations: mainnetBorrowContracts.BorrowerOperations.address,
|
|
108
|
-
priceFeed: mainnetBorrowContracts.PriceFeed.address,
|
|
109
96
|
};
|
|
110
97
|
}
|
|
111
98
|
return {
|
|
112
99
|
troveManager: testnetBorrowContracts.TroveManager.address,
|
|
113
100
|
borrowerOperations: testnetBorrowContracts.BorrowerOperations.address,
|
|
114
|
-
priceFeed: testnetBorrowContracts.PriceFeed.address,
|
|
115
101
|
};
|
|
116
102
|
}, [environment]);
|
|
117
103
|
const chainId = CHAIN_ID[environment];
|
|
@@ -132,30 +118,25 @@ export function useBorrowData(queryOptions = {}) {
|
|
|
132
118
|
functionName: "MUSD_GAS_COMPENSATION",
|
|
133
119
|
chainId,
|
|
134
120
|
},
|
|
135
|
-
{
|
|
136
|
-
abi: PRICE_FEED_ABI,
|
|
137
|
-
address: contractAddress.priceFeed,
|
|
138
|
-
functionName: "fetchPrice",
|
|
139
|
-
chainId,
|
|
140
|
-
},
|
|
141
121
|
],
|
|
142
122
|
query: {
|
|
143
|
-
enabled: !!walletAccount.accountAddress,
|
|
123
|
+
enabled: !!walletAccount.accountAddress && !!collateralPrice,
|
|
144
124
|
staleTime: 5 * ONE_MINUTE_MS,
|
|
145
125
|
retry: 1,
|
|
146
126
|
select: (data) => {
|
|
147
127
|
if (!data || data.some((item) => !item.result))
|
|
148
128
|
throw new Error("No borrow data available");
|
|
129
|
+
if (!collateralPrice)
|
|
130
|
+
throw new Error("Collateral price not available");
|
|
149
131
|
const [rawCollateral, principal, interest] = data[0].result;
|
|
150
132
|
const gasCompensation = data[1].result;
|
|
151
|
-
const collateralPrice = data[2].result;
|
|
152
133
|
const btcDetails = getAsset("BTC");
|
|
153
134
|
const collateral = {
|
|
154
135
|
value: rawCollateral,
|
|
155
136
|
decimals: btcDetails.decimals,
|
|
156
137
|
symbol: btcDetails.symbol,
|
|
157
138
|
formatted: formatUnits(rawCollateral, DEBT_AND_COLL_PRECISION),
|
|
158
|
-
usd: convertToUsd(rawCollateral, DEBT_AND_COLL_PRECISION, collateralPrice, DEBT_AND_COLL_PRECISION),
|
|
139
|
+
usd: convertToUsd(rawCollateral, DEBT_AND_COLL_PRECISION, BigInt(collateralPrice), DEBT_AND_COLL_PRECISION),
|
|
159
140
|
};
|
|
160
141
|
const debtInUsdValue = bigIntMax(normalizePrecision(principal + interest - gasCompensation, DEBT_AND_COLL_PRECISION), 0n);
|
|
161
142
|
const formattedDebtInUsd = formatUnits(debtInUsdValue, DEBT_AND_COLL_PRECISION);
|
|
@@ -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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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCollateralPrice.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCollateralPrice.ts"],"names":[],"mappings":"AAgCA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,KAAK;;;;;;;;;;uCAwBnD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useReadContract } from "wagmi";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { mainnetBorrowContracts, testnetBorrowContracts, } from "../lib/contracts";
|
|
4
|
+
import { usePassportContext } from "./usePassportContext";
|
|
5
|
+
import { CHAIN_ID } from "../constants";
|
|
6
|
+
import useWalletAccount from "./useWalletAccount";
|
|
7
|
+
// Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
|
|
8
|
+
// support importing JSON as const yet so types cannot be inferred from the
|
|
9
|
+
// imported contract. As a workaround there is minimal ABI definition that can
|
|
10
|
+
// be asserted types from.
|
|
11
|
+
// Ref: https://wagmi.sh/core/typescript#const-assert-abis-typed-data
|
|
12
|
+
const PRICE_FEED_ABI = [
|
|
13
|
+
{
|
|
14
|
+
inputs: [],
|
|
15
|
+
name: "fetchPrice",
|
|
16
|
+
outputs: [
|
|
17
|
+
{
|
|
18
|
+
internalType: "uint256",
|
|
19
|
+
name: "",
|
|
20
|
+
type: "uint256",
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
stateMutability: "view",
|
|
24
|
+
type: "function",
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* Query hook for getting borrow data. Returns collateral and trove debt for the
|
|
29
|
+
* connected account, based on it's evm address.
|
|
30
|
+
* @param queryOptions Query options passed to the underlying `useQuery` hook.
|
|
31
|
+
*/
|
|
32
|
+
export function useCollateralPrice(queryOptions = {}) {
|
|
33
|
+
const { environment = "mainnet" } = usePassportContext();
|
|
34
|
+
const walletAccount = useWalletAccount();
|
|
35
|
+
const priceFeedContractAddress = useMemo(() => {
|
|
36
|
+
if (environment === "mainnet") {
|
|
37
|
+
return mainnetBorrowContracts.PriceFeed.address;
|
|
38
|
+
}
|
|
39
|
+
return testnetBorrowContracts.PriceFeed.address;
|
|
40
|
+
}, [environment]);
|
|
41
|
+
const chainId = CHAIN_ID[environment];
|
|
42
|
+
return useReadContract({
|
|
43
|
+
abi: PRICE_FEED_ABI,
|
|
44
|
+
address: priceFeedContractAddress,
|
|
45
|
+
functionName: "fetchPrice",
|
|
46
|
+
chainId,
|
|
47
|
+
query: {
|
|
48
|
+
enabled: !!walletAccount.accountAddress,
|
|
49
|
+
retry: 1,
|
|
50
|
+
...queryOptions,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=useCollateralPrice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,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,KAAK,EAAE,CAAC;YACR,GAAG,YAAY;SAChB;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokensBalances.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAEL,cAAc,EAEf,MAAM,kBAAkB,CAAA;AAmBzB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;EAoBH,CAAA;AAgBxB,KAAK,iCAAiC,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI;IACnE,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,YAAY,CAAC,EAAE,IAAI,CACjB,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,EAChD,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAC9C,CAAA;CACF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAC1D,OAAO,GAAE,iCAAiC,CAAC,CAAC,CAAM,
|
|
1
|
+
{"version":3,"file":"useTokensBalances.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAEL,cAAc,EAEf,MAAM,kBAAkB,CAAA;AAmBzB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;EAoBH,CAAA;AAgBxB,KAAK,iCAAiC,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI;IACnE,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,YAAY,CAAC,EAAE,IAAI,CACjB,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,EAChD,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAC9C,CAAA;CACF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAC1D,OAAO,GAAE,iCAAiC,CAAC,CAAC,CAAM,kGA+HnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B;;EAS1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB;;EASrC"}
|
|
@@ -80,6 +80,9 @@ export function useTokensBalances(options = {}) {
|
|
|
80
80
|
walletAccount?.accountAddress,
|
|
81
81
|
options.tokens,
|
|
82
82
|
chainId,
|
|
83
|
+
conversionRatesData?.decimals,
|
|
84
|
+
conversionRatesData?.rates.BTC,
|
|
85
|
+
conversionRatesData?.rates.mT,
|
|
83
86
|
],
|
|
84
87
|
enabled: !!walletAccount?.accountAddress && !!conversionRatesData,
|
|
85
88
|
queryFn: async () => {
|
|
@@ -87,7 +90,8 @@ export function useTokensBalances(options = {}) {
|
|
|
87
90
|
const contractsMap = isMainnet
|
|
88
91
|
? mainnetTokenContracts
|
|
89
92
|
: testnetTokenContracts;
|
|
90
|
-
|
|
93
|
+
const accountAddress = walletAccount?.accountAddress;
|
|
94
|
+
if (!accountAddress) {
|
|
91
95
|
throw new Error("Account address is not available.");
|
|
92
96
|
}
|
|
93
97
|
const tokenContracts = tokens.map((token) => {
|
|
@@ -96,12 +100,12 @@ export function useTokensBalances(options = {}) {
|
|
|
96
100
|
address,
|
|
97
101
|
abi: BALANCE_OF_ABI,
|
|
98
102
|
functionName: "balanceOf",
|
|
99
|
-
args: [
|
|
103
|
+
args: [accountAddress],
|
|
100
104
|
chainId,
|
|
101
105
|
};
|
|
102
106
|
});
|
|
103
107
|
return Promise.all([
|
|
104
|
-
getBalance(config, { address:
|
|
108
|
+
getBalance(config, { address: accountAddress }),
|
|
105
109
|
readContracts(config, {
|
|
106
110
|
contracts: tokenContracts,
|
|
107
111
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokensBalances.js","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAO,WAAW,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,EACL,QAAQ,EACR,cAAc,GAEf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EACL,qBAAqB,EAErB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAC9E,0BAA0B;AAC1B,qEAAqE;AAErE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACqB,CAAA;AAExB,MAAM,cAAc,GAAqB;IACvC,QAAQ;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,OAAO;IACP,OAAO;IACP,WAAW;IACX,MAAM;CACP,CAAA;AAqBD,MAAM,wBAAwB,GAAG,wBAAwB,CAAA;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAgD,EAAE;IAElD,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAA;IAEhE,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,wBAAwB,EAAE,CAAA;IAEhE,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAExD,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAA;IAE3E,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE;YACR,wBAAwB;YACxB,aAAa,EAAE,cAAc;YAC7B,OAAO,CAAC,MAAM;YACd,OAAO;
|
|
1
|
+
{"version":3,"file":"useTokensBalances.js","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAO,WAAW,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,EACL,QAAQ,EACR,cAAc,GAEf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EACL,qBAAqB,EAErB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAC9E,0BAA0B;AAC1B,qEAAqE;AAErE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACqB,CAAA;AAExB,MAAM,cAAc,GAAqB;IACvC,QAAQ;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,OAAO;IACP,OAAO;IACP,WAAW;IACX,MAAM;CACP,CAAA;AAqBD,MAAM,wBAAwB,GAAG,wBAAwB,CAAA;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAgD,EAAE;IAElD,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAA;IAEhE,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,wBAAwB,EAAE,CAAA;IAEhE,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAExD,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAA;IAE3E,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE;YACR,wBAAwB;YACxB,aAAa,EAAE,cAAc;YAC7B,OAAO,CAAC,MAAM;YACd,OAAO;YACP,mBAAmB,EAAE,QAAQ;YAC7B,mBAAmB,EAAE,KAAK,CAAC,GAAG;YAC9B,mBAAmB,EAAE,KAAK,CAAC,EAAE;SAC9B;QACD,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,cAAc,IAAI,CAAC,CAAC,mBAAmB;QACjE,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,SAAS,GAAG,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAA;YAC9C,MAAM,YAAY,GAAG,SAAS;gBAC5B,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,qBAAqB,CAAA;YAEzB,MAAM,cAAc,GAAG,aAAa,EAAE,cAAc,CAAA;YAEpD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;YACtD,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;gBACvC,OAAO;oBACL,OAAO;oBACP,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,WAAoB;oBAClC,IAAI,EAAE,CAAC,cAAc,CAAC;oBACtB,OAAO;iBACR,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAC,GAAG,CAAC;gBACjB,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;gBAC/C,aAAa,CAAC,MAAM,EAAE;oBACpB,SAAS,EAAE,cAAc;iBAC1B,CAAC;aACH,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAA;YAC7C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;YAC5D,CAAC;YAED,MAAM,gBAAgB,GAAG;gBACvB,GAAG,UAAU;gBACb,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM;gBAC9B,GAAG,EAAE,YAAY,CACf,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,QAAQ,EACnB,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAC7B,mBAAmB,CAAC,QAAQ,CAC7B;aACF,CAAA;YAED,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAClE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAE5C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,QAAQ,aAAa,EAAE,cAAc,GAAG,CAC5E,CAAA;gBACH,CAAC;gBAED,MAAM,YAAY,GAA8B;oBAC9C,KAAK,EAAE,IAAI,CAAC,MAAM;oBAClB,QAAQ;oBACR,MAAM;oBACN,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;iBAC9C,CAAA;gBAED,IAAI,GAAG,GAAG;oBACR,KAAK,EAAE,kBAAkB,CACvB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,QAAQ,EACrB,mBAAmB,CAAC,QAAQ,CAC7B;oBACD,SAAS,EAAE,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC;iBAClE,CAAA;gBACD,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClD,GAAG,GAAG,YAAY,CAChB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,QAAQ,EACrB,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAC7B,mBAAmB,CAAC,QAAQ,CAC7B,CAAA;gBACH,CAAC;gBACD,IAAI,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7C,GAAG,GAAG,YAAY,CAChB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,QAAQ,EACrB,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAC5B,mBAAmB,CAAC,QAAQ,CAC7B,CAAA;gBACH,CAAC;gBAED,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,CAAA;YACjC,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,gBAAgB,EAAE,GAAG,oBAAoB,CAAC,CAAC,MAAM,CACvD,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACf,GAAG,GAAG;gBACN,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;aACtB,CAAC,EACF,EAA6C,CAC9C,CAAA;QACH,CAAC;QACD,GAAG,gBAAgB;KACpB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAC3C,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAA;IAEzE,OAAO;QACL,wBAAwB,EAAE,+BAA+B;KAC1D,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CACrC,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAA;IAEpE,OAAO;QACL,kBAAkB,EAAE,yBAAyB;KAC9C,CAAA;AACH,CAAC"}
|
|
@@ -9,5 +9,5 @@ export declare const testnetTokenContracts: ContractsMap<MezoChainToken>;
|
|
|
9
9
|
export declare const mainnetTokenContracts: ContractsMap<MezoChainToken>;
|
|
10
10
|
export declare const mainnetBorrowContracts: ContractsMap<MezoBorrowContract>;
|
|
11
11
|
export declare const testnetBorrowContracts: ContractsMap<MezoBorrowContract>;
|
|
12
|
-
export {
|
|
12
|
+
export {};
|
|
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"}
|
|
@@ -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numbers.test.js","sourceRoot":"","sources":["../../../src/utils/numbers.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"numbers.test.js","sourceRoot":"","sources":["../../../src/utils/numbers.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/api/portal.ts
CHANGED
package/src/hooks/index.ts
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import { useQuery } from "@tanstack/react-query"
|
|
2
|
-
import { useConfig } from "wagmi"
|
|
3
|
-
import { readContract } from "wagmi/actions"
|
|
4
2
|
import { parseUnits } from "viem"
|
|
5
3
|
import { ONE_SECOND_MS } from "../utils/time"
|
|
6
4
|
import { usePortalApiClient } from "./usePortalApiClient"
|
|
7
|
-
import {
|
|
8
|
-
import { CHAIN_ID } from "../constants"
|
|
9
|
-
import { usePassportContext } from "./usePassportContext"
|
|
10
|
-
import { normalizePrecision } from "../utils/numbers"
|
|
5
|
+
import { useCollateralPrice } from "./useCollateralPrice"
|
|
11
6
|
|
|
12
7
|
export const CONVERSION_RATE_DECIMALS = 18
|
|
13
8
|
|
|
@@ -26,58 +21,30 @@ export const QUERY_KEY = "passport.assetsConversionRates"
|
|
|
26
21
|
*/
|
|
27
22
|
export function useAssetsConversionRates() {
|
|
28
23
|
const portalApiClient = usePortalApiClient()
|
|
29
|
-
const {
|
|
30
|
-
|
|
24
|
+
const { data: collateralPriceData } = useCollateralPrice()
|
|
25
|
+
|
|
26
|
+
const collateralPrice = collateralPriceData?.toString()
|
|
31
27
|
|
|
32
28
|
return useQuery({
|
|
33
|
-
queryKey: [QUERY_KEY],
|
|
34
|
-
queryFn: async () =>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
readContract(config, {
|
|
38
|
-
...priceOracleContract,
|
|
39
|
-
functionName: "latestRoundData",
|
|
40
|
-
chainId: CHAIN_ID[environment],
|
|
41
|
-
}),
|
|
42
|
-
]),
|
|
43
|
-
select: ([portalStatistics, btcPriceData]) => {
|
|
29
|
+
queryKey: [QUERY_KEY, collateralPrice],
|
|
30
|
+
queryFn: async () => Promise.all([portalApiClient.getPortalStatistics()]),
|
|
31
|
+
enabled: !!collateralPrice,
|
|
32
|
+
select: ([portalStatistics]) => {
|
|
44
33
|
const tTokenConversionRate = portalStatistics.tTokenPrice
|
|
45
|
-
const [, btcConversionRate] = btcPriceData
|
|
46
34
|
|
|
47
35
|
const tPrice = parseUnits(
|
|
48
36
|
tTokenConversionRate.toString(),
|
|
49
37
|
CONVERSION_RATE_DECIMALS,
|
|
50
38
|
)
|
|
51
39
|
|
|
52
|
-
const btcPrice = normalizePrecision(
|
|
53
|
-
btcConversionRate,
|
|
54
|
-
CONVERSION_RATE_DECIMALS,
|
|
55
|
-
)
|
|
56
|
-
|
|
57
40
|
return {
|
|
58
41
|
rates: {
|
|
59
42
|
mT: tPrice,
|
|
60
|
-
BTC:
|
|
43
|
+
BTC: BigInt(collateralPrice!),
|
|
61
44
|
},
|
|
62
45
|
decimals: CONVERSION_RATE_DECIMALS,
|
|
63
46
|
}
|
|
64
47
|
},
|
|
65
|
-
refetchInterval:
|
|
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
|
-
},
|
|
48
|
+
refetchInterval: MAX_PRICE_DELAY,
|
|
82
49
|
})
|
|
83
50
|
}
|
|
@@ -13,6 +13,7 @@ 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"
|
|
16
17
|
|
|
17
18
|
const DEBT_AND_COLL_PRECISION = 18
|
|
18
19
|
|
|
@@ -85,22 +86,6 @@ const BORROWER_OPERATIONS_ABI = [
|
|
|
85
86
|
},
|
|
86
87
|
] as const
|
|
87
88
|
|
|
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
|
-
|
|
104
89
|
/**
|
|
105
90
|
* Query hook for getting borrow data. Returns collateral and trove debt for the
|
|
106
91
|
* connected account, based on it's evm address.
|
|
@@ -110,18 +95,20 @@ export function useBorrowData(queryOptions = {}) {
|
|
|
110
95
|
const { environment = "mainnet" } = usePassportContext()
|
|
111
96
|
const walletAccount = useWalletAccount()
|
|
112
97
|
|
|
98
|
+
const { data: collateralPriceData } = useCollateralPrice()
|
|
99
|
+
|
|
100
|
+
const collateralPrice = collateralPriceData?.toString()
|
|
101
|
+
|
|
113
102
|
const contractAddress = useMemo(() => {
|
|
114
103
|
if (environment === "mainnet") {
|
|
115
104
|
return {
|
|
116
105
|
troveManager: mainnetBorrowContracts.TroveManager.address,
|
|
117
106
|
borrowerOperations: mainnetBorrowContracts.BorrowerOperations.address,
|
|
118
|
-
priceFeed: mainnetBorrowContracts.PriceFeed.address,
|
|
119
107
|
}
|
|
120
108
|
}
|
|
121
109
|
return {
|
|
122
110
|
troveManager: testnetBorrowContracts.TroveManager.address,
|
|
123
111
|
borrowerOperations: testnetBorrowContracts.BorrowerOperations.address,
|
|
124
|
-
priceFeed: testnetBorrowContracts.PriceFeed.address,
|
|
125
112
|
}
|
|
126
113
|
}, [environment])
|
|
127
114
|
|
|
@@ -144,24 +131,19 @@ export function useBorrowData(queryOptions = {}) {
|
|
|
144
131
|
functionName: "MUSD_GAS_COMPENSATION",
|
|
145
132
|
chainId,
|
|
146
133
|
},
|
|
147
|
-
{
|
|
148
|
-
abi: PRICE_FEED_ABI,
|
|
149
|
-
address: contractAddress.priceFeed,
|
|
150
|
-
functionName: "fetchPrice",
|
|
151
|
-
chainId,
|
|
152
|
-
},
|
|
153
134
|
],
|
|
154
135
|
query: {
|
|
155
|
-
enabled: !!walletAccount.accountAddress,
|
|
136
|
+
enabled: !!walletAccount.accountAddress && !!collateralPrice,
|
|
156
137
|
staleTime: 5 * ONE_MINUTE_MS,
|
|
157
138
|
retry: 1,
|
|
158
139
|
select: (data) => {
|
|
159
140
|
if (!data || data.some((item) => !item.result))
|
|
160
141
|
throw new Error("No borrow data available")
|
|
161
142
|
|
|
143
|
+
if (!collateralPrice) throw new Error("Collateral price not available")
|
|
144
|
+
|
|
162
145
|
const [rawCollateral, principal, interest] = data[0].result!
|
|
163
146
|
const gasCompensation = data[1].result!
|
|
164
|
-
const collateralPrice = data[2].result!
|
|
165
147
|
|
|
166
148
|
const btcDetails = getAsset("BTC")
|
|
167
149
|
|
|
@@ -173,7 +155,7 @@ export function useBorrowData(queryOptions = {}) {
|
|
|
173
155
|
usd: convertToUsd(
|
|
174
156
|
rawCollateral,
|
|
175
157
|
DEBT_AND_COLL_PRECISION,
|
|
176
|
-
collateralPrice,
|
|
158
|
+
BigInt(collateralPrice),
|
|
177
159
|
DEBT_AND_COLL_PRECISION,
|
|
178
160
|
),
|
|
179
161
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { useReadContract } from "wagmi"
|
|
2
|
+
import { useMemo } from "react"
|
|
3
|
+
import {
|
|
4
|
+
mainnetBorrowContracts,
|
|
5
|
+
testnetBorrowContracts,
|
|
6
|
+
} from "../lib/contracts"
|
|
7
|
+
import { usePassportContext } from "./usePassportContext"
|
|
8
|
+
import { CHAIN_ID } from "../constants"
|
|
9
|
+
import useWalletAccount from "./useWalletAccount"
|
|
10
|
+
|
|
11
|
+
// Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
|
|
12
|
+
// support importing JSON as const yet so types cannot be inferred from the
|
|
13
|
+
// imported contract. As a workaround there is minimal ABI definition that can
|
|
14
|
+
// be asserted types from.
|
|
15
|
+
// Ref: https://wagmi.sh/core/typescript#const-assert-abis-typed-data
|
|
16
|
+
|
|
17
|
+
const PRICE_FEED_ABI = [
|
|
18
|
+
{
|
|
19
|
+
inputs: [],
|
|
20
|
+
name: "fetchPrice",
|
|
21
|
+
outputs: [
|
|
22
|
+
{
|
|
23
|
+
internalType: "uint256",
|
|
24
|
+
name: "",
|
|
25
|
+
type: "uint256",
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
stateMutability: "view",
|
|
29
|
+
type: "function",
|
|
30
|
+
},
|
|
31
|
+
] as const
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Query hook for getting borrow data. Returns collateral and trove debt for the
|
|
35
|
+
* connected account, based on it's evm address.
|
|
36
|
+
* @param queryOptions Query options passed to the underlying `useQuery` hook.
|
|
37
|
+
*/
|
|
38
|
+
export function useCollateralPrice(queryOptions = {}) {
|
|
39
|
+
const { environment = "mainnet" } = usePassportContext()
|
|
40
|
+
const walletAccount = useWalletAccount()
|
|
41
|
+
|
|
42
|
+
const priceFeedContractAddress = useMemo(() => {
|
|
43
|
+
if (environment === "mainnet") {
|
|
44
|
+
return mainnetBorrowContracts.PriceFeed.address
|
|
45
|
+
}
|
|
46
|
+
return testnetBorrowContracts.PriceFeed.address
|
|
47
|
+
}, [environment])
|
|
48
|
+
|
|
49
|
+
const chainId = CHAIN_ID[environment]
|
|
50
|
+
|
|
51
|
+
return useReadContract({
|
|
52
|
+
abi: PRICE_FEED_ABI,
|
|
53
|
+
address: priceFeedContractAddress,
|
|
54
|
+
functionName: "fetchPrice",
|
|
55
|
+
chainId,
|
|
56
|
+
query: {
|
|
57
|
+
enabled: !!walletAccount.accountAddress,
|
|
58
|
+
retry: 1,
|
|
59
|
+
...queryOptions,
|
|
60
|
+
},
|
|
61
|
+
})
|
|
62
|
+
}
|
|
@@ -124,6 +124,9 @@ export function useTokensBalances<T extends MezoChainToken[]>(
|
|
|
124
124
|
walletAccount?.accountAddress,
|
|
125
125
|
options.tokens,
|
|
126
126
|
chainId,
|
|
127
|
+
conversionRatesData?.decimals,
|
|
128
|
+
conversionRatesData?.rates.BTC,
|
|
129
|
+
conversionRatesData?.rates.mT,
|
|
127
130
|
],
|
|
128
131
|
enabled: !!walletAccount?.accountAddress && !!conversionRatesData,
|
|
129
132
|
queryFn: async () => {
|
|
@@ -132,7 +135,9 @@ export function useTokensBalances<T extends MezoChainToken[]>(
|
|
|
132
135
|
? mainnetTokenContracts
|
|
133
136
|
: testnetTokenContracts
|
|
134
137
|
|
|
135
|
-
|
|
138
|
+
const accountAddress = walletAccount?.accountAddress
|
|
139
|
+
|
|
140
|
+
if (!accountAddress) {
|
|
136
141
|
throw new Error("Account address is not available.")
|
|
137
142
|
}
|
|
138
143
|
|
|
@@ -142,13 +147,13 @@ export function useTokensBalances<T extends MezoChainToken[]>(
|
|
|
142
147
|
address,
|
|
143
148
|
abi: BALANCE_OF_ABI,
|
|
144
149
|
functionName: "balanceOf" as const,
|
|
145
|
-
args: [
|
|
150
|
+
args: [accountAddress],
|
|
146
151
|
chainId,
|
|
147
152
|
}
|
|
148
153
|
})
|
|
149
154
|
|
|
150
155
|
return Promise.all([
|
|
151
|
-
getBalance(config, { address:
|
|
156
|
+
getBalance(config, { address: accountAddress }),
|
|
152
157
|
readContracts(config, {
|
|
153
158
|
contracts: tokenContracts,
|
|
154
159
|
}),
|
|
@@ -1,43 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,52 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
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
|
-
}
|