@merkl/api 0.18.13 → 0.19.0

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 (56) hide show
  1. package/dist/src/backgroundJobs/index.js +0 -4
  2. package/dist/src/cache/index.d.ts +9 -0
  3. package/dist/src/cache/index.js +12 -3
  4. package/dist/src/eden/index.d.ts +25 -0
  5. package/dist/src/index.d.ts +5 -0
  6. package/dist/src/jobs/set-dungeon-keeper.js +82 -0
  7. package/dist/src/jobs/update-dynamic-data.d.ts +1 -0
  8. package/dist/src/jobs/update-uniswap-v4-pools.d.ts +1 -0
  9. package/dist/src/jobs/update-uniswap-v4-pools.js +14 -0
  10. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/implementations/xU308Processor.d.ts +2 -2
  11. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/implementations/xU308Processor.js +9 -9
  12. package/dist/src/libs/staticCampaigns.d.ts +5 -0
  13. package/dist/src/libs/staticCampaigns.js +5 -0
  14. package/dist/src/modules/v4/claims/claims.service.js +1 -2
  15. package/dist/src/modules/v4/enso/enso.service.js +2 -2
  16. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +5 -0
  17. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +1 -0
  18. package/dist/src/modules/v4/opportunity/opportunity.model.js +3 -0
  19. package/dist/src/modules/v4/opportunity/opportunity.repository.js +8 -2
  20. package/dist/src/modules/v4/programPayload/programPayload.repository.js +3 -9
  21. package/dist/src/modules/v4/router.d.ts +5 -0
  22. package/dist/src/modules/v4/status/status.service.js +4 -2
  23. package/dist/src/modules/v4/token/token.service.js +10 -1
  24. package/dist/src/modules/v4/uniswapV4/uniswapV4.model.d.ts +9 -0
  25. package/dist/src/modules/v4/uniswapV4/uniswapV4.repository.d.ts +11 -0
  26. package/dist/src/modules/v4/uniswapV4/uniswapV4.repository.js +10 -0
  27. package/dist/src/modules/v4/uniswapV4/uniswapV4.service.d.ts +2 -0
  28. package/dist/src/modules/v4/uniswapV4/uniswapV4.service.js +175 -1
  29. package/dist/src/utils/prices/priceService.js +1 -1
  30. package/dist/src/utils/prices/services/erc4626Service.js +1 -1
  31. package/dist/src/utils/throw.d.ts +18 -1
  32. package/dist/src/utils/throw.js +17 -0
  33. package/dist/tsconfig.package.tsbuildinfo +1 -1
  34. package/package.json +10 -8
  35. package/dist/src/modules/v4/dungeonKeeper/dungeonKeeper.controller.d.ts +0 -34
  36. package/dist/src/modules/v4/dungeonKeeper/dungeonKeeper.controller.js +0 -8
  37. package/dist/src/modules/v4/dungeonKeeper/dungeonKeeper.model.d.ts +0 -0
  38. package/dist/src/modules/v4/dungeonKeeper/dungeonKeeper.model.js +0 -1
  39. package/dist/src/modules/v4/dungeonKeeper/dungeonKeeper.repository.d.ts +0 -5
  40. package/dist/src/modules/v4/dungeonKeeper/dungeonKeeper.repository.js +0 -71
  41. package/dist/src/modules/v4/dungeonKeeper/dungeonKeeper.service.d.ts +0 -3
  42. package/dist/src/modules/v4/dungeonKeeper/dungeonKeeper.service.js +0 -15
  43. /package/dist/src/jobs/{etl/dynamic-data.d.ts → dynamic-data.d.ts} +0 -0
  44. /package/dist/src/jobs/{etl/dynamic-data.js → dynamic-data.js} +0 -0
  45. /package/dist/src/jobs/{etl/pendings.d.ts → pendings.d.ts} +0 -0
  46. /package/dist/src/jobs/{etl/pendings.js → pendings.js} +0 -0
  47. /package/dist/src/jobs/{etl/prices.d.ts → prices.d.ts} +0 -0
  48. /package/dist/src/jobs/{etl/prices.js → prices.js} +0 -0
  49. /package/dist/src/jobs/{etl/reward-breakdowns.d.ts → reward-breakdowns.d.ts} +0 -0
  50. /package/dist/src/jobs/{etl/reward-breakdowns.js → reward-breakdowns.js} +0 -0
  51. /package/dist/src/jobs/{etl/rewards.d.ts → rewards.d.ts} +0 -0
  52. /package/dist/src/jobs/{etl/rewards.js → rewards.js} +0 -0
  53. /package/dist/src/jobs/{etl/update-dynamic-data.d.ts → set-dungeon-keeper.d.ts} +0 -0
  54. /package/dist/src/jobs/{etl/update-dynamic-data.js → update-dynamic-data.js} +0 -0
  55. /package/dist/src/jobs/{etl/update-euler-vaults.d.ts → update-euler-vaults.d.ts} +0 -0
  56. /package/dist/src/jobs/{etl/update-euler-vaults.js → update-euler-vaults.js} +0 -0
