@merkl/api 0.10.212 → 0.10.214

Sign up to get free protection for your applications and to get access to all the features.
@@ -78,8 +78,8 @@ declare const eden: {
78
78
  headers?: Record<string, unknown> | undefined;
79
79
  query: {
80
80
  user?: string | undefined;
81
- AMMs?: string | string[] | undefined;
82
81
  chainIds?: number | number[] | undefined;
82
+ AMMs?: string | string[] | undefined;
83
83
  onlyLive?: string | undefined;
84
84
  "AMMs[]"?: string | string[] | undefined;
85
85
  "AMMs[0]"?: string | undefined;
@@ -1403,7 +1403,8 @@ declare const eden: {
1403
1403
  get: (options: {
1404
1404
  headers?: Record<string, unknown> | undefined;
1405
1405
  query: {
1406
- chainId?: number | undefined;
1406
+ chainIds?: number[] | undefined;
1407
+ reloadChainId?: number | undefined;
1407
1408
  };
1408
1409
  fetch?: RequestInit | undefined;
1409
1410
  }) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
@@ -2858,8 +2859,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
2858
2859
  params: {};
2859
2860
  query: {
2860
2861
  user?: string | undefined;
2861
- AMMs?: string | string[] | undefined;
2862
2862
  chainIds?: number | number[] | undefined;
2863
+ AMMs?: string | string[] | undefined;
2863
2864
  onlyLive?: string | undefined;
2864
2865
  "AMMs[]"?: string | string[] | undefined;
2865
2866
  "AMMs[0]"?: string | undefined;
@@ -4519,7 +4520,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
4519
4520
  address: string;
4520
4521
  };
4521
4522
  query: {
4522
- chainId?: number | undefined;
4523
+ chainIds?: number[] | undefined;
4524
+ reloadChainId?: number | undefined;
4523
4525
  };
4524
4526
  headers: unknown;
4525
4527
  response: {
@@ -6254,8 +6256,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
6254
6256
  headers?: Record<string, unknown> | undefined;
6255
6257
  query: {
6256
6258
  user?: string | undefined;
6257
- AMMs?: string | string[] | undefined;
6258
6259
  chainIds?: number | number[] | undefined;
6260
+ AMMs?: string | string[] | undefined;
6259
6261
  onlyLive?: string | undefined;
6260
6262
  "AMMs[]"?: string | string[] | undefined;
6261
6263
  "AMMs[0]"?: string | undefined;
@@ -7579,7 +7581,8 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
7579
7581
  get: (options: {
7580
7582
  headers?: Record<string, unknown> | undefined;
7581
7583
  query: {
7582
- chainId?: number | undefined;
7584
+ chainIds?: number[] | undefined;
7585
+ reloadChainId?: number | undefined;
7583
7586
  };
7584
7587
  fetch?: RequestInit | undefined;
7585
7588
  }) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
@@ -123,8 +123,8 @@ declare const app: Elysia<"", false, {
123
123
  params: {};
124
124
  query: {
125
125
  user?: string | undefined;
126
- AMMs?: string | string[] | undefined;
127
126
  chainIds?: number | number[] | undefined;
127
+ AMMs?: string | string[] | undefined;
128
128
  onlyLive?: string | undefined;
129
129
  "AMMs[]"?: string | string[] | undefined;
130
130
  "AMMs[0]"?: string | undefined;
@@ -1784,7 +1784,8 @@ declare const app: Elysia<"", false, {
1784
1784
  address: string;
1785
1785
  };
1786
1786
  query: {
1787
- chainId?: number | undefined;
1787
+ chainIds?: number[] | undefined;
1788
+ reloadChainId?: number | undefined;
1788
1789
  };
1789
1790
  headers: unknown;
1790
1791
  response: {
@@ -59,9 +59,14 @@ export class CurveNPoolProcessor extends GenericProcessor {
59
59
  for (let i = 0; i < typeInfo.numberTokens; i++) {
60
60
  const symbol = typeInfo[`symbolToken${i}`];
61
61
  const parsedSymbol = symbol.split("_")[0].slice(1);
62
- let price = (await pricer.get({ symbol: parsedSymbol })) ?? 0;
62
+ let price = (await pricer.get({ symbol: symbol })) ?? 0;
63
63
  if (price === 0) {
64
- price = (await pricer.get({ symbol: hardcodedSymbol })) ?? 0;
64
+ // For cross curve
65
+ const parsedSymbol = symbol.split("_")[0].slice(1);
66
+ price = (await pricer.get({ symbol: parsedSymbol })) ?? 0;
67
+ if (price === 0) {
68
+ price = (await pricer.get({ symbol: hardcodedSymbol })) ?? 0;
69
+ }
65
70
  }
66
71
  const decimals = Number(typeInfo[`decimalsToken${i}`]);
67
72
  const amount = BN2Number(typeInfo[`balanceToken${i}`], decimals);
@@ -43,10 +43,9 @@ function satisfiesNameConditions(name, type) {
43
43
  return (lowerCaseName === "crvusd/frax" ||
44
44
  lowerCaseName === "ezeth/wfrxeth" ||
45
45
  lowerCaseName === "pufeth/wsteth" ||
46
- lowerCaseName === "hai/lusd" ||
47
- lowerCaseName === "eywa/usdt");
46
+ lowerCaseName === "hai/lusd");
48
47
  case tokenType.crosscurve:
49
- return lowerCaseName.startsWith("crosscurve");
48
+ return lowerCaseName.startsWith("crosscurve") || lowerCaseName === "eywa/usdt";
50
49
  case tokenType.silostaking:
51
50
  return lowerCaseName === "isei";
52
51
  case tokenType.beefy:
@@ -1662,7 +1662,8 @@ export declare const v4: Elysia<"/v4", false, {
1662
1662
  address: string;
1663
1663
  };
1664
1664
  query: {
1665
- chainId?: number | undefined;
1665
+ chainIds?: number[] | undefined;
1666
+ reloadChainId?: number | undefined;
1666
1667
  };
1667
1668
  headers: unknown;
1668
1669
  response: {
@@ -83,7 +83,8 @@ export declare const UserController: Elysia<"/users", false, {
83
83
  address: string;
84
84
  };
85
85
  query: {
86
- chainId?: number | undefined;
86
+ chainIds?: number[] | undefined;
87
+ reloadChainId?: number | undefined;
87
88
  };
88
89
  headers: unknown;
89
90
  response: {
@@ -19,17 +19,19 @@ export const UserController = new Elysia({ prefix: "/users", detail: { tags: ["U
19
19
  })
20
20
  // ─── Get User's Rewards With Breakdown And Details for our FE ────────
21
21
  .get("/:address/rewards/breakdowns", async ({ params, query }) => {
22
- const rewardsByChain = await RewardService.getUserRewardsByChain(params.address, true, [], query.chainId ?? null);
22
+ const rewardsByChain = await RewardService.getUserRewardsByChain(params.address, true, query?.chainIds, query.reloadChainId ?? null);
23
23
  return RewardService.splitRewardsBreakdownByOpportunity(rewardsByChain);
24
24
  }, {
25
25
  params: UserUniqueDto,
26
26
  query: OptionalChainIdDto,
27
27
  beforeHandle: ({ params, query }) => {
28
28
  params.address = throwOnInvalidRequiredAddress(params.address);
29
- if (!!query.chainId)
30
- throwOnUnsupportedChainId(query.chainId);
29
+ if (!!query.reloadChainId)
30
+ throwOnUnsupportedChainId(query.reloadChainId);
31
+ for (const chainId of query?.chainIds ?? []) {
32
+ throwOnUnsupportedChainId(chainId);
33
+ }
31
34
  },
32
- detail: { hide: true },
33
35
  })
34
36
  // ─── Get User's Rewards With Breakdown ──────────────────────────────
35
37
  .get("/:address/rewards", async ({ params, query }) => {
@@ -39,7 +39,8 @@ export declare const UserUniqueDto: import("@sinclair/typebox").TObject<{
39
39
  address: import("@sinclair/typebox").TString;
40
40
  }>;
41
41
  export declare const OptionalChainIdDto: import("@sinclair/typebox").TObject<{
42
- chainId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
42
+ chainIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>]>, number[]>>;
43
+ reloadChainId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
43
44
  }>;
44
45
  export declare const UserDto: import("@sinclair/typebox").TObject<{
45
46
  address: import("@sinclair/typebox").TString;
@@ -31,7 +31,11 @@ export const UserUniqueDto = t.Object({
31
31
  address: t.String(),
32
32
  });
33
33
  export const OptionalChainIdDto = t.Object({
34
- chainId: t.Optional(t.Numeric()),
34
+ chainIds: t.Optional(t
35
+ .Transform(t.Union([t.String(), t.Array(t.Numeric())]))
36
+ .Decode(value => (typeof value === "string" ? value.split(",").map(v => Number.parseInt(v)) : value))
37
+ .Encode(value => [...value])),
38
+ reloadChainId: t.Optional(t.Numeric()),
35
39
  });
36
40
  export const UserDto = t.Object({
37
41
  address: t.String(),
@@ -28,8 +28,8 @@ declare const _default: (app: Elysia) => Elysia<"", false, {
28
28
  params: {};
29
29
  query: {
30
30
  user?: string | undefined;
31
- AMMs?: string | string[] | undefined;
32
31
  chainIds?: number | number[] | undefined;
32
+ AMMs?: string | string[] | undefined;
33
33
  onlyLive?: string | undefined;
34
34
  "AMMs[]"?: string | string[] | undefined;
35
35
  "AMMs[0]"?: string | undefined;
@@ -19,8 +19,8 @@ export declare const v2: Elysia<"/v2", false, {
19
19
  params: {};
20
20
  query: {
21
21
  user?: string | undefined;
22
- AMMs?: string | string[] | undefined;
23
22
  chainIds?: number | number[] | undefined;
23
+ AMMs?: string | string[] | undefined;
24
24
  onlyLive?: string | undefined;
25
25
  "AMMs[]"?: string | string[] | undefined;
26
26
  "AMMs[0]"?: string | undefined;
@@ -129,7 +129,12 @@ export function decodeCall(calls, index, key, type) {
129
129
  case "coin2":
130
130
  return CurveInterface.decodeFunctionResult("coins", returnData)[0];
131
131
  case "N_COINS":
132
- return CurveStableSwapNGInterface.decodeFunctionResult("N_COINS", returnData)[0];
132
+ try {
133
+ return CurveStableSwapNGInterface.decodeFunctionResult("N_COINS", returnData)[0];
134
+ }
135
+ catch (e) {
136
+ return 2;
137
+ }
133
138
  case "balances":
134
139
  return CurveStableSwapNGInterface.decodeFunctionResult("balances", returnData)[0];
135
140
  case "calcNetShareValue":
@@ -102,6 +102,9 @@ export function generateCardName(type, typeInfo, campaign, symbols = [""]) {
102
102
  case tokenType.cpmmGamma:
103
103
  return `Provide ${typeInfo.symbolToken0}/${typeInfo.symbolToken1} on ${typeInfo.protocol}`;
104
104
  case tokenType.crosscurve:
105
+ if (typeInfo.name.toLowerCase() === "eywa/usdt") {
106
+ return `Curve ${typeInfo.name}`;
107
+ }
105
108
  return `${typeInfo.name}`;
106
109
  default:
107
110
  return `Hold ${typeInfo.name} (${campaign.campaignParameters.symbolTargetToken})`;