@1delta/margin-fetcher 0.0.11 → 0.0.13

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 (83) hide show
  1. package/dist/lending/aave-v2-type/types.d.ts +2 -0
  2. package/dist/lending/aave-v2-type/types.d.ts.map +1 -1
  3. package/dist/lending/fetchLender.d.ts.map +1 -1
  4. package/dist/lending/fetchLender.js +25 -29
  5. package/dist/lending/fetchLenderAll.d.ts +2 -1
  6. package/dist/lending/fetchLenderAll.d.ts.map +1 -1
  7. package/dist/lending/fetchLenderAll.js +3 -3
  8. package/dist/lending/fetchLenderExt.d.ts +2 -1
  9. package/dist/lending/fetchLenderExt.d.ts.map +1 -1
  10. package/dist/lending/fetchLenderExt.js +28 -14
  11. package/dist/lending/index.d.ts +2 -0
  12. package/dist/lending/index.d.ts.map +1 -1
  13. package/dist/lending/index.js +2 -0
  14. package/dist/lending/morpho/convertPublic.d.ts +3 -5
  15. package/dist/lending/morpho/convertPublic.d.ts.map +1 -1
  16. package/dist/lending/morpho/convertPublic.js +16 -12
  17. package/dist/lending/morpho/fetchPublic.js +1 -1
  18. package/dist/lending/morpho/publicCallBuild.d.ts +1 -4
  19. package/dist/lending/morpho/publicCallBuild.d.ts.map +1 -1
  20. package/dist/lending/morpho/types.d.ts +2 -0
  21. package/dist/lending/morpho/types.d.ts.map +1 -1
  22. package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts.map +1 -1
  23. package/dist/lending/user-data/aave-v3-type/userCallBuild.js +4 -7
  24. package/dist/lending/user-data/abis.d.ts +88 -0
  25. package/dist/lending/user-data/abis.d.ts.map +1 -1
  26. package/dist/lending/user-data/abis.js +5 -1
  27. package/dist/lending/user-data/compound-v3/userCallParse.d.ts.map +1 -1
  28. package/dist/lending/user-data/compound-v3/userCallParse.js +1 -0
  29. package/dist/lending/user-data/fetchUserData.d.ts +4 -4
  30. package/dist/lending/user-data/fetchUserData.d.ts.map +1 -1
  31. package/dist/lending/user-data/fetchUserData.js +46 -25
  32. package/dist/lending/user-data/morpho/userCallBuild.d.ts +4 -5
  33. package/dist/lending/user-data/morpho/userCallBuild.d.ts.map +1 -1
  34. package/dist/lending/user-data/morpho/userCallBuild.js +15 -9
  35. package/dist/lending/user-data/morpho/userCallParse.d.ts +1 -2
  36. package/dist/lending/user-data/morpho/userCallParse.d.ts.map +1 -1
  37. package/dist/lending/user-data/morpho/userCallParse.js +15 -12
  38. package/dist/lending/user-data/types.d.ts +30 -19
  39. package/dist/lending/user-data/types.d.ts.map +1 -1
  40. package/dist/lending/user-data/types.js +12 -0
  41. package/dist/lending/user-data/utils/createGeneralUserState.d.ts +4 -4
  42. package/dist/lending/user-data/utils/createGeneralUserState.d.ts.map +1 -1
  43. package/dist/lending/user-data/utils/createGeneralUserState.js +24 -17
  44. package/dist/utils/index.d.ts +5 -3
  45. package/dist/utils/index.d.ts.map +1 -1
  46. package/dist/utils/index.js +20 -11
  47. package/dist/utils/parsing.d.ts +1 -0
  48. package/dist/utils/parsing.d.ts.map +1 -1
  49. package/dist/utils/parsing.js +3 -0
  50. package/dist/yields/index.d.ts.map +1 -1
  51. package/dist/yields/index.js +12 -5
  52. package/package.json +1 -1
  53. package/src/abis/morpho/blue.ts +99 -0
  54. package/src/abis/morpho/lens.ts +31 -0
  55. package/src/lending/aave-v2-type/types.ts +2 -0
  56. package/src/lending/fetchLender.ts +86 -49
  57. package/src/lending/fetchLenderAll.ts +30 -0
  58. package/src/lending/fetchLenderExt.ts +82 -0
  59. package/src/lending/index.ts +3 -1
  60. package/src/lending/morpho/convertPublic.ts +153 -0
  61. package/src/lending/morpho/fetchPublic.ts +80 -0
  62. package/src/lending/morpho/publicCallBuild.ts +11 -0
  63. package/src/lending/morpho/types.ts +129 -0
  64. package/src/lending/user-data/aave-v3-type/userCallBuild.ts +2 -8
  65. package/src/lending/user-data/abis.ts +4 -1
  66. package/src/lending/user-data/compound-v3/userCallParse.ts +1 -0
  67. package/src/lending/user-data/fetchUserData.ts +114 -33
  68. package/src/lending/user-data/morpho/decoder.ts +71 -0
  69. package/src/lending/user-data/morpho/morphoLib.ts +61 -0
  70. package/src/lending/user-data/morpho/types.ts +12 -0
  71. package/src/lending/user-data/morpho/userCallBuild.ts +63 -0
  72. package/src/lending/user-data/morpho/userCallParse.ts +150 -0
  73. package/src/lending/user-data/morpho/userCallParseNoDeploy.ts +168 -0
  74. package/src/lending/user-data/types.ts +64 -42
  75. package/src/lending/user-data/utils/createGeneralUserState.ts +56 -32
  76. package/src/utils/index.ts +32 -14
  77. package/src/utils/parsing.ts +5 -0
  78. package/src/yields/index.ts +13 -4
  79. package/test/lenderData.test.ts +13251 -13649
  80. package/test/mainPrices.test.ts +1 -13
  81. package/test/morpho.test.ts +20 -0
  82. package/test/userDataMorpho.test.ts +79 -0
  83. package/test/utils.ts +13 -0
