@the-situation/indexer 0.17.0 → 0.18.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 (133) hide show
  1. package/README.md +43 -4
  2. package/dist/aggregator/cohort.d.ts +30 -0
  3. package/dist/aggregator/cohort.d.ts.map +1 -0
  4. package/dist/aggregator/cohort.js +153 -0
  5. package/dist/aggregator/cohort.js.map +1 -0
  6. package/dist/aggregator/daily.d.ts +71 -0
  7. package/dist/aggregator/daily.d.ts.map +1 -0
  8. package/dist/aggregator/daily.js +249 -0
  9. package/dist/aggregator/daily.js.map +1 -0
  10. package/dist/aggregator/domains.d.ts +20 -0
  11. package/dist/aggregator/domains.d.ts.map +1 -0
  12. package/dist/aggregator/domains.js +38 -0
  13. package/dist/aggregator/domains.js.map +1 -0
  14. package/dist/aggregator/index.d.ts +31 -0
  15. package/dist/aggregator/index.d.ts.map +1 -0
  16. package/dist/aggregator/index.js +100 -0
  17. package/dist/aggregator/index.js.map +1 -0
  18. package/dist/aggregator/lifetime.d.ts +52 -0
  19. package/dist/aggregator/lifetime.d.ts.map +1 -0
  20. package/dist/aggregator/lifetime.js +222 -0
  21. package/dist/aggregator/lifetime.js.map +1 -0
  22. package/dist/aggregator/roi.d.ts +42 -0
  23. package/dist/aggregator/roi.d.ts.map +1 -0
  24. package/dist/aggregator/roi.js +153 -0
  25. package/dist/aggregator/roi.js.map +1 -0
  26. package/dist/aggregator/sources.d.ts +59 -0
  27. package/dist/aggregator/sources.d.ts.map +1 -0
  28. package/dist/aggregator/sources.js +53 -0
  29. package/dist/aggregator/sources.js.map +1 -0
  30. package/dist/aggregator/writers.d.ts +22 -0
  31. package/dist/aggregator/writers.d.ts.map +1 -0
  32. package/dist/aggregator/writers.js +147 -0
  33. package/dist/aggregator/writers.js.map +1 -0
  34. package/dist/api/app.d.ts +177 -13
  35. package/dist/api/app.d.ts.map +1 -1
  36. package/dist/api/app.js +4 -3
  37. package/dist/api/app.js.map +1 -1
  38. package/dist/api/routes/admin-subscriptions.d.ts +11 -11
  39. package/dist/api/routes/analytics.d.ts +205 -0
  40. package/dist/api/routes/analytics.d.ts.map +1 -0
  41. package/dist/api/routes/analytics.js +122 -0
  42. package/dist/api/routes/analytics.js.map +1 -0
  43. package/dist/api/routes/health.d.ts.map +1 -1
  44. package/dist/api/routes/health.js +2 -0
  45. package/dist/api/routes/health.js.map +1 -1
  46. package/dist/api/routes/index.d.ts +1 -0
  47. package/dist/api/routes/index.d.ts.map +1 -1
  48. package/dist/api/routes/index.js +1 -0
  49. package/dist/api/routes/index.js.map +1 -1
  50. package/dist/api/routes/rankings.d.ts +17 -3
  51. package/dist/api/routes/rankings.d.ts.map +1 -1
  52. package/dist/api/routes/rankings.js +44 -5
  53. package/dist/api/routes/rankings.js.map +1 -1
  54. package/dist/api/routes/trader-stats.d.ts +11 -2
  55. package/dist/api/routes/trader-stats.d.ts.map +1 -1
  56. package/dist/api/routes/trader-stats.js +72 -2
  57. package/dist/api/routes/trader-stats.js.map +1 -1
  58. package/dist/client/IndexerClient.d.ts +30 -1
  59. package/dist/client/IndexerClient.d.ts.map +1 -1
  60. package/dist/client/IndexerClient.js.map +1 -1
  61. package/dist/client/IndexerClientLive.d.ts.map +1 -1
  62. package/dist/client/IndexerClientLive.js +50 -1
  63. package/dist/client/IndexerClientLive.js.map +1 -1
  64. package/dist/client/convenience.d.ts +9 -2
  65. package/dist/client/convenience.d.ts.map +1 -1
  66. package/dist/client/convenience.js +9 -1
  67. package/dist/client/convenience.js.map +1 -1
  68. package/dist/client/index.d.ts +3 -2
  69. package/dist/client/index.d.ts.map +1 -1
  70. package/dist/client/index.js +1 -1
  71. package/dist/client/index.js.map +1 -1
  72. package/dist/config.d.ts +17 -1
  73. package/dist/config.d.ts.map +1 -1
  74. package/dist/config.js +39 -3
  75. package/dist/config.js.map +1 -1
  76. package/dist/etl/event-indexer.d.ts +1 -1
  77. package/dist/etl/lp-position-refresher.d.ts +2 -1
  78. package/dist/etl/lp-position-refresher.d.ts.map +1 -1
  79. package/dist/etl/lp-position-refresher.js +24 -11
  80. package/dist/etl/lp-position-refresher.js.map +1 -1
  81. package/dist/index.js +64 -8
  82. package/dist/index.js.map +1 -1
  83. package/dist/layers/ChainReaderLive.d.ts.map +1 -1
  84. package/dist/layers/ChainReaderLive.js +15 -0
  85. package/dist/layers/ChainReaderLive.js.map +1 -1
  86. package/dist/layers/VoyagerClientLive.d.ts +2 -1
  87. package/dist/layers/VoyagerClientLive.d.ts.map +1 -1
  88. package/dist/layers/VoyagerClientLive.js +89 -55
  89. package/dist/layers/VoyagerClientLive.js.map +1 -1
  90. package/dist/services/ChainReader.d.ts +10 -0
  91. package/dist/services/ChainReader.d.ts.map +1 -1
  92. package/dist/services/ChainReader.js.map +1 -1
  93. package/dist/services/VoyagerRateLimit.d.ts +11 -8
  94. package/dist/services/VoyagerRateLimit.d.ts.map +1 -1
  95. package/dist/services/VoyagerRateLimit.js +51 -26
  96. package/dist/services/VoyagerRateLimit.js.map +1 -1
  97. package/dist/types/analytics.d.ts +194 -0
  98. package/dist/types/analytics.d.ts.map +1 -0
  99. package/dist/types/analytics.js +10 -0
  100. package/dist/types/analytics.js.map +1 -0
  101. package/dist/types/api.d.ts +2 -0
  102. package/dist/types/api.d.ts.map +1 -1
  103. package/dist/types/index.d.ts +1 -0
  104. package/dist/types/index.d.ts.map +1 -1
  105. package/dist/warehouse/analytics-helpers.d.ts +36 -0
  106. package/dist/warehouse/analytics-helpers.d.ts.map +1 -0
  107. package/dist/warehouse/analytics-helpers.js +142 -0
  108. package/dist/warehouse/analytics-helpers.js.map +1 -0
  109. package/dist/warehouse/backfill.d.ts +26 -0
  110. package/dist/warehouse/backfill.d.ts.map +1 -0
  111. package/dist/warehouse/backfill.js +77 -0
  112. package/dist/warehouse/backfill.js.map +1 -0
  113. package/dist/warehouse/connection.d.ts +18 -0
  114. package/dist/warehouse/connection.d.ts.map +1 -0
  115. package/dist/warehouse/connection.js +24 -0
  116. package/dist/warehouse/connection.js.map +1 -0
  117. package/dist/warehouse/index.d.ts +14 -0
  118. package/dist/warehouse/index.d.ts.map +1 -0
  119. package/dist/warehouse/index.js +14 -0
  120. package/dist/warehouse/index.js.map +1 -0
  121. package/dist/warehouse/repositories/analytics.d.ts +61 -0
  122. package/dist/warehouse/repositories/analytics.d.ts.map +1 -0
  123. package/dist/warehouse/repositories/analytics.js +418 -0
  124. package/dist/warehouse/repositories/analytics.js.map +1 -0
  125. package/dist/warehouse/schema.d.ts +9 -0
  126. package/dist/warehouse/schema.d.ts.map +1 -0
  127. package/dist/warehouse/schema.js +219 -0
  128. package/dist/warehouse/schema.js.map +1 -0
  129. package/dist/warehouse/seed-domains.d.ts +29 -0
  130. package/dist/warehouse/seed-domains.d.ts.map +1 -0
  131. package/dist/warehouse/seed-domains.js +223 -0
  132. package/dist/warehouse/seed-domains.js.map +1 -0
  133. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
  import { Effect } from 'effect';