package/package.json CHANGED
@@ -26,13 +26,15 @@
26
26
  "start:local": "bun scripts/start.ts",
27
27
  "sync": "bun install && git submodule update --init --recursive --remote & git submodule foreach 'bun install'",
28
28
  "test": "bun test",
29
- "start:etl:rewards": "bun run src/jobs/etl/rewards.ts",
30
- "start:etl:reward-breakdowns": "bun run src/jobs/etl/reward-breakdowns.ts",
31
- "start:etl:pendings": "bun run src/jobs/etl/pendings.ts",
32
- "update:prices": "bun run src/jobs/etl/prices.ts",
33
- "update:dynamic-data": "bun run src/jobs/etl/dynamic-data.ts",
34
- "update:euler-vaults": "bun run src/jobs/etl/update-euler-vaults",
35
- "update:dynamic-data:v4": "bun run src/jobs/etl/update-dynamic-data.ts",
29
+ "start:etl:rewards": "bun run src/jobs/rewards.ts",
30
+ "start:etl:reward-breakdowns": "bun run src/jobs/reward-breakdowns.ts",
31
+ "start:etl:pendings": "bun run src/jobs/pendings.ts",
32
+ "update:prices": "bun run src/jobs/prices.ts",
33
+ "update:dynamic-data": "bun run src/jobs/dynamic-data.ts",
34
+ "update:euler-vaults": "bun run src/jobs/update-euler-vaults",
35
+ "update:dynamic-data:v4": "bun run src/jobs/update-dynamic-data.ts",
36
+ "update:uniswap-v4-pools": "bun run src/jobs/update-uniswap-v4-pools.ts",
37
+ "set:dungeon-keeper": "bun run src/jobs/set-dungeon-keeper.ts",
36
38
  "use:packageReadme": "mv 'README.md' 'git.README.md' && mv 'README.package.md' 'README.md'",
37
39
  "use:gitReadme": "mv 'README.md' 'README.package.md' && mv 'git.README.md' 'README.md'",
38
40
  "prepublishOnly": "bun run use:packageReadme",
@@ -100,5 +102,5 @@
100
102
  "access": "public",
101
103
  "registry": "https://registry.npmjs.org/"
102
104
  },
103
- "version": "v0.18.13"
105
+ "version": "v0.19.0"
104
106
  }
