@mezo-org/passport 0.5.2-dev.5 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"useAssetsConversionRates.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAK1C,eAAO,MAAM,SAAS,mCAAmC,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB;;;;;;UAoEvC"}
1
+ {"version":3,"file":"useAssetsConversionRates.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAK1C,eAAO,MAAM,SAAS,mCAAmC,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB;;;;;;UAwDvC"}
@@ -4,25 +4,10 @@ import { readContract } from "wagmi/actions";
4
4
  import { parseUnits } from "viem";
5
5
  import { ONE_SECOND_MS } from "../utils/time";
6
6
  import { usePortalApiClient } from "./usePortalApiClient";
7
- import { mainnetBorrowContracts, testnetBorrowContracts, } from "../lib/contracts";
7
+ import { priceOracleContract } from "../lib/contracts";
8
8
  import { CHAIN_ID } from "../constants";
9
9
  import { usePassportContext } from "./usePassportContext";
10
10
  import { normalizePrecision } from "../utils/numbers";
11
- const PRICE_FEED_ABI = [
12
- {
13
- inputs: [],
14
- name: "fetchPrice",
15
- outputs: [
16
- {
17
- internalType: "uint256",
18
- name: "",
19
- type: "uint256",
20
- },
21
- ],
22
- stateMutability: "view",
23
- type: "function",
24
- },
25
- ];
26
11
  export const CONVERSION_RATE_DECIMALS = 18;
27
12
  // If the oracle has not been updated in at least 60 seconds, it is stale.
28
13
  const MAX_PRICE_DELAY = 60 * ONE_SECOND_MS;