5
5
  import type { ActivityFeedQueryParams } from '../types/activity';
6
6
  import type { AdminCreateMarketBody, AdminUpdateMarketBody, EventResponse, PaginatedResponse, RankingEntry } from '../types/api';
7
- import type { EventQueryParams, RankingQueryParams } from './IndexerClient';
7
+ import type { AnalyticsLeaderboardQueryParams, CohortsQueryParams, EventQueryParams, RankingQueryParams, RoiQueryParams, TraderStatsQueryParams } from './IndexerClient';
8
8
  import { type IndexerApiError, IndexerClient } from './IndexerClient';
9
9
  export declare const checkHealth: Effect.Effect<import(".").HealthResponse, IndexerApiError, IndexerClient>;
10
10
  export declare const getMarkets: Effect.Effect<readonly import(".").MarketResponse[], IndexerApiError, IndexerClient>;
@@ -14,9 +14,16 @@ export declare const getMarketTraders: (address: string) => Effect.Effect<readon
14
14
  export declare const getMarketLPs: (address: string) => Effect.Effect<readonly import(".").LPPositionResponse[], IndexerApiError, IndexerClient>;
15
15
  export declare const getTraderPositions: (trader: string) => Effect.Effect<readonly import(".").TraderPositionResponse[], IndexerApiError, IndexerClient>;
16
16
  export declare const getTraderEvents: (trader: string, params?: EventQueryParams) => Effect.Effect<PaginatedResponse<import(".").TraderEventResponse>, IndexerApiError, IndexerClient>;
17
- export declare const getTraderStats: (trader: string) => Effect.Effect<import(".").TraderStatsResponse, IndexerApiError, IndexerClient>;
17
+ export declare const getTraderStats: (trader: string, params?: TraderStatsQueryParams) => Effect.Effect<import(".").TraderStatsResponse, IndexerApiError, IndexerClient>;
18
18
  export declare const getRankings: (params?: RankingQueryParams) => Effect.Effect<readonly RankingEntry[], IndexerApiError, IndexerClient>;
19
19
  export declare const getActivityFeed: (params?: ActivityFeedQueryParams) => Effect.Effect<PaginatedResponse<import(".").ActivityFeedItem>, IndexerApiError, IndexerClient>;
