@merkl/api 0.20.170 → 0.20.172

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.
Files changed (46) hide show
  1. package/dist/database/api/.generated/drizzle/schema.d.ts +57 -0
  2. package/dist/database/api/.generated/drizzle/schema.js +52 -4
  3. package/dist/database/api/.generated/drizzle/schema.ts +52 -4
  4. package/dist/database/api/.generated/edge.js +13 -7
  5. package/dist/database/api/.generated/index-browser.js +10 -4
  6. package/dist/database/api/.generated/index.d.ts +1624 -39
  7. package/dist/database/api/.generated/index.js +13 -7
  8. package/dist/database/api/.generated/package.json +1 -1
  9. package/dist/database/api/.generated/schema.prisma +23 -13
  10. package/dist/database/api/.generated/wasm.js +10 -4
  11. package/dist/src/eden/index.d.ts +80 -15
  12. package/dist/src/engine/deprecated/dynamicData/factory.js +0 -1
  13. package/dist/src/engine/deprecated/erc20SubTypeProcessors/helpers/ownerFinder.js +1 -0
  14. package/dist/src/engine/implementations/Erc20/subTypes/factories.js +4 -0
  15. package/dist/src/engine/implementations/Erc20/subTypes/implementations/termmax/metadata.d.ts +17 -0
  16. package/dist/src/engine/implementations/Erc20/subTypes/implementations/termmax/metadata.js +24 -0
  17. package/dist/src/engine/implementations/Erc20/subTypes/implementations/termmax/tvl.d.ts +6 -0
  18. package/dist/src/engine/implementations/Erc20/subTypes/implementations/termmax/tvl.js +69 -0
  19. package/dist/src/engine/implementations/Erc20/subTypes/index.d.ts +2 -1
  20. package/dist/src/engine/implementations/Erc20/subTypes/index.js +1 -0
  21. package/dist/src/engine/implementations/JsonAirdrop/metadata.d.ts +2 -2
  22. package/dist/src/engine/implementations/Locker/tvl.js +7 -2
  23. package/dist/src/engine/metadata/factory.js +0 -1
  24. package/dist/src/index.d.ts +28 -5
  25. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +11 -1
  26. package/dist/src/modules/v4/campaign/campaign.model.d.ts +4 -0
  27. package/dist/src/modules/v4/campaign/campaign.model.js +2 -0
  28. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +16 -0
  29. package/dist/src/modules/v4/campaign/campaign.service.d.ts +25 -1
  30. package/dist/src/modules/v4/campaign/campaign.service.js +3 -1
  31. package/dist/src/modules/v4/campaign/campaign.test.controller.d.ts +6 -2
  32. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +8 -2
  33. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +2 -0
  34. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +10 -0
  35. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +13 -3
  36. package/dist/src/modules/v4/protocol/protocol.model.d.ts +1 -1
  37. package/dist/src/modules/v4/protocol/protocol.model.js +1 -0
  38. package/dist/src/modules/v4/protocol/protocol.repository.d.ts +2 -0
  39. package/dist/src/modules/v4/reward/reward.model.d.ts +3 -1
  40. package/dist/src/modules/v4/reward/reward.repository.d.ts +2 -0
  41. package/dist/src/modules/v4/reward/reward.service.d.ts +9 -0
  42. package/dist/src/modules/v4/reward/reward.service.js +2 -1
  43. package/dist/src/modules/v4/router.d.ts +28 -5
  44. package/dist/src/modules/v4/user/user.controller.d.ts +3 -0
  45. package/dist/tsconfig.package.tsbuildinfo +1 -1
  46. package/package.json +1 -1
@@ -7,6 +7,8 @@ import { LendleMetadata } from "./implementations/lendleVaults/metadata";
7
7
  import { LendleTVLBuilder } from "./implementations/lendleVaults/tvl";
8
8
  import { SuperlendMetadata } from "./implementations/superlend/metadata";
9
9
  import { SuperlendTVLBuilder } from "./implementations/superlend/tvl";