@@ -37,6 +37,7 @@ export const getCompoundV3UserDataConverter = (lender, chainId, account, prices,
37
37
  depositsUSD: Number(deposits) * price,
38
38
  debtStableUSD: 0,
39
39
  debt: "0",
40
+ debtStable: "0",
40
41
  debtUSD: 0,
41
42
  collateralActive: true,
42
43
  // user depos raw
@@ -1,5 +1,5 @@
1
- import { LenderUserQuery } from "./types";
2
- import { GetEvmClientFunction } from "../../types";
1
+ import { LenderUserQuery } from './types';
2
+ import { GetEvmClientFunction } from '../../types';
3
3
  /**
4
4
  * Builds the multicall calls for the given queries and returns the raw results
5
5
  * @param chainId - The chain ID
@@ -7,7 +7,7 @@ import { GetEvmClientFunction } from "../../types";
7
7
  * @param getEvmClient - Injected function to get EVM client
8
8
  * @returns The raw results from the multicall
9
9
  */
10
- export declare const getLenderUserDataResult: (chainId: string, queries: LenderUserQuery[], getEvmClient: GetEvmClientFunction) => Promise<any[]>;
10
+ export declare const getLenderUserDataResult: (chainId: string, queriesRaw: LenderUserQuery[], getEvmClient: GetEvmClientFunction) => Promise<any[]>;
11
11
  /**
12
12
  * Converts the raw results into the desired format
13
13
  * @param chainId - The chain ID
@@ -18,7 +18,7 @@ export declare const getLenderUserDataResult: (chainId: string, queries: LenderU
18
18
  * @param lenderState - The state of the lender
19
19
  * @returns The converted data
20
20
  */
21
- export declare const convertLenderUserDataResult: (chainId: string, queries: LenderUserQuery[], rawResults: any[], prices: any, pricesHist: any, lenderState: any) => {
21
+ export declare const convertLenderUserDataResult: (chainId: string, queriesRaw: LenderUserQuery[], rawResults: any[], prices: any, pricesHist: any, lenderState: any) => {
22
22
  [lender: string]: any;
23
23
  };
24
24
  //# sourceMappingURL=fetchUserData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetchUserData.d.ts","sourceRoot":"","sources":["../../../src/lending/user-data/fetchUserData.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAsClD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,SAAS,eAAe,EAAE,EAC1B,cAAc,oBAAoB,KACjC,OAAO,CAAC,GAAG,EAAE,CAsBf,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAS,MAAM,EACf,SAAS,eAAe,EAAE,EAC1B,YAAY,GAAG,EAAE,EACjB,QAAQ,GAAG,EACX,YAAY,GAAG,EACf,aAAa,GAAG,KACf;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;CA6BzB,CAAA"}
1
+ {"version":3,"file":"fetchUserData.d.ts","sourceRoot":"","sources":["../../../src/lending/user-data/fetchUserData.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAuB,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AA6FlD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,cAAc,oBAAoB,KACjC,OAAO,CAAC,GAAG,EAAE,CA4Bf,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,YAAY,GAAG,EAAE,EACjB,QAAQ,GAAG,EACX,YAAY,GAAG,EACf,aAAa,GAAG,KACf;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;CA0CzB,CAAA"}
@@ -1,33 +1,40 @@
1
- import { multicallViemAbiArray } from "../../utils/multicall";
2
- import { isAaveV2Type, isAaveV3Type, isInit, isYLDR } from "../../utils";
3
- import { buildAaveV2UserCall } from "./aave-v2-type/userCallBuild";
4
- import { buildAaveV3UserCall } from "./aave-v3-type/userCallBuild";
5
- import { buildInitUserCall } from "./init/userCallBuild";
6
- import { buildCompoundV3UserCall } from "./compound-v3/userCallBuild";
7
- import { getAbi } from "./abis";
8
- import { getAaveV2UserDataConverter } from "./aave-v2-type/userCallParse";
9
- import { getAaveV3UserDataConverter } from "./aave-v3-type/userCallParse";
10
- import { getInitUserDataConverter } from "./init/userCallParse";
11
- import { getCompoundV3UserDataConverter } from "./compound-v3/userCallParse";
12
- import { getYldrUserDataConverter } from "./aave-v3-type/userCallParseYldr";
13
- function buildUserCall(chainId, lender, account) {
1
+ import { multicallViemAbiArray } from '../../utils/multicall';
2
+ import { isAaveV2Type, isAaveV3Type, isInit, isMorphoType, isMultiMarket, isYLDR, } from '../../utils';
3
+ import { organizeUserQueries } from './types';
4
+ import { buildAaveV2UserCall } from './aave-v2-type/userCallBuild';
5
+ import { buildAaveV3UserCall } from './aave-v3-type/userCallBuild';
6
+ import { buildInitUserCall } from './init/userCallBuild';
7
+ import { buildCompoundV3UserCall } from './compound-v3/userCallBuild';
8
+ import { getAbi } from './abis';
9
+ import { getAaveV2UserDataConverter } from './aave-v2-type/userCallParse';
10
+ import { getAaveV3UserDataConverter } from './aave-v3-type/userCallParse';
11
+ import { getInitUserDataConverter } from './init/userCallParse';
12
+ import { getCompoundV3UserDataConverter } from './compound-v3/userCallParse';
13
+ import { getYldrUserDataConverter } from './aave-v3-type/userCallParseYldr';
14
+ import { buildMorphoUserCallWithLens } from './morpho/userCallBuild';
15
+ import { getMorphoUserDataConverterWithlens } from './morpho/userCallParse';
16
+ function buildUserCall(chainId, lender, account, params) {
14
17
  if (isAaveV2Type(lender))
15
18
  return buildAaveV2UserCall(chainId, lender, account);
16
19
  if (isAaveV3Type(lender))
17
20
  return buildAaveV3UserCall(chainId, lender, account);
18
21
  if (isInit(lender))
19
22
  return buildInitUserCall(chainId, lender, account);
23
+ if (isMorphoType(lender))
24
+ return buildMorphoUserCallWithLens(chainId, account, lender, params);
20
25
  return buildCompoundV3UserCall(chainId, lender, account);
21
26
  }
22
- function getUserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState) {
27
+ function getUserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState, params) {
23
28
  if (isYLDR(lender))
24
- return getYldrUserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState);
29
+ return getYldrUserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState?.data?.[lender]?.data);
25
30
  if (isAaveV2Type(lender))
26
- return getAaveV2UserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState);
31
+ return getAaveV2UserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState?.data?.[lender]?.data);
27
32
  if (isAaveV3Type(lender))
