@mezo-org/passport 0.10.0 → 0.12.0-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.
Files changed (69) hide show
  1. package/dist/cjs/index.js +68 -0
  2. package/dist/cjs/index.js.map +1 -0
  3. package/dist/esm/index.js +68 -0
  4. package/dist/esm/index.js.map +1 -0
  5. package/dist/index.d.ts +31 -0
  6. package/dist/src/api/portal.d.ts +0 -6
  7. package/dist/src/api/portal.d.ts.map +1 -1
  8. package/dist/src/api/portal.js +0 -6
  9. package/dist/src/api/portal.js.map +1 -1
  10. package/dist/src/api/rewards.d.ts +1 -1
  11. package/dist/src/api/rewards.d.ts.map +1 -1
  12. package/dist/src/api/rewards.js.map +1 -1
  13. package/dist/src/components/Dropdown/AccountAddress.d.ts +8 -0
  14. package/dist/src/components/Dropdown/AccountAddress.d.ts.map +1 -0
  15. package/dist/src/components/Dropdown/AccountAddress.js +66 -0
  16. package/dist/src/components/Dropdown/AccountAddress.js.map +1 -0
  17. package/dist/src/components/Dropdown/AccountAssets.d.ts +13 -0
  18. package/dist/src/components/Dropdown/AccountAssets.d.ts.map +1 -0
  19. package/dist/src/components/Dropdown/AccountAssets.js +43 -0
  20. package/dist/src/components/Dropdown/AccountAssets.js.map +1 -0
  21. package/dist/src/components/Dropdown/AccountBalance.d.ts +7 -0
  22. package/dist/src/components/Dropdown/AccountBalance.d.ts.map +1 -0
  23. package/dist/src/components/Dropdown/AccountBalance.js +16 -0
  24. package/dist/src/components/Dropdown/AccountBalance.js.map +1 -0
  25. package/dist/src/components/Dropdown/Root/AccountAssetItem.d.ts +11 -0
  26. package/dist/src/components/Dropdown/Root/AccountAssetItem.d.ts.map +1 -0
  27. package/dist/src/components/Dropdown/Root/AccountAssetItem.js +9 -0
  28. package/dist/src/components/Dropdown/Root/AccountAssetItem.js.map +1 -0
  29. package/dist/src/components/Dropdown/WelcomeBlock.d.ts +8 -0
  30. package/dist/src/components/Dropdown/WelcomeBlock.d.ts.map +1 -0
  31. package/dist/src/components/Dropdown/WelcomeBlock.js +43 -0
  32. package/dist/src/components/Dropdown/WelcomeBlock.js.map +1 -0
  33. package/dist/src/hooks/useAssetsUSDConversion.d.ts +8 -0
  34. package/dist/src/hooks/useAssetsUSDConversion.d.ts.map +1 -0
  35. package/dist/src/hooks/useAssetsUSDConversion.js +21 -0
  36. package/dist/src/hooks/useAssetsUSDConversion.js.map +1 -0
  37. package/dist/src/hooks/useDropdownData.d.ts +47 -0
  38. package/dist/src/hooks/useDropdownData.d.ts.map +1 -0
  39. package/dist/src/hooks/useDropdownData.js +97 -0
  40. package/dist/src/hooks/useDropdownData.js.map +1 -0
  41. package/dist/src/hooks/useGetCurrentAccount.d.ts +2 -4
  42. package/dist/src/hooks/useGetCurrentAccount.d.ts.map +1 -1
  43. package/dist/src/hooks/useGetCurrentAccount.js +25 -31
  44. package/dist/src/hooks/useGetCurrentAccount.js.map +1 -1
  45. package/dist/src/lib/contracts/priceOracle.d.ts +43 -0
  46. package/dist/src/lib/contracts/priceOracle.d.ts.map +1 -0
  47. package/dist/src/lib/contracts/priceOracle.js +52 -0
  48. package/dist/src/lib/contracts/priceOracle.js.map +1 -0
  49. package/dist/src/lib/contracts/troveManager.d.ts +1401 -0
  50. package/dist/src/lib/contracts/troveManager.d.ts.map +1 -0
  51. package/dist/src/lib/contracts/troveManager.js +1820 -0
  52. package/dist/src/lib/contracts/troveManager.js.map +1 -0
  53. package/dist/src/provider.d.ts +1 -5
  54. package/dist/src/provider.d.ts.map +1 -1
  55. package/dist/src/provider.js +1 -2
  56. package/dist/src/provider.js.map +1 -1
  57. package/dist/src/utils/cryptoAssets.d.ts +44 -0
  58. package/dist/src/utils/cryptoAssets.d.ts.map +1 -0
  59. package/dist/src/utils/cryptoAssets.js +129 -0
  60. package/dist/src/utils/cryptoAssets.js.map +1 -0
  61. package/dist/src/utils/cryptoAssets.test.d.ts +2 -0
  62. package/dist/src/utils/cryptoAssets.test.d.ts.map +1 -0
  63. package/dist/src/utils/cryptoAssets.test.js +67 -0
  64. package/dist/src/utils/cryptoAssets.test.js.map +1 -0
  65. package/package.json +20 -22
  66. package/src/api/portal.ts +0 -17
  67. package/src/api/rewards.ts +4 -1
  68. package/src/hooks/useGetCurrentAccount.ts +31 -54
  69. package/src/provider.ts +0 -6