@@ -41,25 +26,17 @@ export function useAssetsConversionRates() {
41
26
  const config = useConfig();
42
27
  return useQuery({
43
28
  queryKey: [QUERY_KEY],
44
- queryFn: async () => {
45
- const { chainId } = config.state;
46
- const isMainnet = chainId === CHAIN_ID.mainnet;
47
- const { address: priceFeedAddress } = isMainnet
48
- ? mainnetBorrowContracts.PriceFeed
49
- : testnetBorrowContracts.PriceFeed;
50
- return Promise.all([
51
- portalApiClient.getPortalStatistics(),
52
- readContract(config, {
53
- address: priceFeedAddress,
54
- abi: PRICE_FEED_ABI,
55
- functionName: "fetchPrice",
56
- chainId: CHAIN_ID[environment],
57
- }),
58
- ]);
59
- },
60
- select: ([portalStatistics, fetchedPriceFeed]) => {
29
+ queryFn: async () => Promise.all([
30
+ portalApiClient.getPortalStatistics(),
31
+ readContract(config, {
32
+ ...priceOracleContract,
33
+ functionName: "latestRoundData",
34
+ chainId: CHAIN_ID[environment],
35
+ }),
36
+ ]),
37
+ select: ([portalStatistics, btcPriceData]) => {
61
38
  const tTokenConversionRate = portalStatistics.tTokenPrice;
62
- const btcConversionRate = fetchedPriceFeed;
39
+ const [, btcConversionRate] = btcPriceData;
63
40
  const tPrice = parseUnits(tTokenConversionRate.toString(), CONVERSION_RATE_DECIMALS);
64
41
  const btcPrice = normalizePrecision(btcConversionRate, CONVERSION_RATE_DECIMALS);
65
42
  return {
@@ -70,23 +47,21 @@ export function useAssetsConversionRates() {
70
47
  decimals: CONVERSION_RATE_DECIMALS,
71
48
  };
72
49
  },
73
- // TODO: Investigate optimised strategy for calculating refetch interval as
74
- // done with price oracle contract. Left previous implementation for
75
- // reference.
76
- refetchInterval: MAX_PRICE_DELAY,
77
- // refetchInterval: ({ state }) => {
78
- // if (!state.data) return MAX_PRICE_DELAY
79
- // const [, btcPriceData] = state.data
80
- // const [, , , updatedAt] = btcPriceData
81
- // if (!updatedAt) return MAX_PRICE_DELAY
82
- // const age = Date.now() - Number(updatedAt) * 1000
83
- // return age > MAX_PRICE_DELAY
84
- // ? // If the data is stale, we want to refetch as soon as possible, but
85
- // // not faster than once per second, to avoid excessive requests.
86
- // // Math.max ensures the interval is at least 1 second.
87
- // Math.max(ONE_SECOND_MS, MAX_PRICE_DELAY - age)
88
- // : MAX_PRICE_DELAY - age
89
- // },
50
+ refetchInterval: ({ state }) => {
51
+ if (!state.data)
52
+ return MAX_PRICE_DELAY;
53
+ const [, btcPriceData] = state.data;
54
+ const [, , , updatedAt] = btcPriceData;
55
+ if (!updatedAt)
56
+ return MAX_PRICE_DELAY;
57
+ const age = Date.now() - Number(updatedAt) * 1000;
58
+ return age > MAX_PRICE_DELAY
59
+ ? // If the data is stale, we want to refetch as soon as possible, but
60
+ // not faster than once per second, to avoid excessive requests.
61
+ // Math.max ensures the interval is at least 1 second.
62
+ Math.max(ONE_SECOND_MS, MAX_PRICE_DELAY - age)
63
+ : MAX_PRICE_DELAY - age;
64
+ },
90
65
  });
91
66
  }
92
67
  //# sourceMappingURL=useAssetsConversionRates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAssetsConversionRates.js","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAssetsConversionRates.js","sourceRoot":"","sources":["../../../src/hooks/useAssetsConversionRates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAA;AAE1C,0EAA0E;AAC1E,MAAM,eAAe,GAAG,EAAE,GAAG,aAAa,CAAA;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,gCAAgC,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;IAC5C,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAA;IACxD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,SAAS,CAAC;QACrB,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,OAAO,CAAC,GAAG,CAAC;YACV,eAAe,CAAC,mBAAmB,EAAE;YACrC,YAAY,CAAC,MAAM,EAAE;gBACnB,GAAG,mBAAmB;gBACtB,YAAY,EAAE,iBAAiB;gBAC/B,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC;aAC/B,CAAC;SACH,CAAC;QACJ,MAAM,EAAE,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,EAAE;YAC3C,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,CAAA;YACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC,GAAG,YAAY,CAAA;YAE1C,MAAM,MAAM,GAAG,UAAU,CACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,wBAAwB,CACzB,CAAA;YAED,MAAM,QAAQ,GAAG,kBAAkB,CACjC,iBAAiB,EACjB,wBAAwB,CACzB,CAAA;YAED,OAAO;gBACL,KAAK,EAAE;oBACL,EAAE,EAAE,MAAM;oBACV,GAAG,EAAE,QAAQ;iBACd;gBACD,QAAQ,EAAE,wBAAwB;aACnC,CAAA;QACH,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI;gBAAE,OAAO,eAAe,CAAA;YAEvC,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;YACnC,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,SAAS,CAAC,GAAG,YAAY,CAAA;YAEtC,IAAI,CAAC,SAAS;gBAAE,OAAO,eAAe,CAAA;YAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;YAEjD,OAAO,GAAG,GAAG,eAAe;gBAC1B,CAAC,CAAC,oEAAoE;oBACpE,gEAAgE;oBAChE,sDAAsD;oBACtD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,GAAG,GAAG,CAAC;gBAChD,CAAC,CAAC,eAAe,GAAG,GAAG,CAAA;QAC3B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -9,5 +9,5 @@ export declare const testnetTokenContracts: ContractsMap<MezoChainToken>;
9
9
  export declare const mainnetTokenContracts: ContractsMap<MezoChainToken>;
10
10
  export declare const mainnetBorrowContracts: ContractsMap<MezoBorrowContract>;
11
11
  export declare const testnetBorrowContracts: ContractsMap<MezoBorrowContract>;
12
- export {};
12
+ export { default as priceOracleContract } from "./priceOracle";
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,IAAI,GACJ,OAAO,GACP,OAAO,GACP,OAAO,GACP,WAAW,GACX,MAAM,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,oBAAoB,GACpB,WAAW,CAAA;AAEf,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAC1C,CAAC,EACD;IACE,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,CACF,CAAA;AAED,eAAO,MAAM,qBAAqB,EAYlB,YAAY,CAAC,cAAc,CAAC,CAAA;AAE5C,eAAO,MAAM,qBAAqB,EAYlB,YAAY,CAAC,cAAc,CAAC,CAAA;AAE5C,eAAO,MAAM,sBAAsB,EAInB,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAEhD,eAAO,MAAM,sBAAsB,EAInB,YAAY,CAAC,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,IAAI,GACJ,OAAO,GACP,OAAO,GACP,OAAO,GACP,WAAW,GACX,MAAM,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,oBAAoB,GACpB,WAAW,CAAA;AAEf,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAC1C,CAAC,EACD;IACE,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,CACF,CAAA;AAED,eAAO,MAAM,qBAAqB,EAYlB,YAAY,CAAC,cAAc,CAAC,CAAA;AAE5C,eAAO,MAAM,qBAAqB,EAYlB,YAAY,CAAC,cAAc,CAAC,CAAA;AAE5C,eAAO,MAAM,sBAAsB,EAInB,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAEhD,eAAO,MAAM,sBAAsB,EAInB,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAA"}
@@ -62,4 +62,5 @@ export const testnetBorrowContracts = {
62
62
  BorrowerOperations: borrowerOperationsTestnet,
63
63
  PriceFeed: priceFeedTestnet,
64
64
  };
65
+ export { default as priceOracleContract } from "./priceOracle";
65
66
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,UAAU,MAAM,yDAAyD,CAAA;AAChF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,cAAc,MAAM,6DAA6D,CAAA;AACxF,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,QAAQ,MAAM,uDAAuD,CAAA;AAC5E,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,eAAe,MAAM,8DAA8D,CAAA;AAC1F,OAAO,WAAW,MAAM,wDAAwD,CAAA;AAChF,OAAO,mBAAmB,MAAM,gEAAgE,CAAA;AAChG,OAAO,yBAAyB,MAAM,sEAAsE,CAAA;AAE5G,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,UAAU,MAAM,yDAAyD,CAAA;AAChF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,cAAc,MAAM,6DAA6D,CAAA;AACxF,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,QAAQ,MAAM,uDAAuD,CAAA;AAC5E,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,eAAe,MAAM,8DAA8D,CAAA;AAC1F,OAAO,WAAW,MAAM,wDAAwD,CAAA;AAChF,OAAO,mBAAmB,MAAM,gEAAgE,CAAA;AAChG,OAAO,yBAAyB,MAAM,sEAAsE,CAAA;AAC5G,OAAO,SAAS,MAAM,6DAA6D,CAAA;AACnF,OAAO,gBAAgB,MAAM,6DAA6D,CAAA;AA8B1F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,WAAW;CACyB,CAAA;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,WAAW;CACyB,CAAA;AAE5C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,SAAS,EAAE,SAAS;CAC0B,CAAA;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,SAAS,EAAE,gBAAgB;CACmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,UAAU,MAAM,yDAAyD,CAAA;AAChF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,cAAc,MAAM,6DAA6D,CAAA;AACxF,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,QAAQ,MAAM,uDAAuD,CAAA;AAC5E,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,eAAe,MAAM,8DAA8D,CAAA;AAC1F,OAAO,WAAW,MAAM,wDAAwD,CAAA;AAChF,OAAO,mBAAmB,MAAM,gEAAgE,CAAA;AAChG,OAAO,yBAAyB,MAAM,sEAAsE,CAAA;AAE5G,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,UAAU,MAAM,yDAAyD,CAAA;AAChF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,cAAc,MAAM,6DAA6D,CAAA;AACxF,OAAO,YAAY,MAAM,2DAA2D,CAAA;AACpF,OAAO,QAAQ,MAAM,uDAAuD,CAAA;AAC5E,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,WAAW,MAAM,0DAA0D,CAAA;AAClF,OAAO,eAAe,MAAM,8DAA8D,CAAA;AAC1F,OAAO,WAAW,MAAM,wDAAwD,CAAA;AAChF,OAAO,mBAAmB,MAAM,gEAAgE,CAAA;AAChG,OAAO,yBAAyB,MAAM,sEAAsE,CAAA;AAC5G,OAAO,SAAS,MAAM,6DAA6D,CAAA;AACnF,OAAO,gBAAgB,MAAM,6DAA6D,CAAA;AA8B1F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,WAAW;CACyB,CAAA;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,WAAW;CACyB,CAAA;AAE5C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,SAAS,EAAE,SAAS;CAC0B,CAAA;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,SAAS,EAAE,gBAAgB;CACmB,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { Address } from "viem";
2
+ declare const _default: {
3
+ address: Address;
4
+ abi: readonly [{
5
+ readonly inputs: readonly [];
6
+ readonly name: "decimals";
7
+ readonly outputs: readonly [{
8
+ readonly internalType: "uint8";
9
+ readonly name: "";
10
+ readonly type: "uint8";
11
+ }];
12
+ readonly stateMutability: "view";
13
+ readonly type: "function";
14
+ }, {
15
+ readonly inputs: readonly [];
16
+ readonly name: "latestRoundData";
17
+ readonly outputs: readonly [{
18
+ readonly internalType: "uint80";
19
+ readonly name: "roundId";
20
+ readonly type: "uint80";
21
+ }, {
22
+ readonly internalType: "int256";
23
+ readonly name: "answer";
24
+ readonly type: "int256";
25
+ }, {
26
+ readonly internalType: "uint256";
27
+ readonly name: "startedAt";
28
+ readonly type: "uint256";
29
+ }, {
30
+ readonly internalType: "uint256";
31
+ readonly name: "updatedAt";
32
+ readonly type: "uint256";
33
+ }, {
34
+ readonly internalType: "uint80";
35
+ readonly name: "answeredInRound";
36
+ readonly type: "uint80";
37
+ }];
38
+ readonly stateMutability: "view";
39
+ readonly type: "function";
40
+ }];
41
+ };
42
+ export default _default;
43
+ //# sourceMappingURL=priceOracle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceOracle.d.ts","sourceRoot":"","sources":["../../../../src/lib/contracts/priceOracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;;aAG6B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AADlE,wBAkDC"}
@@ -0,0 +1,52 @@
1
+ export default {
2
+ address: "0x7b7c000000000000000000000000000000000015",
3
+ abi: [
4
+ {
5
+ inputs: [],
6
+ name: "decimals",
7
+ outputs: [
8
+ {
9
+ internalType: "uint8",
10
+ name: "",
11
+ type: "uint8",
12
+ },
13
+ ],
14
+ stateMutability: "view",
15
+ type: "function",
16
+ },
17
+ {
18
+ inputs: [],
19
+ name: "latestRoundData",
20
+ outputs: [
21
+ {
22
+ internalType: "uint80",
23
+ name: "roundId",
24
+ type: "uint80",
25
+ },
26
+ {
27
+ internalType: "int256",
28
+ name: "answer",
29
+ type: "int256",
30
+ },
31
+ {
32
+ internalType: "uint256",
33
+ name: "startedAt",
34
+ type: "uint256",
35
+ },
36
+ {
37
+ internalType: "uint256",
38
+ name: "updatedAt",
39
+ type: "uint256",
40
+ },
41
+ {
42
+ internalType: "uint80",
43
+ name: "answeredInRound",
44
+ type: "uint80",
45
+ },
46
+ ],
47
+ stateMutability: "view",
48
+ type: "function",
49
+ },
50
+ ],
51
+ };
52
+ //# sourceMappingURL=priceOracle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceOracle.js","sourceRoot":"","sources":["../../../../src/lib/contracts/priceOracle.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,OAAO,EAAE,4CAAuD;IAChE,GAAG,EAAE;QACH;YACE,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP;oBACE,YAAY,EAAE,OAAO;oBACrB,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,OAAO;iBACd;aACF;YACD,eAAe,EAAE,MAAM;YACvB,IAAI,EAAE,UAAU;SACjB;QACD;YACE,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE;gBACP;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,QAAQ;iBACf;gBACD;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;iBACf;gBACD;oBACE,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;iBAChB;gBACD;oBACE,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;iBAChB;gBACD;oBACE,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,eAAe,EAAE,MAAM;YACvB,IAAI,EAAE,UAAU;SACjB;KACO;CACX,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mezo-org/passport",
3
- "version": "0.5.2-dev.5",
3
+ "version": "0.5.2",
4
4
  "main": "dist/src/index.js",
5
5
  "license": "GPL-3.0-only",
6
6
  "scripts": {
@@ -4,30 +4,11 @@ import { readContract } from "wagmi/actions"
4
4
  import { parseUnits } from "viem"
5
5
  import { ONE_SECOND_MS } from "../utils/time"
6
6
  import { usePortalApiClient } from "./usePortalApiClient"
7
- import {
8
- mainnetBorrowContracts,
9
- testnetBorrowContracts,
10
- } from "../lib/contracts"
7
+ import { priceOracleContract } from "../lib/contracts"
11
8
  import { CHAIN_ID } from "../constants"
12
9
  import { usePassportContext } from "./usePassportContext"
13
10
  import { normalizePrecision } from "../utils/numbers"
14
11
 
15
- const PRICE_FEED_ABI = [
16
- {
17
- inputs: [],
18
- name: "fetchPrice",
19
- outputs: [
20
- {
21
- internalType: "uint256",
22
- name: "",
23
- type: "uint256",
24
- },
25
- ],
26
- stateMutability: "view",
27
- type: "function",
28
- },
29
- ] as const
30
-
31
12
  export const CONVERSION_RATE_DECIMALS = 18
32
13
 
33
14
  // If the oracle has not been updated in at least 60 seconds, it is stale.
@@ -50,26 +31,18 @@ export function useAssetsConversionRates() {
50
31
 
51
32
  return useQuery({
52
33
  queryKey: [QUERY_KEY],
53
- queryFn: async () => {
54
- const { chainId } = config.state
55
- const isMainnet = chainId === CHAIN_ID.mainnet
56
- const { address: priceFeedAddress } = isMainnet
57
- ? mainnetBorrowContracts.PriceFeed
58
- : testnetBorrowContracts.PriceFeed
59
-
60
- return Promise.all([
34
+ queryFn: async () =>
35
+ Promise.all([
61
36
  portalApiClient.getPortalStatistics(),
62
37
  readContract(config, {
63
- address: priceFeedAddress,
64
- abi: PRICE_FEED_ABI,
65
- functionName: "fetchPrice",
38
+ ...priceOracleContract,
39
+ functionName: "latestRoundData",
66
40
  chainId: CHAIN_ID[environment],
67
41
  }),
68
- ])
69
- },
70
- select: ([portalStatistics, fetchedPriceFeed]) => {
42
+ ]),
43
+ select: ([portalStatistics, btcPriceData]) => {
71
44
  const tTokenConversionRate = portalStatistics.tTokenPrice
72
- const btcConversionRate = fetchedPriceFeed
45
+ const [, btcConversionRate] = btcPriceData
73
46
 
74
47
  const tPrice = parseUnits(
75
48
  tTokenConversionRate.toString(),
@@ -89,26 +62,22 @@ export function useAssetsConversionRates() {
89
62
  decimals: CONVERSION_RATE_DECIMALS,
90
63
  }
91
64
  },
92
- // TODO: Investigate optimised strategy for calculating refetch interval as
93
- // done with price oracle contract. Left previous implementation for
94
- // reference.
95
- refetchInterval: MAX_PRICE_DELAY,
96
- // refetchInterval: ({ state }) => {
97
- // if (!state.data) return MAX_PRICE_DELAY
65
+ refetchInterval: ({ state }) => {
66
+ if (!state.data) return MAX_PRICE_DELAY
98
67
 
99
- // const [, btcPriceData] = state.data
100
- // const [, , , updatedAt] = btcPriceData
68
+ const [, btcPriceData] = state.data
69
+ const [, , , updatedAt] = btcPriceData
101
70
 
102
- // if (!updatedAt) return MAX_PRICE_DELAY
71
+ if (!updatedAt) return MAX_PRICE_DELAY
103
72
 
104
- // const age = Date.now() - Number(updatedAt) * 1000
73
+ const age = Date.now() - Number(updatedAt) * 1000
105
74
 
106
- // return age > MAX_PRICE_DELAY
107
- // ? // If the data is stale, we want to refetch as soon as possible, but
108
- // // not faster than once per second, to avoid excessive requests.
109
- // // Math.max ensures the interval is at least 1 second.
110
- // Math.max(ONE_SECOND_MS, MAX_PRICE_DELAY - age)
111
- // : MAX_PRICE_DELAY - age
112
- // },
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
+ },
113
82
  })
114
83
  }
@@ -95,3 +95,5 @@ export const testnetBorrowContracts = {
95
95
  BorrowerOperations: borrowerOperationsTestnet,
96
96
  PriceFeed: priceFeedTestnet,
97
97
  } as unknown as ContractsMap<MezoBorrowContract>
98
+
99
+ export { default as priceOracleContract } from "./priceOracle"
@@ -0,0 +1,53 @@
1
+ import { Address } from "viem"
2
+
3
+ export default {
4
+ address: "0x7b7c000000000000000000000000000000000015" as Address,
5
+ abi: [
6
+ {
7
+ inputs: [],
8
+ name: "decimals",
9
+ outputs: [
10
+ {
11
+ internalType: "uint8",
12
+ name: "",
13
+ type: "uint8",
14
+ },
15
+ ],
16
+ stateMutability: "view",
17
+ type: "function",
18
+ },
19
+ {
20
+ inputs: [],
21
+ name: "latestRoundData",
22
+ outputs: [
23
+ {
24
+ internalType: "uint80",
25
+ name: "roundId",
26
+ type: "uint80",
27
+ },
28
+ {
29
+ internalType: "int256",
30
+ name: "answer",
31
+ type: "int256",
32
+ },
33
+ {
34
+ internalType: "uint256",
35
+ name: "startedAt",
36
+ type: "uint256",
37
+ },
38
+ {
39
+ internalType: "uint256",
40
+ name: "updatedAt",
41
+ type: "uint256",
42
+ },
43
+ {
44
+ internalType: "uint80",
45
+ name: "answeredInRound",
46
+ type: "uint80",
47
+ },
48
+ ],
49
+ stateMutability: "view",
50
+ type: "function",
51
+ },
52
+ ] as const,
53
+ }