20
+ export declare const getAnalyticsOverview: Effect.Effect<import(".").AnalyticsOverviewResponse, IndexerApiError, IndexerClient>;
21
+ export declare const getAnalyticsDomains: Effect.Effect<import(".").DomainsResponse, IndexerApiError, IndexerClient>;
22
+ export declare const getAnalyticsDomain: (slug: string) => Effect.Effect<import(".").DomainDetailResponse, IndexerApiError, IndexerClient>;
23
+ export declare const getAnalyticsCohorts: (params?: CohortsQueryParams) => Effect.Effect<import(".").CohortsResponse, IndexerApiError, IndexerClient>;
24
+ export declare const getAnalyticsRoi: (params?: RoiQueryParams) => Effect.Effect<import(".").RoiResponse, IndexerApiError, IndexerClient>;
25
+ export declare const getAnalyticsLeaderboard: (params?: AnalyticsLeaderboardQueryParams) => Effect.Effect<import(".").AnalyticsLeaderboardResponse, IndexerApiError, IndexerClient>;
26
+ export declare const getTraderAnalytics: (address: string) => Effect.Effect<import(".").TraderAnalyticsResponse, IndexerApiError, IndexerClient>;
20
27
  /**
21
28
  * Auto-paginate to fetch every event for a market (useful for full time series).
22
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"convenience.d.ts","sourceRoot":"","sources":["../../src/client/convenience.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAItE,eAAO,MAAM,WAAW,2EAA6D,CAAC;AAEtF,eAAO,MAAM,UAAU,sFAAiE,CAAC;AAEzF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,8EAC6B,CAAC;AAEvE,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,EAAE,SAAS,gBAAgB,oFACU,CAAC;AAErF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,iGAC6B,CAAC;AAE9E,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,6FAC6B,CAAC;AAE1E,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,iGAC6B,CAAC;AAE/E,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,SAAS,gBAAgB,sGACU,CAAC;AAEpF,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,mFAC6B,CAAC;AAE3E,eAAO,MAAM,WAAW,GAAI,SAAS,kBAAkB,2EACgB,CAAC;AAExE,eAAO,MAAM,eAAe,GAAI,SAAS,uBAAuB,mGACW,CAAC;AAI5E;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,OAAO;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,4EAoB5E,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,SAAS,gBAAgB;;;kCAS3E,CAAC;AAIJ,eAAO,MAAM,YAAY,GAAI,MAAM,qBAAqB;;kCACc,CAAC;AAEvE,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,EAAE,MAAM,qBAAqB;;kCACM,CAAC;AAEhF,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM;;kCAC6B,CAAC;AAE1E,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,4FACoB,CAAC;AAE5F;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM;;;;;;kCAsB5C,CAAC"}
1
+ {"version":3,"file":"convenience.d.ts","sourceRoot":"","sources":["../../src/client/convenience.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,+BAA+B,EAC/B,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAItE,eAAO,MAAM,WAAW,2EAA6D,CAAC;AAEtF,eAAO,MAAM,UAAU,sFAAiE,CAAC;AAEzF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,8EAC6B,CAAC;AAEvE,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,EAAE,SAAS,gBAAgB,oFACU,CAAC;AAErF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,iGAC6B,CAAC;AAE9E,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,6FAC6B,CAAC;AAE1E,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,iGAC6B,CAAC;AAE/E,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,SAAS,gBAAgB,sGACU,CAAC;AAEpF,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,SAAS,sBAAsB,mFACI,CAAC;AAEnF,eAAO,MAAM,WAAW,GAAI,SAAS,kBAAkB,2EACgB,CAAC;AAExE,eAAO,MAAM,eAAe,GAAI,SAAS,uBAAuB,mGACW,CAAC;AAI5E,eAAO,MAAM,oBAAoB,sFAEhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,4EAE/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,oFAC6B,CAAC;AAE7E,eAAO,MAAM,mBAAmB,GAAI,SAAS,kBAAkB,+EACgB,CAAC;AAEhF,eAAO,MAAM,eAAe,GAAI,SAAS,cAAc,2EACoB,CAAC;AAE5E,eAAO,MAAM,uBAAuB,GAAI,SAAS,+BAA+B,4FACG,CAAC;AAEpF,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,uFAC6B,CAAC;AAIhF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,OAAO;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,4EAoB5E,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,SAAS,gBAAgB;;;kCAS3E,CAAC;AAIJ,eAAO,MAAM,YAAY,GAAI,MAAM,qBAAqB;;kCACc,CAAC;AAEvE,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,EAAE,MAAM,qBAAqB;;kCACM,CAAC;AAEhF,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM;;kCAC6B,CAAC;AAE1E,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,4FACoB,CAAC;AAE5F;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM;;;;;;kCAsB5C,CAAC"}
@@ -12,9 +12,17 @@ export const getMarketTraders = (address) => Effect.flatMap(IndexerClient, (clie
12
12
  export const getMarketLPs = (address) => Effect.flatMap(IndexerClient, (client) => client.getMarketLPs(address));
13
13
  export const getTraderPositions = (trader) => Effect.flatMap(IndexerClient, (client) => client.getTraderPositions(trader));
14
14
  export const getTraderEvents = (trader, params) => Effect.flatMap(IndexerClient, (client) => client.getTraderEvents(trader, params));
15
- export const getTraderStats = (trader) => Effect.flatMap(IndexerClient, (client) => client.getTraderStats(trader));
15
+ export const getTraderStats = (trader, params) => Effect.flatMap(IndexerClient, (client) => client.getTraderStats(trader, params));
16
16
  export const getRankings = (params) => Effect.flatMap(IndexerClient, (client) => client.getRankings(params));
17
17
  export const getActivityFeed = (params) => Effect.flatMap(IndexerClient, (client) => client.getActivityFeed(params));
18
+ // ── Analytics warehouse ──────────────────────────────────────────────
19
+ export const getAnalyticsOverview = Effect.flatMap(IndexerClient, (client) => client.getAnalyticsOverview());
20
+ export const getAnalyticsDomains = Effect.flatMap(IndexerClient, (client) => client.getAnalyticsDomains());
21
+ export const getAnalyticsDomain = (slug) => Effect.flatMap(IndexerClient, (client) => client.getAnalyticsDomain(slug));
22
+ export const getAnalyticsCohorts = (params) => Effect.flatMap(IndexerClient, (client) => client.getAnalyticsCohorts(params));
23
+ export const getAnalyticsRoi = (params) => Effect.flatMap(IndexerClient, (client) => client.getAnalyticsRoi(params));
24
+ export const getAnalyticsLeaderboard = (params) => Effect.flatMap(IndexerClient, (client) => client.getAnalyticsLeaderboard(params));
25
+ export const getTraderAnalytics = (address) => Effect.flatMap(IndexerClient, (client) => client.getTraderAnalytics(address));
18
26
  // ── Composed helpers ─────────────────────────────────────────────────
19
27
  /**
20
28
  * Auto-paginate to fetch every event for a market (useful for full time series).
@@ -1 +1 @@
1
- {"version":3,"file":"convenience.js","sourceRoot":"","sources":["../../src/client/convenience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convenience.js","sourceRoot":"","sources":["../../src/client/convenience.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAiBhC,OAAO,EAAwB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEtE,wEAAwE;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE,CAC3C,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,MAAyB,EAAE,EAAE,CAC5E,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE,CAClD,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE,CACnD,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,MAAyB,EAAE,EAAE,CAC3E,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,MAA+B,EAAE,EAAE,CAChF,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEnF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAA2B,EAAE,EAAE,CACzD,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAgC,EAAE,EAAE,CAClE,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5E,wEAAwE;AAExE,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAC3E,MAAM,CAAC,oBAAoB,EAAE,CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAC1E,MAAM,CAAC,mBAAmB,EAAE,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE,CACjD,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAA2B,EAAE,EAAE,CACjE,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAuB,EAAE,EAAE,CACzD,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAwC,EAAE,EAAE,CAClF,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE,CACpD,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEhF,wEAAwE;AAExE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,IAA4B,EAAE,EAAE,CAClF,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;IACvC,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC;IAEvC,MAAM,IAAI,GAAG,CACX,IAAY,EACZ,GAAoB,EACsC,EAAE,CAC5D,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EACnD,CAAC,MAAwC,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAChE,OAAO,MAAM,CAAC,OAAO,CAAC,GAA+B,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC,CACF,CAAC;IAEJ,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,MAAyB,EAAE,EAAE,CAChF,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACvC,MAAM,CAAC,GAAG,CACR;IACE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC;CAChD,EACD,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CACF,CAAC;AAEJ,uEAAuE;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAA2B,EAAE,EAAE,CAC1D,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,IAA2B,EAAE,EAAE,CAC3E,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAE,KAAc,EAAE,EAAE,CACzE,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAE5F;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE,CACjD,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACvC,MAAM,CAAC,GAAG,CACR;IACE,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC9D,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;CAC7C,EACD,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CAAC,IAAI,CACJ,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM;IACN,SAAS;IACT,KAAK;IACL,YAAY,EAAE,YAAY,CAAC,IAAI;IAC/B,OAAO,EACJ,QAAoC,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CACvD,IAAI,IAAI;CACZ,CAAC,CAAC,CACJ,CACF,CAAC"}
@@ -6,8 +6,9 @@
6
6
  export type { ActivityEventType, ActivityFeedItem, ActivityFeedQueryParams, CreateSubscriptionInput, SubscriptionFilters, SubscriptionResponse, UpdateSubscriptionInput, } from '../types/activity';
7
7
  export type { AdminCreateMarketBody, AdminUpdateMarketBody, EventResponse, HealthResponse, LPPositionResponse, MarketResponse, MarketStateResponse, MultinoulliMarketStateResponse, MultinoulliSnapshotResponse, MultinoulliSnapshotsResponse, PaginatedResponse, RankingEntry, TraderEventResponse, TraderPositionResponse, TraderStatsResponse, } from '../types/api';
8
8
  export type { MarketType } from '../types/market';
9
- export { checkHealth, createMarket, deleteMarket, getActivityFeed, getAllMarketEvents, getMarket, getMarketEvents, getMarketLPs, getMarkets, getMarketTraders, getMarketWithEvents, getMultinoulliSnapshots, getRankings, getTraderEvents, getTraderPositions, getTraderProfile, getTraderStats, updateMarket, } from './convenience';
10
- export { type EventQueryParams, IndexerApiError, IndexerClient, type IndexerClientService, type RankingQueryParams, } from './IndexerClient';
9
+ export { checkHealth, createMarket, deleteMarket, getActivityFeed, getAllMarketEvents, getAnalyticsCohorts, getAnalyticsDomain, getAnalyticsDomains, getAnalyticsLeaderboard, getAnalyticsOverview, getAnalyticsRoi, getMarket, getMarketEvents, getMarketLPs, getMarkets, getMarketTraders, getMarketWithEvents, getMultinoulliSnapshots, getRankings, getTraderAnalytics, getTraderEvents, getTraderPositions, getTraderProfile, getTraderStats, updateMarket, } from './convenience';
10
+ export { type AnalyticsLeaderboardQueryParams, type CohortsQueryParams, type EventQueryParams, IndexerApiError, IndexerClient, type IndexerClientService, type RankingQueryParams, type RoiQueryParams, type TraderStatsQueryParams, } from './IndexerClient';
11
+ export type { AnalyticsFilters, AnalyticsLeaderboardEntry, AnalyticsLeaderboardResponse, AnalyticsOverviewResponse, AnalyticsTimeWindow, CohortRow, CohortsResponse, DomainDetailResponse, DomainSummary, DomainTimeSeriesPoint, DomainsResponse, EntityType, RoiHistogramBucket, RoiResponse, TraderAnalyticsResponse, } from '../types/analytics';
11
12
  export { type IndexerClientConfig, IndexerClientLive, } from './IndexerClientLive';
12
13
  export { computePnlHistory, getFullTraderProfile, getTraderActivity, type PnlDataPoint, type TraderActivityEntry, type TraderProfile, } from './trader-stats';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,gBAAgB,EACrB,eAAe,EACf,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,mBAAmB,EACxB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,SAAS,EACT,eAAe,EACf,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,eAAe,EACf,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,KAAK,mBAAmB,EACxB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * This module is completely isolated from server-side code (no bun:sqlite, no elysia).
5
5
  */
