@merkl/api 0.16.37 → 0.16.39

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.
@@ -3,6 +3,7 @@ export declare abstract class CacheService {
3
3
  private static encoder;
4
4
  private static decoder;
5
5
  static wrap<Fn extends (...args: Args) => Promise<unknown>, Args extends unknown[], T extends Awaited<ReturnType<Fn>>>(ttl: number, fn: Fn, ...args: Args): Promise<T>;
6
+ static keyAndTTL<Fn extends (...args: Args) => Promise<unknown>, Args extends unknown[], T extends Awaited<ReturnType<Fn>>>(fn: Fn, ...args: Args): Promise<[string, number]>;
6
7
  static set<Fn extends (...args: Args) => Promise<unknown>, Args extends unknown[], T extends Awaited<ReturnType<Fn>>>(ttl: number, fn: Fn, ...args: Args): Promise<T>;
7
8
  static get<Fn extends (...args: Args) => Promise<unknown>, Args extends unknown[], T extends Awaited<ReturnType<Fn>>>(fn: Fn, args: Args): Promise<T | null>;
8
9
  }
@@ -29,6 +29,10 @@ export class CacheService {
29
29
  await CacheRepository.set(ttl, key, compressed);
30
30
  return result;
31
31
  }
32
+ static async keyAndTTL(fn, ...args) {
33
+ const key = CacheService.#hashKey(fn, args);
34
+ return [key, await CacheRepository.ttl(key)];
35
+ }
32
36
  static async set(ttl, fn, ...args) {
33
37
  const key = CacheService.#hashKey(fn, args);
34
38
  const result = await fn(...args);
@@ -5,5 +5,6 @@ export declare abstract class OpportunityConvertorService {
5
5
  static convertV4CampaignToV3<C extends ValidCampaign>(campaignType: C, campaign: Awaited<ReturnType<(typeof OpportunityService)["findMany"]>>[number]["campaigns"][number], opportunity: Awaited<ReturnType<(typeof OpportunityService)["findMany"]>>[number]): CampaignParameters<C>;
6
6
  static convertV4toV3(opportunity: Awaited<ReturnType<(typeof OpportunityService)["findMany"]>>[number], withCampaigns?: boolean): OpportunityV3;
7
7
  static setV3Opportunities(showCampaigns: boolean, test: boolean | undefined, identifier: string | undefined, chainId: string | undefined): Promise<{}>;
8
+ static logKeyAndTTLV3Opportunities(showCampaigns: boolean, test: boolean | undefined, identifier: string | undefined, chainId: string | undefined): Promise<void>;
8
9
  static wrapV3Opportunities(showCampaigns: boolean, test: boolean | undefined, identifier: string | undefined, chainId: string | undefined): Promise<{}>;
9
10
  }
@@ -1,4 +1,5 @@
1
1
  import { kebabToPascalCase } from "../../../utils/camelToKebabCase";
2
+ import { log } from "../../../utils/logger";
2
3
  import { Campaign as CampaignEnum, EAprBreakdownType, opportunityActions, } from "@sdk";
3
4
  import moment from "moment";
4
5
  import { CacheService } from "../cache";
@@ -142,7 +143,6 @@ export class OpportunityConvertorService {
142
143
  chainId,
143
144
  campaigns: true,
144
145
  });
145
- console.log(page, opportunitiesPage.length);
146
146
  opportunities = opportunities.concat(opportunitiesPage);
147
147
  if (opportunitiesPage.length === 0)
148
148
  break;