10
+ import { TermMaxMetadata } from "./implementations/termmax/metadata";
11
+ import { TermMaxTVLBuilder } from "./implementations/termmax/tvl";
10
12
  /**
11
13
  * @dev TYPE SAFETY DISABLED FOR NOW AS WE DON'T HAVE ALL THE CAMPAIGNS IMPLEMENTED
12
14
  *
@@ -20,6 +22,7 @@ const tvlMap = {
20
22
  [Erc20SubType.euler_borrow]: new EulerTVLBuilder(),
21
23
  [Erc20SubType.euler_lend]: new EulerTVLBuilder(),
22
24
  [Erc20SubType.lendle_vaults]: new LendleTVLBuilder(),
25
+ [Erc20SubType.termmax]: new TermMaxTVLBuilder(),
23
26
  };
24
27
  export const erc20SubTypeTVLBuilderFactory = (erc20Subtype) => {
25
28
  if (!tvlMap[erc20Subtype]) {
@@ -40,6 +43,7 @@ const metadataMap = {
40
43
  [Erc20SubType.euler_borrow]: new EulerMetadata(),
41
44
  [Erc20SubType.euler_lend]: new EulerMetadata(),
42
45
  [Erc20SubType.lendle_vaults]: new LendleMetadata(),
46
+ [Erc20SubType.termmax]: new TermMaxMetadata(),
43
47
  };
44
48
  export const erc20SubTypeMetadataBuilderFactory = (erc20Subtype) => {
45
49
  if (!metadataMap[erc20Subtype]) {
@@ -0,0 +1,17 @@
1
+ import type { MetadataBuilder } from "@/engine/metadata/interface";
2
+ import type { CampaignWithParams } from "@/modules/v4/campaign/campaign.model";
3
+ import type { ProtocolId } from "@/modules/v4/protocol/protocol.model";
4
+ import type { Erc20LikeCampaignEnum } from "../..";
5
+ export declare class TermMaxMetadata implements MetadataBuilder<Erc20LikeCampaignEnum> {
6
+ build(campaign: Omit<CampaignWithParams<Erc20LikeCampaignEnum>, "manualOverrides">): Promise<{
7
+ action: "HOLD";
8
+ mainProtocol: ProtocolId;
9
+ name: string;
10
+ tokens: {
11
+ chainId: number;
12
+ address: any;
13
+ }[];
14
+ depositUrl: string;
15
+ explorerAddress: any;
16
+ }>;
17
+ }
@@ -0,0 +1,24 @@
1
+ import { OpportunityAction } from "@db/api";
2
+ import { ChainInteractionService, TermMaxFT__factory, TermMaxMarket__factory, TokenInteractionService } from "@sdk";
3
+ export class TermMaxMetadata {
4
+ async build(campaign) {
5
+ const { params, computeChainId } = campaign;
6
+ const { targetToken } = params;
7
+ const marketAddress = await TermMaxFT__factory.connect(targetToken, ChainInteractionService(computeChainId).provider()).marketAddr();
8
+ const tokens = await TermMaxMarket__factory.connect(marketAddress, ChainInteractionService(computeChainId).provider()).tokens();
9
+ const underlyingToken = tokens[4];
10
+ const underlyingTokenSymbol = await TokenInteractionService(computeChainId).symbol(underlyingToken);
11
+ const action = OpportunityAction.HOLD;
12
+ return {
13
+ action,
14
+ mainProtocol: "termmax",
15
+ name: `Provide ${underlyingTokenSymbol} on TermMax`,
16
+ tokens: [
17
+ { chainId: computeChainId, address: targetToken },
18
+ { chainId: computeChainId, address: underlyingToken },
19
+ ],
20
+ depositUrl: ``,
21
+ explorerAddress: params.targetToken,
22
+ };
23
+ }
24
+ }
@@ -0,0 +1,6 @@
1
+ import type { Erc20LikeCampaignEnum } from "@/engine/implementations/Erc20/subTypes";
2
+ import type { TVLBuilder, TVLData } from "@/engine/tvl/interface";
3
+ import { type CampaignParameters, type MerklChainId } from "@sdk";
4
+ export declare class TermMaxTVLBuilder implements TVLBuilder<Erc20LikeCampaignEnum> {
5
+ build(computeChainId: MerklChainId, campaigns: CampaignParameters<Erc20LikeCampaignEnum>[]): Promise<TVLData<any>>;
6
+ }
@@ -0,0 +1,69 @@
1
+ import { TokenService } from "@/modules/v4/token/token.service";
2
+ import { TvlType } from "@db/api";
3
+ import { AaveInterface, ChainInteractionService, ERC20Interface, TermMaxFTInterface, TermMaxMarketInterface, bigIntToNumber, } from "@sdk";
4
+ export class TermMaxTVLBuilder {
5
+ async build(computeChainId, campaigns) {
6
+ const tvls = [];
7
+ const firstRound = await ChainInteractionService(computeChainId).fetchAndDecodeObject(campaigns.flatMap(campaign => {
8
+ const { campaignId, campaignParameters } = campaign;
9
+ const { targetToken } = campaignParameters;
10
+ return [
11
+ {
12
+ callData: TermMaxFTInterface.encodeFunctionData("marketAddr"),
13
+ target: targetToken,
14
+ key: `${campaignId}_marketAddr`,
15
+ decoder: (data) => AaveInterface.decodeFunctionResult("UNDERLYING_ASSET_ADDRESS", data)[0],
16
+ },
17
+ ];
18
+ }));
19
+ const secondRound = await ChainInteractionService(computeChainId).fetchAndDecodeObject(campaigns.flatMap(campaign => {
20
+ const { campaignId, campaignParameters } = campaign;
21
+ return [
22
+ {
23
+ callData: TermMaxMarketInterface.encodeFunctionData("tokens"),
24
+ target: firstRound[`${campaignId}_marketAddr`],
25
+ key: `${campaignId}_underlyingToken`,
26
+ decoder: (data) => TermMaxMarketInterface.decodeFunctionResult("tokens", data)[4],
27
+ },
28
+ ];
29
+ }));
30
+ const thirdRound = await ChainInteractionService(computeChainId).fetchAndDecodeObject(campaigns.flatMap(campaign => {
31
+ const { campaignId, campaignParameters } = campaign;
32
+ return [
33
+ {
34
+ callData: ERC20Interface.encodeFunctionData("balanceOf", [
35
+ firstRound[`${campaignId}_marketAddr`],
36
+ ]),
37
+ target: secondRound[`${campaignId}_underlyingToken`],
38
+ key: `${campaignId}_totalSupplyUnderlyingToken`,
39
+ decoder: (data) => ERC20Interface.decodeFunctionResult("balanceOf", data)[0],
40
+ },
41
+ ];
42
+ }));
43
+ for (const campaign of campaigns) {
44
+ const { campaignId } = campaign;
45
+ const underlyingTokenAddress = secondRound[`${campaignId}_underlyingToken`];
46
+ const underlyingTokenSupply = thirdRound[`${campaignId}_totalSupplyUnderlyingToken`];
47
+ // We don't fetch token data everytime, we use the database and the associated service
48
+ const underlyingToken = await TokenService.findUniqueFillOrThrow({
49
+ chainId: computeChainId,
50
+ address: underlyingTokenAddress,
51
+ });
52
+ if (!underlyingToken.decimals || !underlyingToken.price) {
53
+ throw new Error(`Missing decimals or price for token ${underlyingToken.address}`);
54
+ }
55
+ tvls.push({
56
+ campaign,
57
+ tvl: bigIntToNumber(underlyingTokenSupply, underlyingToken.decimals) * underlyingToken.price,
58
+ tvlBreakdown: [
59
+ {
60
+ identifier: underlyingToken.id,
61
+ type: TvlType.TOKEN,
62
+ value: bigIntToNumber(underlyingTokenSupply, underlyingToken.decimals),
63
+ },
64
+ ],
65
+ });
66
+ }
67
+ return tvls;
68
+ }
69
+ }
@@ -107,5 +107,6 @@ export declare enum Erc20SubType {
107
107
  sake_lending = "sake_lending",
108
108
  gamma = "gamma",
109
109
  stability = "stability",
110
- lendle_vaults = "lendle_vaults"
110
+ lendle_vaults = "lendle_vaults",
111
+ termmax = "termmax"
111
112
  }
@@ -107,4 +107,5 @@ export var Erc20SubType;
107
107
  Erc20SubType["gamma"] = "gamma";
108
108
  Erc20SubType["stability"] = "stability";
109
109
  Erc20SubType["lendle_vaults"] = "lendle_vaults";
110
+ Erc20SubType["termmax"] = "termmax";
110
111
  })(Erc20SubType || (Erc20SubType = {}));
@@ -10,13 +10,13 @@ export declare class JsonAirdropMetadata implements MetadataBuilder<campaignType
10
10
  chainId: number;
11
11
  address: string;
12
12
  }[];
13
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
13
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
14
14
  depositUrl?: undefined;
15
15
  } | {
16
16
  action: "DROP";
17
17
  name: string;
18
18
  tokens: never[];
19
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
19
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
20
20
  depositUrl: any;
21
21
  }>;
22
22
  static generateUrl(_computeChainId: ChainId, params: CampaignParameters<campaignType>["campaignParameters"]): any;
@@ -1,13 +1,18 @@
1
1
  import { computeLockerAmountFromMostRecentStateSave } from "@/engine/tvl/logStates";
2
+ import { getOnlyUserBalance } from "@/libs/tokens/balances";
2
3
  import { TokenService } from "@/modules/v4/token/token.service";
3
- import { Campaign as CampaignType } from "@sdk";
4
+ import { BN2Number, Campaign as CampaignType } from "@sdk";
4
5
  export class LockerTVLBuilder {
5
6
  async build(computeChainId, campaigns) {
6
7
  const tvls = [];
7
8
  for (const campaign of campaigns) {
8
- const lockedAmount = (await computeLockerAmountFromMostRecentStateSave(computeChainId, CampaignType.LOCKER, campaign)).lockedAmount;
9
+ let lockedAmount = (await computeLockerAmountFromMostRecentStateSave(computeChainId, CampaignType.LOCKER, campaign)).lockedAmount;
9
10
  let tvl = 1;
10
11
  if (campaign.campaignParameters.lockerContract === "0x48e8dE138C246c14248C94d2D616a2F9eb4590D2") {
12
+ if (lockedAmount === 0)
13
+ lockedAmount = BN2Number((await getOnlyUserBalance(computeChainId, "0x48e8dE138C246c14248C94d2D616a2F9eb4590D2", [
14
+ "0x282A69142bac47855C3fbE1693FcC4bA3B4d5Ed6",
15
+ ]))["0x282A69142bac47855C3fbE1693FcC4bA3B4d5Ed6"].balance);
11
16
  tvl = lockedAmount * (await TokenService.getPrice({ address: "0x8A5A5DE9db5770123Ff2145F59e9F20047f0A8EC" }));
12
17
  tvls.push({
13
18
  campaign: campaign,
@@ -53,7 +53,6 @@ const map = {
53
53
  [Campaign.VEST]: new VestMetadata(),
54
54
  [Campaign.ERC20LOGPROCESSOR]: new Erc20Metadata(),
55
55
  [Campaign.ERC20REBASELOGPROCESSOR]: new Erc20Metadata(),
56
- [Campaign.ERC20TRANSFERS]: new DefaultMetadata(), // TODO
57
56
  [Campaign.M0]: new DefaultMetadata(), // TODO
58
57
  [Campaign.MORPHOSUPPLY]: new DefaultMetadata(), // TODO
59
58
  [Campaign.SYNCSWAP_VAULT]: new DefaultMetadata(), // TODO
@@ -360,7 +360,7 @@ declare const app: Elysia<"", false, {
360
360
  } & {
361
361
  price?: number | null | undefined;
362
362
  })[];
363
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
363
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
364
364
  description: string;
365
365
  howToSteps: string[];
366
366
  depositUrl: string | undefined;
@@ -453,7 +453,7 @@ declare const app: Elysia<"", false, {
453
453
  } & {
454
454
  price?: number | null | undefined;
455
455
  })[];
456
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
456
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
457
457
  description: string;
458
458
  howToSteps: string[];
459
459
  depositUrl: string | undefined;
@@ -596,6 +596,8 @@ declare const app: Elysia<"", false, {
596
596
  };
597
597
  createdAt: string;
598
598
  description: string | undefined;
599
+ parentCampaignId: string | undefined;
600
+ rootCampaignId: string | undefined;
599
601
  Opportunity: {
600
602
  status: import("@db/api").$Enums.Status;
601
603
  type: string;
@@ -1044,6 +1046,8 @@ declare const app: Elysia<"", false, {
1044
1046
  creatorId?: string | null | undefined;
1045
1047
  address: string;
1046
1048
  } | undefined;
1049
+ rootCampaignId?: string | undefined;
1050
+ parentCampaignId?: string | undefined;
1047
1051
  campaignStatus?: {
1048
1052
  error?: string | undefined;
1049
1053
  details?: any;
@@ -1216,6 +1220,8 @@ declare const app: Elysia<"", false, {
1216
1220
  creatorId?: string | null | undefined;
1217
1221
  address: string;
1218
1222
  } | undefined;
1223
+ rootCampaignId?: string | undefined;
1224
+ parentCampaignId?: string | undefined;
1219
1225
  campaignStatus?: {
1220
1226
  error?: string | undefined;
1221
1227
  details?: any;
@@ -1454,6 +1460,8 @@ declare const app: Elysia<"", false, {
1454
1460
  creatorAddress: string;
1455
1461
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
1456
1462
  createdAt: Date;
1463
+ rootCampaignId: string | null;
1464
+ parentCampaignId: string | null;
1457
1465
  } | {
1458
1466
  Tokens: {
1459
1467
  symbol: string;
@@ -1521,7 +1529,7 @@ declare const app: Elysia<"", false, {
1521
1529
  } & {
1522
1530
  price?: number | null | undefined;
1523
1531
  })[];
1524
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
1532
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
1525
1533
  description: string;
1526
1534
  howToSteps: string[];
1527
1535
  depositUrl: string | undefined;
@@ -1617,6 +1625,8 @@ declare const app: Elysia<"", false, {
1617
1625
  creatorAddress: string;
1618
1626
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
1619
1627
  createdAt: Date;
1628
+ rootCampaignId: string | null;
1629
+ parentCampaignId: string | null;
1620
1630
  };
1621
1631
  };
1622
1632
  };
@@ -1716,6 +1726,8 @@ declare const app: Elysia<"", false, {
1716
1726
  };
1717
1727
  createdAt: string;
1718
1728
  description: string | undefined;
1729
+ parentCampaignId: string | undefined;
1730
+ rootCampaignId: string | undefined;
1719
1731
  Opportunity: {
1720
1732
  status: import("@db/api").$Enums.Status;
1721
1733
  type: string;
@@ -1806,6 +1818,8 @@ declare const app: Elysia<"", false, {
1806
1818
  };
1807
1819
  createdAt: string;
1808
1820
  description: string | undefined;
1821
+ parentCampaignId: string | undefined;
1822
+ rootCampaignId: string | undefined;
1809
1823
  Opportunity: {
1810
1824
  status: import("@db/api").$Enums.Status;
1811
1825
  type: string;
@@ -2022,6 +2036,8 @@ declare const app: Elysia<"", false, {
2022
2036
  };
2023
2037
  createdAt: string;
2024
2038
  description: string | undefined;
2039
+ parentCampaignId: string | undefined;
2040
+ rootCampaignId: string | undefined;
2025
2041
  Opportunity: {
2026
2042
  status: import("@db/api").$Enums.Status;
2027
2043
  type: string;
@@ -2382,6 +2398,8 @@ declare const app: Elysia<"", false, {
2382
2398
  creatorAddress: string;
2383
2399
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
2384
2400
  createdAt: Date;
2401
+ rootCampaignId: string | null;
2402
+ parentCampaignId: string | null;
2385
2403
  } | {
2386
2404
  Tokens: {
2387
2405
  symbol: string;
@@ -2449,7 +2467,7 @@ declare const app: Elysia<"", false, {
2449
2467
  } & {
2450
2468
  price?: number | null | undefined;
2451
2469
  })[];
2452
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
2470
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
2453
2471
  description: string;
2454
2472
  howToSteps: string[];
2455
2473
  depositUrl: string | undefined;
@@ -2492,6 +2510,8 @@ declare const app: Elysia<"", false, {
2492
2510
  creatorAddress: string;
2493
2511
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
2494
2512
  createdAt: Date;
2513
+ rootCampaignId: string | null;
2514
+ parentCampaignId: string | null;
2495
2515
  } | {
2496
2516
  Tokens: {
2497
2517
  symbol: string;
@@ -2559,7 +2579,7 @@ declare const app: Elysia<"", false, {
2559
2579
  } & {
2560
2580
  price?: number | null | undefined;
2561
2581
  })[];
2562
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
2582
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
2563
2583
  description: string;
2564
2584
  howToSteps: string[];
2565
2585
  depositUrl: string | undefined;
@@ -4106,6 +4126,7 @@ declare const app: Elysia<"", false, {
4106
4126
  };
4107
4127
  breakdowns: {
4108
4128
  campaignId: string;
4129
+ subCampaignId: string | undefined;
4109
4130
  opportunity: {
4110
4131
  Chain: {
4111
4132
  name: string;
@@ -4231,6 +4252,7 @@ declare const app: Elysia<"", false, {
4231
4252
  };
4232
4253
  breakdowns: {
4233
4254
  campaignId: string;
4255
+ subCampaignId: string | undefined;
4234
4256
  opportunity: {
4235
4257
  Chain: {
4236
4258
  name: string;
@@ -4303,6 +4325,7 @@ declare const app: Elysia<"", false, {
4303
4325
  }, "breakdowns"> & {
4304
4326
  breakdowns: {
4305
4327
  campaignId: string;
4328
+ subCampaignId: string | undefined;
4306
4329
  reason: string;
4307
4330
  pending: string;
4308
4331
  amount: string;
@@ -55,6 +55,8 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
55
55
  creatorAddress: string;
56
56
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
57
57
  createdAt: Date;
58
+ rootCampaignId: string | null;
59
+ parentCampaignId: string | null;
58
60
  } | {
59
61
  Tokens: {
60
62
  symbol: string;
@@ -122,7 +124,7 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
122
124
  } & {
123
125
  price?: number | null | undefined;
124
126
  })[];
125
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
127
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
126
128
  description: string;
127
129
  howToSteps: string[];
128
130
  depositUrl: string | undefined;
@@ -218,6 +220,8 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
218
220
  creatorAddress: string;
219
221
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
220
222
  createdAt: Date;
223
+ rootCampaignId: string | null;
224
+ parentCampaignId: string | null;
221
225
  };
222
226
  };
223
227
  };
@@ -317,6 +321,8 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
317
321
  };
318
322
  createdAt: string;
319
323
  description: string | undefined;
324
+ parentCampaignId: string | undefined;
325
+ rootCampaignId: string | undefined;
320
326
  Opportunity: {
321
327
  status: import("@db/api").$Enums.Status;
322
328
  type: string;
@@ -407,6 +413,8 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
407
413
  };
408
414
  createdAt: string;
409
415
  description: string | undefined;
416
+ parentCampaignId: string | undefined;
417
+ rootCampaignId: string | undefined;
410
418
  Opportunity: {
411
419
  status: import("@db/api").$Enums.Status;
412
420
  type: string;
@@ -623,6 +631,8 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
623
631
  };
624
632
  createdAt: string;
625
633
  description: string | undefined;
634
+ parentCampaignId: string | undefined;
635
+ rootCampaignId: string | undefined;
626
636
  Opportunity: {
627
637
  status: import("@db/api").$Enums.Status;
628
638
  type: string;
@@ -22,6 +22,8 @@ export type Campaign = Resource<"Campaign", "opportunityId" | "rewardTokenId", {
22
22
  endTimestamp: number;
23
23
  startTimestamp: number;
24
24
  createdAt: string;
25
+ rootCampaignId?: string;
26
+ parentCampaignId?: string;
25
27
  }>;
26
28
  export type CampaignWithParams<C extends CampaignType = CampaignType> = Campaign["model"] & {
27
29
  params: CampaignParameters<C>["campaignParameters"];
@@ -84,6 +86,8 @@ export declare const CampaignResourceDto: import("@sinclair/typebox").TObject<{
84
86
  details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
85
87
  }>>;
86
88
  createdAt: import("@sinclair/typebox").TString;
89
+ rootCampaignId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
90
+ parentCampaignId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
87
91
  }>;
88
92
  export declare const CampaignConfigMinimal: import("@sinclair/typebox").TObject<{
89
93
  computeChainId: import("@sinclair/typebox").TNumber;
@@ -34,6 +34,8 @@ export const CampaignResourceDto = t.Object({
34
34
  distributionChain: t.Optional(ChainResourceDto),
35
35
  campaignStatus: t.Optional(CampaignStatusResourceDto),
36
36
  createdAt: t.String({ format: "date" }),
37
+ rootCampaignId: t.Optional(t.String()),
38
+ parentCampaignId: t.Optional(t.String()),
37
39
  });
38
40
  export const CampaignConfigMinimal = t.Object({
39
41
  computeChainId: t.Number(),
@@ -340,6 +340,8 @@ export declare abstract class CampaignRepository {
340
340
  creatorAddress: string;
341
341
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
342
342
  createdAt: Date;
343
+ rootCampaignId: string | null;
344
+ parentCampaignId: string | null;
343
345
  })[]>;
344
346
  /**
345
347
  * Retrieves all past campaigns from the database.
@@ -391,6 +393,8 @@ export declare abstract class CampaignRepository {
391
393
  creatorAddress: string;
392
394
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
393
395
  createdAt: Date;
396
+ rootCampaignId: string | null;
397
+ parentCampaignId: string | null;
394
398
  })[]>;
395
399
  /**
396
400
  * Retrieves all live campaigns from the database.
@@ -459,6 +463,8 @@ export declare abstract class CampaignRepository {
459
463
  creatorAddress: string;
460
464
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
461
465
  createdAt: Date;
466
+ rootCampaignId: string | null;
467
+ parentCampaignId: string | null;
462
468
  })[]>;
463
469
  static countLives(query?: {
464
470
  distributionChainId?: number;
@@ -502,6 +508,8 @@ export declare abstract class CampaignRepository {
502
508
  creatorAddress: string;
503
509
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
504
510
  createdAt: Date;
511
+ rootCampaignId: string | null;
512
+ parentCampaignId: string | null;
505
513
  } | undefined>;
506
514
  /**
507
515
  * Retrieves a campaign from the engine database by its chain and campaign id.
@@ -582,6 +590,8 @@ export declare abstract class CampaignRepository {
582
590
  creatorAddress: string;
583
591
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
584
592
  createdAt: Date;
593
+ rootCampaignId: string | null;
594
+ parentCampaignId: string | null;
585
595
  }) | null>;
586
596
  static findUniqueOrThrow(id: string, withOpportunity: boolean): Promise<{
587
597
  ComputeChain: {
@@ -661,6 +671,8 @@ export declare abstract class CampaignRepository {
661
671
  creatorAddress: string;
662
672
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
663
673
  createdAt: Date;
674
+ rootCampaignId: string | null;
675
+ parentCampaignId: string | null;
664
676
  }>;
665
677
  static findCampaignsToProcess(distributionChainId: ChainId): Promise<{
666
678
  campaignId: string;
@@ -749,6 +761,8 @@ export declare abstract class CampaignRepository {
749
761
  creatorAddress: string;
750
762
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
751
763
  createdAt: Date;
764
+ rootCampaignId: string | null;
765
+ parentCampaignId: string | null;
752
766
  })[]>;
753
767
  static countMany(query: GetCampaignQueryModel): Promise<number>;
754
768
  static findChains(): Promise<Record<string, ChainId>>;
@@ -774,6 +788,8 @@ export declare abstract class CampaignRepository {
774
788
  creatorAddress: string;
775
789
  manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
776
790
  createdAt: Date;
791
+ rootCampaignId: string | null;
792
+ parentCampaignId: string | null;
777
793
  }>;
778
794
  static getTvlRecords(campaign: {
779
795
  opportunityId: string;