@merkl/api 0.20.64 → 0.20.65
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/index.js +5 -1
- package/dist/src/eden/index.d.ts +115 -60
- package/dist/src/engine/dynamicData/implementations/Erc20.js +80 -42
- package/dist/src/engine/erc20SubTypeProcessors/GenericProcessor.d.ts +18 -18
- package/dist/src/engine/erc20SubTypeProcessors/GenericProcessor.js +33 -30
- package/dist/src/engine/erc20SubTypeProcessors/{helpers/tokenType.d.ts → constants.d.ts} +0 -6
- package/dist/src/engine/erc20SubTypeProcessors/factory.d.ts +6 -0
- package/dist/src/engine/erc20SubTypeProcessors/{implementations/processorMapping.js → factory.js} +49 -48
- package/dist/src/engine/erc20SubTypeProcessors/helpers/factoryFinder.d.ts +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/helpers/factoryFinder.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/helpers/hardcoded.d.ts +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/helpers/hardcoded.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/helpers/ownerFinder.d.ts +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/helpers/ownerFinder.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/AaveProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/AaveProcessor.js +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/AnglesLiquid.d.ts +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/AnglesLiquid.js +1 -5
- package/dist/src/engine/erc20SubTypeProcessors/implementations/AssetProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/AssetProcessor.js +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/AuraProcessor.d.ts +3 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/AuraProcessor.js +6 -7
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BEXRewardGaugeProcessor.d.ts +3 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BEXRewardGaugeProcessor.js +4 -5
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerGaugeProcessor.d.ts +3 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerGaugeProcessor.js +3 -4
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerPoolProcessor.d.ts +3 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerPoolProcessor.js +3 -4
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerV3PoolProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BalancerV3PoolProcessor.js +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BeefyProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BeefyProcessor.js +3 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BunniV2Processor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/BunniV2Processor.js +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/CompoundProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/CompoundProcessor.js +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/ERC4626Processor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/ERC4626Processor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/EnzymeProcessor.d.ts +3 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/EnzymeProcessor.js +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/EqualizerGaugeProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/EqualizerGaugeProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/EulerBorrowProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/EulerBorrowProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/EulerLendProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/EulerLendProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/FluidProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/FluidProcessor.js +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/FraxProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/FraxProcessor.js +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/GammaProcessor.d.ts +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/GammaProcessor.js +1 -4
- package/dist/src/engine/erc20SubTypeProcessors/implementations/GearboxProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/GearboxProcessor.js +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/HanjiVaultProcessor.d.ts +3 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/HanjiVaultProcessor.js +4 -5
- package/dist/src/engine/erc20SubTypeProcessors/implementations/HoldStationProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/HoldStationProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/HourglassProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/HourglassProcessor.js +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/MaverickBPProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/MaverickBPProcessor.js +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/MetamorphoProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/MetamorphoProcessor.js +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/NoLinkVaultProcessor.d.ts +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/NoLinkVaultProcessor.js +3 -6
- package/dist/src/engine/erc20SubTypeProcessors/implementations/PendleProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/PendleProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/PendleYTProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/PendleYTProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/RadiantProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/RadiantProcessor.js +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/RfxProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/RfxProcessor.js +5 -6
- package/dist/src/engine/erc20SubTypeProcessors/implementations/Satlayer.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/Satlayer.js +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/SpectraProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/SpectraProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/SpectraYTProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/SpectraYTProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/SpliceProcessor.d.ts +2 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/SpliceProcessor.js +0 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/SturdySiloProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/SturdySiloProcessor.js +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/TempestVaultProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/TempestVaultProcessor.js +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/TemplateProcessor.d.ts +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/TemplateProcessor.js +0 -4
- package/dist/src/engine/erc20SubTypeProcessors/implementations/TorosProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/TorosProcessor.js +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/UniswapProcessor.d.ts +3 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/UniswapProcessor.js +3 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/VicunaProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/VicunaProcessor.js +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/WoofiProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/WoofiProcessor.js +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/ZkSwapThreePoolProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/ZkSwapThreePoolProcessor.js +7 -7
- package/dist/src/engine/erc20SubTypeProcessors/implementations/curveNPoolProcessor.d.ts +3 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/curveNPoolProcessor.js +5 -6
- package/dist/src/engine/erc20SubTypeProcessors/implementations/curveProcessor.d.ts +1 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/curveProcessor.js +2 -3
- package/dist/src/engine/erc20SubTypeProcessors/implementations/stakedCurveProcessor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/stakedCurveProcessor.js +3 -4
- package/dist/src/engine/erc20SubTypeProcessors/implementations/xU308Processor.d.ts +2 -2
- package/dist/src/engine/erc20SubTypeProcessors/implementations/xU308Processor.js +3 -4
- package/dist/src/engine/erc20SubTypeProcessors/subtypesRound1.d.ts +17 -3
- package/dist/src/engine/erc20SubTypeProcessors/subtypesRound1.js +52 -62
- package/dist/src/engine/opportunityMetadata/implementations/JsonAirdrop.js +1 -1
- package/dist/src/index.d.ts +23 -12
- package/dist/src/jobs/update-rpc-calls-cache.js +9 -4
- package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +23 -12
- package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +23 -12
- package/dist/src/modules/v4/opportunity/opportunity.service.js +2 -1
- package/dist/src/modules/v4/router.d.ts +23 -12
- package/dist/src/utils/decodeCalls.d.ts +1 -1
- package/dist/src/utils/decodeCalls.js +1 -1
- package/dist/src/utils/encodeCalls.d.ts +2 -2
- package/dist/src/utils/encodeCalls.js +15 -15
- package/dist/src/utils/generateCardName.d.ts +4 -3
- package/dist/src/utils/generateCardName.js +3 -3
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/engine/erc20SubTypeProcessors/implementations/processorMapping.d.ts +0 -6
- package/dist/src/engine/erc20SubTypeProcessors/subtypesPrices.d.ts +0 -4
- package/dist/src/engine/erc20SubTypeProcessors/subtypesPrices.js +0 -24
- package/dist/src/engine/erc20SubTypeProcessors/subtypesRound2.d.ts +0 -4
- package/dist/src/engine/erc20SubTypeProcessors/subtypesRound2.js +0 -22
- package/dist/src/engine/erc20SubTypeProcessors/subtypesRound3.d.ts +0 -3
- package/dist/src/engine/erc20SubTypeProcessors/subtypesRound3.js +0 -22
- package/dist/src/engine/erc20SubTypeProcessors/subtypesRound4.d.ts +0 -3
- package/dist/src/engine/erc20SubTypeProcessors/subtypesRound4.js +0 -22
- package/dist/src/utils/generateIcons.d.ts +0 -3
- package/dist/src/utils/generateIcons.js +0 -65
- /package/dist/src/engine/erc20SubTypeProcessors/{helpers/tokenType.js → constants.js} +0 -0
package/dist/database/index.js
CHANGED
@@ -2,7 +2,11 @@ import { PrismaClient as ApiPrismaClient } from "@db/api";
|
|
2
2
|
import { PrismaClient as EnginePrismaClient } from "@db/engine";
|
3
3
|
import { drizzle } from "drizzle-orm/prisma/pg";
|
4
4
|
export const apiDbClient = new ApiPrismaClient({
|
5
|
-
datasources: {
|
5
|
+
datasources: {
|
6
|
+
db: {
|
7
|
+
url: `${process.env.DATABASE_API_URL}&connection_limit=${!!process.env.BACKOFFICE_SECRET ? "100" : "10"}&pool_timeout=60`,
|
8
|
+
},
|
9
|
+
},
|
6
10
|
}).$extends(drizzle());
|
7
11
|
export const engineDbClient = new EnginePrismaClient({
|
8
12
|
datasources: {
|
package/dist/src/eden/index.d.ts
CHANGED
@@ -140,20 +140,31 @@ declare const eden: {
|
|
140
140
|
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
141
141
|
200: {
|
142
142
|
id: string;
|
143
|
-
|
143
|
+
chainId: number;
|
144
144
|
type: string;
|
145
|
-
status: import("@db/api").$Enums.Status;
|
146
|
-
tags: string[];
|
147
145
|
identifier: string;
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
146
|
+
name: string;
|
147
|
+
status: "PAST" | "LIVE" | "SOON";
|
148
|
+
action: any;
|
149
|
+
tokens: ({
|
150
|
+
symbol: string;
|
151
|
+
id: string;
|
152
|
+
name: string | null;
|
153
|
+
icon: string;
|
154
|
+
address: string;
|
155
|
+
chainId: number;
|
156
|
+
decimals: number;
|
157
|
+
verified: boolean;
|
158
|
+
isTest: boolean;
|
159
|
+
isPoint: boolean;
|
160
|
+
isNative: boolean;
|
161
|
+
} & {
|
162
|
+
price?: number | null | undefined;
|
163
|
+
})[];
|
164
|
+
mainProtocol: "splice" | "morpho" | "quickswap" | "euler" | "ambient" | "uniswap" | "arthswap" | "base-swap" | "camelot" | "crust" | "fenix" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "koi" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "velodrome" | "aerodrome" | "balancer" | "curve" | "cross_curve" | "curveNPool" | "aura" | "akron" | "beefy" | "dragonswap" | "poolside" | "syncswap" | "neptune" | "zkSwapThreePool" | "rfx" | "ra" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "fraxlend" | "ironclad" | "gearbox" | "compound" | "sturdy" | "frax" | "ionic" | "moonwell" | "fluid" | "silo" | "dolomite" | "badger" | "ajna" | "layerbank" | "ion" | "venus" | "woofi" | "reactor_fusion" | "eigenlayer" | "vest" | "zerolend" | "hyperdrive" | "gamma" | "oku" | "hourglass" | "veda" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "angles" | "enzyme" | "toros" | "vicuna" | "bunni" | "beratrax" | "concrete" | "cian" | "pendle" | "yei" | "filament" | "gammaswap" | "maha" | "tempest" | "uranium" | "holdstation" | "katana" | "satlayer" | undefined;
|
165
|
+
depositUrl: any;
|
166
|
+
explorerAddress: string | undefined;
|
167
|
+
tags: string[];
|
157
168
|
};
|
158
169
|
}>>;
|
159
170
|
};
|
@@ -4144,20 +4155,31 @@ declare const eden: {
|
|
4144
4155
|
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
4145
4156
|
200: {
|
4146
4157
|
id: string;
|
4147
|
-
|
4158
|
+
chainId: number;
|
4148
4159
|
type: string;
|
4149
|
-
status: import("@db/api").$Enums.Status;
|
4150
|
-
tags: string[];
|
4151
4160
|
identifier: string;
|
4152
|
-
|
4153
|
-
|
4154
|
-
|
4155
|
-
|
4156
|
-
|
4157
|
-
|
4158
|
-
|
4159
|
-
|
4160
|
-
|
4161
|
+
name: string;
|
4162
|
+
status: "PAST" | "LIVE" | "SOON";
|
4163
|
+
action: any;
|
4164
|
+
tokens: ({
|
4165
|
+
symbol: string;
|
4166
|
+
id: string;
|
4167
|
+
name: string | null;
|
4168
|
+
icon: string;
|
4169
|
+
address: string;
|
4170
|
+
chainId: number;
|
4171
|
+
decimals: number;
|
4172
|
+
verified: boolean;
|
4173
|
+
isTest: boolean;
|
4174
|
+
isPoint: boolean;
|
4175
|
+
isNative: boolean;
|
4176
|
+
} & {
|
4177
|
+
price?: number | null | undefined;
|
4178
|
+
})[];
|
4179
|
+
mainProtocol: "splice" | "morpho" | "quickswap" | "euler" | "ambient" | "uniswap" | "arthswap" | "base-swap" | "camelot" | "crust" | "fenix" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "koi" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "velodrome" | "aerodrome" | "balancer" | "curve" | "cross_curve" | "curveNPool" | "aura" | "akron" | "beefy" | "dragonswap" | "poolside" | "syncswap" | "neptune" | "zkSwapThreePool" | "rfx" | "ra" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "fraxlend" | "ironclad" | "gearbox" | "compound" | "sturdy" | "frax" | "ionic" | "moonwell" | "fluid" | "silo" | "dolomite" | "badger" | "ajna" | "layerbank" | "ion" | "venus" | "woofi" | "reactor_fusion" | "eigenlayer" | "vest" | "zerolend" | "hyperdrive" | "gamma" | "oku" | "hourglass" | "veda" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "angles" | "enzyme" | "toros" | "vicuna" | "bunni" | "beratrax" | "concrete" | "cian" | "pendle" | "yei" | "filament" | "gammaswap" | "maha" | "tempest" | "uranium" | "holdstation" | "katana" | "satlayer" | undefined;
|
4180
|
+
depositUrl: any;
|
4181
|
+
explorerAddress: string | undefined;
|
4182
|
+
tags: string[];
|
4161
4183
|
};
|
4162
4184
|
}>>;
|
4163
4185
|
};
|
@@ -8984,20 +9006,31 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
8984
9006
|
response: {
|
8985
9007
|
200: {
|
8986
9008
|
id: string;
|
8987
|
-
|
9009
|
+
chainId: number;
|
8988
9010
|
type: string;
|
8989
|
-
status: import("@db/api").$Enums.Status;
|
8990
|
-
tags: string[];
|
8991
9011
|
identifier: string;
|
8992
|
-
|
8993
|
-
|
8994
|
-
|
8995
|
-
|
8996
|
-
|
8997
|
-
|
8998
|
-
|
8999
|
-
|
9000
|
-
|
9012
|
+
name: string;
|
9013
|
+
status: "PAST" | "LIVE" | "SOON";
|
9014
|
+
action: any;
|
9015
|
+
tokens: ({
|
9016
|
+
symbol: string;
|
9017
|
+
id: string;
|
9018
|
+
name: string | null;
|
9019
|
+
icon: string;
|
9020
|
+
address: string;
|
9021
|
+
chainId: number;
|
9022
|
+
decimals: number;
|
9023
|
+
verified: boolean;
|
9024
|
+
isTest: boolean;
|
9025
|
+
isPoint: boolean;
|
9026
|
+
isNative: boolean;
|
9027
|
+
} & {
|
9028
|
+
price?: number | null | undefined;
|
9029
|
+
})[];
|
9030
|
+
mainProtocol: "splice" | "morpho" | "quickswap" | "euler" | "ambient" | "uniswap" | "arthswap" | "base-swap" | "camelot" | "crust" | "fenix" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "koi" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "velodrome" | "aerodrome" | "balancer" | "curve" | "cross_curve" | "curveNPool" | "aura" | "akron" | "beefy" | "dragonswap" | "poolside" | "syncswap" | "neptune" | "zkSwapThreePool" | "rfx" | "ra" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "fraxlend" | "ironclad" | "gearbox" | "compound" | "sturdy" | "frax" | "ionic" | "moonwell" | "fluid" | "silo" | "dolomite" | "badger" | "ajna" | "layerbank" | "ion" | "venus" | "woofi" | "reactor_fusion" | "eigenlayer" | "vest" | "zerolend" | "hyperdrive" | "gamma" | "oku" | "hourglass" | "veda" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "angles" | "enzyme" | "toros" | "vicuna" | "bunni" | "beratrax" | "concrete" | "cian" | "pendle" | "yei" | "filament" | "gammaswap" | "maha" | "tempest" | "uranium" | "holdstation" | "katana" | "satlayer" | undefined;
|
9031
|
+
depositUrl: any;
|
9032
|
+
explorerAddress: string | undefined;
|
9033
|
+
tags: string[];
|
9001
9034
|
};
|
9002
9035
|
};
|
9003
9036
|
};
|
@@ -14804,20 +14837,31 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
14804
14837
|
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
14805
14838
|
200: {
|
14806
14839
|
id: string;
|
14807
|
-
|
14840
|
+
chainId: number;
|
14808
14841
|
type: string;
|
14809
|
-
status: import("@db/api").$Enums.Status;
|
14810
|
-
tags: string[];
|
14811
14842
|
identifier: string;
|
14812
|
-
|
14813
|
-
|
14814
|
-
|
14815
|
-
|
14816
|
-
|
14817
|
-
|
14818
|
-
|
14819
|
-
|
14820
|
-
|
14843
|
+
name: string;
|
14844
|
+
status: "PAST" | "LIVE" | "SOON";
|
14845
|
+
action: any;
|
14846
|
+
tokens: ({
|
14847
|
+
symbol: string;
|
14848
|
+
id: string;
|
14849
|
+
name: string | null;
|
14850
|
+
icon: string;
|
14851
|
+
address: string;
|
14852
|
+
chainId: number;
|
14853
|
+
decimals: number;
|
14854
|
+
verified: boolean;
|
14855
|
+
isTest: boolean;
|
14856
|
+
isPoint: boolean;
|
14857
|
+
isNative: boolean;
|
14858
|
+
} & {
|
14859
|
+
price?: number | null | undefined;
|
14860
|
+
})[];
|
14861
|
+
mainProtocol: "splice" | "morpho" | "quickswap" | "euler" | "ambient" | "uniswap" | "arthswap" | "base-swap" | "camelot" | "crust" | "fenix" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "koi" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "velodrome" | "aerodrome" | "balancer" | "curve" | "cross_curve" | "curveNPool" | "aura" | "akron" | "beefy" | "dragonswap" | "poolside" | "syncswap" | "neptune" | "zkSwapThreePool" | "rfx" | "ra" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "fraxlend" | "ironclad" | "gearbox" | "compound" | "sturdy" | "frax" | "ionic" | "moonwell" | "fluid" | "silo" | "dolomite" | "badger" | "ajna" | "layerbank" | "ion" | "venus" | "woofi" | "reactor_fusion" | "eigenlayer" | "vest" | "zerolend" | "hyperdrive" | "gamma" | "oku" | "hourglass" | "veda" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "angles" | "enzyme" | "toros" | "vicuna" | "bunni" | "beratrax" | "concrete" | "cian" | "pendle" | "yei" | "filament" | "gammaswap" | "maha" | "tempest" | "uranium" | "holdstation" | "katana" | "satlayer" | undefined;
|
14862
|
+
depositUrl: any;
|
14863
|
+
explorerAddress: string | undefined;
|
14864
|
+
tags: string[];
|
14821
14865
|
};
|
14822
14866
|
}>>;
|
14823
14867
|
};
|
@@ -18808,20 +18852,31 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
18808
18852
|
}) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
18809
18853
|
200: {
|
18810
18854
|
id: string;
|
18811
|
-
|
18855
|
+
chainId: number;
|
18812
18856
|
type: string;
|
18813
|
-
status: import("@db/api").$Enums.Status;
|
18814
|
-
tags: string[];
|
18815
18857
|
identifier: string;
|
18816
|
-
|
18817
|
-
|
18818
|
-
|
18819
|
-
|
18820
|
-
|
18821
|
-
|
18822
|
-
|
18823
|
-
|
18824
|
-
|
18858
|
+
name: string;
|
18859
|
+
status: "PAST" | "LIVE" | "SOON";
|
18860
|
+
action: any;
|
18861
|
+
tokens: ({
|
18862
|
+
symbol: string;
|
18863
|
+
id: string;
|
18864
|
+
name: string | null;
|
18865
|
+
icon: string;
|
18866
|
+
address: string;
|
18867
|
+
chainId: number;
|
18868
|
+
decimals: number;
|
18869
|
+
verified: boolean;
|
18870
|
+
isTest: boolean;
|
18871
|
+
isPoint: boolean;
|
18872
|
+
isNative: boolean;
|
18873
|
+
} & {
|
18874
|
+
price?: number | null | undefined;
|
18875
|
+
})[];
|
18876
|
+
mainProtocol: "splice" | "morpho" | "quickswap" | "euler" | "ambient" | "uniswap" | "arthswap" | "base-swap" | "camelot" | "crust" | "fenix" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "koi" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "velodrome" | "aerodrome" | "balancer" | "curve" | "cross_curve" | "curveNPool" | "aura" | "akron" | "beefy" | "dragonswap" | "poolside" | "syncswap" | "neptune" | "zkSwapThreePool" | "rfx" | "ra" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "fraxlend" | "ironclad" | "gearbox" | "compound" | "sturdy" | "frax" | "ionic" | "moonwell" | "fluid" | "silo" | "dolomite" | "badger" | "ajna" | "layerbank" | "ion" | "venus" | "woofi" | "reactor_fusion" | "eigenlayer" | "vest" | "zerolend" | "hyperdrive" | "gamma" | "oku" | "hourglass" | "veda" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "angles" | "enzyme" | "toros" | "vicuna" | "bunni" | "beratrax" | "concrete" | "cian" | "pendle" | "yei" | "filament" | "gammaswap" | "maha" | "tempest" | "uranium" | "holdstation" | "katana" | "satlayer" | undefined;
|
18877
|
+
depositUrl: any;
|
18878
|
+
explorerAddress: string | undefined;
|
18879
|
+
tags: string[];
|
18825
18880
|
};
|
18826
18881
|
}>>;
|
18827
18882
|
};
|
@@ -1,9 +1,6 @@
|
|
1
|
-
import { tokenType } from "@/engine/erc20SubTypeProcessors/
|
2
|
-
import {
|
1
|
+
import { tokenType } from "@/engine/erc20SubTypeProcessors/constants";
|
2
|
+
import { erc20ProcessorFactory } from "@/engine/erc20SubTypeProcessors/factory";
|
3
3
|
import { getTokenTypeRound1 } from "@/engine/erc20SubTypeProcessors/subtypesRound1";
|
4
|
-
import { getTokenTypeRound2 } from "@/engine/erc20SubTypeProcessors/subtypesRound2";
|
5
|
-
import { getTokenTypeRound3 } from "@/engine/erc20SubTypeProcessors/subtypesRound3";
|
6
|
-
import { getTokenTypeRound4 } from "@/engine/erc20SubTypeProcessors/subtypesRound4";
|
7
4
|
import { ComputedValueService } from "@/modules/v4/computedValue";
|
8
5
|
import { TokenRepository } from "@/modules/v4/token/token.repository";
|
9
6
|
import { TokenService } from "@/modules/v4/token/token.service";
|
@@ -16,12 +13,13 @@ export class Erc20DynamicData {
|
|
16
13
|
const pricer = await Pricer.load();
|
17
14
|
// Round 1: Get the high level type for each token (will need to be refined lated with more calls)
|
18
15
|
const callsRounds1 = [];
|
19
|
-
const
|
16
|
+
const tokenTypeDataByCampaign = {};
|
20
17
|
for (const campaign of campaigns) {
|
21
18
|
const typeStruct = {
|
22
19
|
type: tokenType.unknown,
|
23
20
|
calls: [],
|
24
21
|
typeInfo: {},
|
22
|
+
processor: erc20ProcessorFactory(tokenType.unknown, campaign),
|
25
23
|
};
|
26
24
|
const targetToken = campaign.campaignParameters.targetToken;
|
27
25
|
typeStruct.calls = [
|
@@ -62,74 +60,114 @@ export class Erc20DynamicData {
|
|
62
60
|
},
|
63
61
|
];
|
64
62
|
callsRounds1.push(...typeStruct.calls);
|
65
|
-
|
63
|
+
tokenTypeDataByCampaign[campaign.campaignId] = typeStruct;
|
66
64
|
}
|
67
|
-
const resultRound1 = await ChainInteractionService(chainId).fetchState(callsRounds1);
|
65
|
+
const resultRound1 = (await ChainInteractionService(chainId).fetchState(callsRounds1)).map(x => x.returnData);
|
68
66
|
// Round 2: Decode result from round 1 and get some additional info for the types before the final calls
|
69
67
|
const callsRounds2 = [];
|
70
68
|
let i = 0;
|
71
69
|
for (const campaign of campaigns) {
|
72
|
-
const
|
73
|
-
|
70
|
+
const tokenTypeData = tokenTypeDataByCampaign[campaign.campaignId];
|
71
|
+
const callsForCampaign = tokenTypeData.calls.length;
|
72
|
+
const res = getTokenTypeRound1(resultRound1, i, campaign); // TODO use processor
|
73
|
+
tokenTypeData.calls = res.calls;
|
74
|
+
tokenTypeData.typeInfo = res.typeInfo;
|
75
|
+
tokenTypeData.processor = erc20ProcessorFactory(res.type, campaign);
|
74
76
|
i += callsForCampaign;
|
75
|
-
callsRounds2.push(...
|
77
|
+
callsRounds2.push(...tokenTypeDataByCampaign[campaign.campaignId].calls);
|
76
78
|
}
|
77
|
-
const resultRound2 = await ChainInteractionService(chainId).fetchState(callsRounds2);
|
79
|
+
const resultRound2 = (await ChainInteractionService(chainId).fetchState(callsRounds2)).map(x => x.returnData);
|
78
80
|
// Round 3: Decode result from round 2 and get some additional info for the types before the final calls
|
79
81
|
const callsRounds3 = [];
|
80
82
|
let j = 0;
|
81
83
|
for (const campaign of campaigns) {
|
82
|
-
|
83
|
-
const
|
84
|
-
|
84
|
+
const { processor, typeInfo } = tokenTypeDataByCampaign[campaign.campaignId];
|
85
|
+
const tokenTypeData = tokenTypeDataByCampaign[campaign.campaignId];
|
86
|
+
const callsForCampaign = tokenTypeData.calls.length;
|
87
|
+
try {
|
88
|
+
const res = await processor.computeRound2(j, processor.type, typeInfo, resultRound2, campaign);
|
89
|
+
tokenTypeData.calls = res.calls;
|
90
|
+
tokenTypeData.typeInfo = res.typeInfo;
|
91
|
+
}
|
92
|
+
catch {
|
93
|
+
// In case something goes wrong, we set following calls to void an move on
|
94
|
+
tokenTypeData.calls = [];
|
95
|
+
tokenTypeData.typeInfo = typeInfo;
|
96
|
+
}
|
85
97
|
j += callsForCampaign;
|
86
|
-
callsRounds3.push(...
|
98
|
+
callsRounds3.push(...tokenTypeDataByCampaign[campaign.campaignId].calls);
|
87
99
|
}
|
88
|
-
const resultRound3 = await ChainInteractionService(chainId).fetchState(callsRounds3);
|
100
|
+
const resultRound3 = (await ChainInteractionService(chainId).fetchState(callsRounds3)).map(x => x.returnData);
|
89
101
|
// Final round before execute
|
90
|
-
let
|
102
|
+
let callsRounds4 = [];
|
91
103
|
j = 0;
|
92
104
|
for (const campaign of campaigns) {
|
93
|
-
const
|
94
|
-
|
105
|
+
const { processor, typeInfo } = tokenTypeDataByCampaign[campaign.campaignId];
|
106
|
+
const tokenTypeData = tokenTypeDataByCampaign[campaign.campaignId];
|
107
|
+
const callsForCampaign = tokenTypeData.calls.length;
|
108
|
+
try {
|
109
|
+
const res = await processor.computeRound3(j, processor.type, typeInfo, resultRound3);
|
110
|
+
tokenTypeData.calls = res.calls;
|
111
|
+
tokenTypeData.typeInfo = res.typeInfo;
|
112
|
+
}
|
113
|
+
catch {
|
114
|
+
// In case something goes wrong, we set following calls to void an move on
|
115
|
+
tokenTypeData.calls = [];
|
116
|
+
tokenTypeData.typeInfo = typeInfo;
|
117
|
+
}
|
95
118
|
j += callsForCampaign;
|
96
|
-
|
119
|
+
callsRounds4 = callsRounds4.concat(tokenTypeDataByCampaign[campaign.campaignId].calls);
|
97
120
|
}
|
98
121
|
// Round 4: Get the final data
|
99
|
-
const
|
122
|
+
const resultRound4 = (await ChainInteractionService(chainId).fetchState(callsRounds4)).map(x => x.returnData);
|
100
123
|
j = 0;
|
101
124
|
let calls = [];
|
102
125
|
for (const campaign of campaigns) {
|
103
|
-
const
|
104
|
-
|
126
|
+
const { processor, typeInfo } = tokenTypeDataByCampaign[campaign.campaignId];
|
127
|
+
const tokenTypeData = tokenTypeDataByCampaign[campaign.campaignId];
|
128
|
+
const callsForCampaign = tokenTypeData.calls.length;
|
129
|
+
try {
|
130
|
+
const res = await processor.computeRound4(j, processor.type, typeInfo, resultRound4, campaign);
|
131
|
+
tokenTypeData.calls = res.calls;
|
132
|
+
tokenTypeData.typeInfo = res.typeInfo;
|
133
|
+
}
|
134
|
+
catch {
|
135
|
+
// In case something goes wrong, we set following calls to void an move on
|
136
|
+
tokenTypeData.calls = [];
|
137
|
+
tokenTypeData.typeInfo = typeInfo;
|
138
|
+
}
|
105
139
|
j += callsForCampaign;
|
106
|
-
calls = calls.concat(
|
140
|
+
calls = calls.concat(tokenTypeDataByCampaign[campaign.campaignId].calls);
|
107
141
|
}
|
108
|
-
const
|
142
|
+
const resultFinal = (await ChainInteractionService(chainId).fetchState(calls)).map(x => x.returnData);
|
109
143
|
i = 0;
|
110
144
|
const dynamicData = [];
|
111
145
|
for (const campaign of campaigns) {
|
112
|
-
// const priceRewardToken =
|
113
|
-
// (await pricer.get({
|
114
|
-
// address: campaign.rewardToken,
|
115
|
-
// chainId,
|
116
|
-
// symbol: campaign.campaignParameters.symbolRewardToken,
|
117
|
-
// })) ?? 0;
|
118
146
|
const priceRewardToken = await TokenService.getRewardTokenPrice(campaign);
|
119
|
-
|
120
|
-
const
|
121
|
-
|
147
|
+
const { processor, typeInfo } = tokenTypeDataByCampaign[campaign.campaignId];
|
148
|
+
const tokenTypeData = tokenTypeDataByCampaign[campaign.campaignId];
|
149
|
+
const callsForCampaign = tokenTypeData.calls.length;
|
150
|
+
try {
|
151
|
+
const res = await processor.computeRound5(j, processor.type, typeInfo, resultFinal, campaign, pricer);
|
152
|
+
tokenTypeData.calls = res.calls;
|
153
|
+
tokenTypeData.typeInfo = res.typeInfo;
|
154
|
+
}
|
155
|
+
catch {
|
156
|
+
// In case something goes wrong, we set following calls to void an move on
|
157
|
+
tokenTypeData.calls = [];
|
158
|
+
tokenTypeData.typeInfo = typeInfo;
|
159
|
+
}
|
122
160
|
try {
|
123
|
-
if (!!
|
124
|
-
await TokenRepository.updateAddressPrices(campaign.campaignParameters.targetToken,
|
161
|
+
if (!!tokenTypeDataByCampaign[campaign.campaignId]?.typeInfo.priceTargetToken && getEnv() === "prod")
|
162
|
+
await TokenRepository.updateAddressPrices(campaign.campaignParameters.targetToken, tokenTypeDataByCampaign[campaign.campaignId]?.typeInfo.priceTargetToken);
|
125
163
|
}
|
126
164
|
catch (e) {
|
127
165
|
log.warn(`failed to update target token price: ${e}`);
|
128
166
|
}
|
129
167
|
i += callsForCampaign;
|
130
|
-
let whitelistedSupplyTargetToken =
|
168
|
+
let whitelistedSupplyTargetToken = tokenTypeDataByCampaign[campaign.campaignId].typeInfo.whitelistedSupplyTargetToken;
|
131
169
|
const totalSupplyTargetToken = whitelistedSupplyTargetToken;
|
132
|
-
const priceTargetToken =
|
170
|
+
const priceTargetToken = tokenTypeDataByCampaign[campaign.campaignId].typeInfo.priceTargetToken;
|
133
171
|
let lastEligibilityRatio = 1;
|
134
172
|
if (!!campaign.campaignParameters.hooks?.length) {
|
135
173
|
lastEligibilityRatio =
|
@@ -165,15 +203,15 @@ export class Erc20DynamicData {
|
|
165
203
|
apr = getFixedApr(campaign, priceRewardToken, priceTargetToken);
|
166
204
|
}
|
167
205
|
if (campaign.chainId === ChainId.ETHERLINK) {
|
168
|
-
whitelistedSupplyTargetToken =
|
206
|
+
whitelistedSupplyTargetToken = tokenTypeDataByCampaign[campaign.campaignId].typeInfo.totalSupply;
|
169
207
|
}
|
170
208
|
dynamicData.push({
|
171
209
|
...campaign,
|
172
210
|
apr,
|
173
211
|
totalSupplyTargetToken,
|
174
212
|
tvl: whitelistedSupplyTargetToken * priceTargetToken,
|
175
|
-
type:
|
176
|
-
typeInfo
|
213
|
+
type: processor.type,
|
214
|
+
typeInfo,
|
177
215
|
priceRewardToken: priceRewardToken,
|
178
216
|
lastEligibilityRatio,
|
179
217
|
});
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import type { Pricer } from "@/utils/pricer";
|
2
|
-
import { type CallDto, type
|
2
|
+
import { type CallDto, type CampaignParameters } from "@sdk";
|
3
3
|
import type { ERC20SupportedCampaignType } from "../dynamicData/implementations/Erc20";
|
4
|
-
import { type tokenType
|
4
|
+
import { type tokenType } from "./constants";
|
5
|
+
import type { tokenTypeStruct } from "./interface";
|
5
6
|
export declare enum Round {
|
6
7
|
one = "round1",
|
7
8
|
two = "round2",
|
@@ -9,14 +10,13 @@ export declare enum Round {
|
|
9
10
|
four = "round4"
|
10
11
|
}
|
11
12
|
export type callType = {
|
12
|
-
key:
|
13
|
-
call:
|
14
|
-
target:
|
15
|
-
|
13
|
+
key: string;
|
14
|
+
call: string;
|
15
|
+
target: string;
|
16
|
+
callArgs?: string;
|
16
17
|
optional?: boolean;
|
17
18
|
};
|
18
19
|
export type mandatoryCallKeys = {
|
19
|
-
type: tokenType;
|
20
20
|
protocol: string;
|
21
21
|
tokenAddress: string;
|
22
22
|
blacklistedSupply: string;
|
@@ -28,11 +28,8 @@ export type stakingKeys = {
|
|
28
28
|
eip712DomainName: string;
|
29
29
|
stakingName: string;
|
30
30
|
stakingSymbol: string;
|
31
|
-
isStaking: string;
|
32
|
-
};
|
33
|
-
export type callKeys = mandatoryCallKeys & {
|
34
|
-
[key: string]: string;
|
35
31
|
};
|
32
|
+
export type callKeys = mandatoryCallKeys & Record<string, string>;
|
36
33
|
export type dataRaw = {
|
37
34
|
protocol: string;
|
38
35
|
tokenAddress: string;
|
@@ -42,7 +39,6 @@ export type dataRaw = {
|
|
42
39
|
} & stakingKeys;
|
43
40
|
export type dataType = {
|
44
41
|
protocol: string;
|
45
|
-
type: tokenType;
|
46
42
|
tokenAddress: string;
|
47
43
|
totalSupply: number;
|
48
44
|
blacklistedSupply: number;
|
@@ -63,6 +59,11 @@ export type dataType = {
|
|
63
59
|
* @params Output - Final output of the processor
|
64
60
|
*/
|
65
61
|
export declare class GenericProcessor<Input extends callKeys, DataRaw extends dataRaw, Output extends dataType> {
|
62
|
+
debug: boolean;
|
63
|
+
type: tokenType;
|
64
|
+
isStaking: boolean;
|
65
|
+
campaign: CampaignParameters<ERC20SupportedCampaignType>;
|
66
|
+
constructor(type: tokenType, campaign: CampaignParameters<ERC20SupportedCampaignType>, debug?: boolean);
|
66
67
|
rounds: {
|
67
68
|
round1: callType[];
|
68
69
|
round2: callType[];
|
@@ -75,24 +76,23 @@ export declare class GenericProcessor<Input extends callKeys, DataRaw extends da
|
|
75
76
|
round3: callType[];
|
76
77
|
round4: callType[];
|
77
78
|
};
|
78
|
-
debug: boolean;
|
79
79
|
processingRound1(_typeInfo: DataRaw): void;
|
80
80
|
processingRound2(_typeInfo: DataRaw, _campaign?: CampaignParameters<ERC20SupportedCampaignType>): void;
|
81
81
|
processingRound3(_typeInfo: DataRaw): void;
|
82
82
|
processingRound4(_typeInfo: DataRaw): void;
|
83
|
-
handleWhiteListBlacklistRound5(typeInfo: DataRaw, campaign: CampaignParameters<
|
83
|
+
handleWhiteListBlacklistRound5(typeInfo: DataRaw, campaign: CampaignParameters<ERC20SupportedCampaignType>): {
|
84
84
|
whitelistedSupplyTargetToken: any;
|
85
85
|
totalSupply: any;
|
86
86
|
blacklistedSupply: any;
|
87
87
|
};
|
88
|
-
processingRound5(_index: number, type: tokenType, typeInfo: DataRaw, _calls: string[], campaign: CampaignParameters<
|
89
|
-
computeRound1(
|
88
|
+
processingRound5(_index: number, type: tokenType, typeInfo: DataRaw, _calls: string[], campaign: CampaignParameters<ERC20SupportedCampaignType>, pricer: Pricer): Promise<Output>;
|
89
|
+
computeRound1(typeInfo: DataRaw): tokenTypeStruct;
|
90
90
|
computeRound2(index: number, type: tokenType, typeInfo: DataRaw, calls: string[], campaign?: CampaignParameters<ERC20SupportedCampaignType>): tokenTypeStruct;
|
91
91
|
computeRound3(index: number, type: tokenType, typeInfo: DataRaw, calls: string[]): tokenTypeStruct;
|
92
92
|
computeRound4(index: number, type: tokenType, typeInfo: DataRaw, calls: string[], campaign: CampaignParameters<ERC20SupportedCampaignType>): tokenTypeStruct;
|
93
93
|
computeRound5(index: number, type: tokenType, typeInfo: DataRaw, calls: string[], campaign: CampaignParameters<ERC20SupportedCampaignType>, pricer: Pricer): Promise<tokenTypeStruct>;
|
94
|
-
generateWhitelistCall(type: tokenType, typeInfo: DataRaw, campaign: CampaignParameters<
|
95
|
-
generateBlackListCall(type: tokenType, typeInfo: DataRaw, campaign: CampaignParameters<
|
94
|
+
generateWhitelistCall(type: tokenType, typeInfo: DataRaw, campaign: CampaignParameters<ERC20SupportedCampaignType>): CallDto[];
|
95
|
+
generateBlackListCall(type: tokenType, typeInfo: DataRaw, campaign: CampaignParameters<ERC20SupportedCampaignType>): CallDto[];
|
96
96
|
decodeListedSupply(index: number, list: string[], calls: string[]): string;
|
97
97
|
decodeRound(round: callType[], index: number, calls: string[], type: tokenType, data: DataRaw): void;
|
98
98
|
decodePreviousRound(round: Round, calls: string[], data: DataRaw, type: tokenType, index: number): void;
|