@@ -162,6 +162,10 @@ export class OpportunityConvertorService {
162
162
  static async setV3Opportunities(showCampaigns, test, identifier, chainId) {
163
163
  return await CacheService.set(TTLPresets.MIN_5, OpportunityConvertorService.#extractV3Opportunities, showCampaigns, test, identifier, chainId);
164
164
  }
165
+ static async logKeyAndTTLV3Opportunities(showCampaigns, test, identifier, chainId) {
166
+ const [key, ttl] = await CacheService.keyAndTTL(OpportunityConvertorService.#extractV3Opportunities, showCampaigns, test, identifier, chainId);
167
+ log.info(`Key: ${key}, TTL: ${ttl}`);
168
+ }
165
169
  static async wrapV3Opportunities(showCampaigns, test, identifier, chainId) {
166
170
  return await CacheService.wrap(TTLPresets.MIN_30, OpportunityConvertorService.#extractV3Opportunities, showCampaigns, test, identifier, chainId);
167
171
  }
@@ -155,7 +155,12 @@ export declare enum vicunaCampaigns {
155
155
  wETH_Variable_Debt_Vicuna_Sonic = "wETH Variable Debt Vicuna Sonic 0x50b547B44182973066607fA030cE9B8C7CE05A80",
156
156
  USDTe_Variable_Debt_Vicuna_Sonic = "USDT.e Variable Debt Vicuna Sonic 0x7e5EC2B98691d20FfDf4d1F37c7B1733a03C3a84",
157
157
  wOS_Variable_Debt_Vicuna_Sonic = "wOS Variable Debt Vicuna Sonic 0xcbf8f9bA27a1377CDEa79457EE7Df8fe66f21F55",
158
- stS_Variable_Debt_Vicuna_Sonic = "stS Variable Debt Vicuna Sonic 0x7E82597B158663ECA96f9C65DeFCB02d55c3BC1f"
158
+ stS_Variable_Debt_Vicuna_Sonic = "stS Variable Debt Vicuna Sonic 0x7E82597B158663ECA96f9C65DeFCB02d55c3BC1f",
159
+ Vicuna_Sonic_WS_Sonic_Market_Vicuna = "Vicuna Sonic WS (Sonic Market) Vicuna 0x9e07EF144325DAe02ff92910aDd1FE91581D4798",
160
+ Vicuna_Sonic_stS_Sonic_Market_Vicuna = "Vicuna Sonic stS (Sonic Market) Vicuna 0xFB56Cd34244985222068ae1C384ecE4215528D04",
161
+ Vicuna_Sonic_USDCe_Stable_Market_Vicuna = "Vicuna Sonic USDC.E (Stable Market) Vicuna 0x0127C186D905Ddaf323e76c4f6AB41cDD66619e5",
162
+ Vicuna_Sonic_SCUSD_Stable_Market_Vicuna = "Vicuna Sonic SCUSD (Stable Market) Vicuna 0xfb2e5Fd5de4E0757062363dfA44dF2e3654A35A5",
163
+ Vicuna_Sonic_USDTe_Stable_Market_Vicuna = "Vicuna Sonic USDT.E (Stable Market) Vicuna 0x11054544BEbab950B3B2F88fBb73B10550d4FF5c"
159
164
  }
160
165
  export declare enum pufferCampaigns {
161
166
  Zircuit_Restaking_Pool = "0xF047ab4c75cebf0eB9ed34Ae2c186f3611aEAfa6",
@@ -164,6 +164,11 @@ export var vicunaCampaigns;
164
164
  vicunaCampaigns["USDTe_Variable_Debt_Vicuna_Sonic"] = "USDT.e Variable Debt Vicuna Sonic 0x7e5EC2B98691d20FfDf4d1F37c7B1733a03C3a84";
165
165
  vicunaCampaigns["wOS_Variable_Debt_Vicuna_Sonic"] = "wOS Variable Debt Vicuna Sonic 0xcbf8f9bA27a1377CDEa79457EE7Df8fe66f21F55";
166
166
  vicunaCampaigns["stS_Variable_Debt_Vicuna_Sonic"] = "stS Variable Debt Vicuna Sonic 0x7E82597B158663ECA96f9C65DeFCB02d55c3BC1f";
167
+ vicunaCampaigns["Vicuna_Sonic_WS_Sonic_Market_Vicuna"] = "Vicuna Sonic WS (Sonic Market) Vicuna 0x9e07EF144325DAe02ff92910aDd1FE91581D4798";
168
+ vicunaCampaigns["Vicuna_Sonic_stS_Sonic_Market_Vicuna"] = "Vicuna Sonic stS (Sonic Market) Vicuna 0xFB56Cd34244985222068ae1C384ecE4215528D04";
169
+ vicunaCampaigns["Vicuna_Sonic_USDCe_Stable_Market_Vicuna"] = "Vicuna Sonic USDC.E (Stable Market) Vicuna 0x0127C186D905Ddaf323e76c4f6AB41cDD66619e5";
170
+ vicunaCampaigns["Vicuna_Sonic_SCUSD_Stable_Market_Vicuna"] = "Vicuna Sonic SCUSD (Stable Market) Vicuna 0xfb2e5Fd5de4E0757062363dfA44dF2e3654A35A5";
171
+ vicunaCampaigns["Vicuna_Sonic_USDTe_Stable_Market_Vicuna"] = "Vicuna Sonic USDT.E (Stable Market) Vicuna 0x11054544BEbab950B3B2F88fBb73B10550d4FF5c";
167
172
  })(vicunaCampaigns || (vicunaCampaigns = {}));
168
173
  export var pufferCampaigns;
169
174
  (function (pufferCampaigns) {
@@ -2174,6 +2179,56 @@ const VicunaInterfaceCampaigns = {
2174
2179
  url: "https://vicunafinance.com/markets",
2175
2180
  forwarders: [],
2176
2181
  },
2182
+ [vicunaCampaigns.Vicuna_Sonic_WS_Sonic_Market_Vicuna]: {
2183
+ campaignType: Campaign.ERC20,
2184
+ computeChainId: ChainId.SONIC,
2185
+ hooks: [],
2186
+ targetToken: "0x9e07EF144325DAe02ff92910aDd1FE91581D4798",
2187
+ whitelist: [],
2188
+ blacklist: ["0xad1bB693975C16eC2cEEF65edD540BC735F8608B"],
2189
+ url: "https://vicunafinance.com/markets",
2190
+ forwarders: [],
2191
+ },
2192
+ [vicunaCampaigns.Vicuna_Sonic_stS_Sonic_Market_Vicuna]: {
2193
+ campaignType: Campaign.ERC20,
2194
+ computeChainId: ChainId.SONIC,
2195
+ hooks: [],
2196
+ targetToken: "0xFB56Cd34244985222068ae1C384ecE4215528D04",
2197
+ whitelist: [],
2198
+ blacklist: ["0xad1bB693975C16eC2cEEF65edD540BC735F8608B"],
2199
+ url: "https://vicunafinance.com/markets",
2200
+ forwarders: [],
2201
+ },
2202
+ [vicunaCampaigns.Vicuna_Sonic_USDCe_Stable_Market_Vicuna]: {
2203
+ campaignType: Campaign.ERC20,
2204
+ computeChainId: ChainId.SONIC,
2205
+ hooks: [],
2206
+ targetToken: "0x0127C186D905Ddaf323e76c4f6AB41cDD66619e5",
2207
+ whitelist: [],
2208
+ blacklist: ["0xad1bB693975C16eC2cEEF65edD540BC735F8608B"],
2209
+ url: "https://vicunafinance.com/markets",
2210
+ forwarders: [],
2211
+ },
2212
+ [vicunaCampaigns.Vicuna_Sonic_SCUSD_Stable_Market_Vicuna]: {
2213
+ campaignType: Campaign.ERC20,
2214
+ computeChainId: ChainId.SONIC,
2215
+ hooks: [],
2216
+ targetToken: "0xfb2e5Fd5de4E0757062363dfA44dF2e3654A35A5",
2217
+ whitelist: [],
2218
+ blacklist: ["0xad1bB693975C16eC2cEEF65edD540BC735F8608B"],
2219
+ url: "https://vicunafinance.com/markets",
2220
+ forwarders: [],
2221
+ },
2222
+ [vicunaCampaigns.Vicuna_Sonic_USDTe_Stable_Market_Vicuna]: {
2223
+ campaignType: Campaign.ERC20,
2224
+ computeChainId: ChainId.SONIC,
2225
+ hooks: [],
2226
+ targetToken: "0x11054544BEbab950B3B2F88fBb73B10550d4FF5c",
2227
+ whitelist: [],
2228
+ blacklist: ["0xad1bB693975C16eC2cEEF65edD540BC735F8608B"],
2229
+ url: "https://vicunafinance.com/markets",
2230
+ forwarders: [],
2231
+ },
2177
2232
  };
2178
2233
  const ModeInterfaceCampaigns = {
2179
2234
  [modeCampaigns.Steer_EES_V2_Weth_USDC_Kim_Mode]: {
@@ -27,6 +27,7 @@ export const response = t.Record(t.TemplateLiteral([param.Type.type, t.Literal("
27
27
  export default (app) => {
28
28
  return app.get("/opportunity", async ({ query: { campaigns: showCampaigns, ...filters } }) => {
29
29
  if (process.env.FF_OPPORTUNITY === "true" || !!filters.testTokens) {
30
+ await OpportunityConvertorService.logKeyAndTTLV3Opportunities(showCampaigns ?? false, !!filters.testTokens ? filters.testTokens : undefined, !!filters.mainParameter ? filters.mainParameter : undefined, !!filters.chainId ? filters.chainId.toString() : undefined);
30
31
  return await OpportunityConvertorService.wrapV3Opportunities(showCampaigns ?? false, !!filters.testTokens ? filters.testTokens : undefined, !!filters.mainParameter ? filters.mainParameter : undefined, !!filters.chainId ? filters.chainId.toString() : undefined);
31
32
  }
32
33
  const opportunities = await Redis.get(filters?.testTokens ? "OpportunitiesWithTest" : "Opportunities");
@@ -57,7 +58,8 @@ export default (app) => {
57
58
  transform({ query }) {
58
59
  query.chainId = !query.chainId ? undefined : Number.parseInt(query.chainId.toString());
59
60
  query.type = !query.type ? undefined : Number.parseInt(query.type.toString());
60
- query.campaigns = query.campaigns === false ? false : !!query.campaigns;
61
+ query.campaigns =
62
+ query.campaigns === false || query.testTokens?.toString() === "false" ? false : !!query.campaigns;
61
63
  query.testTokens =
62
64
  query.testTokens === false || query.testTokens?.toString() === "false" ? false : !!query.testTokens;
63
65
  },