6
6
  // ── Convenience functions ────────────────────────────────────────────
7
- export { checkHealth, createMarket, deleteMarket, getActivityFeed, getAllMarketEvents, getMarket, getMarketEvents, getMarketLPs, getMarkets, getMarketTraders, getMarketWithEvents, getMultinoulliSnapshots, getRankings, getTraderEvents, getTraderPositions, getTraderProfile, getTraderStats, updateMarket, } from './convenience';
7
+ export { checkHealth, createMarket, deleteMarket, getActivityFeed, getAllMarketEvents, getAnalyticsCohorts, getAnalyticsDomain, getAnalyticsDomains, getAnalyticsLeaderboard, getAnalyticsOverview, getAnalyticsRoi, getMarket, getMarketEvents, getMarketLPs, getMarkets, getMarketTraders, getMarketWithEvents, getMultinoulliSnapshots, getRankings, getTraderAnalytics, getTraderEvents, getTraderPositions, getTraderProfile, getTraderStats, updateMarket, } from './convenience';
8
8
  // ── Service & error ──────────────────────────────────────────────────
9
9
  export { IndexerApiError, IndexerClient, } from './IndexerClient';
10
10
  // ── Layer ────────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH,wEAAwE;AACxE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,wEAAwE;AACxE,OAAO,EAEL,eAAe,EACf,aAAa,GAGd,MAAM,iBAAiB,CAAC;AACzB,wEAAwE;AACxE,OAAO,EAEL,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,wEAAwE;AACxE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAIlB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH,wEAAwE;AACxE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,SAAS,EACT,eAAe,EACf,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,wEAAwE;AACxE,OAAO,EAIL,eAAe,EACf,aAAa,GAKd,MAAM,iBAAiB,CAAC;AAmBzB,wEAAwE;AACxE,OAAO,EAEL,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,wEAAwE;AACxE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAIlB,MAAM,gBAAgB,CAAC"}
