@merkl/api 0.10.132 → 0.10.133
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/constants.js +1 -0
- package/dist/src/eden/index.d.ts +16 -25
- package/dist/src/index.d.ts +4 -7
- package/dist/src/libs/campaigns/campaignTypes/ERC20DynamicDataRefacto.js +4 -8
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +3 -2
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +11 -3
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/MaverickBPProcessor.d.ts +50 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/MaverickBPProcessor.js +75 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +2 -0
- package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.js +2 -0
- package/dist/src/modules/v4/enso/enso.service.d.ts +1 -0
- package/dist/src/modules/v4/participate/participate.controller.d.ts +1 -0
- package/dist/src/modules/v4/protocol/protocol.controller.d.ts +3 -7
- package/dist/src/modules/v4/protocol/protocol.controller.js +4 -9
- package/dist/src/modules/v4/protocol/protocol.model.d.ts +2 -2
- package/dist/src/modules/v4/protocol/protocol.model.js +4 -1
- package/dist/src/modules/v4/protocol/protocol.service.js +4 -3
- package/dist/src/modules/v4/router.d.ts +4 -7
- package/dist/src/routes/v3/ERC20Campaigns.d.ts +4 -7
- package/dist/src/routes/v3/blacklist.d.ts +4 -7
- package/dist/src/routes/v3/campaigns.d.ts +4 -7
- package/dist/src/routes/v3/campaignsInfo.d.ts +4 -7
- package/dist/src/routes/v3/multiChainPositions.d.ts +4 -7
- package/dist/src/routes/v3/opportunity.d.ts +4 -7
- package/dist/src/routes/v3/positions.d.ts +4 -7
- package/dist/src/routes/v3/rewards.d.ts +4 -7
- package/dist/src/routes/v3/updates.d.ts +4 -7
- package/dist/src/routes/v3/userRewards.d.ts +4 -7
- package/dist/src/utils/decodeCalls.js +3 -1
- package/dist/src/utils/encodeCalls.js +7 -1
- package/dist/src/utils/generateCardName.js +2 -0
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +2 -1
package/dist/src/constants.d.ts
CHANGED
package/dist/src/constants.js
CHANGED
package/dist/src/eden/index.d.ts
CHANGED
@@ -550,6 +550,7 @@ declare const eden: {
|
|
550
550
|
name: string;
|
551
551
|
url: string;
|
552
552
|
description: string;
|
553
|
+
id: string;
|
553
554
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
554
555
|
icon: string;
|
555
556
|
} | null;
|
@@ -571,23 +572,18 @@ declare const eden: {
|
|
571
572
|
name: string;
|
572
573
|
url: string;
|
573
574
|
description: string;
|
575
|
+
id: string;
|
574
576
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
575
577
|
icon: string;
|
576
578
|
} & {})[] | null;
|
577
579
|
}>>;
|
578
580
|
};
|
579
581
|
count: {
|
580
|
-
get: (options
|
582
|
+
get: (options?: {
|
581
583
|
headers?: Record<string, unknown> | undefined;
|
582
|
-
query
|
583
|
-
name?: string | undefined;
|
584
|
-
id?: string[] | undefined;
|
585
|
-
items?: number | undefined;
|
586
|
-
tags?: ("AMM" | "ALM" | "DEX" | "LENDING")[] | undefined;
|
587
|
-
page?: number | undefined;
|
588
|
-
};
|
584
|
+
query?: Record<string, unknown> | undefined;
|
589
585
|
fetch?: RequestInit | undefined;
|
590
|
-
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
586
|
+
} | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
591
587
|
200: number;
|
592
588
|
}>>;
|
593
589
|
};
|
@@ -1430,6 +1426,7 @@ declare const eden: {
|
|
1430
1426
|
name: string;
|
1431
1427
|
url: string;
|
1432
1428
|
description: string;
|
1429
|
+
id: string;
|
1433
1430
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
1434
1431
|
icon: string;
|
1435
1432
|
} & {})[] | null;
|
@@ -2422,6 +2419,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
2422
2419
|
name: string;
|
2423
2420
|
url: string;
|
2424
2421
|
description: string;
|
2422
|
+
id: string;
|
2425
2423
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
2426
2424
|
icon: string;
|
2427
2425
|
} | null;
|
@@ -2448,6 +2446,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
2448
2446
|
name: string;
|
2449
2447
|
url: string;
|
2450
2448
|
description: string;
|
2449
|
+
id: string;
|
2451
2450
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
2452
2451
|
icon: string;
|
2453
2452
|
} & {})[] | null;
|
@@ -2461,13 +2460,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
2461
2460
|
get: {
|
2462
2461
|
body: unknown;
|
2463
2462
|
params: {};
|
2464
|
-
query:
|
2465
|
-
name?: string | undefined;
|
2466
|
-
id?: string[] | undefined;
|
2467
|
-
items?: number | undefined;
|
2468
|
-
tags?: ("AMM" | "ALM" | "DEX" | "LENDING")[] | undefined;
|
2469
|
-
page?: number | undefined;
|
2470
|
-
};
|
2463
|
+
query: unknown;
|
2471
2464
|
headers: unknown;
|
2472
2465
|
response: {
|
2473
2466
|
200: number;
|
@@ -3547,6 +3540,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
3547
3540
|
name: string;
|
3548
3541
|
url: string;
|
3549
3542
|
description: string;
|
3543
|
+
id: string;
|
3550
3544
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
3551
3545
|
icon: string;
|
3552
3546
|
} & {})[] | null;
|
@@ -4557,6 +4551,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
4557
4551
|
name: string;
|
4558
4552
|
url: string;
|
4559
4553
|
description: string;
|
4554
|
+
id: string;
|
4560
4555
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
4561
4556
|
icon: string;
|
4562
4557
|
} | null;
|
@@ -4578,23 +4573,18 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
4578
4573
|
name: string;
|
4579
4574
|
url: string;
|
4580
4575
|
description: string;
|
4576
|
+
id: string;
|
4581
4577
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
4582
4578
|
icon: string;
|
4583
4579
|
} & {})[] | null;
|
4584
4580
|
}>>;
|
4585
4581
|
};
|
4586
4582
|
count: {
|
4587
|
-
get: (options
|
4583
|
+
get: (options?: {
|
4588
4584
|
headers?: Record<string, unknown> | undefined;
|
4589
|
-
query
|
4590
|
-
name?: string | undefined;
|
4591
|
-
id?: string[] | undefined;
|
4592
|
-
items?: number | undefined;
|
4593
|
-
tags?: ("AMM" | "ALM" | "DEX" | "LENDING")[] | undefined;
|
4594
|
-
page?: number | undefined;
|
4595
|
-
};
|
4585
|
+
query?: Record<string, unknown> | undefined;
|
4596
4586
|
fetch?: RequestInit | undefined;
|
4597
|
-
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
4587
|
+
} | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
4598
4588
|
200: number;
|
4599
4589
|
}>>;
|
4600
4590
|
};
|
@@ -5437,6 +5427,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
5437
5427
|
name: string;
|
5438
5428
|
url: string;
|
5439
5429
|
description: string;
|
5430
|
+
id: string;
|
5440
5431
|
tags: import("../../database/api/.generated").$Enums.ProtocolTag[];
|
5441
5432
|
icon: string;
|
5442
5433
|
} & {})[] | null;
|
package/dist/src/index.d.ts
CHANGED
@@ -639,6 +639,7 @@ declare const app: Elysia<"", false, {
|
|
639
639
|
name: string;
|
640
640
|
url: string;
|
641
641
|
description: string;
|
642
|
+
id: string;
|
642
643
|
tags: import("../database/api/.generated").$Enums.ProtocolTag[];
|
643
644
|
icon: string;
|
644
645
|
} | null;
|
@@ -665,6 +666,7 @@ declare const app: Elysia<"", false, {
|
|
665
666
|
name: string;
|
666
667
|
url: string;
|
667
668
|
description: string;
|
669
|
+
id: string;
|
668
670
|
tags: import("../database/api/.generated").$Enums.ProtocolTag[];
|
669
671
|
icon: string;
|
670
672
|
} & {})[] | null;
|
@@ -678,13 +680,7 @@ declare const app: Elysia<"", false, {
|
|
678
680
|
get: {
|
679
681
|
body: unknown;
|
680
682
|
params: {};
|
681
|
-
query:
|
682
|
-
name?: string | undefined;
|
683
|
-
id?: string[] | undefined;
|
684
|
-
items?: number | undefined;
|
685
|
-
tags?: ("AMM" | "ALM" | "DEX" | "LENDING")[] | undefined;
|
686
|
-
page?: number | undefined;
|
687
|
-
};
|
683
|
+
query: unknown;
|
688
684
|
headers: unknown;
|
689
685
|
response: {
|
690
686
|
200: number;
|
@@ -1764,6 +1760,7 @@ declare const app: Elysia<"", false, {
|
|
1764
1760
|
name: string;
|
1765
1761
|
url: string;
|
1766
1762
|
description: string;
|
1763
|
+
id: string;
|
1767
1764
|
tags: import("../database/api/.generated").$Enums.ProtocolTag[];
|
1768
1765
|
icon: string;
|
1769
1766
|
} & {})[] | null;
|
@@ -33,23 +33,19 @@ export async function ERC20DynamicDataRefacto(chainId, campaigns) {
|
|
33
33
|
allowFailure: true,
|
34
34
|
callData: FactoryInterface.encodeFunctionData("factory"),
|
35
35
|
target: campaign.campaignParameters.targetToken,
|
36
|
-
}
|
37
|
-
callsRounds1.push({
|
36
|
+
}, {
|
38
37
|
allowFailure: true,
|
39
38
|
callData: MetamorphoInterface.encodeFunctionData("MORPHO"),
|
40
39
|
target: campaign.campaignParameters.targetToken,
|
41
|
-
}
|
42
|
-
callsRounds1.push({
|
40
|
+
}, {
|
43
41
|
allowFailure: true,
|
44
42
|
callData: ERC20Interface.encodeFunctionData("name"),
|
45
43
|
target: campaign.campaignParameters.targetToken,
|
46
|
-
}
|
47
|
-
callsRounds1.push({
|
44
|
+
}, {
|
48
45
|
allowFailure: true,
|
49
46
|
callData: BalancerPoolInterface.encodeFunctionData("getPoolId"),
|
50
47
|
target: campaign.campaignParameters.targetToken,
|
51
|
-
}
|
52
|
-
callsRounds1.push({
|
48
|
+
}, {
|
53
49
|
allowFailure: true,
|
54
50
|
callData: EnzymeInterface.encodeFunctionData("getCreator"),
|
55
51
|
target: campaign.campaignParameters.targetToken,
|
@@ -46,10 +46,11 @@ export declare enum tokenType {
|
|
46
46
|
koi = "koi",
|
47
47
|
baseswap = "baseswap",
|
48
48
|
zkswap = "zkswap",
|
49
|
-
pendle = "pendle",
|
50
49
|
ironcladStaking = "ironcladStaking",
|
51
50
|
rfx = "rfx",
|
52
|
-
woofi = "woofi"
|
51
|
+
woofi = "woofi",
|
52
|
+
pendle = "pendle",
|
53
|
+
maverickBoostedPosition = "maverickBoostedPosition"
|
53
54
|
}
|
54
55
|
export declare const tokenTypeToProtocol: {
|
55
56
|
[key in tokenType]: {
|
@@ -47,10 +47,11 @@ export var tokenType;
|
|
47
47
|
tokenType["koi"] = "koi";
|
48
48
|
tokenType["baseswap"] = "baseswap";
|
49
49
|
tokenType["zkswap"] = "zkswap";
|
50
|
-
tokenType["pendle"] = "pendle";
|
51
50
|
tokenType["ironcladStaking"] = "ironcladStaking";
|
52
51
|
tokenType["rfx"] = "rfx";
|
53
52
|
tokenType["woofi"] = "woofi";
|
53
|
+
tokenType["pendle"] = "pendle";
|
54
|
+
tokenType["maverickBoostedPosition"] = "maverickBoostedPosition";
|
54
55
|
})(tokenType || (tokenType = {}));
|
55
56
|
export const tokenTypeToProtocol = {
|
56
57
|
[tokenType.aave_borrowing]: { protocol: "Aave" },
|
@@ -100,7 +101,14 @@ export const tokenTypeToProtocol = {
|
|
100
101
|
[tokenType.zerolend_borrowing]: { protocol: "ZeroLend" },
|
101
102
|
[tokenType.zerolend_lending]: { protocol: "ZeroLend" },
|
102
103
|
[tokenType.zkswap]: { protocol: "ZKSwap" },
|
103
|
-
[tokenType.ironcladStaking]: { protocol: "Ironclad" },
|
104
104
|
[tokenType.rfx]: { protocol: "RFX" },
|
105
|
-
[tokenType.woofi]: {
|
105
|
+
[tokenType.woofi]: {
|
106
|
+
protocol: "Woofi",
|
107
|
+
},
|
108
|
+
[tokenType.ironcladStaking]: {
|
109
|
+
protocol: "Ironclad",
|
110
|
+
},
|
111
|
+
[tokenType.maverickBoostedPosition]: {
|
112
|
+
protocol: "Maverick",
|
113
|
+
},
|
106
114
|
};
|
package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/MaverickBPProcessor.d.ts
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
import type { Pricer } from "../../../../../utils/pricer";
|
2
|
+
import { type Campaign, type CampaignParameters } from "@sdk";
|
3
|
+
import type { tokenType } from "../helpers/tokenType";
|
4
|
+
import { GenericProcessor, type dataType, type mandatoryCallKeys } from "./GenericProcessor";
|
5
|
+
type callType = {
|
6
|
+
key: keyof dataRawMaverickBP;
|
7
|
+
call: string;
|
8
|
+
target: keyof callKeysMaverickBP;
|
9
|
+
metaData?: keyof callKeysMaverickBP;
|
10
|
+
};
|
11
|
+
type callKeysMaverickBP = mandatoryCallKeys & {
|
12
|
+
boostedPositionInformation: string;
|
13
|
+
tokenA: string;
|
14
|
+
tokenB: string;
|
15
|
+
lensAddress: string;
|
16
|
+
};
|
17
|
+
type dataRawMaverickBP = callKeysMaverickBP & {
|
18
|
+
amountA: string;
|
19
|
+
amountB: string;
|
20
|
+
decimalsTokenA: string;
|
21
|
+
decimalsTokenB: string;
|
22
|
+
bpInfoReturnData: {
|
23
|
+
[key: string]: string | number;
|
24
|
+
};
|
25
|
+
symbolTokenA: string;
|
26
|
+
symbolTokenB: string;
|
27
|
+
};
|
28
|
+
type dataTypeMaverickBP = dataType & {
|
29
|
+
amountA: number;
|
30
|
+
amountB: number;
|
31
|
+
decimalsTokenA: number;
|
32
|
+
decimalsTokenB: number;
|
33
|
+
lensAddress: string;
|
34
|
+
symbolTokenA: string;
|
35
|
+
symbolTokenB: string;
|
36
|
+
tokenA: string;
|
37
|
+
tokenB: string;
|
38
|
+
};
|
39
|
+
export declare class MaverickBPProcessor extends GenericProcessor<callKeysMaverickBP, dataRawMaverickBP, dataTypeMaverickBP> {
|
40
|
+
rounds: {
|
41
|
+
round1: callType[];
|
42
|
+
round2: callType[];
|
43
|
+
round3: callType[];
|
44
|
+
round4: callType[];
|
45
|
+
};
|
46
|
+
processingRound1(typeInfo: dataRawMaverickBP): void;
|
47
|
+
processingRound2(typeInfo: dataRawMaverickBP): void;
|
48
|
+
processingRound5(_index: number, type: tokenType, typeInfo: dataRawMaverickBP, _calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypeMaverickBP>;
|
49
|
+
}
|
50
|
+
export {};
|
@@ -0,0 +1,75 @@
|
|
1
|
+
import { MAVERICK_ZKSYNC_BP_LENS_ADDRESS } from "../../../../../constants";
|
2
|
+
import { generateCardName } from "../../../../../utils/generateCardName";
|
3
|
+
import { BN2Number } from "@sdk";
|
4
|
+
import { GenericProcessor } from "./GenericProcessor";
|
5
|
+
export class MaverickBPProcessor extends GenericProcessor {
|
6
|
+
rounds = {
|
7
|
+
round1: [
|
8
|
+
{
|
9
|
+
key: "bpInfoReturnData",
|
10
|
+
call: "boostedPositionInformation",
|
11
|
+
target: "lensAddress",
|
12
|
+
metaData: "tokenAddress",
|
13
|
+
},
|
14
|
+
],
|
15
|
+
round2: [
|
16
|
+
{
|
17
|
+
key: "symbolTokenA",
|
18
|
+
call: "symbol",
|
19
|
+
target: "tokenA",
|
20
|
+
},
|
21
|
+
{
|
22
|
+
key: "symbolTokenB",
|
23
|
+
call: "symbol",
|
24
|
+
target: "tokenB",
|
25
|
+
},
|
26
|
+
{
|
27
|
+
key: "decimalsTokenA",
|
28
|
+
call: "decimals",
|
29
|
+
target: "tokenA",
|
30
|
+
},
|
31
|
+
{
|
32
|
+
key: "decimalsTokenB",
|
33
|
+
call: "decimals",
|
34
|
+
target: "tokenB",
|
35
|
+
},
|
36
|
+
],
|
37
|
+
round3: [],
|
38
|
+
round4: [{ key: "totalSupply", call: "totalSupply", target: "tokenAddress" }],
|
39
|
+
};
|
40
|
+
processingRound1(typeInfo) {
|
41
|
+
typeInfo.lensAddress = MAVERICK_ZKSYNC_BP_LENS_ADDRESS;
|
42
|
+
}
|
43
|
+
processingRound2(typeInfo) {
|
44
|
+
typeInfo.tokenA = typeInfo.bpInfoReturnData.tokenA;
|
45
|
+
typeInfo.tokenB = typeInfo.bpInfoReturnData.tokenB;
|
46
|
+
typeInfo.amountA = typeInfo.bpInfoReturnData.amountA.toString();
|
47
|
+
typeInfo.amountB = typeInfo.bpInfoReturnData.amountB.toString();
|
48
|
+
}
|
49
|
+
async processingRound5(_index, type, typeInfo, _calls, campaign, pricer) {
|
50
|
+
const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
|
51
|
+
const decimalsTokenA = Number(typeInfo.decimalsTokenA);
|
52
|
+
const decimalsTokenB = Number(typeInfo.decimalsTokenB);
|
53
|
+
const amountA = BN2Number(typeInfo.amountA, decimalsTokenA);
|
54
|
+
const amountB = BN2Number(typeInfo.amountB, decimalsTokenB);
|
55
|
+
const tokenAPRice = (await pricer.get({ symbol: typeInfo.symbolTokenA })) ?? 0;
|
56
|
+
const tokenBPrice = (await pricer.get({ symbol: typeInfo.symbolTokenB })) ?? 0;
|
57
|
+
// Not rebased (ie divided by 10edecimals)
|
58
|
+
const tvl = tokenAPRice * amountA + tokenBPrice * amountB;
|
59
|
+
const priceTargetToken = tvl / totalSupply;
|
60
|
+
const { bpInfoReturnData, ...rest } = typeInfo;
|
61
|
+
return {
|
62
|
+
...rest,
|
63
|
+
blacklistedSupply,
|
64
|
+
amountA,
|
65
|
+
amountB,
|
66
|
+
decimalsTokenA,
|
67
|
+
decimalsTokenB,
|
68
|
+
cardName: generateCardName(type, typeInfo, campaign),
|
69
|
+
priceTargetToken: priceTargetToken,
|
70
|
+
totalSupply,
|
71
|
+
tvl,
|
72
|
+
whitelistedSupplyTargetToken,
|
73
|
+
};
|
74
|
+
}
|
75
|
+
}
|
@@ -13,6 +13,7 @@ import { FluidProcessor } from "./FluidProcessor";
|
|
13
13
|
import { FraxProcessor } from "./FraxProcessor";
|
14
14
|
import { GearboxProcessor } from "./GearboxProcessor";
|
15
15
|
import { GenericProcessor } from "./GenericProcessor";
|
16
|
+
import { MaverickBPProcessor } from "./MaverickBPProcessor";
|
16
17
|
import { MetamorphoProcessor } from "./MetamorphoProcessor";
|
17
18
|
import { PendleProcessor } from "./PendleProcessor";
|
18
19
|
import { RadiantProcessor } from "./RadiantProcessor";
|
@@ -74,4 +75,5 @@ export const processorMapping = {
|
|
74
75
|
[tokenType.ironcladStaking]: GenericProcessor,
|
75
76
|
[tokenType.rfx]: RfxProcessor,
|
76
77
|
[tokenType.woofi]: WoofiProcessor,
|
78
|
+
[tokenType.maverickBoostedPosition]: MaverickBPProcessor,
|
77
79
|
};
|
@@ -81,6 +81,8 @@ function satisfiesNameConditions(name, type) {
|
|
81
81
|
return lowerCaseName === "ironclad token";
|
82
82
|
case tokenType.woofi:
|
83
83
|
return lowerCaseName.includes("woofi");
|
84
|
+
case tokenType.maverickBoostedPosition:
|
85
|
+
return lowerCaseName.includes("maverick");
|
84
86
|
default:
|
85
87
|
return false;
|
86
88
|
}
|
@@ -44,6 +44,7 @@ export declare const ParticipateController: Elysia<"/participate", false, {
|
|
44
44
|
name: string;
|
45
45
|
url: string;
|
46
46
|
description: string;
|
47
|
+
id: string;
|
47
48
|
tags: import("../../../../database/api/.generated").$Enums.ProtocolTag[];
|
48
49
|
icon: string;
|
49
50
|
} & {})[] | null;
|
@@ -26,6 +26,7 @@ export declare const ProtocolController: Elysia<"/protocols", false, {
|
|
26
26
|
name: string;
|
27
27
|
url: string;
|
28
28
|
description: string;
|
29
|
+
id: string;
|
29
30
|
tags: import("../../../../database/api/.generated").$Enums.ProtocolTag[];
|
30
31
|
icon: string;
|
31
32
|
} | null;
|
@@ -52,6 +53,7 @@ export declare const ProtocolController: Elysia<"/protocols", false, {
|
|
52
53
|
name: string;
|
53
54
|
url: string;
|
54
55
|
description: string;
|
56
|
+
id: string;
|
55
57
|
tags: import("../../../../database/api/.generated").$Enums.ProtocolTag[];
|
56
58
|
icon: string;
|
57
59
|
} & {})[] | null;
|
@@ -65,13 +67,7 @@ export declare const ProtocolController: Elysia<"/protocols", false, {
|
|
65
67
|
get: {
|
66
68
|
body: unknown;
|
67
69
|
params: {};
|
68
|
-
query:
|
69
|
-
name?: string | undefined;
|
70
|
-
id?: string[] | undefined;
|
71
|
-
items?: number | undefined;
|
72
|
-
tags?: ("AMM" | "ALM" | "DEX" | "LENDING")[] | undefined;
|
73
|
-
page?: number | undefined;
|
74
|
-
};
|
70
|
+
query: unknown;
|
75
71
|
headers: unknown;
|
76
72
|
response: {
|
77
73
|
200: number;
|
@@ -3,7 +3,7 @@ import { GetProtocolsQueryDto } from "./protocol.model";
|
|
3
3
|
import { ProtocolService } from "./protocol.service";
|
4
4
|
// ─── Protocols Controller ────────────────────────────────────────────────────
|
5
5
|
export const ProtocolController = new Elysia({ prefix: "/protocols", detail: { tags: ["Protocols"] } })
|
6
|
-
// ─── Get A Protocol By Its Id ────────────────────────────────────────
|
6
|
+
// ─── Get A Protocol By Its Id/Name ────────────────────────────────────────
|
7
7
|
.get("/:id", async ({ params }) => {
|
8
8
|
const fromId = await ProtocolService.getFromId(params.id);
|
9
9
|
if (fromId)
|
@@ -11,13 +11,8 @@ export const ProtocolController = new Elysia({ prefix: "/protocols", detail: { t
|
|
11
11
|
return await ProtocolService.getFromName(params.id);
|
12
12
|
})
|
13
13
|
// ─── Get Many Protocols ──────────────────────────────────────────────
|
14
|
-
.get("/", async ({ query }) => {
|
15
|
-
return await ProtocolService.findMany(query);
|
16
|
-
}, {
|
14
|
+
.get("/", async ({ query }) => await ProtocolService.findMany(query), {
|
17
15
|
query: GetProtocolsQueryDto,
|
18
16
|
})
|
19
|
-
|
20
|
-
|
21
|
-
}, {
|
22
|
-
query: GetProtocolsQueryDto,
|
23
|
-
});
|
17
|
+
// ─── Count Protocols ──────────────────────────────────────────────
|
18
|
+
.get("/count", async ({ query }) => await ProtocolService.countMany(query));
|
@@ -4,11 +4,11 @@ import type { Resource } from "../prisma";
|
|
4
4
|
* @description Target description of rewards campaigns
|
5
5
|
* @see {@link Resource}
|
6
6
|
*/
|
7
|
-
export type Protocol = Resource<"Protocol"
|
7
|
+
export type Protocol = Resource<"Protocol">;
|
8
8
|
declare const protocolTypes: readonly ["arthswap", "baseswap", "camelot", "crust", "fenix", "horiza", "izumi", "kim", "pancakeswap-v3", "quickswap-algebra", "quickswap-uni", "ramses", "retro", "stryke", "stryke-pcs", "stryke-sushi", "sushiswap-v3", "swapr", "thruster", "uniswap-v3", "voltage", "zero", "koi", "supswap-v3", "uniswap-v2", "velodrome", "aerodrome", "balancer", "curve", "aura", "akron", "beefy", "dragonswap", "poolside", "koi", "radiant", "aave", "euler", "gearbox", "compound", "sturdy", "frax", "ionic", "moonwell", "fluid", "silo", "morpho", "coumpound", "dolomite", "badger", "ajna", "layerbank"];
|
9
9
|
export type ProtocolId = (typeof protocolTypes)[number];
|
10
10
|
export declare const GetProtocolsQueryDto: import("@sinclair/typebox").TObject<{
|
11
|
-
id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
11
|
+
id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>]>, string[]>>;
|
12
12
|
name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
13
13
|
tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TEnum<{
|
14
14
|
AMM: "AMM";
|
@@ -59,7 +59,10 @@ const protocolTypes = [
|
|
59
59
|
];
|
60
60
|
// ─── DTOs ────────────────────────────────────────────────────────────────────
|
61
61
|
export const GetProtocolsQueryDto = t.Object({
|
62
|
-
id: t.Optional(t
|
62
|
+
id: t.Optional(t
|
63
|
+
.Transform(t.Union([t.String(), t.Array(t.String())]))
|
64
|
+
.Decode(value => (typeof value === "string" ? value.split(",") : value))
|
65
|
+
.Encode(value => [...value])),
|
63
66
|
name: t.Optional(t.String()),
|
64
67
|
tags: t.Optional(t.Array(t.Enum(ProtocolTag))),
|
65
68
|
page: t.Optional(t.Numeric()),
|
@@ -63,14 +63,15 @@ export class ProtocolService {
|
|
63
63
|
}[_type];
|
64
64
|
}
|
65
65
|
static async findMany(query) {
|
66
|
-
return
|
66
|
+
return ProtocolRepository.findMany(query);
|
67
67
|
}
|
68
68
|
static async countMany(query) {
|
69
|
-
return
|
69
|
+
return ProtocolRepository.countMany(query);
|
70
70
|
}
|
71
71
|
static async getFromId(id) {
|
72
|
-
return
|
72
|
+
return ProtocolRepository.read(id);
|
73
73
|
}
|
74
|
+
// Todo : Should be a findfirst by name here
|
74
75
|
static async getFromName(name) {
|
75
76
|
return (await ProtocolRepository.findManyByName(name))[0];
|
76
77
|
}
|
@@ -621,6 +621,7 @@ export declare const v4: Elysia<"/v4", false, {
|
|
621
621
|
name: string;
|
622
622
|
url: string;
|
623
623
|
description: string;
|
624
|
+
id: string;
|
624
625
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
625
626
|
icon: string;
|
626
627
|
} | null;
|
@@ -647,6 +648,7 @@ export declare const v4: Elysia<"/v4", false, {
|
|
647
648
|
name: string;
|
648
649
|
url: string;
|
649
650
|
description: string;
|
651
|
+
id: string;
|
650
652
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
651
653
|
icon: string;
|
652
654
|
} & {})[] | null;
|
@@ -660,13 +662,7 @@ export declare const v4: Elysia<"/v4", false, {
|
|
660
662
|
get: {
|
661
663
|
body: unknown;
|
662
664
|
params: {};
|
663
|
-
query:
|
664
|
-
name?: string | undefined;
|
665
|
-
id?: string[] | undefined;
|
666
|
-
items?: number | undefined;
|
667
|
-
tags?: ("AMM" | "ALM" | "DEX" | "LENDING")[] | undefined;
|
668
|
-
page?: number | undefined;
|
669
|
-
};
|
665
|
+
query: unknown;
|
670
666
|
headers: unknown;
|
671
667
|
response: {
|
672
668
|
200: number;
|
@@ -1746,6 +1742,7 @@ export declare const v4: Elysia<"/v4", false, {
|
|
1746
1742
|
name: string;
|
1747
1743
|
url: string;
|
1748
1744
|
description: string;
|
1745
|
+
id: string;
|
1749
1746
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
1750
1747
|
icon: string;
|
1751
1748
|
} & {})[] | null;
|
@@ -647,6 +647,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
647
647
|
name: string;
|
648
648
|
url: string;
|
649
649
|
description: string;
|
650
|
+
id: string;
|
650
651
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
651
652
|
icon: string;
|
652
653
|
} | null;
|
@@ -673,6 +674,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
673
674
|
name: string;
|
674
675
|
url: string;
|
675
676
|
description: string;
|
677
|
+
id: string;
|
676
678
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
677
679
|
icon: string;
|
678
680
|
} & {})[] | null;
|
@@ -686,13 +688,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
686
688
|
get: {
|
687
689
|
body: unknown;
|
688
690
|
params: {};
|
689
|
-
query:
|
690
|
-
name?: string | undefined;
|
691
|
-
id?: string[] | undefined;
|
692
|
-
items?: number | undefined;
|
693
|
-
tags?: ("AMM" | "ALM" | "DEX" | "LENDING")[] | undefined;
|
694
|
-
page?: number | undefined;
|
695
|
-
};
|
691
|
+
query: unknown;
|
696
692
|
headers: unknown;
|
697
693
|
response: {
|
698
694
|
200: number;
|
@@ -1772,6 +1768,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
1772
1768
|
name: string;
|
1773
1769
|
url: string;
|
1774
1770
|
description: string;
|
1771
|
+
id: string;
|
1775
1772
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
1776
1773
|
icon: string;
|
1777
1774
|
} & {})[] | null;
|
@@ -645,6 +645,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
645
645
|
name: string;
|
646
646
|
url: string;
|
647
647
|
description: string;
|
648
|
+
id: string;
|
648
649
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
649
650
|
icon: string;
|
650
651
|
} | null;
|
@@ -671,6 +672,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
671
672
|
name: string;
|
672
673
|
url: string;
|
673
674
|
description: string;
|
675
|
+
id: string;
|
674
676
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
675
677
|
icon: string;
|
676
678
|
} & {})[] | null;
|
@@ -684,13 +686,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
684
686
|
get: {
|
685
687
|
body: unknown;
|
686
688
|
params: {};
|
687
|
-
query:
|
688
|
-
name?: string | undefined;
|
689
|
-
id?: string[] | undefined;
|
690
|
-
items?: number | undefined;
|
691
|
-
tags?: ("AMM" | "ALM" | "DEX" | "LENDING")[] | undefined;
|
692
|
-
page?: number | undefined;
|
693
|
-
};
|
689
|
+
query: unknown;
|
694
690
|
headers: unknown;
|
695
691
|
response: {
|
696
692
|
200: number;
|
@@ -1770,6 +1766,7 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
1770
1766
|
name: string;
|
1771
1767
|
url: string;
|
1772
1768
|
description: string;
|
1769
|
+
id: string;
|
1773
1770
|
tags: import("../../../database/api/.generated").$Enums.ProtocolTag[];
|
1774
1771
|
icon: string;
|
1775
1772
|
} & {})[] | null;
|