@@ -1,28 +1,13 @@
1
- import { useContext } from "react";
2
1
  import { useQuery, } from "@tanstack/react-query";
3
2
  import { ONE_MINUTE_MS } from "../utils/time";
4
3
  import { QUERY_KEYS } from "./constants";
5
4
  import { useAuthApiClient } from "./useAuthApiClient";
6
- import { usePortalApiClient } from "./usePortalApiClient";
7
5
  import { useRewardsApiClient } from "./useRewardsApiClient";
8
- import { PassportContext } from "../provider";
9
- export const isRewardsMats = (value) => !!value &&
10
- typeof value === "object" &&
11
- ["seasonOne", "seasonTwo"].every((seasonKey) => !!value[seasonKey] &&
12
- typeof value[seasonKey] === "object" &&
13
- ["mats", "rank"].every((fieldKey) => typeof value[seasonKey][fieldKey] === "number"));
14
- export const isPortalMats = (value) => !!value &&
15
- typeof value === "object" &&
16
- ["totalMats", "inactiveMats", "matsActivated"].every((fieldKey) => fieldKey === "matsActivated"
17
- ? typeof value[fieldKey] === "boolean"
18
- : typeof value[fieldKey] === "number");
19
6
  /**
20
7
  * Hook to fetch current account with mats
21
8
  */
