@mezo-org/passport 0.4.0-dev.20 → 0.4.0-dev.21
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/README.md +18 -22
- package/dist/src/api/portal.d.ts +1 -0
- package/dist/src/api/portal.d.ts.map +1 -1
- package/dist/src/api/portal.js.map +1 -1
- package/dist/src/components/Dropdown/Content.d.ts +16 -2
- package/dist/src/components/Dropdown/Content.d.ts.map +1 -1
- package/dist/src/components/Dropdown/Content.js +5 -3
- package/dist/src/components/Dropdown/Content.js.map +1 -1
- package/dist/src/components/Dropdown/Dropdown.d.ts +1 -5
- package/dist/src/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/src/components/Dropdown/Dropdown.js +7 -6
- package/dist/src/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/src/components/Dropdown/ListingItem.d.ts +13 -0
- package/dist/src/components/Dropdown/ListingItem.d.ts.map +1 -0
- package/dist/src/components/Dropdown/ListingItem.js +34 -0
- package/dist/src/components/Dropdown/ListingItem.js.map +1 -0
- package/dist/src/components/Dropdown/Root/AccountAssetItem.d.ts +11 -0
- package/dist/src/components/Dropdown/Root/AccountAssetItem.d.ts.map +1 -0
- package/dist/src/components/Dropdown/Root/AccountAssetItem.js +9 -0
- package/dist/src/components/Dropdown/Root/AccountAssetItem.js.map +1 -0
- package/dist/src/components/Dropdown/Root/AccountBalance.d.ts +2 -1
- package/dist/src/components/Dropdown/Root/AccountBalance.d.ts.map +1 -1
- package/dist/src/components/Dropdown/Root/AccountBalance.js +7 -8
- package/dist/src/components/Dropdown/Root/AccountBalance.js.map +1 -1
- package/dist/src/components/Dropdown/Root/AccountOtherAssets.d.ts +9 -0
- package/dist/src/components/Dropdown/Root/AccountOtherAssets.d.ts.map +1 -0
- package/dist/src/components/Dropdown/Root/AccountOtherAssets.js +47 -0
- package/dist/src/components/Dropdown/Root/AccountOtherAssets.js.map +1 -0
- package/dist/src/components/Dropdown/Root/Root.d.ts +17 -2
- package/dist/src/components/Dropdown/Root/Root.d.ts.map +1 -1
- package/dist/src/components/Dropdown/Root/Root.js +15 -22
- package/dist/src/components/Dropdown/Root/Root.js.map +1 -1
- package/dist/src/components/Dropdown/Root/WalletAddress.js +5 -6
- package/dist/src/components/Dropdown/Root/WalletAddress.js.map +1 -1
- package/dist/src/components/Dropdown/Root/WelcomeBlock.js +4 -3
- package/dist/src/components/Dropdown/Root/WelcomeBlock.js.map +1 -1
- package/dist/src/components/Dropdown/TestnetTopBanner.d.ts +3 -0
- package/dist/src/components/Dropdown/TestnetTopBanner.d.ts.map +1 -0
- package/dist/src/components/Dropdown/TestnetTopBanner.js +14 -0
- package/dist/src/components/Dropdown/TestnetTopBanner.js.map +1 -0
- package/dist/src/config.js +2 -2
- package/dist/src/config.js.map +1 -1
- package/dist/src/constants.d.ts +2 -1
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +5 -4
- package/dist/src/constants.js.map +1 -1
- package/dist/src/hooks/index.d.ts +2 -0
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +2 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/useAssetsConversionRates.d.ts +7 -0
- package/dist/src/hooks/useAssetsConversionRates.d.ts.map +1 -0
- package/dist/src/hooks/{useAssetsUSDConversion.js → useAssetsConversionRates.js} +8 -5
- package/dist/src/hooks/useAssetsConversionRates.js.map +1 -0
- package/dist/src/hooks/useAuthenticateWithWallet.d.ts.map +1 -1
- package/dist/src/hooks/useAuthenticateWithWallet.js +4 -4
- package/dist/src/hooks/useAuthenticateWithWallet.js.map +1 -1
- package/dist/src/hooks/useBorrowData.d.ts +1418 -0
- package/dist/src/hooks/useBorrowData.d.ts.map +1 -0
- package/dist/src/hooks/useBorrowData.js +65 -0
- package/dist/src/hooks/useBorrowData.js.map +1 -0
- package/dist/src/hooks/useDropdownData.d.ts +28 -34
- package/dist/src/hooks/useDropdownData.d.ts.map +1 -1
- package/dist/src/hooks/useDropdownData.js +48 -65
- package/dist/src/hooks/useDropdownData.js.map +1 -1
- package/dist/src/hooks/useTokensBalances.d.ts +74 -0
- package/dist/src/hooks/useTokensBalances.d.ts.map +1 -0
- package/dist/src/hooks/useTokensBalances.js +140 -0
- package/dist/src/hooks/useTokensBalances.js.map +1 -0
- package/dist/src/hooks/useWalletAccount.d.ts +2 -1
- package/dist/src/hooks/useWalletAccount.d.ts.map +1 -1
- package/dist/src/hooks/useWalletAccount.js +2 -1
- package/dist/src/hooks/useWalletAccount.js.map +1 -1
- package/dist/src/lib/contracts/index.d.ts +10 -0
- package/dist/src/lib/contracts/index.d.ts.map +1 -0
- package/dist/src/lib/contracts/index.js +49 -0
- package/dist/src/lib/contracts/index.js.map +1 -0
- package/dist/src/lib/contracts/musd.d.ts +107 -0
- package/dist/src/lib/contracts/musd.d.ts.map +1 -0
- package/dist/src/lib/contracts/musd.js +1070 -0
- package/dist/src/lib/contracts/musd.js.map +1 -0
- package/dist/src/lib/contracts/troveManager.d.ts +1401 -0
- package/dist/src/lib/contracts/troveManager.d.ts.map +1 -0
- package/dist/src/lib/contracts/troveManager.js +1820 -0
- package/dist/src/lib/contracts/troveManager.js.map +1 -0
- package/dist/src/utils/cryptoAssets.d.ts +17 -1
- package/dist/src/utils/cryptoAssets.d.ts.map +1 -1
- package/dist/src/utils/cryptoAssets.js +88 -30
- package/dist/src/utils/cryptoAssets.js.map +1 -1
- package/dist/src/utils/cryptoAssets.test.js +47 -30
- package/dist/src/utils/cryptoAssets.test.js.map +1 -1
- package/dist/src/utils/numbers.d.ts +13 -0
- package/dist/src/utils/numbers.d.ts.map +1 -1
- package/dist/src/utils/numbers.js +46 -0
- package/dist/src/utils/numbers.js.map +1 -1
- package/package.json +6 -5
- package/src/api/portal.ts +1 -0
- package/src/components/Dropdown/Content.tsx +47 -11
- package/src/components/Dropdown/Dropdown.tsx +28 -13
- package/src/components/Dropdown/ListingItem.tsx +80 -0
- package/src/components/Dropdown/README.md +0 -14
- package/src/components/Dropdown/Root/AccountAssetItem.tsx +26 -0
- package/src/components/Dropdown/Root/AccountBalance.tsx +13 -18
- package/src/components/Dropdown/Root/AccountOtherAssets.tsx +63 -0
- package/src/components/Dropdown/Root/Root.tsx +59 -53
- package/src/components/Dropdown/Root/WalletAddress.tsx +7 -7
- package/src/components/Dropdown/Root/WelcomeBlock.tsx +3 -3
- package/src/components/Dropdown/TestnetTopBanner.tsx +32 -0
- package/src/config.ts +2 -2
- package/src/constants.ts +5 -4
- package/src/hooks/index.ts +5 -0
- package/src/hooks/{useAssetsUSDConversion.ts → useAssetsConversionRates.ts} +8 -7
- package/src/hooks/useAuthenticateWithWallet.ts +11 -7
- package/src/hooks/useBorrowData.ts +79 -0
- package/src/hooks/useDropdownData.ts +64 -123
- package/src/hooks/useTokensBalances.ts +187 -0
- package/src/hooks/useWalletAccount.ts +4 -2
- package/src/lib/contracts/index.ts +75 -0
- package/src/lib/contracts/musd.ts +1071 -0
- package/src/lib/contracts/troveManager.ts +1819 -0
- package/src/utils/cryptoAssets.test.ts +52 -34
- package/src/utils/cryptoAssets.ts +114 -34
- package/src/utils/numbers.ts +68 -0
- package/dist/src/components/Dropdown/Root/AccountAssets.d.ts +0 -13
- package/dist/src/components/Dropdown/Root/AccountAssets.d.ts.map +0 -1
- package/dist/src/components/Dropdown/Root/AccountAssets.js +0 -43
- package/dist/src/components/Dropdown/Root/AccountAssets.js.map +0 -1
- package/dist/src/hooks/useAssetsUSDConversion.d.ts +0 -8
- package/dist/src/hooks/useAssetsUSDConversion.d.ts.map +0 -1
- package/dist/src/hooks/useAssetsUSDConversion.js.map +0 -1
- package/src/components/Dropdown/Root/AccountAssets.tsx +0 -108
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBorrowData.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBorrowData.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAyB9C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB;;EAatC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB;;EAajC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { useAccount, useReadContract } from "wagmi";
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
4
|
+
import { ONE_MINUTE_MS } from "../utils/time";
|
|
5
|
+
import { troveManagerContract } from "../lib/contracts";
|
|
6
|
+
import { usePassportContext } from "./usePassportContext";
|
|
7
|
+
import { CHAIN_ID } from "../constants";
|
|
8
|
+
/**
|
|
9
|
+
* Query hook for getting borrow data. Returns collateral and trove debt for the
|
|
10
|
+
* connected account, based on it's evm address.
|
|
11
|
+
* @param queryOptions Query options passed to the underlying `useQuery` hook.
|
|
12
|
+
*/
|
|
13
|
+
export function useBorrowData(queryOptions = {}) {
|
|
14
|
+
const { environment = "mainnet" } = usePassportContext();
|
|
15
|
+
const { address } = useAccount();
|
|
16
|
+
return useReadContract({
|
|
17
|
+
abi: troveManagerContract.abi,
|
|
18
|
+
address: troveManagerContract.address[environment],
|
|
19
|
+
functionName: "getEntireDebtAndColl",
|
|
20
|
+
args: [address || "0x"],
|
|
21
|
+
query: {
|
|
22
|
+
enabled: !!address,
|
|
23
|
+
staleTime: 5 * ONE_MINUTE_MS,
|
|
24
|
+
retry: 1,
|
|
25
|
+
select: (data) => {
|
|
26
|
+
if (!data)
|
|
27
|
+
return undefined;
|
|
28
|
+
const [collateral, principal, interest] = data;
|
|
29
|
+
return {
|
|
30
|
+
collateral,
|
|
31
|
+
troveDebt: principal + interest,
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
...queryOptions,
|
|
35
|
+
},
|
|
36
|
+
chainId: CHAIN_ID[environment],
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Hook for for invalidating current user's borrow data. Can be used to
|
|
41
|
+
* invalidate borrow data manually, which forces the data to be re-fetched.
|
|
42
|
+
* @returns Function `invalidateBorrowData` for invalidating the borrow data
|
|
43
|
+
*/
|
|
44
|
+
export function useInvalidateBorrowData() {
|
|
45
|
+
const queryClient = useQueryClient();
|
|
46
|
+
const { queryKey } = useBorrowData();
|
|
47
|
+
const invalidateBorrowDataHandler = useCallback(() => queryClient.invalidateQueries({ queryKey }), [queryClient, queryKey]);
|
|
48
|
+
return {
|
|
49
|
+
invalidateBorrowData: invalidateBorrowDataHandler,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Hook for for resetting current user's borrow data. Can be used to reset
|
|
54
|
+
* borrow data manually, which forces the data to be re-fetched.
|
|
55
|
+
* @returns Function `resetBorrowData` for resetting the borrow data
|
|
56
|
+
*/
|
|
57
|
+
export function useResetBorrowData() {
|
|
58
|
+
const queryClient = useQueryClient();
|
|
59
|
+
const { queryKey } = useBorrowData();
|
|
60
|
+
const resetBorrowDataHandler = useCallback(() => queryClient.resetQueries({ queryKey }), [queryClient, queryKey]);
|
|
61
|
+
return {
|
|
62
|
+
resetBorrowData: resetBorrowDataHandler,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=useBorrowData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBorrowData.js","sourceRoot":"","sources":["../../../src/hooks/useBorrowData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,YAAY,GAAG,EAAE;IAC7C,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAA;IACxD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAChC,OAAO,eAAe,CAAC;QACrB,GAAG,EAAE,oBAAoB,CAAC,GAAG;QAC7B,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC;QAClD,YAAY,EAAE,sBAAsB;QACpC,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC;QACvB,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,GAAG,aAAa;YAC5B,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,IAAI;oBAAE,OAAO,SAAS,CAAA;gBAE3B,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;gBAC9C,OAAO;oBACL,UAAU;oBACV,SAAS,EAAE,SAAS,GAAG,QAAQ;iBAChC,CAAA;YACH,CAAC;YACD,GAAG,YAAY;SAChB;QACD,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;IAEpC,MAAM,2BAA2B,GAAG,WAAW,CAC7C,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,EACjD,CAAC,WAAW,EAAE,QAAQ,CAAC,CACxB,CAAA;IAED,OAAO;QACL,oBAAoB,EAAE,2BAA2B;KAClD,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;IAEpC,MAAM,sBAAsB,GAAG,WAAW,CACxC,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,EAC5C,CAAC,WAAW,EAAE,QAAQ,CAAC,CACxB,CAAA;IAED,OAAO;QACL,eAAe,EAAE,sBAAsB;KACxC,CAAA;AACH,CAAC"}
|
|
@@ -1,45 +1,39 @@
|
|
|
1
1
|
import { CryptoAssetKey } from "../utils/cryptoAssets";
|
|
2
|
-
/**
|
|
3
|
-
* Formats crypto asset to balance details (balance in USD and decimals)
|
|
4
|
-
* @param type The type of crypto asset
|
|
5
|
-
* @param balance The balance of crypto asset
|
|
6
|
-
* @param btcUsdConversionRate The USD conversion rate
|
|
7
|
-
* @returns The balance details
|
|
8
|
-
*/
|
|
9
|
-
declare function formatCryptoAsset(type: CryptoAssetKey, balance: bigint, btcUsdConversionRate: number): {
|
|
10
|
-
type: CryptoAssetKey;
|
|
11
|
-
balance: string;
|
|
12
|
-
balanceInUsd: string;
|
|
13
|
-
};
|
|
14
2
|
export type DropdownCryptoAsset<T = CryptoAssetKey> = {
|
|
15
3
|
type: T;
|
|
16
4
|
balance: bigint;
|
|
17
5
|
};
|
|
18
|
-
type DropdownDetailedCryptoAsset = ReturnType<typeof formatCryptoAsset>;
|
|
19
|
-
export type DropdownData = {
|
|
20
|
-
mezoId: string;
|
|
21
|
-
accountAddress: string;
|
|
22
|
-
walletAddress: string;
|
|
23
|
-
walletType: "bitcoin" | "evm";
|
|
24
|
-
totalBalanceInUsd: string;
|
|
25
|
-
formattedNativeAssets: DropdownDetailedCryptoAsset[];
|
|
26
|
-
matsnet: {
|
|
27
|
-
mats: string;
|
|
28
|
-
formattedAssets: DropdownDetailedCryptoAsset[];
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
type UseDropdownDataOptions = {
|
|
32
|
-
evmNativeAssets?: DropdownCryptoAsset[];
|
|
33
|
-
matsnetAssets?: DropdownCryptoAsset[];
|
|
34
|
-
};
|
|
35
6
|
/**
|
|
36
7
|
* Aggregates dropdown data for Dropdown component.
|
|
37
|
-
* @param options - Options for the dropdown data.
|
|
38
|
-
* @param options.evmNativeAssets - Native assets for EVM wallet.
|
|
39
|
-
* @param options.matsnetAssets - Matsnet tokens. Rendered as separate section.
|
|
40
8
|
* @returns Dropdown data.
|
|
41
9
|
* @dev This hook is for internal use only.
|
|
42
10
|
*/
|
|
43
|
-
export default function useDropdownData(
|
|
44
|
-
|
|
11
|
+
export default function useDropdownData(): {
|
|
12
|
+
mezoId: string | undefined;
|
|
13
|
+
matsBalance: number;
|
|
14
|
+
accountAddress: string | undefined;
|
|
15
|
+
walletAddress: string | undefined;
|
|
16
|
+
walletType: "bitcoin" | "evm";
|
|
17
|
+
usdTotalBalance: number;
|
|
18
|
+
usdTroveDebt: number;
|
|
19
|
+
usdCollateral: number;
|
|
20
|
+
assets: {
|
|
21
|
+
btc: {
|
|
22
|
+
type: CryptoAssetKey;
|
|
23
|
+
rawBalance: bigint;
|
|
24
|
+
formattedBalance: string;
|
|
25
|
+
usdBalance: number;
|
|
26
|
+
formattedUsdBalance: string;
|
|
27
|
+
};
|
|
28
|
+
musd: {
|
|
29
|
+
type: CryptoAssetKey;
|
|
30
|
+
rawBalance: bigint;
|
|
31
|
+
formattedBalance: string;
|
|
32
|
+
usdBalance: number;
|
|
33
|
+
formattedUsdBalance: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
otherAssetsCount: number;
|
|
37
|
+
otherAssetsUsdTotal: number;
|
|
38
|
+
};
|
|
45
39
|
//# sourceMappingURL=useDropdownData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDropdownData.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDropdownData.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"useDropdownData.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDropdownData.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EAGf,MAAM,uBAAuB,CAAA;AAO9B,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,cAAc,IAAI;IACpD,IAAI,EAAE,CAAC,CAAA;IACP,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6EtC"}
|
|
@@ -1,80 +1,63 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useBalance } from "wagmi";
|
|
2
2
|
import { useGetCurrentAccount } from ".";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
3
|
+
import { isBitcoinLikeCryptoAsset, mapCryptoAssetToDetails, } from "../utils/cryptoAssets";
|
|
4
|
+
import { fromFixedPoint } from "../utils/numbers";
|
|
5
|
+
import useAssetsConversionRates from "./useAssetsConversionRates";
|
|
6
6
|
import useWalletAccount from "./useWalletAccount";
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
* Formats crypto asset to balance details (balance in USD and decimals)
|
|
10
|
-
* @param type The type of crypto asset
|
|
11
|
-
* @param balance The balance of crypto asset
|
|
12
|
-
* @param btcUsdConversionRate The USD conversion rate
|
|
13
|
-
* @returns The balance details
|
|
14
|
-
*/
|
|
15
|
-
function formatCryptoAsset(type, balance, btcUsdConversionRate) {
|
|
16
|
-
const { decimals } = getCryptoAsset(type);
|
|
17
|
-
const nativeBalance = fromFixedPoint(balance, decimals);
|
|
18
|
-
let balanceInUsd = 0;
|
|
19
|
-
if (isBitcoinLikeCryptoAsset(type)) {
|
|
20
|
-
balanceInUsd = fromFixedPoint(balance * BigInt(btcUsdConversionRate), decimals);
|
|
21
|
-
}
|
|
22
|
-
if (isUsdLikeCryptoAsset(type)) {
|
|
23
|
-
balanceInUsd = nativeBalance;
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
type,
|
|
27
|
-
balance: fromFixedPointToString(balance, decimals, isUsdLikeCryptoAsset(type) ? 2 : 4),
|
|
28
|
-
balanceInUsd: formatUsd(balanceInUsd),
|
|
29
|
-
};
|
|
30
|
-
}
|
|
7
|
+
import { useTokensBalances } from "./useTokensBalances";
|
|
8
|
+
import { useBorrowData } from "./useBorrowData";
|
|
31
9
|
/**
|
|
32
10
|
* Aggregates dropdown data for Dropdown component.
|
|
33
|
-
* @param options - Options for the dropdown data.
|
|
34
|
-
* @param options.evmNativeAssets - Native assets for EVM wallet.
|
|
35
|
-
* @param options.matsnetAssets - Matsnet tokens. Rendered as separate section.
|
|
36
11
|
* @returns Dropdown data.
|
|
37
12
|
* @dev This hook is for internal use only.
|
|
38
13
|
*/
|
|
39
|
-
export default function useDropdownData(
|
|
40
|
-
const {
|
|
41
|
-
const {
|
|
42
|
-
const { address: walletAddress, networkFamily, isConnected, } = useWalletAccount();
|
|
14
|
+
export default function useDropdownData() {
|
|
15
|
+
const { data: btcBalance } = useBalance();
|
|
16
|
+
const { walletAddress, accountAddress, networkFamily: walletType, } = useWalletAccount();
|
|
43
17
|
const { data: passportAccount } = useGetCurrentAccount();
|
|
44
|
-
const { data:
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
18
|
+
const { data: assetsConversionRates } = useAssetsConversionRates();
|
|
19
|
+
const { data: tokensBalances } = useTokensBalances();
|
|
20
|
+
const { data: debt } = useBorrowData();
|
|
21
|
+
const mezoId = passportAccount?.mezoId;
|
|
22
|
+
const detailedAssets = Object.fromEntries([
|
|
23
|
+
["BTC", btcBalance?.value ?? 0n],
|
|
24
|
+
...Object.entries(tokensBalances ?? {}),
|
|
25
|
+
].map((asset) => {
|
|
26
|
+
const [type, balance] = asset;
|
|
27
|
+
let usdConversionRate;
|
|
28
|
+
if (isBitcoinLikeCryptoAsset(type))
|
|
29
|
+
usdConversionRate = assetsConversionRates?.usd.btc;
|
|
30
|
+
if (type === "mT") {
|
|
31
|
+
usdConversionRate = assetsConversionRates?.usd.t;
|
|
32
|
+
}
|
|
33
|
+
return [
|
|
34
|
+
type,
|
|
35
|
+
mapCryptoAssetToDetails(type, balance, usdConversionRate || 1),
|
|
36
|
+
];
|
|
37
|
+
}));
|
|
38
|
+
const assets = {
|
|
39
|
+
btc: detailedAssets.BTC,
|
|
40
|
+
musd: detailedAssets.MUSD,
|
|
41
|
+
};
|
|
42
|
+
const otherAssetsData = Object.values(detailedAssets).filter((asset) => !["BTC", "MUSD"].includes(asset.type));
|
|
43
|
+
const otherAssetsCount = otherAssetsData.length;
|
|
44
|
+
const otherAssetsUsdTotal = otherAssetsData.reduce((sum, { usdBalance }) => sum + usdBalance, 0);
|
|
45
|
+
const usdTotalBalance = Object.values(detailedAssets).reduce((sum, { usdBalance }) => sum + usdBalance, 0);
|
|
46
|
+
const matsBalance = passportAccount?.mats.totalMats || 0;
|
|
47
|
+
const usdCollateral = fromFixedPoint((debt?.collateral ?? 0n) * BigInt(assetsConversionRates?.usd.btc ?? 0), 18);
|
|
48
|
+
const usdTroveDebt = fromFixedPoint(debt?.troveDebt ?? 0n, 18);
|
|
67
49
|
return {
|
|
68
50
|
mezoId,
|
|
51
|
+
matsBalance,
|
|
69
52
|
accountAddress,
|
|
70
53
|
walletAddress,
|
|
71
|
-
walletType
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
54
|
+
walletType,
|
|
55
|
+
usdTotalBalance,
|
|
56
|
+
usdTroveDebt,
|
|
57
|
+
usdCollateral,
|
|
58
|
+
assets,
|
|
59
|
+
otherAssetsCount,
|
|
60
|
+
otherAssetsUsdTotal,
|
|
78
61
|
};
|
|
79
62
|
}
|
|
80
63
|
//# sourceMappingURL=useDropdownData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDropdownData.js","sourceRoot":"","sources":["../../../src/hooks/useDropdownData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useDropdownData.js","sourceRoot":"","sources":["../../../src/hooks/useDropdownData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { MezoChainToken } from "../lib/contracts";
|
|
2
|
+
type UseMezoChainTokensBalancesOptions<T> = {
|
|
3
|
+
tokens?: T;
|
|
4
|
+
queryOptions?: object;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Hook to get the balance of a list of tokens for the current account
|
|
8
|
+
* @param options.tokens The list of tokens to get the balance for. It will
|
|
9
|
+
* fallback to all tokens if not provided.
|
|
10
|
+
* @param options.queryOptions The query options to pass to the
|
|
11
|
+
* `useReadContracts`
|
|
12
|
+
* @returns Tanstack's `useQuery` returnings with balance of tokens for the
|
|
13
|
+
* current account in form of typesafe object with token names as keys
|
|
14
|
+
* and balances as values.
|
|
15
|
+
* @dev In case of error data fallbacks to `0n`. To determine if an error
|
|
16
|
+
* occurred, check the `isError` property.
|
|
17
|
+
* @example
|
|
18
|
+
* const mezoTokensBalance = useTokensBalances({
|
|
19
|
+
* tokens: ["mT", "mxSolvBTC"],
|
|
20
|
+
* })
|
|
21
|
+
* console.log(mezoTokensBalance?.data.mT) // Eg. 0n
|
|
22
|
+
* console.log(Object.keys(mezoTokensBalance?.data)) // ["mT", "mxSolvBTC"]
|
|
23
|
+
*/
|
|
24
|
+
export declare function useTokensBalances<T extends MezoChainToken[]>(options?: UseMezoChainTokensBalancesOptions<T>): import("wagmi").UseReadContractsReturnType<{
|
|
25
|
+
address: `0x${string}`;
|
|
26
|
+
abi: readonly [{
|
|
27
|
+
readonly inputs: readonly [{
|
|
28
|
+
readonly internalType: "address";
|
|
29
|
+
readonly name: "account";
|
|
30
|
+
readonly type: "address";
|
|
31
|
+
}];
|
|
32
|
+
readonly name: "balanceOf";
|
|
33
|
+
readonly outputs: readonly [{
|
|
34
|
+
readonly internalType: "uint256";
|
|
35
|
+
readonly name: "";
|
|
36
|
+
readonly type: "uint256";
|
|
37
|
+
}];
|
|
38
|
+
readonly stateMutability: "view";
|
|
39
|
+
readonly type: "function";
|
|
40
|
+
}];
|
|
41
|
+
functionName: string;
|
|
42
|
+
args: string[];
|
|
43
|
+
chainId: 31611 | undefined;
|
|
44
|
+
}[], true, Record<T[number], bigint>>;
|
|
45
|
+
/**
|
|
46
|
+
* Hook for invalidating current user's token balances. Can be used to
|
|
47
|
+
* invalidate the balances manually, which forces the data to be re-fetched.
|
|
48
|
+
* @param tokens The list of tokens (as string arrays) for which we want to
|
|
49
|
+
* invalidate query for.
|
|
50
|
+
* @returns Function `invalidateTokenBalances` that invalidates token balances
|
|
51
|
+
* @example
|
|
52
|
+
* const { invalidateTokenBalances } = useInvalidateTokensBalances(["mT", "mUSD"])
|
|
53
|
+
* (...)
|
|
54
|
+
* await invalidateTokenBalances()
|
|
55
|
+
*/
|
|
56
|
+
export declare function useInvalidateTokensBalances(tokens?: MezoChainToken[]): {
|
|
57
|
+
invalidateTokenBalances: () => Promise<void>;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Hook for resetting current user's token balances. Can be used to reset the
|
|
61
|
+
* balances manually, which forces the data to be re-fetched.
|
|
62
|
+
* @param tokens The list of tokens (as string arrays) for which we want to
|
|
63
|
+
* reset query for.
|
|
64
|
+
* @returns Function `resetTokenBalances` that invalidates token balances
|
|
65
|
+
* @example
|
|
66
|
+
* const { resetTokenBalances } = useResetTokensBalances(["mT", "mUSD"])
|
|
67
|
+
* (...)
|
|
68
|
+
* await resetTokenBalances()
|
|
69
|
+
*/
|
|
70
|
+
export declare function useResetTokensBalances(tokens?: MezoChainToken[]): {
|
|
71
|
+
resetTokenBalances: () => Promise<void>;
|
|
72
|
+
};
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=useTokensBalances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTokensBalances.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,cAAc,EACf,MAAM,kBAAkB,CAAA;AA8CzB,KAAK,iCAAiC,CAAC,CAAC,IAAI;IAC1C,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAC1D,OAAO,GAAE,iCAAiC,CAAC,CAAC,CAAM;;;;;;;;;;;;;;;;;;;;sCAuDnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE;;EAapE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE;;EAa/D"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { useReadContracts } from "wagmi";
|
|
2
|
+
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
4
|
+
import { usePassportContext } from "./usePassportContext";
|
|
5
|
+
import { mainnetContracts, testnetContracts, } from "../lib/contracts";
|
|
6
|
+
import useWalletAccount from "./useWalletAccount";
|
|
7
|
+
import { CHAIN_ID } from "../constants";
|
|
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 BALANCE_OF_ABI = [
|
|
14
|
+
{
|
|
15
|
+
inputs: [
|
|
16
|
+
{
|
|
17
|
+
internalType: "address",
|
|
18
|
+
name: "account",
|
|
19
|
+
type: "address",
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
name: "balanceOf",
|
|
23
|
+
outputs: [
|
|
24
|
+
{
|
|
25
|
+
internalType: "uint256",
|
|
26
|
+
name: "",
|
|
27
|
+
type: "uint256",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
stateMutability: "view",
|
|
31
|
+
type: "function",
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
const BALANCE_TOKENS = [
|
|
35
|
+
"mcbBTC",
|
|
36
|
+
"mDAI",
|
|
37
|
+
"mFBTC",
|
|
38
|
+
"mSolvBTC",
|
|
39
|
+
"mswBTC",
|
|
40
|
+
"mT",
|
|
41
|
+
"mUSDC",
|
|
42
|
+
"mUSDe",
|
|
43
|
+
"mUSDT",
|
|
44
|
+
"mxSolvBTC",
|
|
45
|
+
"MUSD",
|
|
46
|
+
];
|
|
47
|
+
/**
|
|
48
|
+
* Hook to get the balance of a list of tokens for the current account
|
|
49
|
+
* @param options.tokens The list of tokens to get the balance for. It will
|
|
50
|
+
* fallback to all tokens if not provided.
|
|
51
|
+
* @param options.queryOptions The query options to pass to the
|
|
52
|
+
* `useReadContracts`
|
|
53
|
+
* @returns Tanstack's `useQuery` returnings with balance of tokens for the
|
|
54
|
+
* current account in form of typesafe object with token names as keys
|
|
55
|
+
* and balances as values.
|
|
56
|
+
* @dev In case of error data fallbacks to `0n`. To determine if an error
|
|
57
|
+
* occurred, check the `isError` property.
|
|
58
|
+
* @example
|
|
59
|
+
* const mezoTokensBalance = useTokensBalances({
|
|
60
|
+
* tokens: ["mT", "mxSolvBTC"],
|
|
61
|
+
* })
|
|
62
|
+
* console.log(mezoTokensBalance?.data.mT) // Eg. 0n
|
|
63
|
+
* console.log(Object.keys(mezoTokensBalance?.data)) // ["mT", "mxSolvBTC"]
|
|
64
|
+
*/
|
|
65
|
+
export function useTokensBalances(options = {}) {
|
|
66
|
+
const { environment = "mainnet" } = usePassportContext();
|
|
67
|
+
const { accountAddress } = useWalletAccount();
|
|
68
|
+
const contractsMap = useMemo(() => {
|
|
69
|
+
const contracts = environment === "mainnet" ? mainnetContracts : testnetContracts;
|
|
70
|
+
const tokenContracts = Object.fromEntries(Object.entries(contracts).filter(([key]) => BALANCE_TOKENS.includes(key)));
|
|
71
|
+
return tokenContracts;
|
|
72
|
+
}, [environment]);
|
|
73
|
+
const { tokens = Object.keys(contractsMap), queryOptions = {} } = options;
|
|
74
|
+
const contracts = useMemo(() => {
|
|
75
|
+
if (!accountAddress)
|
|
76
|
+
return [];
|
|
77
|
+
return tokens.map((token) => {
|
|
78
|
+
const { address } = contractsMap[token];
|
|
79
|
+
return {
|
|
80
|
+
address,
|
|
81
|
+
abi: BALANCE_OF_ABI,
|
|
82
|
+
functionName: "balanceOf",
|
|
83
|
+
args: [accountAddress],
|
|
84
|
+
chainId: CHAIN_ID[environment],
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
}, [accountAddress, tokens, contractsMap, environment]);
|
|
88
|
+
return useReadContracts({
|
|
89
|
+
contracts,
|
|
90
|
+
query: {
|
|
91
|
+
select: (data) => data.reduce((acc, item) => {
|
|
92
|
+
const token = tokens[data.indexOf(item)];
|
|
93
|
+
return {
|
|
94
|
+
...acc,
|
|
95
|
+
[token]: item.result ?? 0n,
|
|
96
|
+
};
|
|
97
|
+
}, {}),
|
|
98
|
+
...queryOptions,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Hook for invalidating current user's token balances. Can be used to
|
|
104
|
+
* invalidate the balances manually, which forces the data to be re-fetched.
|
|
105
|
+
* @param tokens The list of tokens (as string arrays) for which we want to
|
|
106
|
+
* invalidate query for.
|
|
107
|
+
* @returns Function `invalidateTokenBalances` that invalidates token balances
|
|
108
|
+
* @example
|
|
109
|
+
* const { invalidateTokenBalances } = useInvalidateTokensBalances(["mT", "mUSD"])
|
|
110
|
+
* (...)
|
|
111
|
+
* await invalidateTokenBalances()
|
|
112
|
+
*/
|
|
113
|
+
export function useInvalidateTokensBalances(tokens) {
|
|
114
|
+
const queryClient = useQueryClient();
|
|
115
|
+
const { queryKey } = useTokensBalances({ tokens });
|
|
116
|
+
const invalidateTokenBalancesHandler = useCallback(() => queryClient.invalidateQueries({ queryKey }), [queryClient, queryKey]);
|
|
117
|
+
return {
|
|
118
|
+
invalidateTokenBalances: invalidateTokenBalancesHandler,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Hook for resetting current user's token balances. Can be used to reset the
|
|
123
|
+
* balances manually, which forces the data to be re-fetched.
|
|
124
|
+
* @param tokens The list of tokens (as string arrays) for which we want to
|
|
125
|
+
* reset query for.
|
|
126
|
+
* @returns Function `resetTokenBalances` that invalidates token balances
|
|
127
|
+
* @example
|
|
128
|
+
* const { resetTokenBalances } = useResetTokensBalances(["mT", "mUSD"])
|
|
129
|
+
* (...)
|
|
130
|
+
* await resetTokenBalances()
|
|
131
|
+
*/
|
|
132
|
+
export function useResetTokensBalances(tokens) {
|
|
133
|
+
const queryClient = useQueryClient();
|
|
134
|
+
const { queryKey } = useTokensBalances({ tokens });
|
|
135
|
+
const resetTokenBalancesHandler = useCallback(() => queryClient.resetQueries({ queryKey }), [queryClient, queryKey]);
|
|
136
|
+
return {
|
|
137
|
+
resetTokenBalances: resetTokenBalancesHandler,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=useTokensBalances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTokensBalances.js","sourceRoot":"","sources":["../../../src/hooks/useTokensBalances.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Address } from "viem";
|
|
2
2
|
import { Connector } from "wagmi";
|
|
3
3
|
type UseWalletAccountReturn = {
|
|
4
|
-
|
|
4
|
+
accountAddress?: string | Address;
|
|
5
|
+
walletAddress?: string | Address;
|
|
5
6
|
isConnected: boolean;
|
|
6
7
|
networkFamily: "bitcoin" | "evm";
|
|
7
8
|
connector?: Connector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletAccount.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWalletAccount.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAc,MAAM,OAAO,CAAA;AAE7C,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useWalletAccount.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWalletAccount.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAc,MAAM,OAAO,CAAA;AAE7C,KAAK,sBAAsB,GAAG;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAChC,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,SAAS,GAAG,KAAK,CAAA;IAChC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAMD,MAAM,CAAC,OAAO,UAAU,gBAAgB,IAAI,sBAAsB,CAmCjE"}
|
|
@@ -18,7 +18,8 @@ export default function useWalletAccount() {
|
|
|
18
18
|
});
|
|
19
19
|
const { address: btcAddress } = btcData || {};
|
|
20
20
|
return {
|
|
21
|
-
|
|
21
|
+
accountAddress: evmAddress,
|
|
22
|
+
walletAddress: btcAddress ?? evmAddress,
|
|
22
23
|
isConnected: networkFamily === "bitcoin" ? !!btcAddress : !!evmAddress,
|
|
23
24
|
networkFamily,
|
|
24
25
|
connector,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletAccount.js","sourceRoot":"","sources":["../../../src/hooks/useWalletAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAa,UAAU,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useWalletAccount.js","sourceRoot":"","sources":["../../../src/hooks/useWalletAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAa,UAAU,EAAE,MAAM,OAAO,CAAA;AAe7C,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACtC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAEhE,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAC3D,CAAC,SAAS,CAAC,CACZ,CAAA;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QACjC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,eAAe,GACnB,SACD,CAAC,kBAAkB,EAAE,CAAA;YAEtB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAA;YAClD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAA;YAElD,OAAO;gBACL,OAAO;gBACP,OAAO;aACR,CAAA;QACH,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAE7C,OAAO;QACL,cAAc,EAAE,UAAU;QAC1B,aAAa,EAAE,UAAU,IAAI,UAAU;QACvC,WAAW,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACtE,aAAa;QACb,SAAS;QACT,OAAO;KACC,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Abi, Address } from "viem";
|
|
2
|
+
export { default as troveManagerContract } from "./troveManager";
|
|
3
|
+
export type MezoChainToken = "mcbBTC" | "mDAI" | "mFBTC" | "mSolvBTC" | "mswBTC" | "mT" | "mUSDC" | "mUSDe" | "mUSDT" | "mxSolvBTC" | "MUSD";
|
|
4
|
+
type ContractsMap = Record<MezoChainToken, {
|
|
5
|
+
address: Address;
|
|
6
|
+
abi: Abi;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const testnetContracts: ContractsMap;
|
|
9
|
+
export declare const mainnetContracts: ContractsMap;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAGnC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAEhE,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,KAAK,YAAY,GAAG,MAAM,CACxB,cAAc,EACd;IACE,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,CACF,CAAA;AAED,eAAO,MAAM,gBAAgB,EAYb,YAAY,CAAA;AAE5B,eAAO,MAAM,gBAAgB,EAYb,YAAY,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import cbbtcMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mcbBTC.json";
|
|
2
|
+
import daiMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mDAI.json";
|
|
3
|
+
import fbtcMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mFBTC.json";
|
|
4
|
+
import solvbtcMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mSolvBTC.json";
|
|
5
|
+
import swbtcMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mswBTC.json";
|
|
6
|
+
import tMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mT.json";
|
|
7
|
+
import usdcMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mUSDC.json";
|
|
8
|
+
import usdeMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mUSDe.json";
|
|
9
|
+
import usdtMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mUSDT.json";
|
|
10
|
+
import xsolvbtcMainnet from "@mezo-org/mezod-contracts/deployments/mainnet/mxSolvBTC.json";
|
|
11
|
+
import cbbtcTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mcbBTC.json";
|
|
12
|
+
import daiTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mDAI.json";
|
|
13
|
+
import fbtcTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mFBTC.json";
|
|
14
|
+
import solvbtcTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mSolvBTC.json";
|
|
15
|
+
import swbtcTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mswBTC.json";
|
|
16
|
+
import tTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mT.json";
|
|
17
|
+
import usdcTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mUSDC.json";
|
|
18
|
+
import usdeTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mUSDe.json";
|
|
19
|
+
import usdtTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mUSDT.json";
|
|
20
|
+
import xsolvbtcTestnet from "@mezo-org/mezod-contracts/deployments/testnet/mxSolvBTC.json";
|
|
21
|
+
import { musdTestnet, musdMainnet } from "./musd";
|
|
22
|
+
export { default as troveManagerContract } from "./troveManager";
|
|
23
|
+
export const testnetContracts = {
|
|
24
|
+
mcbBTC: cbbtcTestnet,
|
|
25
|
+
mDAI: daiTestnet,
|
|
26
|
+
mFBTC: fbtcTestnet,
|
|
27
|
+
mSolvBTC: solvbtcTestnet,
|
|
28
|
+
mswBTC: swbtcTestnet,
|
|
29
|
+
mT: tTestnet,
|
|
30
|
+
mUSDC: usdcTestnet,
|
|
31
|
+
mUSDe: usdeTestnet,
|
|
32
|
+
mUSDT: usdtTestnet,
|
|
33
|
+
mxSolvBTC: xsolvbtcTestnet,
|
|
34
|
+
MUSD: musdTestnet,
|
|
35
|
+
};
|
|
36
|
+
export const mainnetContracts = {
|
|
37
|
+
mcbBTC: cbbtcMainnet,
|
|
38
|
+
mDAI: daiMainnet,
|
|
39
|
+
mFBTC: fbtcMainnet,
|
|
40
|
+
mSolvBTC: solvbtcMainnet,
|
|
41
|
+
mswBTC: swbtcMainnet,
|
|
42
|
+
mT: tMainnet,
|
|
43
|
+
mUSDC: usdcMainnet,
|
|
44
|
+
mUSDe: usdeMainnet,
|
|
45
|
+
mUSDT: usdtMainnet,
|
|
46
|
+
mxSolvBTC: xsolvbtcMainnet,
|
|
47
|
+
MUSD: musdMainnet,
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=index.js.map
|