@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.
- package/dist/src/modules/v4/cache/cache.service.d.ts +1 -0
- package/dist/src/modules/v4/cache/cache.service.js +4 -0
- package/dist/src/modules/v4/opportunity/opportunity.converter.d.ts +1 -0
- package/dist/src/modules/v4/opportunity/opportunity.converter.js +5 -1
- package/dist/src/modules/v4/programPayload/programPayload.repository.d.ts +6 -1
- package/dist/src/modules/v4/programPayload/programPayload.repository.js +55 -0
- package/dist/src/routes/v3/opportunity.js +3 -1
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +1 -1
@@ -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 =
|
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
|
},
|