package/dist/config.d.ts CHANGED
@@ -2,7 +2,9 @@
2
2
  * Typed configuration parsed from environment variables.
3
3
  */
4
4
  export interface IndexerConfig {
5
- readonly voyagerApiKey: string;
5
+ readonly network: StarknetNetwork;
6
+ readonly voyagerApiKeys: readonly string[];
7
+ readonly voyagerApiBaseUrl: string;
6
8
  readonly adminApiKey: string;
7
9
  readonly dbPath: string;
8
10
  readonly port: number;
@@ -13,6 +15,20 @@ export interface IndexerConfig {
13
15
  readonly voyagerMaxRetries: number;
14
16
  readonly voyagerBaseDelayMs: number;
15
17
  readonly voyagerMinRequestIntervalMs: number;
18
+ /**
19
+ * Postgres connection string for the analytics warehouse. When unset, the
20
+ * warehouse is disabled — the indexer runs in OLTP-only mode (no aggregator,
21
+ * no /api/analytics routes). Set to e.g.
22
+ * `postgres://user:pass@localhost:5432/situation_warehouse`.
23
+ */
24
+ readonly warehouseDatabaseUrl: string | null;
25
+ /** Aggregator run interval. Default 5 min. */
26
+ readonly aggregatorIntervalMs: number;
16
27
  }
28
+ export type StarknetNetwork = 'mainnet' | 'sepolia';
29
+ export declare const NETWORK_DEFAULTS: Record<StarknetNetwork, {
30
+ readonly starknetRpcUrl: string;
31
+ readonly voyagerApiBaseUrl: string;
32
+ }>;
17
33
  export declare function loadConfig(): IndexerConfig;
18
34
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;CAC9C;AAED,wBAAgB,UAAU,IAAI,aAAa,CAqB1C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,8CAA8C;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf;IAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAUxE,CAAC;AAEF,wBAAgB,UAAU,IAAI,aAAa,CAkC1C"}
package/dist/config.js CHANGED
@@ -1,24 +1,60 @@
1
1
  /**
2
2
  * Typed configuration parsed from environment variables.
3
3
  */
4
+ export const NETWORK_DEFAULTS = {
5
+ mainnet: {
6
+ starknetRpcUrl: 'https://api.cartridge.gg/x/starknet/mainnet',
7
+ voyagerApiBaseUrl: 'https://api.voyager.online/beta',
8
+ },
9
+ sepolia: {
10
+ starknetRpcUrl: 'https://api.cartridge.gg/x/starknet/sepolia',
11
+ voyagerApiBaseUrl: 'https://sepolia-api.voyager.online/beta',
12
+ },
13
+ };
4
14
  export function loadConfig() {
5
- const voyagerApiKey = requireEnv('VOYAGER_API_KEY');
6
15
  const adminApiKey = requireEnv('ADMIN_API_KEY');
7
16
  const env = process.env;
17
+ const network = parseNetwork(env.STARKNET_NETWORK);
18
+ const networkDefaults = NETWORK_DEFAULTS[network];
8
19
  return {
9
- voyagerApiKey,
20
+ network,
21
+ voyagerApiKeys: parseVoyagerApiKeys(env),
22
+ voyagerApiBaseUrl: env.VOYAGER_API_BASE_URL ?? networkDefaults.voyagerApiBaseUrl,
10
23
  adminApiKey,
11
24
  dbPath: env.DB_PATH ?? './data/indexer.db',
12
25
  port: envInt('PORT', 3000),
13
- starknetRpcUrl: env.STARKNET_RPC_URL ?? 'https://api.cartridge.gg/x/starknet/sepolia',
26
+ starknetRpcUrl: env.STARKNET_RPC_URL ?? networkDefaults.starknetRpcUrl,
14
27
  eventPollIntervalMs: envInt('EVENT_POLL_INTERVAL_MS', 15000),
15
28
  statePollIntervalMs: envInt('STATE_POLL_INTERVAL_MS', 30000),
16
29
  positionPollIntervalMs: envInt('POSITION_POLL_INTERVAL_MS', 60000),
17
30
  voyagerMaxRetries: envInt('VOYAGER_MAX_RETRIES', 5),
18
31
  voyagerBaseDelayMs: envInt('VOYAGER_BASE_DELAY_MS', 3000),
19
32
  voyagerMinRequestIntervalMs: envInt('VOYAGER_MIN_REQUEST_INTERVAL_MS', 250),
33
+ warehouseDatabaseUrl: env.WAREHOUSE_DATABASE_URL?.trim() || null,
34
+ aggregatorIntervalMs: envInt('AGGREGATOR_INTERVAL_MS', 300_000),
20
35
  };
21
36
  }
37
+ function parseVoyagerApiKeys(env) {
38
+ const rawKeys = [
39
+ ...(env.VOYAGER_API_KEYS?.split(/[,\s]+/) ?? []),
40
+ env.VOYAGER_API_KEY,
41
+ env.VOYAGER_API_KEY_1,
42
+ env.VOYAGER_API_KEY_2,
43
+ env.VOYAGER_API_KEY_3,
44
+ ];
45
+ const keys = Array.from(new Set(rawKeys.map((key) => key?.trim()).filter(Boolean)));
46
+ if (keys.length === 0) {
47
+ throw new Error('Missing required environment variable: VOYAGER_API_KEY or VOYAGER_API_KEYS');
48
+ }
49
+ return keys;
50
+ }
51
+ function parseNetwork(raw) {
52
+ const value = raw ?? 'sepolia';
53
+ if (value === 'mainnet' || value === 'sepolia') {
54
+ return value;
55
+ }
56
+ throw new Error(`Invalid STARKNET_NETWORK: "${value}"`);
57
+ }
22
58
  function requireEnv(name) {
23
59
  const value = process.env[name];
24
60
  if (!value) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,MAAM,UAAU,UAAU;IACxB,MAAM,aAAa,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAGnB,CAAC;IAEF,OAAO;QACL,aAAa;QACb,WAAW;QACX,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,mBAAmB;QAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;QAC1B,cAAc,EAAE,GAAG,CAAC,gBAAgB,IAAI,6CAA6C;QACrF,mBAAmB,EAAE,MAAM,CAAC,wBAAwB,EAAE,KAAK,CAAC;QAC5D,mBAAmB,EAAE,MAAM,CAAC,wBAAwB,EAAE,KAAK,CAAC;QAC5D,sBAAsB,EAAE,MAAM,CAAC,2BAA2B,EAAE,KAAK,CAAC;QAClE,iBAAiB,EAAE,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACnD,kBAAkB,EAAE,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC;QACzD,2BAA2B,EAAE,MAAM,CAAC,iCAAiC,EAAE,GAAG,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,QAAgB;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,5 @@ import { VoyagerClientTag } from '../services/VoyagerClient';
12
12
  import type { MarketType } from '../types';
13
13
  import type { IndexerCycleResult } from './types';
14
14
  export declare const indexMarketEvents: (marketAddress: string, marketType?: MarketType) => Effect.Effect<IndexerCycleResult, never, DatabaseTag | VoyagerClientTag | ChainReaderTag | EventBusTag>;
15
- export declare const indexAllMarkets: Effect.Effect<IndexerCycleResult[], never, VoyagerClientTag | DatabaseTag | EventBusTag | ChainReaderTag>;
15
+ export declare const indexAllMarkets: Effect.Effect<IndexerCycleResult[], never, DatabaseTag | EventBusTag | ChainReaderTag | VoyagerClientTag>;
16
16
  //# sourceMappingURL=event-indexer.d.ts.map
@@ -5,7 +5,7 @@ import { Effect } from 'effect';
5
5
  import type { LPPositionRow } from '../db/repositories';
6
6
  import { ChainReaderTag } from '../services/ChainReader';
7
7
  import { DatabaseTag } from '../services/Database';
8
- import type { MarketStateRow, MarketType } from '../types';
8
+ import type { MarketStateRow, MarketType, MultinoulliMarketStateRow } from '../types';
9
9
  interface LPRefreshResult {
10
10
  readonly marketAddress: string;
11
11
  readonly provider: string;
@@ -14,6 +14,7 @@ interface LPRefreshResult {
14
14
  }
15
15
  interface LPRefreshContext {
16
16
  readonly marketStateByMarket?: ReadonlyMap<string, MarketStateRow>;
17
+ readonly multinoulliMarketStateByMarket?: ReadonlyMap<string, MultinoulliMarketStateRow>;
17
18
  readonly netTraderPnlByMarket?: ReadonlyMap<string, number>;
18
19
  readonly existingLPByKey?: ReadonlyMap<string, LPPositionRow>;
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lp-position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAM5E,UAAU,eAAe;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/D;AAcD,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,UAAU,MAAM,EAChB,aAAY,UAAqB,EACjC,UAAS,gBAAqB,KAC7B,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAuFjE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,2CAmClC,CAAC;AAEH,eAAO,MAAM,qBAAqB,uEAqEhC,CAAC"}
1
+ {"version":3,"file":"lp-position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,yBAAyB,EAAmB,MAAM,UAAU,CAAC;AAMvG,UAAU,eAAe;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnE,QAAQ,CAAC,8BAA8B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACzF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/D;AAcD,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,UAAU,MAAM,EAChB,aAAY,UAAqB,EACjC,UAAS,gBAAqB,KAC7B,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAoGjE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,2CAmClC,CAAC;AAEH,eAAO,MAAM,qBAAqB,uEAsEhC,CAAC"}
@@ -20,18 +20,26 @@ function computeNetTraderPnl(positions) {
20
20
  export const refreshLPPosition = (marketAddress, provider, marketType = 'normal', context = {}) => Effect.gen(function* () {
21
21
  const db = yield* DatabaseTag;
22
22
  const chain = yield* ChainReaderTag;
23
- if (marketType === 'multinoulli') {
24
- // Multinoulli LP shares: use the multinoulli amm wrapper
25
- // For now skip — can be added later
26
- return { marketAddress, provider, success: true };
27
- }
28
- const sharesResult = yield* Effect.either(chain.readLPShares(marketAddress, provider, marketType));
23
+ const isMultinoulli = marketType === 'multinoulli';
24
+ const sharesResult = isMultinoulli
25
+ ? yield* Effect.either(chain.readMultinoulliLPShares(marketAddress, provider))
26
+ : yield* Effect.either(chain.readLPShares(marketAddress, provider, marketType));
29
27
  if (sharesResult._tag === 'Left') {
30
28
  return { marketAddress, provider, success: false, error: sharesResult.left.message };
31
29
  }
32
30
  const { shares, sharesNumber } = sharesResult.right;
33
- // Get pool totals from market state
34
- const marketState = context.marketStateByMarket?.get(marketAddress) ?? db.marketState.findByMarket(marketAddress);
31
+ // Get pool totals from market state. Continuous and multinoulli markets
32
+ // store their state in separate tables; pick the right one and project
33
+ // out the two fields the share-of-pool math actually needs (`total_shares`
34
+ // and `total_backing` are stored as raw SQ128 magnitude strings on both).
35
+ const continuousMarketState = isMultinoulli
36
+ ? null
37
+ : context.marketStateByMarket?.get(marketAddress) ?? db.marketState.findByMarket(marketAddress);
38
+ const multinoulliMarketState = isMultinoulli
39
+ ? context.multinoulliMarketStateByMarket?.get(marketAddress) ??
40
+ db.multinoulliMarketState.findByMarket(marketAddress)
41
+ : null;
42
+ const marketState = continuousMarketState ?? multinoulliMarketState;
35
43
  let currentValue = null;
36
44
  let totalShares = 0;
37
45
  let totalBacking = 0;
@@ -75,9 +83,13 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
75
83
  current_value: currentValue,
76
84
  unrealized_pnl: unrealizedPnl,
77
85
  });
78
- // Backfill entry distribution if not yet populated
79
- if (existing && existing.entry_mean == null && marketState) {
80
- db.lpPositions.upsertEntryDistribution(marketAddress, provider, marketState.mean ?? null, marketState.sigma ?? null, marketState.k ?? null);
86
+ // Backfill entry distribution if not yet populated. Only meaningful for
87
+ // continuous markets — `entry_mean / entry_sigma / entry_k` describe a
88
+ // Gaussian/lognormal/bivariate snapshot at LP entry, which doesn't have
89
+ // a multinoulli analogue in this schema. Multinoulli LP entries skip
90
+ // this step (the row is still upserted above with shares + current_value).
91
+ if (existing && existing.entry_mean == null && continuousMarketState) {
92
+ db.lpPositions.upsertEntryDistribution(marketAddress, provider, continuousMarketState.mean ?? null, continuousMarketState.sigma ?? null, continuousMarketState.k ?? null);
81
93
  }
82
94
  return { marketAddress, provider, success: true };
83
95
  });
@@ -161,6 +173,7 @@ export const refreshAllLPPositions = Effect.gen(function* () {
161
173
  }
162
174
  const refreshContext = {
163
175
  marketStateByMarket: db.marketState.findAllAsMap(),
176
+ multinoulliMarketStateByMarket: db.multinoulliMarketState.findAllAsMap(),
164
177
  netTraderPnlByMarket,
165
178
  existingLPByKey,
166
179
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lp-position-refresher.js","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp-position-refresher.js","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,18 +22,52 @@ import { EventBusTag } from './services/EventBus';
22
22
  import { VoyagerClientTag } from './services/VoyagerClient';
23
23
  import { createWebhookDispatcher } from './services/WebhookDispatcher';
24
24
  import { VoyagerRateLimitState } from './services/VoyagerRateLimit';
25
+ import { backfillMarketDomains, createWarehouse, initializeWarehouseSchema, seedCanonicalDomains, } from './warehouse';
26
+ import { PgAnalyticsRepository } from './warehouse/repositories/analytics';
27
+ import { startAggregator } from './aggregator';
25
28
  import { log } from './logger';
26
29
  const config = loadConfig();
27
- log.info('indexer starting', { dbPath: config.dbPath, rpcUrl: config.starknetRpcUrl });
30
+ log.info('indexer starting', {
31
+ dbPath: config.dbPath,
32
+ network: config.network,
33
+ rpcUrl: config.starknetRpcUrl,
34
+ voyagerApiBaseUrl: config.voyagerApiBaseUrl,
35
+ voyagerApiKeyCount: config.voyagerApiKeys.length,
36
+ });
28
37
  // ── Database setup (open + migrate) ────────────────────────────────────────
29
38
  const db = createDatabase(config.dbPath);
30
39
  initializeSchema(db);
31
40
  log.info('database initialized');
41
+ // ── Warehouse setup (optional — gated on WAREHOUSE_DATABASE_URL) ──────────
42
+ let warehouse = null;
43
+ if (config.warehouseDatabaseUrl) {
44
+ try {
45
+ warehouse = await createWarehouse(config.warehouseDatabaseUrl);
46
+ await initializeWarehouseSchema(warehouse.sql);
47
+ await seedCanonicalDomains(warehouse.sql);
48
+ const backfill = await backfillMarketDomains(db, warehouse.sql);
49
+ log.info('warehouse initialized', {
50
+ markets: backfill.markets,
51
+ domainAssignments: backfill.assignments,
52
+ fallbacks: backfill.fallbacks,
53
+ });
54
+ }
55
+ catch (err) {
56
+ log.error('warehouse initialization failed — analytics disabled', {
57
+ error: err instanceof Error ? err.message : String(err),
58
+ });
59
+ warehouse = null;
60
+ }
61
+ }
62
+ else {
63
+ log.info('warehouse disabled (WAREHOUSE_DATABASE_URL not set)');
64
+ }
32
65
  // ── Build service layers ──────────────────────────────────────────────────
33
- const voyagerRateLimit = new VoyagerRateLimitState(config.voyagerMinRequestIntervalMs);
34
- const appLayer = Layer.mergeAll(DatabaseLive(db), EventBusLive(), VoyagerClientLive(config.voyagerApiKey, voyagerRateLimit, {
66
+ const voyagerRateLimit = new VoyagerRateLimitState(config.voyagerMinRequestIntervalMs, config.voyagerApiKeys.length);
67
+ const appLayer = Layer.mergeAll(DatabaseLive(db), EventBusLive(), VoyagerClientLive(config.voyagerApiKeys, voyagerRateLimit, {
35
68
  maxRetries: config.voyagerMaxRetries,
36
69
  baseDelayMs: config.voyagerBaseDelayMs,
70
+ baseUrl: config.voyagerApiBaseUrl,
37
71
  }), ChainReaderLive(config.starknetRpcUrl));
38
72
  // ── Extract plain service instances for imperative consumers ──────────────
39
73
  const databaseService = Effect.runSync(Effect.provide(DatabaseTag, appLayer));
@@ -50,26 +84,48 @@ const scheduler = startScheduler(config, {
50
84
  chainReader: chainReaderService,
51
85
  eventBus: eventBusService,
52
86
  });
87
+ // ── Start analytics aggregator (only if warehouse is configured) ──────────
88
+ let aggregator = null;
89
+ if (warehouse) {
90
+ aggregator = startAggregator(db, warehouse.sql, config.aggregatorIntervalMs);
91
+ log.info('aggregator started', { intervalMs: config.aggregatorIntervalMs });
92
+ }
53
93
  // ── Start Elysia server ────────────────────────────────────────────────────
94
+ const analytics = warehouse ? new PgAnalyticsRepository(warehouse.sql) : null;
54
95
  const app = createApp({
55
96
  db: databaseService,
56
97
  eventBus: eventBusService,
57
98
  adminApiKey: config.adminApiKey,
58
99
  rateLimit: voyagerRateLimit,
100
+ analytics,
59
101
  });
60
102
  app.listen({ port: config.port, hostname: '0.0.0.0' });
61
103
  log.info('server listening', { port: config.port });
62
104
  // ── Graceful shutdown ──────────────────────────────────────────────────────
63
- process.on('SIGTERM', () => {
105
+ async function shutdown(signal) {
106
+ log.info('shutdown signal received', { signal });
64
107
  webhookDispatcher.stop();
65
108
  scheduler.stop();
109
+ if (aggregator) {
110
+ aggregator.stop();
111
+ }
112
+ if (warehouse) {
113
+ try {
114
+ await warehouse.close();
115
+ }
116
+ catch (err) {
117
+ log.warn('warehouse close failed', {
118
+ error: err instanceof Error ? err.message : String(err),
119
+ });
120
+ }
121
+ }
66
122
  db.close();
67
123
  process.exit(0);
124
+ }
125
+ process.on('SIGTERM', () => {
126
+ void shutdown('SIGTERM');
68
127
  });
69
128
  process.on('SIGINT', () => {
70
- webhookDispatcher.stop();
71
- scheduler.stop();
72
- db.close();
73
- process.exit(0);
129
+ void shutdown('SIGINT');
74
130
  });
75
131
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChainReaderLive.d.ts","sourceRoot":"","sources":["../../src/layers/ChainReaderLive.ts"],"names":[],"mappings":"AASA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAkB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAoWzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CA0a3E;AAED,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CACS,CAAC"}
1
+ {"version":3,"file":"ChainReaderLive.d.ts","sourceRoot":"","sources":["../../src/layers/ChainReaderLive.ts"],"names":[],"mappings":"AASA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAkB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAoWzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CA+b3E;AAED,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CACS,CAAC"}
@@ -451,6 +451,21 @@ export function createChainReaderService(rpcUrl) {
451
451
  },
452
452
  catch: (e) => new ChainReadError(`Failed to read LP shares: ${e instanceof Error ? e.message : 'Unknown'}`, e),
453
453
  }),
454
+ readMultinoulliLPShares: (marketAddress, provider) => Effect.tryPromise({
455
+ try: async () => {
456
+ // Reach the underlying starknet `Contract` rather than going through
457
+ // `MultinoulliAMMContract.getLPShares` so we can reuse the same SQ128
458
+ // decoding helpers as the continuous-market path. Decoding the raw
459
+ // call result ourselves keeps a single source of truth for the
460
+ // magnitude → string + magnitude → number conversion.
461
+ const amm = getMultinoulliAmm(marketAddress);
462
+ const raw = await amm.getUnderlyingContract().call('get_lp_shares', [provider]);
463
+ const shares = sq128MagnitudeToString(raw);
464
+ const sharesNumber = sq128ToNumber(raw) ?? 0;
465
+ return { shares, sharesNumber };
466
+ },
467
+ catch: (e) => new ChainReadError(`Failed to read multinoulli LP shares: ${e instanceof Error ? e.message : 'Unknown'}`, e),
468
+ }),
454
469
  fetchEventsByContract: (contractAddress, fromBlock, chunkSize) => Effect.tryPromise({
455
470
  try: async () => {
456
471
  const safeChunkSize = Math.max(1, Math.min(chunkSize, 1000));