22
9
  export function useGetCurrentAccount(options = {}) {
23
- const passportContext = useContext(PassportContext);
24
10
  const authApiClient = useAuthApiClient();
25
- const portalApiClient = usePortalApiClient();
26
11
  const rewardsApiClient = useRewardsApiClient();
27
12
  const queryKey = [QUERY_KEYS.ACCOUNT, QUERY_KEYS.CURRENT];
28
13
  const query = useQuery({
@@ -36,22 +21,31 @@ export function useGetCurrentAccount(options = {}) {
36
21
  if (!linkedWallets || linkedWallets.length === 0) {
37
22
  throw new Error("No linked wallets found for the current account");
38
23
  }
39
- const addresses = linkedWallets.map((account) => passportContext?.useRewardsApi
40
- ? account.evmAddress
41
- : account.btcAddress || account.evmAddress);
42
- /** Mats balances aggregated from all linked wallets */
43
- const mats = await Promise.all(addresses.map((address) => passportContext?.useRewardsApi
44
- ? rewardsApiClient.getRewardsMats(address)
45
- : portalApiClient.getPortalMats(address)));
46
- const totalMats = mats.reduce((sumMats, currentMats) => sumMats +
47
- (passportContext?.useRewardsApi
48
- ? currentMats.seasonTwo.mats
49
- : currentMats.totalMats), 0);
50
- return {
51
- ...currentAccount,
52
- mats,
53
- totalMats,
54
- };
24
+ const addresses = linkedWallets.map((account) => account.evmAddress);
25
+ try {
26
+ /** Mats balances aggregated from all linked wallets */
27
+ const mats = await Promise.all(addresses.map((address) => rewardsApiClient.getRewardsMats(address)));
28
+ const totalMats = mats.reduce((sumMats, currentMats) => sumMats + currentMats.seasonTwo.mats, 0);
29
+ return {
30
+ ...currentAccount,
31
+ mats,
32
+ totalMats,
33
+ };
34
+ }
35
+ catch {
36
+ // If account is not recognized by Rewards API, it will return 404.
37
+ // To prevent errors we return default values
38
+ return {
39
+ ...currentAccount,
40
+ mats: [
41
+ {
42
+ seasonOne: { mats: 0, rank: null },
43
+ seasonTwo: { mats: 0, rank: null },
44
+ },
45
+ ],
46
+ totalMats: 0,
47
+ };
48
+ }
55
49
  },
56
50
  staleTime: options.staleTime ?? ONE_MINUTE_MS,
57
51
  retry: options.retry ?? 1,
@@ -1 +1 @@
1
- {"version":3,"file":"useGetCurrentAccount.js","sourceRoot":"","sources":["../../../src/hooks/useGetCurrentAccount.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useGetCurrentAccount.js","sourceRoot":"","sources":["../../../src/hooks/useGetCurrentAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,GAGT,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAY3D;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAGlC,UAAkD,EAAE;IAEpD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IACxC,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAA;IAE9C,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAEzD,MAAM,KAAK,GAAG,QAAQ,CAAsD;QAC1E,QAAQ;QACR,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,iBAAiB,EAAE,CAAA;YAE9D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC7C,CAAC;YAED,MAAM,aAAa,GAAG,cAAc,EAAE,cAAc,EAAE,MAAM,CAC1D,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CACvC,CAAA;YACD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;YACpE,CAAC;YAED,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAEpE,IAAI,CAAC;gBACH,uDAAuD;gBACvD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CACrE,CAAA;gBAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAC3B,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAC9D,CAAC,CACF,CAAA;gBAED,OAAO;oBACL,GAAG,cAAc;oBACjB,IAAI;oBACJ,SAAS;iBACV,CAAA;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,mEAAmE;gBACnE,6CAA6C;gBAC7C,OAAO;oBACL,GAAG,cAAc;oBACjB,IAAI,EAAE;wBACJ;4BACE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;4BAClC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;yBACnC;qBACF;oBACD,SAAS,EAAE,CAAC;iBACb,CAAA;YACH,CAAC;QACH,CAAC;QACD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,aAAa;QAC7C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QACzB,GAAG,OAAO;KACX,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,KAAK;QACR,QAAQ;KACT,CAAA;AACH,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { Address } from "viem";
2
+ declare const _default: {
3
+ address: Address;
4
+ abi: readonly [{
5
+ readonly inputs: readonly [];
6
+ readonly name: "decimals";
7
+ readonly outputs: readonly [{
8
+ readonly internalType: "uint8";
9
+ readonly name: "";
10
+ readonly type: "uint8";
11
+ }];
12
+ readonly stateMutability: "view";
13
+ readonly type: "function";
14
+ }, {
15
+ readonly inputs: readonly [];
16
+ readonly name: "latestRoundData";
17
+ readonly outputs: readonly [{
18
+ readonly internalType: "uint80";
19
+ readonly name: "roundId";
20
+ readonly type: "uint80";
21
+ }, {
22
+ readonly internalType: "int256";
23
+ readonly name: "answer";
24
+ readonly type: "int256";
25
+ }, {
26
+ readonly internalType: "uint256";
27
+ readonly name: "startedAt";
28
+ readonly type: "uint256";
29
+ }, {
30
+ readonly internalType: "uint256";
31
+ readonly name: "updatedAt";
32
+ readonly type: "uint256";
33
+ }, {
34
+ readonly internalType: "uint80";
35
+ readonly name: "answeredInRound";
36
+ readonly type: "uint80";
37
+ }];
38
+ readonly stateMutability: "view";
39
+ readonly type: "function";
40
+ }];
41
+ };
42
+ export default _default;
43
+ //# sourceMappingURL=priceOracle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceOracle.d.ts","sourceRoot":"","sources":["../../../../src/lib/contracts/priceOracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;;aAG6B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AADlE,wBAkDC"}
@@ -0,0 +1,52 @@
1
+ export default {
2
+ address: "0x7b7c000000000000000000000000000000000015",
3
+ abi: [
4
+ {
5
+ inputs: [],
6
+ name: "decimals",
7
+ outputs: [
8
+ {
9
+ internalType: "uint8",
10
+ name: "",
11
+ type: "uint8",
12
+ },
13
+ ],
14
+ stateMutability: "view",
15
+ type: "function",
16
+ },
17
+ {
18
+ inputs: [],
19
+ name: "latestRoundData",
20
+ outputs: [
21
+ {
22
+ internalType: "uint80",
23
+ name: "roundId",
24
+ type: "uint80",
25
+ },
26
+ {
27
+ internalType: "int256",
28
+ name: "answer",
29
+ type: "int256",
30
+ },
31
+ {
32
+ internalType: "uint256",
33
+ name: "startedAt",
34
+ type: "uint256",
35
+ },
36
+ {
37
+ internalType: "uint256",
38
+ name: "updatedAt",
39
+ type: "uint256",
40
+ },
41
+ {
42
+ internalType: "uint80",
43
+ name: "answeredInRound",
44
+ type: "uint80",
45
+ },
46
+ ],
47
+ stateMutability: "view",
48
+ type: "function",
49
+ },
50
+ ],
51
+ };
52
+ //# sourceMappingURL=priceOracle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceOracle.js","sourceRoot":"","sources":["../../../../src/lib/contracts/priceOracle.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,OAAO,EAAE,4CAAuD;IAChE,GAAG,EAAE;QACH;YACE,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP;oBACE,YAAY,EAAE,OAAO;oBACrB,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,OAAO;iBACd;aACF;YACD,eAAe,EAAE,MAAM;YACvB,IAAI,EAAE,UAAU;SACjB;QACD;YACE,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE;gBACP;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,QAAQ;iBACf;gBACD;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;iBACf;gBACD;oBACE,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;iBAChB;gBACD;oBACE,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;iBAChB;gBACD;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,eAAe,EAAE,MAAM;YACvB,IAAI,EAAE,UAAU;SACjB;KACO;CACX,CAAA"}