28
- return getAaveV3UserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState);
33
+ return getAaveV3UserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState?.data?.[lender]?.data);
29
34
  if (isInit(lender))
30
- return getInitUserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState);
35
+ return getInitUserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState?.data?.[lender]?.data);
36
+ if (isMorphoType(lender))
37
+ return getMorphoUserDataConverterWithlens(lender, chainId, account, params, prices, pricesHist, lenderPublicState?.data);
31
38
  return getCompoundV3UserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState);
32
39
  }
33
40
  /**
@@ -37,11 +44,12 @@ function getUserDataConverter(lender, chainId, account, prices, pricesHist, lend
37
44
  * @param getEvmClient - Injected function to get EVM client
38
45
  * @returns The raw results from the multicall
39
46
  */
40
- export const getLenderUserDataResult = async (chainId, queries, getEvmClient) => {
47
+ export const getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient) => {
41
48
  let calls = [];
49
+ const queries = organizeUserQueries(queriesRaw);
42
50
  for (const query of queries) {
43
51
  const abi = getAbi(query.lender);
44
- const callData = buildUserCall(chainId, query.lender, query.account);
52
+ const callData = buildUserCall(chainId, query.lender, query.account, query.params);
45
53
  const mappedCalls = callData.map((call) => ({ call, abi }));
46
54
  calls = [...calls, ...mappedCalls];
47
55
  }
@@ -57,21 +65,34 @@ export const getLenderUserDataResult = async (chainId, queries, getEvmClient) =>
57
65
  * @param lenderState - The state of the lender
58
66
  * @returns The converted data
59
67
  */
60
- export const convertLenderUserDataResult = (chainId, queries, rawResults, prices, pricesHist, lenderState) => {
68
+ export const convertLenderUserDataResult = (chainId, queriesRaw, rawResults, prices, pricesHist, lenderState) => {
69
+ const queries = organizeUserQueries(queriesRaw);
61
70
  const lenderData = {};
62
71
  let currentSlice = 0;
63
72
  for (const query of queries) {
64
- const [converter, sliceLength] = getUserDataConverter(query.lender, chainId, query.account, prices, pricesHist, lenderState[chainId]?.data?.[query.lender]?.data);
73
+ const [converter, sliceLength] = getUserDataConverter(query.lender, chainId, query.account, prices, pricesHist, lenderState[chainId], query.params);
65
74
  try {
66
75
  const data = rawResults.slice(currentSlice, currentSlice + sliceLength);
67
76
  const convertedData = converter(data);
68
77
  if (convertedData) {
69
- // map it to the user address
70
- lenderData[query.lender] = { [query.account.toLowerCase()]: convertedData };
78
+ if (isMultiMarket(query.lender)) {
79
+ Object.keys(convertedData).forEach((market) => {
80
+ lenderData[market] = {
81
+ // @ts-ignore
82
+ [query.account.toLowerCase()]: convertedData[market],
83
+ };
84
+ });
85
+ }
86
+ else {
87
+ // map it to the user address
88
+ lenderData[query.lender] = {
89
+ [query.account.toLowerCase()]: convertedData,
90
+ };
91
+ }
71
92
  }
72
93
  }
73
94
  catch (e) {
74
- console.log("Error parsing for", query.lender, "on", chainId, e);
95
+ console.log('Error parsing for', query.lender, 'on', chainId, e);
75
96
  }
76
97
  currentSlice += sliceLength;
77
98
  }
@@ -1,6 +1,5 @@
1
- import { Lender } from "@1delta/asset-registry";
2
- import { Call } from "../../../utils/multicall";
3
- import { MorphoMarket } from "../../morpho/types";
4
- export declare const buildMorphoUserCall: (chainId: string, account: string, lender: Lender, marketsToQuery: MorphoMarket[]) => Call[];
5
- export declare const buildMorphoUserCallWithLens: (chainId: string, account: string, lender: Lender, marketsToQuery: MorphoMarket[]) => Call[];
1
+ import { Lender } from '@1delta/asset-registry';
2
+ import { Call } from '../../../utils/multicall';
3
+ export declare const buildMorphoUserCall: (chainId: string, account: string, lender: Lender, marketsToQuery: string[]) => Call[];
4
+ export declare const buildMorphoUserCallWithLens: (chainId: string, account: string, lender: Lender, marketsToQuery: string[]) => Call[];
6
5
  //# sourceMappingURL=userCallBuild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/morpho/userCallBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAyB,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AA6BjD,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,EAAE,QAAQ,MAAM,EAAE,gBAAgB,YAAY,EAAE,KAAG,IAAI,EAW1H,CAAA;AAID,eAAO,MAAM,2BAA2B,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,EAAE,QAAQ,MAAM,EAAE,gBAAgB,YAAY,EAAE,KAAG,IAAI,EAWlI,CAAA"}
1
+ {"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/morpho/userCallBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAyB,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAgC/C,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,EACf,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,gBAAgB,MAAM,EAAE,KACvB,IAAI,EAIN,CAAA;AAED,eAAO,MAAM,2BAA2B,GACtC,SAAS,MAAM,EACf,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,gBAAgB,MAAM,EAAE,KACvB,IAAI,EAaN,CAAA"}
@@ -1,27 +1,29 @@
1
- import { Chain, MORPHO_BLUE_POOL_DATA } from "@1delta/asset-registry";
2
- import { chunk } from "lodash";
1
+ import { Chain, MORPHO_BLUE_POOL_DATA } from '@1delta/asset-registry';
2
+ import { chunk } from 'lodash';
3
3
  const MORPHO_LENS = {
4
- [Chain.BASE]: "0x98542B95B44a4732EffB1F4F01A696F1546236d3"
4
+ [Chain.BASE]: '0x98542B95B44a4732EffB1F4F01A696F1546236d3',
5
+ [Chain.POLYGON_MAINNET]: '0x105eb87D2b3127f43B1b4C0F125dbEb0EDF3d6C6',
6
+ [Chain.OP_MAINNET]: '0xd184c5315B728c1C990f59dDD275c8155f8e255c',
7
+ [Chain.ARBITRUM_ONE]: '0xF64F862Fb7D687411585e06C08711B612e156530',
5
8
  };
6
9
  const getBaseMorphoCalls = (lender, chainId, account, marketsToQuery) => {
7
- return marketsToQuery.flatMap(({ id }) => [
10
+ return marketsToQuery.flatMap(id => [
8
11
  {
9
12
  // @ts-ignore
10
13
  address: MORPHO_BLUE_POOL_DATA[lender][chainId],
11
14
  name: 'position',
12
- params: [id, account],
15
+ params: ["0x" + id.split("_")[1], account],
13
16
  },
14
17
  {
15
18
  // @ts-ignore
16
19
  address: MORPHO_BLUE_POOL_DATA[lender][chainId],
17
20
  name: 'market',
18
- params: [id],
21
+ params: ["0x" + id.split("_")[1]],
19
22
  },
20
23
  ]);
21
24
  };
22
25
  export const buildMorphoUserCall = (chainId, account, lender, marketsToQuery) => {
23
26
  const calls = getBaseMorphoCalls(lender, chainId, account, marketsToQuery);
24
- console.log("calls", calls);
25
27
  return calls;
26
28
  };
27
29
  export const buildMorphoUserCallWithLens = (chainId, account, lender, marketsToQuery) => {
@@ -30,7 +32,11 @@ export const buildMorphoUserCallWithLens = (chainId, account, lender, marketsToQ
30
32
  return marketSlices.flatMap((marketsInChunk) => ({
31
33
  address: MORPHO_LENS[chainId],
32
34
  name: 'getUserDataCompact',
33
- // @ts-ignore
34
- params: [marketsInChunk.map(a => a.id), account, MORPHO_BLUE_POOL_DATA[lender][chainId]],
35
+ params: [
36
+ marketsInChunk.map(a => a.replace("MORPHO_BLUE_", "0x")),
37
+ account,
38
+ // @ts-ignore
39
+ MORPHO_BLUE_POOL_DATA[lender][chainId],
40
+ ],
35
41
  }));
36
42
  };
@@ -1,7 +1,6 @@
1
1
  import { Lender } from "@1delta/asset-registry";
2
2
  import { MorphoUserReserveResponse } from "../types";
3
- import { MorphoMarket } from "../../morpho/types";
4
- export declare const getMorphoUserDataConverterWithlens: (lender: Lender, chainId: string, account: string, markets: MorphoMarket[], prices: {
3
+ export declare const getMorphoUserDataConverterWithlens: (lender: Lender, chainId: string, account: string, markets: string[], prices: {
5
4
  [asset: string]: number;
6
5
  }, pricesHist: {
7
6
  [asset: string]: number;
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/morpho/userCallParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,eAAO,MAAM,kCAAkC,GAC7C,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,SAAS,YAAY,EAAE,EACvB,QAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACnC,YAAY;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACvC,YAAY,GAAG,KACd,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAAE,GAAG,SAAS,EAAE,MAAM,CA0DvF,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/morpho/userCallParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAMpD,eAAO,MAAM,kCAAkC,GAC7C,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,SAAS,MAAM,EAAE,EACjB,QAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACnC,YAAY;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACvC,YAAY,GAAG,KACd,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAAE,GAAG,SAAS,EAAE,MAAM,CA2DvF,CAAA"}
@@ -18,7 +18,8 @@ export const getMorphoUserDataConverterWithlens = (lender, chainId, account, mar
18
18
  let totalDebt24h = 0;
19
19
  let totalDeposits24h = 0;
20
20
  const balanceData = returnDatas[i];
21
- const market = markets[balanceData.index];
21
+ const markeId = markets[balanceData.index];
22
+ const market = lenderData[markeId]?.params?.market;
22
23
  const { dataForMarket, addedDebt, addedDeposits } = createMorphoEntryFromMarketWithLens(i, balanceData, chainId, market, prices, pricesHist);
23
24
  if (!dataForMarket)
24
25
  continue;
@@ -31,7 +32,7 @@ export const getMorphoUserDataConverterWithlens = (lender, chainId, account, mar
31
32
  rewards: {},
32
33
  userEMode: 0,
33
34
  };
34
- const userData = createBaseTypeUserState(payload, lenderData, totalDeposits24h, totalDebt24h);
35
+ const userData = createBaseTypeUserState(payload, lenderData[markeId].data, totalDeposits24h, totalDebt24h);
35
36
  datas[market.lender] = {
36
37
  ...payload,
37
38
  ...userData,
@@ -44,8 +45,9 @@ export const getMorphoUserDataConverterWithlens = (lender, chainId, account, mar
44
45
  ];
45
46
  };
46
47
  function createMorphoEntryFromMarketWithLens(i, balanceInfo, chainId, market, prices, pricesHist) {
47
- const loanMeta = getAssetMeta(chainId, market.loanAddress);
48
- const loanKey = toOracleKey(loanMeta?.assetGroup) ?? toGenericPriceKey(market.loanAddress, chainId);
48
+ const loanAddress = market.loanAddress.toLowerCase();
49
+ const loanMeta = getAssetMeta(chainId, loanAddress);
50
+ const loanKey = toOracleKey(loanMeta?.assetGroup) ?? toGenericPriceKey(loanAddress, chainId);
49
51
  // prices
50
52
  const priceLoan = prices[loanKey] ?? 1;
51
53
  const priceHistLoan = pricesHist?.[loanKey] ?? priceLoan;
@@ -54,8 +56,8 @@ function createMorphoEntryFromMarketWithLens(i, balanceInfo, chainId, market, pr
54
56
  const depositDec = parseRawAmount(deposits.toString(), market.loanDecimals ?? loanMeta?.decimals ?? 18);
55
57
  const borrowDec = parseRawAmount(borrow.toString(), market.loanDecimals ?? loanMeta?.decimals ?? 18);
56
58
  const dataForLoanAsset = {
57
- poolId: market.loanAddress,
58
- underlying: market.loanAddress,
59
+ poolId: loanAddress,
60
+ underlying: loanAddress,
59
61
  deposits: parseRawAmount(deposits.toString(), market.loanDecimals ?? loanMeta?.decimals ?? 18),
60
62
  depositsRaw: deposits.toString(),
61
63
  debtStable: "0",
@@ -67,16 +69,17 @@ function createMorphoEntryFromMarketWithLens(i, balanceInfo, chainId, market, pr
67
69
  collateralActive: true,
68
70
  claimableRewards: 0,
69
71
  };
70
- const assetMeta = getAssetMeta(chainId, market.collateralAddress);
72
+ const collateralAddress = market.collateralAddress.toLowerCase();
73
+ const assetMeta = getAssetMeta(chainId, collateralAddress);
71
74
  const decimals = market.collateralDecimals ?? assetMeta?.decimals ?? 18;
72
75
  const collateralDec = parseRawAmount(balanceInfo.collateral.toString(), decimals);
73
- const key = toOracleKey(assetMeta?.assetGroup) ?? toGenericPriceKey(market.collateralAddress, chainId);
76
+ const key = toOracleKey(assetMeta?.assetGroup) ?? toGenericPriceKey(collateralAddress, chainId);
74
77
  // prices
75
78
  const price = prices[key] ?? 1;
76
79
  const priceHist = pricesHist?.[key] ?? price;
77
80
  const dataForCollateralAsset = {
78
- poolId: market.collateralAddress,
79
- underlying: market.collateralAddress,
81
+ poolId: collateralAddress,
82
+ underlying: collateralAddress,
80
83
  deposits: collateralDec,
81
84
  depositsRaw: balanceInfo.collateral.toString(),
82
85
  debtStable: "0",
@@ -90,8 +93,8 @@ function createMorphoEntryFromMarketWithLens(i, balanceInfo, chainId, market, pr
90
93
  };
91
94
  return {
92
95
  dataForMarket: {
93
- [market.loanAddress]: dataForLoanAsset,
94
- [market.collateralAddress]: dataForCollateralAsset
96
+ [loanAddress]: dataForLoanAsset,
97
+ [collateralAddress]: dataForCollateralAsset
95
98
  },
96
99
  addedDeposits: Number(depositDec) * priceHistLoan + Number(collateralDec) * priceHist,
97
100
  addedDebt: Number(borrowDec) * priceHistLoan
@@ -1,17 +1,17 @@
1
- import { Lender } from "@1delta/asset-registry";
2
- import { BaseYields, RewardsMap } from "../aave-v3-type/types";
1
+ import { BaseYields, RewardsMap } from '../aave-v3-type/types';
3
2
  export type SerializedBigNumber = string;
4
3
  export type SerializedNumber = string;
5
4
  export interface LenderUserQuery {
6
- lender: Lender;
5
+ /** the lender enum (Note that for multi-market ones, it is not the lender but the group) */
6
+ lender: any;
7
+ /** user address */
7
8
  account: string;
9
+ /** custom parameters for fetching e.g. multi-market lenders */
10
+ params?: any[];
8
11
  }
9
- export interface AllowanceData {
10
- allowanceWithdrawal: string;
11
- allowanceBorrowingVariable: string;
12
- allowanceBorrowingStable: string;
13
- }
14
- export interface UserLendingPosition extends AllowanceData {
12
+ /** Filter all morphos into one for querying */
13
+ export declare function organizeUserQueries(queries: LenderUserQuery[]): LenderUserQuery[];
14
+ export interface UserLendingPosition {
15
15
  deposits: number;
16
16
  debt: number;
17
17
  debtStable: number;
@@ -32,7 +32,7 @@ export interface LenderUserResponse {
32
32
  account: string;
33
33
  lendingPositions: {
34
34
  [lender: string]: {
35
- [tokenSymbol: string]: UserLendingPosition;
35
+ [poolId: string]: UserLendingPosition;
36
36
  };
37
37
  };
38
38
  rewards: UserRewardEntry;
@@ -64,15 +64,15 @@ export interface AaveV2UserReserveResponse {
64
64
  account: string;
65
65
  lendingPositions: {
66
66
  [id: string]: {
67
- [tokenSymbol: string]: AavelendingPositions;
67
+ [poolId: string]: AavelendingPositions;
68
68
  };
69
69
  };
70
70
  rewards: UserRewardEntry;
71
71
  }
72
- interface AavelendingPositions extends AllowanceData {
73
- deposits: number;
74
- debt: number;
75
- debtStable: number;
72
+ interface AavelendingPositions {
73
+ deposits: string;
74
+ debt: string;
75
+ debtStable: string;
76
76
  depositsUSD: number;
77
77
  debtUSD: number;
78
78
  debtStableUSD: number;
@@ -83,17 +83,28 @@ export interface AaveV3UserReserveResponse {
83
83
  chainId: string;
84
84
  lendingPositions: {
85
85
  [id: string]: {
86
- [tokenSymbol: string]: AavelendingPositions;
86
+ [poolId: string]: AavelendingPositions;
87
87
  };
88
88
  };
89
89
  userEMode: number;
90
90
  rewards?: any;
91
91
  account: string;
92
92
  }
93
+ export interface MorphoUserReserveResponse {
94
+ chainId: string;
95
+ lendingPositions: {
96
+ [id: string]: {
97
+ [poolId: string]: AavelendingPositions;
98
+ };
99
+ };
100
+ id: string;
101
+ rewards?: any;
102
+ account: string;
103
+ }
93
104
  export interface CompoundV3UserReserveResponse {
94
105
  lendingPositions: {
95
106
  [id: string]: {
96
- [tokenSymbol: string]: {
107
+ [poolId: string]: {
97
108
  deposits: number;
98
109
  debt: number;
99
110
  debtStable: number;
@@ -191,12 +202,12 @@ export interface InitUserReserveResponse {
191
202
  lendingPositions: {
192
203
  [posId: string]: {
193
204
  mode: any;
194
- [tokenSymbol: string]: {
205
+ [poolId: string]: {
195
206
  deposits: number;
196
207
  debt: number;
197
208
  depositsUSD: number;
198
209
  debtUSD: number;
199
- debtStable: "0";
210
+ debtStable: '0';
200
211
  debtStableUSD: 0;
201
212
  collateralActive: boolean;
202
213
  isAllowed: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lending/user-data/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lending/user-data/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,15 @@
1
+ import { Lender } from '@1delta/asset-registry';
2
+ /** Filter all morphos into one for querying */
3
+ export function organizeUserQueries(queries) {
4
+ const morphos = queries.filter((q) => q.lender.startsWith('MORPHO_BLUE'));
5
+ const nonMorphos = queries.filter((q) => !q.lender.startsWith('MORPHO_BLUE'));
6
+ const morphosCollapsed = {
7
+ lender: Lender.MORPHO_BLUE,
8
+ account: queries[0].account,
9
+ params: morphos.map((p) => p.lender),
10
+ };
11
+ return [...nonMorphos, morphosCollapsed];
12
+ }
1
13
  // Aave V2 specific enums
2
14
  export var AaveV2TypeGetUserReserveData;
3
15
  (function (AaveV2TypeGetUserReserveData) {
@@ -1,4 +1,4 @@
1
- import { AaveV2Public, AaveV2UserReserveResponse, AaveV3Public, AaveV3UserReserveResponse, CompoundV3Public, CompoundV3UserReserveResponse } from "../types";
1
+ import { AaveV2Public, AaveV2UserReserveResponse, AaveV3Public, AaveV3UserReserveResponse, CompoundV3Public, CompoundV3UserReserveResponse } from '../types';
2
2
  type LenderUserData = AaveV3UserReserveResponse | AaveV2UserReserveResponse | CompoundV3UserReserveResponse;
3
3
  type LenderState = AaveV3Public | AaveV2Public | CompoundV3Public;
4
4
  export declare function createBaseTypeUserState(payload: LenderUserData, lenderData: {
@@ -7,7 +7,7 @@ export declare function createBaseTypeUserState(payload: LenderUserData, lenderD
7
7
  account: string;
8
8
  chainId: string;
9
9
  balanceData: {
10
- "0": {
10
+ '0': {
11
11
  rewards?: any;
12
12
  borrowDiscountedCollateral: number;
13
13
  collateral: number;
@@ -21,7 +21,7 @@ export declare function createBaseTypeUserState(payload: LenderUserData, lenderD
21
21
  };
22
22
  };
23
23
  aprData: {
24
- "0": {
24
+ '0': {
25
25
  apr: number;
26
26
  borrowApr: number;
27
27
  depositApr: number;
@@ -35,7 +35,7 @@ export declare function createBaseTypeUserState(payload: LenderUserData, lenderD
35
35
  };
36
36
  };
37
37
  userConfigs: {
38
- "0": {
38
+ '0': {
39
39
  selectedMode: number;
40
40
  id: string;
41
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createGeneralUserState.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/utils/createGeneralUserState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAG5J,KAAK,cAAc,GAAG,yBAAyB,GAAG,yBAAyB,GAAG,6BAA6B,CAAA;AAC3G,KAAK,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,gBAAgB,CAAA;AAEjE,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,EACxC,gBAAgB,GAAE,MAAU,EAC5B,YAAY,GAAE,MAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0GzB"}
1
+ {"version":3,"file":"createGeneralUserState.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/utils/createGeneralUserState.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,YAAY,EACZ,yBAAyB,EACzB,gBAAgB,EAChB,6BAA6B,EAC9B,MAAM,UAAU,CAAA;AAGjB,KAAK,cAAc,GACf,yBAAyB,GACzB,yBAAyB,GACzB,6BAA6B,CAAA;AACjC,KAAK,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,gBAAgB,CAAA;AAEjE,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,EACxC,gBAAgB,GAAE,MAAU,EAC5B,YAAY,GAAE,MAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwHzB"}
@@ -1,7 +1,7 @@
1
- import { divideAccrualsToAprs } from ".";
2
- import { safeDivide } from "./formatting";
1
+ import { divideAccrualsToAprs } from '.';
2
+ import { safeDivide } from './formatting';
3
3
  export function createBaseTypeUserState(payload, lenderData, totalDeposits24h = 0, totalDebt24h = 0) {
4
- let assetKeys = Object.keys(payload.lendingPositions["0"] ?? {});
4
+ let assetKeys = Object.keys(payload.lendingPositions['0'] ?? {});
5
5
  const { chainId, account } = payload;
6
6
  const mode = Number(payload.userEMode ?? 0);
7
7
  // organic yields
@@ -24,19 +24,22 @@ export function createBaseTypeUserState(payload, lenderData, totalDeposits24h =
24
24
  const asset = assetKeys[i];
25
25
  if (!lenderData?.[asset])
26
26
  continue;
27
- const { depositsUSD, debtStableUSD, debtUSD, collateralActive } = payload.lendingPositions["0"][asset];
28
- const { depositRate, stakingYield, variableBorrowRate, stableBorrowRate, rewards } = lenderData[asset];
27
+ const { depositsUSD, debtStableUSD, debtUSD, collateralActive } = payload.lendingPositions['0'][asset];
28
+ const { depositRate, stakingYield, variableBorrowRate, stableBorrowRate, rewards, } = lenderData[asset];
29
29
  // amounts
30
30
  deposits += depositsUSD;
31
31
  debt += debtStableUSD;
32
32
  debt += debtUSD;
33
- // rewards
33
+ // rewards
34
34
  Object.entries(rewards ?? {}).forEach(([key, rewardData]) => {
35
35
  rewardDepositAccrual += rewardData.depositRate * depositsUSD;
36
- rewardBorrowAccrual += rewardData.variableBorrowRate * debtUSD + (rewardData.stableBorrowRate ?? 0) * debtStableUSD;
36
+ rewardBorrowAccrual +=
37
+ rewardData.variableBorrowRate * debtUSD +
38
+ (rewardData.stableBorrowRate ?? 0) * debtStableUSD;
37
39
  // totals
38
40
  const rewDepo = rewardData.depositRate * depositsUSD;
39
- const rewDebt = rewardData.variableBorrowRate * debtUSD + (rewardData.stableBorrowRate ?? 0) * (debtStableUSD ?? 0);
41
+ const rewDebt = rewardData.variableBorrowRate * debtUSD +
42
+ (rewardData.stableBorrowRate ?? 0) * (debtStableUSD ?? 0);
40
43
  if (!rewardsPerAsset[key])
41
44
  rewardsPerAsset[key] = { depositApr: 0, borrowApr: 0 };
42
45
  if (rewDepo > 0)
@@ -49,17 +52,21 @@ export function createBaseTypeUserState(payload, lenderData, totalDeposits24h =
49
52
  stakingBorrowAccrual += (stakingYield ?? 0) * (debtStableUSD + debtUSD);
50
53
  if (collateralActive) {
51
54
  // risk adjusted
52
- collateral += (lenderData[asset].config[mode]?.collateralFactor ?? 1) * depositsUSD;
53
- borrowDiscountedCollateral += (lenderData[asset].config[mode]?.borrowCollateralFactor ?? 1) * depositsUSD;
55
+ collateral +=
56
+ (lenderData[asset].config[mode]?.collateralFactor ?? 1) * depositsUSD;
57
+ borrowDiscountedCollateral +=
58
+ (lenderData[asset].config[mode]?.borrowCollateralFactor ?? 1) *
59
+ depositsUSD;
54
60
  }
55
61
  // IRs
56
62
  depositInterest += depositRate * depositsUSD;
57
- borrowInterest += debtStableUSD * stableBorrowRate + debtUSD * variableBorrowRate;
63
+ borrowInterest +=
64
+ debtStableUSD * stableBorrowRate + debtUSD * variableBorrowRate;
58
65
  }
59
66
  const nav = deposits - debt;
60
67
  // aggregated balance data
61
68
  const balanceData = {
62
- "0": {
69
+ '0': {
63
70
  borrowDiscountedCollateral,
64
71
  collateral,
65
72
  deposits,
@@ -69,12 +76,12 @@ export function createBaseTypeUserState(payload, lenderData, totalDeposits24h =
69
76
  deposits24h: totalDeposits24h,
70
77
  debt24h: totalDebt24h,
71
78
  nav24h: totalDeposits24h - totalDebt24h,
72
- ...(payload.rewards ? { rewards: payload.rewards } : {})
73
- }
79
+ ...(payload.rewards ? { rewards: payload.rewards } : {}),
80
+ },
74
81
  };
75
82
  // aggregated apr data
76
83
  const aprData = {
77
- "0": {
84
+ '0': {
78
85
  apr: safeDivide(depositInterest - borrowInterest, nav),
79
86
  borrowApr: safeDivide(borrowInterest, debt),
80
87
  depositApr: safeDivide(depositInterest, deposits),
@@ -85,9 +92,9 @@ export function createBaseTypeUserState(payload, lenderData, totalDeposits24h =
85
92
  stakingApr: safeDivide(stakingDepositAccrual - stakingBorrowAccrual, nav),
86
93
  stakingDepositApr: safeDivide(stakingDepositAccrual, deposits),
87
94
  stakingBorrowApr: safeDivide(stakingBorrowAccrual, debt),
88
- }
95
+ },
89
96
  };
90
- const userConfigs = { "0": { selectedMode: mode, id: account } };
97
+ const userConfigs = { '0': { selectedMode: mode, id: account } };
91
98
  return {
92
99
  account,
93
100
  chainId,
@@ -1,4 +1,8 @@
1
1
  import { Lender } from "@1delta/asset-registry";
2
+ export declare function isCompoundV3(lender: string): boolean;
3
+ export declare function isCompoundV3Type(lender: string): boolean;
4
+ export declare function isInit(lender: string): lender is Lender.INIT;
5
+ export declare function isMorphoType(lender: string): boolean;
2
6
  export declare const AAVE_V3_2_PROTOCOLS: Lender[];
3
7
  export declare function isAaveV3Type(lender: string): boolean;
4
8
  export declare function isAaveV3Original(lender: string): boolean;
@@ -6,9 +10,6 @@ export declare function isAaveV2Type(lender: string): boolean;
6
10
  export declare function isYLDR(lender: string): lender is Lender.YLDR;
7
11
  export declare function isAaveV32Type(lender: Lender): boolean;
8
12
  export declare function isAaveType(lender: string): boolean;
9
- export declare function isCompoundV3(lender: string): boolean;
10
- export declare function isCompoundV3Type(lender: string): boolean;
11
- export declare function isInit(lender: string): lender is Lender.INIT;
12
13
  export declare function isSwaylend(lender: string): boolean;
13
14
  export declare const getLendersForChain: (c: string) => string[];
14
15
  /** Filter lenders by protocol list */
@@ -19,4 +20,5 @@ export declare const AAVES_PER_CHAIN: {
19
20
  };
20
21
  export declare const getComposerAddress: (chainId: string) => string;
21
22
  export declare const getLenderAssets: (chainId: string | number | undefined, lendingProtocol?: Lender) => string[];
23
+ export declare function isMultiMarket(lender: string): boolean;
22
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,MAAM,EAGP,MAAM,wBAAwB,CAAA;AAQ/B,eAAO,MAAM,mBAAmB,UAAkE,CAAA;AAElG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,WAE9C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,yBAEpC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,WAE3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,WAExC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,WAE9C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,yBAEpC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,WAExC;AAED,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,aAqB3C,CAAA;AAED,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,EAAE,EAAE,eAAe,MAAM,EAAE,KAAG,MAAM,EAQ7F,CAAA;AAaD,mCAAmC;AACnC,eAAO,MAAM,eAAe;;CAAqB,CAAA;AAEjD,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,MAEpD,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,wBAAgC,KAAG,MAAM,EAO9G,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,MAAM,EAIP,MAAM,wBAAwB,CAAA;AAO/B,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAA+C;AAE1F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,WAA+C;AAE9F,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,yBAAmC;AAExE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAI1C;AAID,eAAO,MAAM,mBAAmB,UAAkE,CAAA;AAElG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,WAE9C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,yBAEpC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,WAE3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,WAExC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,WAExC;AAED,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,aA4B3C,CAAA;AAED,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,EAAE,EAAE,eAAe,MAAM,EAAE,KAAG,MAAM,EAS7F,CAAA;AAaD,mCAAmC;AACnC,eAAO,MAAM,eAAe;;CAAqB,CAAA;AAEjD,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,MAEpD,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,EACpC,wBAAgC,KAC/B,MAAM,EAOR,CAAA;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,WAE3C"}