@merkl/api 0.10.209 → 0.10.211
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/database/api/.generated/edge.js +6 -4
- package/dist/database/api/.generated/index-browser.js +3 -1
- package/dist/database/api/.generated/index.d.ts +3 -1
- package/dist/database/api/.generated/index.js +6 -4
- package/dist/database/api/.generated/package.json +1 -1
- package/dist/database/api/.generated/schema.prisma +2 -0
- package/dist/database/api/.generated/wasm.js +3 -1
- package/dist/database/api/seeder/resources/protocol.d.ts +27 -0
- package/dist/database/api/seeder/resources/protocol.js +16 -0
- package/dist/src/eden/index.d.ts +201 -9
- package/dist/src/entities/opportunity.js +37 -1
- package/dist/src/index.d.ts +77 -3
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +2 -1
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +4 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/curveNPoolProcessor.d.ts +39 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/curveNPoolProcessor.js +81 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +2 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1.js +2 -0
- package/dist/src/libs/campaigns/campaignTypes/EigenLayerDynamicData.d.ts +3 -0
- package/dist/src/libs/campaigns/campaignTypes/EigenLayerDynamicData.js +67 -0
- package/dist/src/libs/campaigns/campaignsDynamicData.js +4 -0
- package/dist/src/libs/positions/EigenLayer/index.d.ts +6 -0
- package/dist/src/libs/positions/EigenLayer/index.js +53 -0
- package/dist/src/libs/positions/ajna/index.d.ts +4 -39
- package/dist/src/libs/positions/ajna/index.js +2 -2
- package/dist/src/libs/positions/badger/index.d.ts +3 -24
- package/dist/src/libs/positions/badger/index.js +1 -1
- package/dist/src/libs/positions/index.js +4 -0
- package/dist/src/libs/positions/morpho/index.d.ts +4 -38
- package/dist/src/libs/positions/prepareFetch.js +29 -1
- package/dist/src/libs/positions/types.d.ts +55 -0
- package/dist/src/modules/v4/campaign/campaign.controller.d.ts +2 -2
- package/dist/src/modules/v4/campaign/campaign.model.d.ts +4 -0
- package/dist/src/modules/v4/campaign/campaign.model.js +2 -0
- package/dist/src/modules/v4/dynamicData/dynamicData.controller.d.ts +1 -0
- package/dist/src/modules/v4/dynamicData/dynamicData.service.d.ts +1 -0
- package/dist/src/modules/v4/dynamicData/dynamicData.service.js +1 -0
- package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +1 -1
- package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +2 -0
- package/dist/src/modules/v4/opportunity/opportunity.service.js +3 -0
- package/dist/src/modules/v4/opportunity/subservices/getEigenLayerMetadata.service.d.ts +3 -0
- package/dist/src/modules/v4/opportunity/subservices/getEigenLayerMetadata.service.js +9 -0
- package/dist/src/modules/v4/programPayload/index.d.ts +3 -0
- package/dist/src/modules/v4/programPayload/index.js +3 -0
- package/dist/src/modules/v4/programPayload/programPayload.controller.d.ts +93 -0
- package/dist/src/modules/v4/programPayload/programPayload.controller.js +38 -0
- package/dist/src/modules/v4/programPayload/programPayload.model.d.ts +122 -0
- package/dist/src/modules/v4/programPayload/programPayload.model.js +130 -0
- package/dist/src/modules/v4/programPayload/programPayload.repository.d.ts +39 -0
- package/dist/src/modules/v4/programPayload/programPayload.repository.js +359 -0
- package/dist/src/modules/v4/programPayload/programPayload.service.d.ts +8 -0
- package/dist/src/modules/v4/programPayload/programPayload.service.js +92 -0
- package/dist/src/modules/v4/protocol/protocol.model.d.ts +1 -1
- package/dist/src/modules/v4/protocol/protocol.model.js +2 -0
- package/dist/src/modules/v4/router.d.ts +77 -3
- package/dist/src/modules/v4/router.js +3 -1
- package/dist/src/utils/decodeCalls.js +5 -3
- package/dist/src/utils/encodeCalls.js +11 -13
- package/dist/src/utils/generateCardName.js +2 -0
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/src/eden/index.d.ts
CHANGED
@@ -371,7 +371,7 @@ declare const eden: {
|
|
371
371
|
index: {
|
372
372
|
post: (body: {
|
373
373
|
name?: string | undefined;
|
374
|
-
type: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4";
|
374
|
+
type: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER";
|
375
375
|
tokens: {
|
376
376
|
chainId: number;
|
377
377
|
address: string;
|
@@ -592,7 +592,7 @@ declare const eden: {
|
|
592
592
|
get: (options: {
|
593
593
|
headers?: Record<string, unknown> | undefined;
|
594
594
|
query: {
|
595
|
-
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | undefined;
|
595
|
+
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER" | undefined;
|
596
596
|
items?: number | undefined;
|
597
597
|
subType?: number | undefined;
|
598
598
|
page?: number | undefined;
|
@@ -661,7 +661,7 @@ declare const eden: {
|
|
661
661
|
get: (options: {
|
662
662
|
headers?: Record<string, unknown> | undefined;
|
663
663
|
query: {
|
664
|
-
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | undefined;
|
664
|
+
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER" | undefined;
|
665
665
|
items?: number | undefined;
|
666
666
|
subType?: number | undefined;
|
667
667
|
page?: number | undefined;
|
@@ -1975,6 +1975,7 @@ declare const eden: {
|
|
1975
1975
|
cardName: string;
|
1976
1976
|
blacklistedSupply: number;
|
1977
1977
|
priceTargetToken: number;
|
1978
|
+
type: string;
|
1978
1979
|
};
|
1979
1980
|
}>>;
|
1980
1981
|
};
|
@@ -2092,6 +2093,64 @@ declare const eden: {
|
|
2092
2093
|
})[];
|
2093
2094
|
}>>;
|
2094
2095
|
}) & {};
|
2096
|
+
"program-payload": {
|
2097
|
+
index: {
|
2098
|
+
get: (options: {
|
2099
|
+
headers?: Record<string, unknown> | undefined;
|
2100
|
+
query: {
|
2101
|
+
creator: string;
|
2102
|
+
startTimestamp: number;
|
2103
|
+
endTimestamp: number;
|
2104
|
+
campaign: string;
|
2105
|
+
distributionChainId: number;
|
2106
|
+
amount: string;
|
2107
|
+
rewardToken: string;
|
2108
|
+
program: string;
|
2109
|
+
};
|
2110
|
+
fetch?: RequestInit | undefined;
|
2111
|
+
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
2112
|
+
[x: string]: any;
|
2113
|
+
200: any;
|
2114
|
+
}>>;
|
2115
|
+
};
|
2116
|
+
config: {
|
2117
|
+
get: (options: {
|
2118
|
+
headers?: Record<string, unknown> | undefined;
|
2119
|
+
query: {
|
2120
|
+
creator: string;
|
2121
|
+
startTimestamp: number;
|
2122
|
+
endTimestamp: number;
|
2123
|
+
campaign: string;
|
2124
|
+
distributionChainId: number;
|
2125
|
+
amount: string;
|
2126
|
+
rewardToken: string;
|
2127
|
+
program: string;
|
2128
|
+
};
|
2129
|
+
fetch?: RequestInit | undefined;
|
2130
|
+
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
2131
|
+
[x: string]: any;
|
2132
|
+
200: any;
|
2133
|
+
}>>;
|
2134
|
+
};
|
2135
|
+
program: {
|
2136
|
+
get: (options: {
|
2137
|
+
headers?: Record<string, unknown> | undefined;
|
2138
|
+
query: {
|
2139
|
+
creator: string;
|
2140
|
+
startTimestamp: number;
|
2141
|
+
endTimestamp: number;
|
2142
|
+
distributionChainId: number;
|
2143
|
+
amount: string;
|
2144
|
+
rewardToken: string;
|
2145
|
+
program: string;
|
2146
|
+
};
|
2147
|
+
fetch?: RequestInit | undefined;
|
2148
|
+
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
2149
|
+
[x: string]: any;
|
2150
|
+
200: any;
|
2151
|
+
}>>;
|
2152
|
+
};
|
2153
|
+
};
|
2095
2154
|
};
|
2096
2155
|
v3: {
|
2097
2156
|
app: {
|
@@ -2824,7 +2883,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
2824
2883
|
post: {
|
2825
2884
|
body: {
|
2826
2885
|
name?: string | undefined;
|
2827
|
-
type: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4";
|
2886
|
+
type: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER";
|
2828
2887
|
tokens: {
|
2829
2888
|
chainId: number;
|
2830
2889
|
address: string;
|
@@ -3371,7 +3430,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
3371
3430
|
body: unknown;
|
3372
3431
|
params: {};
|
3373
3432
|
query: {
|
3374
|
-
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | undefined;
|
3433
|
+
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER" | undefined;
|
3375
3434
|
items?: number | undefined;
|
3376
3435
|
subType?: number | undefined;
|
3377
3436
|
page?: number | undefined;
|
@@ -3443,7 +3502,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
3443
3502
|
body: unknown;
|
3444
3503
|
params: {};
|
3445
3504
|
query: {
|
3446
|
-
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | undefined;
|
3505
|
+
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER" | undefined;
|
3447
3506
|
items?: number | undefined;
|
3448
3507
|
subType?: number | undefined;
|
3449
3508
|
page?: number | undefined;
|
@@ -5129,6 +5188,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
5129
5188
|
cardName: string;
|
5130
5189
|
blacklistedSupply: number;
|
5131
5190
|
priceTargetToken: number;
|
5191
|
+
type: string;
|
5132
5192
|
};
|
5133
5193
|
};
|
5134
5194
|
};
|
@@ -5284,6 +5344,79 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
5284
5344
|
};
|
5285
5345
|
};
|
5286
5346
|
};
|
5347
|
+
} & {
|
5348
|
+
v4: {
|
5349
|
+
"program-payload": {
|
5350
|
+
index: {
|
5351
|
+
get: {
|
5352
|
+
body: unknown;
|
5353
|
+
params: {};
|
5354
|
+
query: {
|
5355
|
+
creator: string;
|
5356
|
+
startTimestamp: number;
|
5357
|
+
endTimestamp: number;
|
5358
|
+
campaign: string;
|
5359
|
+
distributionChainId: number;
|
5360
|
+
amount: string;
|
5361
|
+
rewardToken: string;
|
5362
|
+
program: string;
|
5363
|
+
};
|
5364
|
+
headers: unknown;
|
5365
|
+
response: {
|
5366
|
+
[x: string]: any;
|
5367
|
+
200: any;
|
5368
|
+
};
|
5369
|
+
};
|
5370
|
+
};
|
5371
|
+
};
|
5372
|
+
} & {
|
5373
|
+
"program-payload": {
|
5374
|
+
config: {
|
5375
|
+
get: {
|
5376
|
+
body: unknown;
|
5377
|
+
params: {};
|
5378
|
+
query: {
|
5379
|
+
creator: string;
|
5380
|
+
startTimestamp: number;
|
5381
|
+
endTimestamp: number;
|
5382
|
+
campaign: string;
|
5383
|
+
distributionChainId: number;
|
5384
|
+
amount: string;
|
5385
|
+
rewardToken: string;
|
5386
|
+
program: string;
|
5387
|
+
};
|
5388
|
+
headers: unknown;
|
5389
|
+
response: {
|
5390
|
+
[x: string]: any;
|
5391
|
+
200: any;
|
5392
|
+
};
|
5393
|
+
};
|
5394
|
+
};
|
5395
|
+
};
|
5396
|
+
} & {
|
5397
|
+
"program-payload": {
|
5398
|
+
program: {
|
5399
|
+
get: {
|
5400
|
+
body: unknown;
|
5401
|
+
params: {};
|
5402
|
+
query: {
|
5403
|
+
creator: string;
|
5404
|
+
startTimestamp: number;
|
5405
|
+
endTimestamp: number;
|
5406
|
+
distributionChainId: number;
|
5407
|
+
amount: string;
|
5408
|
+
rewardToken: string;
|
5409
|
+
program: string;
|
5410
|
+
};
|
5411
|
+
headers: unknown;
|
5412
|
+
response: {
|
5413
|
+
[x: string]: any;
|
5414
|
+
200: any;
|
5415
|
+
};
|
5416
|
+
};
|
5417
|
+
};
|
5418
|
+
};
|
5419
|
+
};
|
5287
5420
|
} & {
|
5288
5421
|
v3: {
|
5289
5422
|
app: {
|
@@ -6414,7 +6547,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
6414
6547
|
index: {
|
6415
6548
|
post: (body: {
|
6416
6549
|
name?: string | undefined;
|
6417
|
-
type: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4";
|
6550
|
+
type: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER";
|
6418
6551
|
tokens: {
|
6419
6552
|
chainId: number;
|
6420
6553
|
address: string;
|
@@ -6635,7 +6768,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
6635
6768
|
get: (options: {
|
6636
6769
|
headers?: Record<string, unknown> | undefined;
|
6637
6770
|
query: {
|
6638
|
-
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | undefined;
|
6771
|
+
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER" | undefined;
|
6639
6772
|
items?: number | undefined;
|
6640
6773
|
subType?: number | undefined;
|
6641
6774
|
page?: number | undefined;
|
@@ -6704,7 +6837,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
6704
6837
|
get: (options: {
|
6705
6838
|
headers?: Record<string, unknown> | undefined;
|
6706
6839
|
query: {
|
6707
|
-
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | undefined;
|
6840
|
+
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER" | undefined;
|
6708
6841
|
items?: number | undefined;
|
6709
6842
|
subType?: number | undefined;
|
6710
6843
|
page?: number | undefined;
|
@@ -8018,6 +8151,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
8018
8151
|
cardName: string;
|
8019
8152
|
blacklistedSupply: number;
|
8020
8153
|
priceTargetToken: number;
|
8154
|
+
type: string;
|
8021
8155
|
};
|
8022
8156
|
}>>;
|
8023
8157
|
};
|
@@ -8135,6 +8269,64 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
8135
8269
|
})[];
|
8136
8270
|
}>>;
|
8137
8271
|
}) & {};
|
8272
|
+
"program-payload": {
|
8273
|
+
index: {
|
8274
|
+
get: (options: {
|
8275
|
+
headers?: Record<string, unknown> | undefined;
|
8276
|
+
query: {
|
8277
|
+
creator: string;
|
8278
|
+
startTimestamp: number;
|
8279
|
+
endTimestamp: number;
|
8280
|
+
campaign: string;
|
8281
|
+
distributionChainId: number;
|
8282
|
+
amount: string;
|
8283
|
+
rewardToken: string;
|
8284
|
+
program: string;
|
8285
|
+
};
|
8286
|
+
fetch?: RequestInit | undefined;
|
8287
|
+
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
8288
|
+
[x: string]: any;
|
8289
|
+
200: any;
|
8290
|
+
}>>;
|
8291
|
+
};
|
8292
|
+
config: {
|
8293
|
+
get: (options: {
|
8294
|
+
headers?: Record<string, unknown> | undefined;
|
8295
|
+
query: {
|
8296
|
+
creator: string;
|
8297
|
+
startTimestamp: number;
|
8298
|
+
endTimestamp: number;
|
8299
|
+
campaign: string;
|
8300
|
+
distributionChainId: number;
|
8301
|
+
amount: string;
|
8302
|
+
rewardToken: string;
|
8303
|
+
program: string;
|
8304
|
+
};
|
8305
|
+
fetch?: RequestInit | undefined;
|
8306
|
+
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
8307
|
+
[x: string]: any;
|
8308
|
+
200: any;
|
8309
|
+
}>>;
|
8310
|
+
};
|
8311
|
+
program: {
|
8312
|
+
get: (options: {
|
8313
|
+
headers?: Record<string, unknown> | undefined;
|
8314
|
+
query: {
|
8315
|
+
creator: string;
|
8316
|
+
startTimestamp: number;
|
8317
|
+
endTimestamp: number;
|
8318
|
+
distributionChainId: number;
|
8319
|
+
amount: string;
|
8320
|
+
rewardToken: string;
|
8321
|
+
program: string;
|
8322
|
+
};
|
8323
|
+
fetch?: RequestInit | undefined;
|
8324
|
+
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
8325
|
+
[x: string]: any;
|
8326
|
+
200: any;
|
8327
|
+
}>>;
|
8328
|
+
};
|
8329
|
+
};
|
8138
8330
|
};
|
8139
8331
|
v3: {
|
8140
8332
|
app: {
|
@@ -211,6 +211,7 @@ export const extractOpportunities = {
|
|
211
211
|
"koi",
|
212
212
|
"pancakeswap",
|
213
213
|
"tempest",
|
214
|
+
"cross_curve",
|
214
215
|
],
|
215
216
|
borrow: ["radiant_borrow", "aave_borrowing", "euler_borrow"],
|
216
217
|
lend: [
|
@@ -344,7 +345,7 @@ export const extractOpportunities = {
|
|
344
345
|
return opportunity;
|
345
346
|
},
|
346
347
|
[Campaign.BADGER]: (campaign, campaigns, prices) => {
|
347
|
-
const { chainId, tvl,
|
348
|
+
const { chainId, tvl, campaignParameters: params, computeChainId } = campaign;
|
348
349
|
const { active, all } = campaigns;
|
349
350
|
const aprBreakdown = active.reduce((res, campaign) => {
|
350
351
|
res[`Campaign ${campaign.campaignId.slice(0, 8)}`] = {
|
@@ -378,6 +379,41 @@ export const extractOpportunities = {
|
|
378
379
|
};
|
379
380
|
return opportunity;
|
380
381
|
},
|
382
|
+
[Campaign.EIGENLAYER]: (campaign, campaigns, prices) => {
|
383
|
+
const { chainId, tvl, campaignParameters: params, computeChainId } = campaign;
|
384
|
+
const { active, all } = campaigns;
|
385
|
+
const aprBreakdown = active.reduce((res, campaign) => {
|
386
|
+
res[`Campaign ${campaign.campaignId.slice(0, 8)}`] = {
|
387
|
+
value: campaign.apr ?? 0,
|
388
|
+
address: campaign.campaignId,
|
389
|
+
type: EAprBreakdownType.DETAILS,
|
390
|
+
};
|
391
|
+
return res;
|
392
|
+
}, {});
|
393
|
+
// @Hugo WIP todo for aprBreakdown2
|
394
|
+
const aprBreakdown2 = getCampaignsApr(active);
|
395
|
+
const opportunity = {
|
396
|
+
id: `${Campaign.EIGENLAYER}_${campaign.mainParameter}`,
|
397
|
+
platform: "EigenLayer strategy",
|
398
|
+
name: ["EigenLayer", "strategy for", params.symbolUnderlyingToken].join(" "),
|
399
|
+
chainId: !computeChainId ? chainId : computeChainId,
|
400
|
+
distributionChainId: chainId,
|
401
|
+
tvl,
|
402
|
+
action: "lend",
|
403
|
+
subtype: 0,
|
404
|
+
status: getStatus(all),
|
405
|
+
tags: getTags(campaigns.all),
|
406
|
+
dailyrewards: getDailyRewards(active, prices),
|
407
|
+
tokenIcons: [params.symbolUnderlyingToken],
|
408
|
+
campaigns: { ...campaigns, type: Campaign.EIGENLAYER, ids: campaigns.all.map(c => c.campaignId) },
|
409
|
+
rewardTokenIcons: getRewardTokenIcons(campaigns.active),
|
410
|
+
dailyRewardTokens: getRewardTokens(campaigns.active),
|
411
|
+
apr: getApr(active),
|
412
|
+
aprBreakdown,
|
413
|
+
aprBreakdown2,
|
414
|
+
};
|
415
|
+
return opportunity;
|
416
|
+
},
|
381
417
|
[Campaign.AJNA]: (campaign, campaigns, prices) => {
|
382
418
|
const { chainId, tvl, campaignSubType, campaignParameters: params, computeChainId } = campaign;
|
383
419
|
const { active, all } = campaigns;
|
package/dist/src/index.d.ts
CHANGED
@@ -148,7 +148,7 @@ declare const app: Elysia<"", false, {
|
|
148
148
|
post: {
|
149
149
|
body: {
|
150
150
|
name?: string | undefined;
|
151
|
-
type: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4";
|
151
|
+
type: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER";
|
152
152
|
tokens: {
|
153
153
|
chainId: number;
|
154
154
|
address: string;
|
@@ -695,7 +695,7 @@ declare const app: Elysia<"", false, {
|
|
695
695
|
body: unknown;
|
696
696
|
params: {};
|
697
697
|
query: {
|
698
|
-
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | undefined;
|
698
|
+
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER" | undefined;
|
699
699
|
items?: number | undefined;
|
700
700
|
subType?: number | undefined;
|
701
701
|
page?: number | undefined;
|
@@ -767,7 +767,7 @@ declare const app: Elysia<"", false, {
|
|
767
767
|
body: unknown;
|
768
768
|
params: {};
|
769
769
|
query: {
|
770
|
-
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | undefined;
|
770
|
+
type?: "INVALID" | "ERC20" | "CLAMM" | "ERC20_SNAPSHOT" | "JSON_AIRDROP" | "SILO" | "RADIANT" | "MORPHO" | "DOLOMITE" | "BADGER" | "COMPOUND" | "AJNA" | "EULER" | "UNISWAP_V4" | "ION" | "EIGENLAYER" | undefined;
|
771
771
|
items?: number | undefined;
|
772
772
|
subType?: number | undefined;
|
773
773
|
page?: number | undefined;
|
@@ -2453,6 +2453,7 @@ declare const app: Elysia<"", false, {
|
|
2453
2453
|
cardName: string;
|
2454
2454
|
blacklistedSupply: number;
|
2455
2455
|
priceTargetToken: number;
|
2456
|
+
type: string;
|
2456
2457
|
};
|
2457
2458
|
};
|
2458
2459
|
};
|
@@ -2608,6 +2609,79 @@ declare const app: Elysia<"", false, {
|
|
2608
2609
|
};
|
2609
2610
|
};
|
2610
2611
|
};
|
2612
|
+
} & {
|
2613
|
+
v4: {
|
2614
|
+
"program-payload": {
|
2615
|
+
index: {
|
2616
|
+
get: {
|
2617
|
+
body: unknown;
|
2618
|
+
params: {};
|
2619
|
+
query: {
|
2620
|
+
creator: string;
|
2621
|
+
startTimestamp: number;
|
2622
|
+
endTimestamp: number;
|
2623
|
+
campaign: string;
|
2624
|
+
distributionChainId: number;
|
2625
|
+
amount: string;
|
2626
|
+
rewardToken: string;
|
2627
|
+
program: string;
|
2628
|
+
};
|
2629
|
+
headers: unknown;
|
2630
|
+
response: {
|
2631
|
+
[x: string]: any;
|
2632
|
+
200: any;
|
2633
|
+
};
|
2634
|
+
};
|
2635
|
+
};
|
2636
|
+
};
|
2637
|
+
} & {
|
2638
|
+
"program-payload": {
|
2639
|
+
config: {
|
2640
|
+
get: {
|
2641
|
+
body: unknown;
|
2642
|
+
params: {};
|
2643
|
+
query: {
|
2644
|
+
creator: string;
|
2645
|
+
startTimestamp: number;
|
2646
|
+
endTimestamp: number;
|
2647
|
+
campaign: string;
|
2648
|
+
distributionChainId: number;
|
2649
|
+
amount: string;
|
2650
|
+
rewardToken: string;
|
2651
|
+
program: string;
|
2652
|
+
};
|
2653
|
+
headers: unknown;
|
2654
|
+
response: {
|
2655
|
+
[x: string]: any;
|
2656
|
+
200: any;
|
2657
|
+
};
|
2658
|
+
};
|
2659
|
+
};
|
2660
|
+
};
|
2661
|
+
} & {
|
2662
|
+
"program-payload": {
|
2663
|
+
program: {
|
2664
|
+
get: {
|
2665
|
+
body: unknown;
|
2666
|
+
params: {};
|
2667
|
+
query: {
|
2668
|
+
creator: string;
|
2669
|
+
startTimestamp: number;
|
2670
|
+
endTimestamp: number;
|
2671
|
+
distributionChainId: number;
|
2672
|
+
amount: string;
|
2673
|
+
rewardToken: string;
|
2674
|
+
program: string;
|
2675
|
+
};
|
2676
|
+
headers: unknown;
|
2677
|
+
response: {
|
2678
|
+
[x: string]: any;
|
2679
|
+
200: any;
|
2680
|
+
};
|
2681
|
+
};
|
2682
|
+
};
|
2683
|
+
};
|
2684
|
+
};
|
2611
2685
|
} & {
|
2612
2686
|
v3: {
|
2613
2687
|
app: {
|
@@ -60,7 +60,8 @@ export declare enum tokenType {
|
|
60
60
|
holdstation = "holdstation",
|
61
61
|
staking = "staking",
|
62
62
|
noLinkVault = "noLinkVault",
|
63
|
-
cpmmGamma = "cpmmGamma"
|
63
|
+
cpmmGamma = "cpmmGamma",
|
64
|
+
crosscurve = "crosscurve"
|
64
65
|
}
|
65
66
|
export declare const tokenTypeToProtocol: {
|
66
67
|
[key in tokenType]: {
|
@@ -62,6 +62,7 @@ export var tokenType;
|
|
62
62
|
tokenType["staking"] = "staking";
|
63
63
|
tokenType["noLinkVault"] = "noLinkVault";
|
64
64
|
tokenType["cpmmGamma"] = "cpmmGamma";
|
65
|
+
tokenType["crosscurve"] = "crosscurve";
|
65
66
|
})(tokenType || (tokenType = {}));
|
66
67
|
export const tokenTypeToProtocol = {
|
67
68
|
[tokenType.aave_borrowing]: { protocol: "Aave" },
|
@@ -151,4 +152,7 @@ export const tokenTypeToProtocol = {
|
|
151
152
|
[tokenType.cpmmGamma]: {
|
152
153
|
protocol: "GammaSwap",
|
153
154
|
},
|
155
|
+
[tokenType.crosscurve]: {
|
156
|
+
protocol: "CrossCurve",
|
157
|
+
},
|
154
158
|
};
|
package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/curveNPoolProcessor.d.ts
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
import type { Pricer } from "../../../../../utils/pricer";
|
2
|
+
import { type Campaign, type CampaignParameters } from "@sdk";
|
3
|
+
import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
|
4
|
+
import { GenericProcessor, type dataType, type mandatoryCallKeys } from "./GenericProcessor";
|
5
|
+
type callType = {
|
6
|
+
key: keyof dataRawCurveN;
|
7
|
+
call: string;
|
8
|
+
target: keyof callKeysCurveN;
|
9
|
+
metaData?: keyof callKeysCurveN | string;
|
10
|
+
optional?: boolean;
|
11
|
+
};
|
12
|
+
type callKeysCurveN = mandatoryCallKeys & {
|
13
|
+
[key: `token${number}`]: string;
|
14
|
+
[key: `symbolToken${number}`]: string;
|
15
|
+
[key: `decimalsToken${number}`]: string;
|
16
|
+
[key: `balanceToken${number}`]: string;
|
17
|
+
[key: `${number}`]: string;
|
18
|
+
name: string;
|
19
|
+
};
|
20
|
+
type dataRawCurveN = callKeysCurveN & {
|
21
|
+
numberTokens: number;
|
22
|
+
};
|
23
|
+
type dataTypeCurveN = dataType & {
|
24
|
+
numberTokens: number;
|
25
|
+
};
|
26
|
+
export declare class CurveNPoolProcessor extends GenericProcessor<callKeysCurveN, dataRawCurveN, dataTypeCurveN> {
|
27
|
+
rounds: {
|
28
|
+
round1: callType[];
|
29
|
+
round2: callType[];
|
30
|
+
round3: callType[];
|
31
|
+
round4: callType[];
|
32
|
+
};
|
33
|
+
processingRound2(typeInfo: dataRawCurveN): void;
|
34
|
+
processingRound3(typeInfo: dataRawCurveN): void;
|
35
|
+
computeRound3(index: number, type: tokenType, typeInfo: dataRawCurveN, calls: string[]): tokenTypeStruct;
|
36
|
+
computeRound4(index: number, type: tokenType, typeInfo: dataRawCurveN, calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>): tokenTypeStruct;
|
37
|
+
processingRound5(_index: number, type: tokenType, typeInfo: dataRawCurveN, _calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypeCurveN>;
|
38
|
+
}
|
39
|
+
export {};
|
@@ -0,0 +1,81 @@
|
|
1
|
+
import { generateCardName } from "../../../../../utils/generateCardName";
|
2
|
+
import { BN2Number } from "@sdk";
|
3
|
+
import { GenericProcessor } from "./GenericProcessor";
|
4
|
+
export class CurveNPoolProcessor extends GenericProcessor {
|
5
|
+
rounds = {
|
6
|
+
round1: [{ key: "numberTokens", call: "N_COINS", target: "tokenAddress" }],
|
7
|
+
round2: [],
|
8
|
+
round3: [],
|
9
|
+
round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
|
10
|
+
};
|
11
|
+
// override computeRound1(): void {}
|
12
|
+
processingRound2(typeInfo) {
|
13
|
+
typeInfo.numberTokens = Number(typeInfo.numberTokens);
|
14
|
+
for (let i = 0; i < typeInfo.numberTokens; i++) {
|
15
|
+
typeInfo[`${i}`] = i.toString();
|
16
|
+
this.rounds.round2 = this.rounds.round2.concat([
|
17
|
+
{ key: `token${i}`, call: "coins", target: "tokenAddress", metaData: i.toString() },
|
18
|
+
]);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
processingRound3(typeInfo) {
|
22
|
+
for (let i = 0; i < typeInfo.numberTokens; i++) {
|
23
|
+
this.rounds.round3 = this.rounds.round3.concat([
|
24
|
+
{ key: `symbolToken${i}`, call: "symbol", target: `token${i}` },
|
25
|
+
{ key: `decimalsToken${i}`, call: "decimals", target: `token${i}` },
|
26
|
+
{ key: `balanceToken${i}`, call: "balances", target: "tokenAddress", metaData: i.toString() },
|
27
|
+
]);
|
28
|
+
}
|
29
|
+
}
|
30
|
+
computeRound3(index, type, typeInfo, calls) {
|
31
|
+
for (let i = 0; i < typeInfo.numberTokens; i++) {
|
32
|
+
this.rounds.round2 = this.rounds.round2.concat([
|
33
|
+
{ key: `token${i}`, call: "coins", target: "tokenAddress", metaData: i.toString() },
|
34
|
+
]);
|
35
|
+
}
|
36
|
+
return super.computeRound3(index, type, typeInfo, calls);
|
37
|
+
}
|
38
|
+
computeRound4(index, type, typeInfo, calls, campaign) {
|
39
|
+
for (let i = 0; i < typeInfo.numberTokens; i++) {
|
40
|
+
this.rounds.round3 = this.rounds.round3.concat([
|
41
|
+
{ key: `symbolToken${i}`, call: "symbol", target: `token${i}` },
|
42
|
+
{ key: `decimalsToken${i}`, call: "decimals", target: `token${i}` },
|
43
|
+
{ key: `balanceToken${i}`, call: "balances", target: "tokenAddress", metaData: i.toString() },
|
44
|
+
]);
|
45
|
+
}
|
46
|
+
return super.computeRound4(index, type, typeInfo, calls, campaign);
|
47
|
+
}
|
48
|
+
async processingRound5(_index, type, typeInfo, _calls, campaign, pricer) {
|
49
|
+
const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
|
50
|
+
let tvl = 0;
|
51
|
+
// Hardocded in case we don't find it
|
52
|
+
let hardcodedSymbol = "unknown";
|
53
|
+
if (typeInfo.name.includes("BTC"))
|
54
|
+
hardcodedSymbol = "BTC";
|
55
|
+
if (typeInfo.name.includes("ETH"))
|
56
|
+
hardcodedSymbol = "ETH";
|
57
|
+
if (typeInfo.name.includes("STABLE"))
|
58
|
+
hardcodedSymbol = "USDC";
|
59
|
+
for (let i = 0; i < typeInfo.numberTokens; i++) {
|
60
|
+
const symbol = typeInfo[`symbolToken${i}`];
|
61
|
+
const parsedSymbol = symbol.split("_")[0].slice(1);
|
62
|
+
let price = (await pricer.get({ symbol: parsedSymbol })) ?? 0;
|
63
|
+
if (price === 0) {
|
64
|
+
price = (await pricer.get({ symbol: hardcodedSymbol })) ?? 0;
|
65
|
+
}
|
66
|
+
const decimals = Number(typeInfo[`decimalsToken${i}`]);
|
67
|
+
const amount = BN2Number(typeInfo[`balanceToken${i}`], decimals);
|
68
|
+
tvl += amount * price;
|
69
|
+
}
|
70
|
+
const priceTargetToken = tvl / totalSupply;
|
71
|
+
return {
|
72
|
+
...typeInfo,
|
73
|
+
totalSupply,
|
74
|
+
tvl,
|
75
|
+
whitelistedSupplyTargetToken,
|
76
|
+
blacklistedSupply,
|
77
|
+
priceTargetToken,
|
78
|
+
cardName: generateCardName(type, typeInfo, campaign),
|
79
|
+
};
|
80
|
+
}
|
81
|
+
}
|
@@ -30,6 +30,7 @@ import { TorosProcessor } from "./TorosProcessor";
|
|
30
30
|
import { UniswapProcessor } from "./UniswapProcessor";
|
31
31
|
import { WoofiProcessor } from "./WoofiProcessor";
|
32
32
|
import { ZkSwapThreePoolProcessor } from "./ZkSwapThreePoolProcessor";
|
33
|
+
import { CurveNPoolProcessor } from "./curveNPoolProcessor";
|
33
34
|
import { CurveProcessor } from "./curveProcessor";
|
34
35
|
import { StakedCurveProcessor } from "./stakedCurveProcessor";
|
35
36
|
export const processorMapping = {
|
@@ -72,6 +73,7 @@ export const processorMapping = {
|
|
72
73
|
[tokenType.filament]: FluidProcessor,
|
73
74
|
[tokenType.enzyme]: EnzymeProcessor,
|
74
75
|
[tokenType.curve_2]: CurveProcessor,
|
76
|
+
[tokenType.crosscurve]: CurveNPoolProcessor,
|
75
77
|
[tokenType.fenix]: UniswapProcessor,
|
76
78
|
[tokenType.euler_lend]: EulerLendProcessor,
|
77
79
|
[tokenType.euler_borrow]: EulerBorrowProcessor,
|
@@ -44,6 +44,8 @@ function satisfiesNameConditions(name, type) {
|
|
44
44
|
lowerCaseName === "ezeth/wfrxeth" ||
|
45
45
|
lowerCaseName === "pufeth/wsteth" ||
|
46
46
|
lowerCaseName === "hai/lusd");
|
47
|
+
case tokenType.crosscurve:
|
48
|
+
return lowerCaseName.startsWith("crosscurve");
|
47
49
|
case tokenType.silostaking:
|
48
50
|
return lowerCaseName === "isei";
|
49
51
|
case tokenType.beefy:
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { type Campaign, type CampaignDynamicData, type CampaignParameters, type MerklChainId } from "@sdk";
|
2
|
+
import type { UncachedResult } from "../../../utils/execute";
|
3
|
+
export declare function EigenLayerDynamicData(_chainId: MerklChainId, campaigns: CampaignParameters<Campaign.EIGENLAYER>[]): Promise<UncachedResult<Partial<CampaignDynamicData<Campaign.EIGENLAYER>[]>>>;
|