@@ -1,34 +0,0 @@
1
- import Elysia from "elysia";
2
- export declare const DungeonKeeperController: Elysia<"/dungeonkeeper", false, {
3
- decorator: {};
4
- store: {};
5
- derive: {};
6
- resolve: {};
7
- }, {
8
- type: {};
9
- error: {};
10
- }, {
11
- schema: {};
12
- macro: {};
13
- macroFn: {};
14
- }, {
15
- dungeonkeeper: {
16
- get: {
17
- body: unknown;
18
- params: {};
19
- query: unknown;
20
- headers: unknown;
21
- response: {
22
- 200: void;
23
- };
24
- };
25
- };
26
- }, {
27
- derive: {};
28
- resolve: {};
29
- schema: {};
30
- }, {
31
- derive: {};
32
- resolve: {};
33
- schema: {};
34
- }>;
@@ -1,8 +0,0 @@
1
- import Elysia from "elysia";
2
- import { DungeonKeeperService } from "./dungeonKeeper.service";
3
- // ─── DungeonKeeper Controller ──────────────────────────────────────────────────
4
- export const DungeonKeeperController = new Elysia({ prefix: "/dungeonkeeper", detail: { hide: true } })
5
- // ─── Assign the daily DungeonKeeper ──────────────────────────────────────────
6
- .get("", async () => await DungeonKeeperService.create(), {
7
- detail: { hide: true },
8
- });
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,5 +0,0 @@
1
- import type { PartialDatabaseObjectResponse } from "@notionhq/client/build/src/api-endpoints";
2
- export declare abstract class DungeonKeeperRepository {
3
- static fetchEntriesForDateWithTag(databaseId: string, date: string, tag: string): Promise<PartialDatabaseObjectResponse[]>;
4
- static assignRole(notionId: string): Promise<void>;
5
- }
@@ -1,71 +0,0 @@
1
- import { Client } from "@notionhq/client";
2
- import { Client as DiscordClient, GatewayIntentBits } from "discord.js";
3
- const notion = new Client({ auth: process.env.NOTION_TOKEN });
4
- const discord = new DiscordClient({ intents: [GatewayIntentBits.GuildMembers] });
5
- const NOTION_EMAIL_TO_DISCORD_ID = {
6
- picodes: "thepicodes",
7
- hugo: "ugolxt",
8
- alex: "wombomango",
9
- nileco: ".nileco",
10
- thibaudb: ".greedythib",
11
- gnervo: "gs8nrv",
12
- vincent: "vince_merkl",
13
- hicham: "lamicham_93854",
14
- pveyrat: "sogipec",
15
- baptiste: "baptistg",
16
- clement: "clmntngl",
17
- };
18
- export class DungeonKeeperRepository {
19
- static async fetchEntriesForDateWithTag(databaseId, date, tag) {
20
- const response = await notion.databases.query({
21
- database_id: databaseId,
22
- filter: {
23
- and: [
24
- {
25
- property: "Date",
26
- date: {
27
- equals: date,
28
- },
29
- },
30
- {
31
- property: "Database",
32
- select: {
33
- equals: tag,
34
- },
35
- },
36
- ],
37
- },
38
- });
39
- return response.results;
40
- }
41
- static async assignRole(notionId) {
42
- const discordId = NOTION_EMAIL_TO_DISCORD_ID[notionId];
43
- if (!discordId)
44
- throw "Discord ID not found.";
45
- await discord.login(process.env.DISCORD_TOKEN);
46
- const guild = await discord.guilds.cache.get("862708408711643136");
47
- if (!guild)
48
- throw "Guild not found.";
49
- const roles = await guild.roles.fetch();
50
- const teamRole = roles.find(r => r.name === "Team");
51
- const dkRole = roles.find(r => r.name === "Dungeon Keeper");
52
- if (!teamRole || !dkRole)
53
- throw "Roles not found.";
54
- const users = await guild.members.fetch();
55
- for (const [_id, dkUser] of users.filter(member => member.roles.cache.has(dkRole.id))) {
56
- await dkUser.roles.remove(dkRole);
57
- }
58
- const user = users
59
- .filter(member => member.roles.cache.has(teamRole.id))
60
- .find(member => member.user.tag === discordId);
61
- if (!user)
62
- throw "User not found";
63
- await user.roles.add(dkRole);
64
- const channel = await discord.channels.fetch("1328383110957633630");
65
- if (!channel)
66
- throw "Channel not found";
67
- if (channel.isSendable()) {
68
- await channel.send(`Lucky you <@${user.id}>! You're the <@&${dkRole.id}> today!`);
69
- }
70
- }
71
- }
@@ -1,3 +0,0 @@
1
- export declare abstract class DungeonKeeperService {
2
- static create(): Promise<void>;
3
- }
@@ -1,15 +0,0 @@
1
- import moment from "moment";
2
- import { DungeonKeeperRepository } from "./dungeonKeeper.repository";
3
- export class DungeonKeeperService {
4
- static async create() {
5
- const entries = await DungeonKeeperRepository.fetchEntriesForDateWithTag("8546f6a84641406bafb2358762281e81", moment().format("YYYY-MM-DD"), "Dungeon Keeper");
6
- const user = entries?.[0];
7
- if (!user) {
8
- throw "No dk found for today";
9
- }
10
- const notionId = (user?.properties["Qui ?"]).people[0].person.email
11
- .replace("@angle.money", "")
12
- .replace("@merkl.xyz", "");
13
- await DungeonKeeperRepository.assignRole(notionId);
14
- }
15
- }
File without changes
File without changes
File without changes
File without changes