@merkl/api 1.19.27 → 1.20.12

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 (197) hide show
  1. package/dist/src/cache/declaration.d.ts +0 -5
  2. package/dist/src/cache/declaration.js.map +1 -1
  3. package/dist/src/constants.d.ts +2 -0
  4. package/dist/src/constants.js.map +1 -1
  5. package/dist/src/eden/index.d.ts +383 -113
  6. package/dist/src/engine/deprecated/dynamicData/implementations/Erc20.d.ts +64 -19
  7. package/dist/src/engine/implementations/Erc20/subTypes/implementations/bunni/metadata.js.map +1 -1
  8. package/dist/src/engine/implementations/Erc20/subTypes/implementations/bunni/tvl.js.map +1 -1
  9. package/dist/src/engine/implementations/Erc20/subTypes/implementations/euler/metadata.js.map +1 -1
  10. package/dist/src/engine/implementations/Erc20/subTypes/implementations/eulerEarn/metadata.js.map +1 -1
  11. package/dist/src/engine/implementations/ErcMultiToken/metadata.d.ts +1 -1
  12. package/dist/src/engine/implementations/EulerBorrowFromCollateral/metadata.js.map +1 -1
  13. package/dist/src/engine/implementations/EulerMultiBorrowFromCollateral/metadata.d.ts +25 -0
  14. package/dist/src/engine/implementations/EulerMultiBorrowFromCollateral/metadata.js.map +1 -0
  15. package/dist/src/engine/implementations/MerklCredit/metadata.d.ts +15 -0
  16. package/dist/src/engine/implementations/MerklCredit/metadata.js.map +1 -0
  17. package/dist/src/engine/implementations/MultiLog/metadata.js.map +1 -1
  18. package/dist/src/engine/implementations/pancakeSwapInfinity/metadata.d.ts +19 -0
  19. package/dist/src/engine/implementations/pancakeSwapInfinity/metadata.js.map +1 -0
  20. package/dist/src/engine/metadata/factory.js.map +1 -1
  21. package/dist/src/engine/tvl/factory.js.map +1 -1
  22. package/dist/src/guards/CampaignAccess.guard.d.ts +18 -16
  23. package/dist/src/guards/CampaignAccess.guard.js.map +1 -1
  24. package/dist/src/guards/{KeyStoreAuth.guard.d.ts → KeyValueStoreAuth.guard.d.ts} +4 -4
  25. package/dist/src/guards/KeyValueStoreAuth.guard.js.map +1 -0
  26. package/dist/src/index.d.ts +457 -116
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/jobs/claim-etl/config.d.ts +2 -2
  29. package/dist/src/jobs/claim-etl/config.js.map +1 -1
  30. package/dist/src/jobs/claim-etl/load.js.map +1 -1
  31. package/dist/src/jobs/claim-etl/types.d.ts +1 -1
  32. package/dist/src/jobs/deposit-credit-etl/config.d.ts +13 -0
  33. package/dist/src/jobs/deposit-credit-etl/config.js.map +1 -0
  34. package/dist/src/jobs/deposit-credit-etl/index.d.ts +16 -0
  35. package/dist/src/jobs/deposit-credit-etl/index.js.map +1 -0
  36. package/dist/src/jobs/deposit-credit-etl/load.d.ts +13 -0
  37. package/dist/src/jobs/deposit-credit-etl/load.js.map +1 -0
  38. package/dist/src/jobs/deposit-credit-etl/types.d.ts +11 -0
  39. package/dist/src/jobs/deposit-credit-etl/types.js.map +1 -0
  40. package/dist/src/jobs/prices.js.map +1 -1
  41. package/dist/src/jobs/refresh-materialized-views.js.map +1 -1
  42. package/dist/src/jobs/sync-campaigns-to-hubspot.js.map +1 -1
  43. package/dist/src/modules/graphql/context.d.ts +14 -0
  44. package/dist/src/modules/graphql/context.js.map +1 -0
  45. package/dist/src/modules/graphql/errors.d.ts +7 -0
  46. package/dist/src/modules/graphql/errors.js.map +1 -0
  47. package/dist/src/modules/graphql/guards.d.ts +26 -0
  48. package/dist/src/modules/graphql/guards.js.map +1 -0
  49. package/dist/src/modules/graphql/resolvers.d.ts +593 -0
  50. package/dist/src/modules/graphql/resolvers.js.map +1 -0
  51. package/dist/src/modules/graphql/router.d.ts +87 -0
  52. package/dist/src/modules/graphql/router.js.map +1 -0
  53. package/dist/src/modules/graphql/scalars.d.ts +3 -0
  54. package/dist/src/modules/graphql/scalars.js.map +1 -0
  55. package/dist/src/modules/graphql/schema.d.ts +2 -0
  56. package/dist/src/modules/graphql/schema.js.map +1 -0
  57. package/dist/src/modules/graphql/translator.d.ts +25 -0
  58. package/dist/src/modules/graphql/translator.js.map +1 -0
  59. package/dist/src/modules/graphql/yoga.d.ts +2 -0
  60. package/dist/src/modules/graphql/yoga.js.map +1 -0
  61. package/dist/src/modules/v4/authentication/authentication.service.js.map +1 -1
  62. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +26 -20
  63. package/dist/src/modules/v4/campaign/campaign.controller.js.map +1 -1
  64. package/dist/src/modules/v4/campaign/campaign.model.d.ts +3 -2
  65. package/dist/src/modules/v4/campaign/campaign.model.js.map +1 -1
  66. package/dist/src/modules/v4/campaign/campaign.query-transformer.d.ts +44 -34
  67. package/dist/src/modules/v4/campaign/campaign.query-transformer.js.map +1 -1
  68. package/dist/src/modules/v4/campaign/campaign.service.d.ts +7 -5
  69. package/dist/src/modules/v4/campaign/campaign.service.js.map +1 -1
  70. package/dist/src/modules/v4/campaignToProcess/campaignToProcess.controller.d.ts +1 -1
  71. package/dist/src/modules/v4/campaignToProcess/campaignToProcess.controller.js.map +1 -1
  72. package/dist/src/modules/v4/campaignToProcess/campaignToProcess.repository.js.map +1 -1
  73. package/dist/src/modules/v4/carousel/carousel.controller.d.ts +48 -12
  74. package/dist/src/modules/v4/carousel/carousel.formatter.d.ts +8 -1
  75. package/dist/src/modules/v4/carousel/carousel.formatter.js.map +1 -1
  76. package/dist/src/modules/v4/carousel/carousel.repository.d.ts +6 -0
  77. package/dist/src/modules/v4/carousel/carousel.service.d.ts +19 -8
  78. package/dist/src/modules/v4/carousel/carousel.service.js.map +1 -1
  79. package/dist/src/modules/v4/chain/chain.controller.d.ts +4 -4
  80. package/dist/src/modules/v4/chain/chain.formatter.js.map +1 -1
  81. package/dist/src/modules/v4/chain/chain.model.d.ts +1 -1
  82. package/dist/src/modules/v4/chain/chain.repository.js.map +1 -1
  83. package/dist/src/modules/v4/clamm/clamm.controller.d.ts +2 -2
  84. package/dist/src/modules/v4/clamm/clamm.service.js.map +1 -1
  85. package/dist/src/modules/v4/computedValue/computedValue.controller.d.ts +29 -0
  86. package/dist/src/modules/v4/computedValue/computedValue.controller.js.map +1 -1
  87. package/dist/src/modules/v4/computedValue/computedValue.model.d.ts +5 -0
  88. package/dist/src/modules/v4/computedValue/computedValue.model.js.map +1 -1
  89. package/dist/src/modules/v4/computedValue/computedValue.repository.d.ts +2 -1
  90. package/dist/src/modules/v4/computedValue/computedValue.repository.js.map +1 -1
  91. package/dist/src/modules/v4/computedValue/computedValue.service.d.ts +2 -1
  92. package/dist/src/modules/v4/computedValue/computedValue.service.js.map +1 -1
  93. package/dist/src/modules/v4/creator/creator.controller.d.ts +3 -3
  94. package/dist/src/modules/v4/credit/credit.controller.d.ts +97 -0
  95. package/dist/src/modules/v4/credit/credit.controller.js.map +1 -1
  96. package/dist/src/modules/v4/credit/credit.model.d.ts +4 -0
  97. package/dist/src/modules/v4/credit/credit.model.js.map +1 -1
  98. package/dist/src/modules/v4/credit/credit.repository.d.ts +21 -1
  99. package/dist/src/modules/v4/credit/credit.repository.js.map +1 -1
  100. package/dist/src/modules/v4/credit/credit.service.d.ts +20 -1
  101. package/dist/src/modules/v4/credit/credit.service.js.map +1 -1
  102. package/dist/src/modules/v4/historical/historical.controller.d.ts +38 -2
  103. package/dist/src/modules/v4/historical/historical.controller.js.map +1 -1
  104. package/dist/src/modules/v4/historical/historical.model.d.ts +28 -0
  105. package/dist/src/modules/v4/historical/historical.model.js.map +1 -1
  106. package/dist/src/modules/v4/historical/historical.service.js.map +1 -1
  107. package/dist/src/modules/v4/indexingRange/indexingRange.model.js.map +1 -1
  108. package/dist/src/modules/v4/indexingRange/indexingRange.service.js.map +1 -1
  109. package/dist/src/modules/v4/jobWatermark/jobWatermark.constants.d.ts +2 -1
  110. package/dist/src/modules/v4/jobWatermark/jobWatermark.constants.js.map +1 -1
  111. package/dist/src/modules/v4/{keyStore/keyStore.controller.d.ts → keyValueStore/keyValueStore.controller.d.ts} +21 -16
  112. package/dist/src/modules/v4/keyValueStore/keyValueStore.controller.js.map +1 -0
  113. package/dist/src/modules/v4/keyValueStore/keyValueStore.formatter.d.ts +27 -0
  114. package/dist/src/modules/v4/keyValueStore/keyValueStore.formatter.js.map +1 -0
  115. package/dist/src/modules/v4/keyValueStore/keyValueStore.model.js.map +1 -0
  116. package/dist/src/modules/v4/{keyStore/keyStore.repository.d.ts → keyValueStore/keyValueStore.repository.d.ts} +1 -1
  117. package/dist/src/modules/v4/keyValueStore/keyValueStore.repository.js.map +1 -0
  118. package/dist/src/modules/v4/{keyStore/keyStore.service.d.ts → keyValueStore/keyValueStore.service.d.ts} +1 -1
  119. package/dist/src/modules/v4/keyValueStore/keyValueStore.service.js.map +1 -0
  120. package/dist/src/modules/v4/leaf/latestCompute.repository.d.ts +24 -0
  121. package/dist/src/modules/v4/leaf/latestCompute.repository.js.map +1 -0
  122. package/dist/src/modules/v4/leaf/leaf.model.d.ts +0 -95
  123. package/dist/src/modules/v4/leaf/leaf.repository.d.ts +104 -0
  124. package/dist/src/modules/v4/leaf/leaf.repository.js.map +1 -1
  125. package/dist/src/modules/v4/leaf/leaf.service.d.ts +36 -0
  126. package/dist/src/modules/v4/leaf/leaf.service.js.map +1 -1
  127. package/dist/src/modules/v4/leaf/leafTemp.repository.d.ts +12 -0
  128. package/dist/src/modules/v4/leaf/leafTemp.repository.js.map +1 -1
  129. package/dist/src/modules/v4/leaf/leafView.repository.d.ts +0 -12
  130. package/dist/src/modules/v4/leaf/leafView.repository.js.map +1 -1
  131. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +19 -18
  132. package/dist/src/modules/v4/opportunity/opportunity.controller.js.map +1 -1
  133. package/dist/src/modules/v4/opportunity/opportunity.formatter.d.ts +3 -3
  134. package/dist/src/modules/v4/opportunity/opportunity.formatter.js.map +1 -1
  135. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +8 -8
  136. package/dist/src/modules/v4/opportunity/opportunity.query-transformer.d.ts +236 -43
  137. package/dist/src/modules/v4/opportunity/opportunity.query-transformer.js.map +1 -1
  138. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +488 -7
  139. package/dist/src/modules/v4/opportunity/opportunity.repository.js.map +1 -1
  140. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +18 -18
  141. package/dist/src/modules/v4/opportunity/opportunity.service.js.map +1 -1
  142. package/dist/src/modules/v4/priceSource/priceFetchers/implementations/coinGeckoService.d.ts +1 -0
  143. package/dist/src/modules/v4/priceSource/priceFetchers/implementations/coinGeckoService.js.map +1 -1
  144. package/dist/src/modules/v4/program/program.controller.d.ts +4 -4
  145. package/dist/src/modules/v4/program/program.service.d.ts +4 -4
  146. package/dist/src/modules/v4/reward/reward.service.d.ts +7 -291
  147. package/dist/src/modules/v4/reward/reward.service.js.map +1 -1
  148. package/dist/src/modules/v4/router.d.ts +414 -86
  149. package/dist/src/modules/v4/router.js.map +1 -1
  150. package/dist/src/modules/v4/slack/slack.service.js.map +1 -1
  151. package/dist/src/modules/v4/token/token.service.d.ts +0 -8
  152. package/dist/src/modules/v4/token/token.service.js.map +1 -1
  153. package/dist/src/modules/v4/transaction/transaction.service.d.ts +1037 -535
  154. package/dist/src/modules/v4/uniswap/uniswap.controller.d.ts +2 -2
  155. package/dist/src/modules/v4/uniswap/uniswap.service.d.ts +1 -1
  156. package/dist/src/modules/v4/user/user.controller.d.ts +121 -3
  157. package/dist/src/modules/v4/user/user.controller.js.map +1 -1
  158. package/dist/src/modules/v4/user/user.model.d.ts +77 -1
  159. package/dist/src/modules/v4/user/user.model.js.map +1 -1
  160. package/dist/src/modules/v4/user/user.service.d.ts +64 -1
  161. package/dist/src/modules/v4/user/user.service.js.map +1 -1
  162. package/dist/src/plugins/errorHandler.d.ts +15 -0
  163. package/dist/src/plugins/errorHandler.js.map +1 -1
  164. package/dist/src/routes/v1/router.d.ts +0 -26
  165. package/dist/src/routes/v1/router.js.map +1 -1
  166. package/dist/src/routes/v3/app.d.ts +0 -8
  167. package/dist/src/routes/v3/app.js.map +1 -1
  168. package/dist/src/routes/v3/router.d.ts +0 -4
  169. package/dist/src/scripts/backfill-leafbreakdown-opportunities.js.map +1 -1
  170. package/dist/src/utils/eulerVerified.d.ts +8 -0
  171. package/dist/src/utils/eulerVerified.js.map +1 -0
  172. package/dist/src/utils/getAPR.d.ts +803 -552
  173. package/dist/src/utils/parseDistributionType.d.ts +264 -13
  174. package/dist/src/utils/safeEngineQuery.d.ts +14 -0
  175. package/dist/src/utils/safeEngineQuery.js.map +1 -0
  176. package/dist/tsconfig.tsbuildinfo +1 -1
  177. package/package.json +1 -1
  178. package/dist/src/guards/KeyStoreAuth.guard.js.map +0 -1
  179. package/dist/src/modules/v4/keyStore/keyStore.controller.js.map +0 -1
  180. package/dist/src/modules/v4/keyStore/keyStore.model.js.map +0 -1
  181. package/dist/src/modules/v4/keyStore/keyStore.repository.js.map +0 -1
  182. package/dist/src/modules/v4/keyStore/keyStore.service.js.map +0 -1
  183. package/dist/src/routes/v1/prices.d.ts +0 -85
  184. package/dist/src/routes/v1/prices.js.map +0 -1
  185. package/dist/src/utils/pricer.d.ts +0 -57
  186. package/dist/src/utils/pricer.js.map +0 -1
  187. package/dist/src/utils/prices/chainlinkRead.d.ts +0 -4
  188. package/dist/src/utils/prices/chainlinkRead.js.map +0 -1
  189. package/dist/src/utils/prices/curveVirtualPrice.d.ts +0 -4
  190. package/dist/src/utils/prices/curveVirtualPrice.js.map +0 -1
  191. package/dist/src/utils/prices/getDQUICK.d.ts +0 -4
  192. package/dist/src/utils/prices/getDQUICK.js.map +0 -1
  193. package/dist/src/utils/prices/priceService.d.ts +0 -13
  194. package/dist/src/utils/prices/priceService.js.map +0 -1
  195. package/dist/src/utils/prices/uniV2Price.d.ts +0 -4
  196. package/dist/src/utils/prices/uniV2Price.js.map +0 -1
  197. /package/dist/src/modules/v4/{keyStore/keyStore.model.d.ts → keyValueStore/keyValueStore.model.d.ts} +0 -0
@@ -0,0 +1,593 @@
1
+ import type { GraphQLResolveInfo } from "graphql";
2
+ import type { GraphQLContext } from "./context";
3
+ /**
4
+ * GraphQL resolvers for the schema.
5
+ *
6
+ * Scalar resolvers (BigInt, DateTime) come from `graphql-scalars` and are
7
+ * wired in `schema.ts`. Field resolvers only appear here when non-default
8
+ * behavior is needed; all other Opportunity fields use the default
9
+ * identity resolver over the formatter output. Errors thrown here are
10
+ * translated by Yoga's `maskError` (see `errors.ts`).
11
+ */
12
+ export declare const resolvers: {
13
+ Opportunity: {
14
+ /** Paginates campaigns on the Opportunity (take/skip support). */
15
+ campaigns: (parent: {
16
+ campaigns?: unknown[] | undefined;
17
+ }, args: {
18
+ take?: number | null | undefined;
19
+ skip?: number | null | undefined;
20
+ }) => unknown[];
21
+ };
22
+ Query: {
23
+ /**
24
+ * Lists opportunities matching the filter, with pagination and sorting.
25
+ *
26
+ * Enforces max take=100 (clamped from args). `hidden` defaults to false
27
+ * unless explicitly filtered. Skips Campaigns hydration if not requested
28
+ * in the selection set (lazy-loading optimization).
29
+ */
30
+ opportunities: (_parent: unknown, args: {
31
+ where?: Record<string, unknown> | null | undefined;
32
+ orderBy?: Record<string, unknown>[] | null | undefined;
33
+ take?: number | null | undefined;
34
+ skip?: number | null | undefined;
35
+ }, _ctx: GraphQLContext, info: GraphQLResolveInfo) => Promise<{
36
+ chainId: number;
37
+ type: string;
38
+ identifier: string;
39
+ name: string;
40
+ description: string;
41
+ howToSteps: string[];
42
+ status: import("@package/databases").Status;
43
+ action: import("@package/databases").OpportunityAction;
44
+ tvl: number;
45
+ apr: number;
46
+ maxApr: number | null;
47
+ dailyRewards: number;
48
+ maxDailyRewards: number;
49
+ tags: string[];
50
+ liveCampaigns: number;
51
+ aprRecord: {
52
+ cumulated: number;
53
+ timestamp: bigint;
54
+ breakdowns: ({
55
+ distributionType: import("@package/databases").DistributionType;
56
+ identifier: string;
57
+ type: "CAMPAIGN";
58
+ timestamp: bigint;
59
+ value: number;
60
+ } | {
61
+ identifier: string;
62
+ type: import("@package/databases").AprType;
63
+ timestamp: bigint;
64
+ value: number;
65
+ })[];
66
+ };
67
+ nativeAprRecord: {
68
+ title: string;
69
+ description: string | undefined;
70
+ value: number;
71
+ timestamp: bigint;
72
+ amount: bigint | undefined;
73
+ rewardToken: {
74
+ id: string;
75
+ name: string | null;
76
+ chainId: number;
77
+ address: string;
78
+ decimals: number;
79
+ symbol: string;
80
+ icon: string;
81
+ verified: boolean;
82
+ isNative: boolean;
83
+ isTest: boolean;
84
+ type: "POINT" | "PRETGE" | "TOKEN";
85
+ price?: number | null | undefined;
86
+ updatedAt?: number | null | undefined;
87
+ priceSource?: string | null | undefined;
88
+ displaySymbol?: string | undefined;
89
+ underlyingTokenId?: string | undefined;
90
+ priceAlertDismissedAt?: number | undefined;
91
+ priceAlertCount?: number | undefined;
92
+ } | undefined;
93
+ };
94
+ tvlRecord: {
95
+ id: string;
96
+ total: number;
97
+ timestamp: bigint;
98
+ breakdowns: {
99
+ identifier: string;
100
+ type: import("@package/databases").TvlType;
101
+ value: number;
102
+ }[];
103
+ };
104
+ rewardsRecord: {
105
+ id: string;
106
+ total: number;
107
+ timestamp: bigint;
108
+ breakdowns: {
109
+ id: string;
110
+ timestamp: bigint;
111
+ campaignId: string;
112
+ dailyRewardsRecordId: string;
113
+ token: {
114
+ id: string;
115
+ name: string | null;
116
+ chainId: number;
117
+ address: string;
118
+ decimals: number;
119
+ symbol: string;
120
+ icon: string;
121
+ verified: boolean;
122
+ isNative: boolean;
123
+ isTest: boolean;
124
+ type: "POINT" | "PRETGE" | "TOKEN";
125
+ price?: number | null | undefined;
126
+ updatedAt?: number | null | undefined;
127
+ priceSource?: string | null | undefined;
128
+ displaySymbol?: string | undefined;
129
+ underlyingTokenId?: string | undefined;
130
+ priceAlertDismissedAt?: number | undefined;
131
+ priceAlertCount?: number | undefined;
132
+ };
133
+ amount: bigint;
134
+ maxAmount: bigint;
135
+ value: number;
136
+ maxValue: number;
137
+ distributionType: import("@package/databases").DistributionType;
138
+ onChainCampaignId: string;
139
+ }[];
140
+ };
141
+ campaigns: (Omit<import("../v4/campaign/campaign.model").CampaignWithParams<import("@package/resources/enums").CampaignType>, "createdAt" | "endTimestamp" | "manualOverrides" | "parentCampaignId" | "pauseCompute" | "pausePrecompute" | "rootCampaignId" | "startTimestamp" | "subType"> & {
142
+ subType: number | null;
143
+ startTimestamp: number;
144
+ endTimestamp: number;
145
+ createdAt: string;
146
+ parentCampaignId?: string | undefined;
147
+ rootCampaignId?: string | undefined;
148
+ pauseCompute?: string | undefined;
149
+ pausePrecompute?: string | undefined;
150
+ } & {
151
+ Opportunity: {
152
+ chainId: number;
153
+ type: string;
154
+ identifier: string;
155
+ name: string;
156
+ description: string;
157
+ howToSteps: string[];
158
+ status: import("@package/databases").Status;
159
+ action: import("@package/databases").OpportunityAction;
160
+ tvl: number;
161
+ apr: number;
162
+ maxApr: number | null;
163
+ dailyRewards: number;
164
+ maxDailyRewards: number;
165
+ tags: string[];
166
+ liveCampaigns: number;
167
+ tokens: {
168
+ id: string;
169
+ name: string | null;
170
+ chainId: number;
171
+ address: string;
172
+ decimals: number;
173
+ symbol: string;
174
+ icon: string;
175
+ verified: boolean;
176
+ isNative: boolean;
177
+ isTest: boolean;
178
+ type: "POINT" | "PRETGE" | "TOKEN";
179
+ price?: number | null | undefined;
180
+ updatedAt?: number | null | undefined;
181
+ priceSource?: string | null | undefined;
182
+ displaySymbol?: string | undefined;
183
+ underlyingTokenId?: string | undefined;
184
+ priceAlertDismissedAt?: number | undefined;
185
+ priceAlertCount?: number | undefined;
186
+ }[];
187
+ chain: {
188
+ id: number;
189
+ name: string;
190
+ icon: string;
191
+ liveCampaigns: number;
192
+ endOfDisputePeriod: number;
193
+ explorers?: {
194
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
195
+ url: string;
196
+ chainId: number;
197
+ }[] | undefined;
198
+ lastClaimsOnchainFetchTimestamp: string | null;
199
+ };
200
+ protocol: {
201
+ id: string;
202
+ tags: string[];
203
+ name: string;
204
+ description: string;
205
+ url: string;
206
+ icon: string;
207
+ banner: string | null;
208
+ opportunityBannerLight: string | null;
209
+ opportunityBannerDark: string | null;
210
+ } | undefined;
211
+ activePrograms: {
212
+ icon: string;
213
+ id: string;
214
+ name: string;
215
+ slug: string | null;
216
+ }[];
217
+ depositUrls: {
218
+ id: string;
219
+ title: string;
220
+ url: string;
221
+ subtitle?: string | undefined;
222
+ icon?: string | undefined;
223
+ priority: number;
224
+ }[] | undefined;
225
+ id: string;
226
+ hidden: true | undefined;
227
+ nativeApr: number | undefined;
228
+ depositUrl: string | undefined;
229
+ explorerAddress: string | undefined;
230
+ lastCampaignCreatedAt: number;
231
+ earliestCampaignStart: bigint | undefined;
232
+ latestCampaignStart: bigint | undefined;
233
+ earliestCampaignEnd: bigint | undefined;
234
+ latestCampaignEnd: bigint | undefined;
235
+ };
236
+ })[] | undefined;
237
+ liveCampaignsForCreator?: any;
238
+ soonCampaignsForCreator?: any;
239
+ pastCampaignsForCreator?: any;
240
+ distributedBycreator?: any;
241
+ tokens: {
242
+ id: string;
243
+ name: string | null;
244
+ chainId: number;
245
+ address: string;
246
+ decimals: number;
247
+ symbol: string;
248
+ icon: string;
249
+ verified: boolean;
250
+ isNative: boolean;
251
+ isTest: boolean;
252
+ type: "POINT" | "PRETGE" | "TOKEN";
253
+ price?: number | null | undefined;
254
+ updatedAt?: number | null | undefined;
255
+ priceSource?: string | null | undefined;
256
+ displaySymbol?: string | undefined;
257
+ underlyingTokenId?: string | undefined;
258
+ priceAlertDismissedAt?: number | undefined;
259
+ priceAlertCount?: number | undefined;
260
+ }[];
261
+ chain: {
262
+ id: number;
263
+ name: string;
264
+ icon: string;
265
+ liveCampaigns: number;
266
+ endOfDisputePeriod: number;
267
+ explorers?: {
268
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
269
+ url: string;
270
+ chainId: number;
271
+ }[] | undefined;
272
+ lastClaimsOnchainFetchTimestamp: string | null;
273
+ };
274
+ protocol: {
275
+ id: string;
276
+ tags: string[];
277
+ name: string;
278
+ description: string;
279
+ url: string;
280
+ icon: string;
281
+ banner: string | null;
282
+ opportunityBannerLight: string | null;
283
+ opportunityBannerDark: string | null;
284
+ } | undefined;
285
+ activePrograms: {
286
+ icon: string;
287
+ id: string;
288
+ name: string;
289
+ slug: string | null;
290
+ }[];
291
+ depositUrls: {
292
+ id: string;
293
+ title: string;
294
+ url: string;
295
+ subtitle?: string | undefined;
296
+ icon?: string | undefined;
297
+ priority: number;
298
+ }[] | undefined;
299
+ id: string;
300
+ hidden: true | undefined;
301
+ nativeApr: number | undefined;
302
+ depositUrl: string | undefined;
303
+ explorerAddress: string | undefined;
304
+ lastCampaignCreatedAt: number;
305
+ earliestCampaignStart: bigint | undefined;
306
+ latestCampaignStart: bigint | undefined;
307
+ earliestCampaignEnd: bigint | undefined;
308
+ latestCampaignEnd: bigint | undefined;
309
+ }[]>;
310
+ /** Fetches a single opportunity by ID. Returns null if not found or hidden. */
311
+ opportunity: (_parent: unknown, args: {
312
+ id: string;
313
+ }, _ctx: GraphQLContext) => Promise<{
314
+ chainId: number;
315
+ type: string;
316
+ identifier: string;
317
+ name: string;
318
+ description: string;
319
+ howToSteps: string[];
320
+ status: import("@package/databases").Status;
321
+ action: import("@package/databases").OpportunityAction;
322
+ tvl: number;
323
+ apr: number;
324
+ maxApr: number | null;
325
+ dailyRewards: number;
326
+ maxDailyRewards: number;
327
+ tags: string[];
328
+ liveCampaigns: number;
329
+ aprRecord: {
330
+ cumulated: number;
331
+ timestamp: bigint;
332
+ breakdowns: ({
333
+ distributionType: import("@package/databases").DistributionType;
334
+ identifier: string;
335
+ type: "CAMPAIGN";
336
+ timestamp: bigint;
337
+ value: number;
338
+ } | {
339
+ identifier: string;
340
+ type: import("@package/databases").AprType;
341
+ timestamp: bigint;
342
+ value: number;
343
+ })[];
344
+ };
345
+ nativeAprRecord: {
346
+ title: string;
347
+ description: string | undefined;
348
+ value: number;
349
+ timestamp: bigint;
350
+ amount: bigint | undefined;
351
+ rewardToken: {
352
+ id: string;
353
+ name: string | null;
354
+ chainId: number;
355
+ address: string;
356
+ decimals: number;
357
+ symbol: string;
358
+ icon: string;
359
+ verified: boolean;
360
+ isNative: boolean;
361
+ isTest: boolean;
362
+ type: "POINT" | "PRETGE" | "TOKEN";
363
+ price?: number | null | undefined;
364
+ updatedAt?: number | null | undefined;
365
+ priceSource?: string | null | undefined;
366
+ displaySymbol?: string | undefined;
367
+ underlyingTokenId?: string | undefined;
368
+ priceAlertDismissedAt?: number | undefined;
369
+ priceAlertCount?: number | undefined;
370
+ } | undefined;
371
+ };
372
+ tvlRecord: {
373
+ id: string;
374
+ total: number;
375
+ timestamp: bigint;
376
+ breakdowns: {
377
+ identifier: string;
378
+ type: import("@package/databases").TvlType;
379
+ value: number;
380
+ }[];
381
+ };
382
+ rewardsRecord: {
383
+ id: string;
384
+ total: number;
385
+ timestamp: bigint;
386
+ breakdowns: {
387
+ id: string;
388
+ timestamp: bigint;
389
+ campaignId: string;
390
+ dailyRewardsRecordId: string;
391
+ token: {
392
+ id: string;
393
+ name: string | null;
394
+ chainId: number;
395
+ address: string;
396
+ decimals: number;
397
+ symbol: string;
398
+ icon: string;
399
+ verified: boolean;
400
+ isNative: boolean;
401
+ isTest: boolean;
402
+ type: "POINT" | "PRETGE" | "TOKEN";
403
+ price?: number | null | undefined;
404
+ updatedAt?: number | null | undefined;
405
+ priceSource?: string | null | undefined;
406
+ displaySymbol?: string | undefined;
407
+ underlyingTokenId?: string | undefined;
408
+ priceAlertDismissedAt?: number | undefined;
409
+ priceAlertCount?: number | undefined;
410
+ };
411
+ amount: bigint;
412
+ maxAmount: bigint;
413
+ value: number;
414
+ maxValue: number;
415
+ distributionType: import("@package/databases").DistributionType;
416
+ onChainCampaignId: string;
417
+ }[];
418
+ };
419
+ campaigns: (Omit<import("../v4/campaign/campaign.model").CampaignWithParams<import("@package/resources/enums").CampaignType>, "createdAt" | "endTimestamp" | "manualOverrides" | "parentCampaignId" | "pauseCompute" | "pausePrecompute" | "rootCampaignId" | "startTimestamp" | "subType"> & {
420
+ subType: number | null;
421
+ startTimestamp: number;
422
+ endTimestamp: number;
423
+ createdAt: string;
424
+ parentCampaignId?: string | undefined;
425
+ rootCampaignId?: string | undefined;
426
+ pauseCompute?: string | undefined;
427
+ pausePrecompute?: string | undefined;
428
+ } & {
429
+ Opportunity: {
430
+ chainId: number;
431
+ type: string;
432
+ identifier: string;
433
+ name: string;
434
+ description: string;
435
+ howToSteps: string[];
436
+ status: import("@package/databases").Status;
437
+ action: import("@package/databases").OpportunityAction;
438
+ tvl: number;
439
+ apr: number;
440
+ maxApr: number | null;
441
+ dailyRewards: number;
442
+ maxDailyRewards: number;
443
+ tags: string[];
444
+ liveCampaigns: number;
445
+ tokens: {
446
+ id: string;
447
+ name: string | null;
448
+ chainId: number;
449
+ address: string;
450
+ decimals: number;
451
+ symbol: string;
452
+ icon: string;
453
+ verified: boolean;
454
+ isNative: boolean;
455
+ isTest: boolean;
456
+ type: "POINT" | "PRETGE" | "TOKEN";
457
+ price?: number | null | undefined;
458
+ updatedAt?: number | null | undefined;
459
+ priceSource?: string | null | undefined;
460
+ displaySymbol?: string | undefined;
461
+ underlyingTokenId?: string | undefined;
462
+ priceAlertDismissedAt?: number | undefined;
463
+ priceAlertCount?: number | undefined;
464
+ }[];
465
+ chain: {
466
+ id: number;
467
+ name: string;
468
+ icon: string;
469
+ liveCampaigns: number;
470
+ endOfDisputePeriod: number;
471
+ explorers?: {
472
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
473
+ url: string;
474
+ chainId: number;
475
+ }[] | undefined;
476
+ lastClaimsOnchainFetchTimestamp: string | null;
477
+ };
478
+ protocol: {
479
+ id: string;
480
+ tags: string[];
481
+ name: string;
482
+ description: string;
483
+ url: string;
484
+ icon: string;
485
+ banner: string | null;
486
+ opportunityBannerLight: string | null;
487
+ opportunityBannerDark: string | null;
488
+ } | undefined;
489
+ activePrograms: {
490
+ icon: string;
491
+ id: string;
492
+ name: string;
493
+ slug: string | null;
494
+ }[];
495
+ depositUrls: {
496
+ id: string;
497
+ title: string;
498
+ url: string;
499
+ subtitle?: string | undefined;
500
+ icon?: string | undefined;
501
+ priority: number;
502
+ }[] | undefined;
503
+ id: string;
504
+ hidden: true | undefined;
505
+ nativeApr: number | undefined;
506
+ depositUrl: string | undefined;
507
+ explorerAddress: string | undefined;
508
+ lastCampaignCreatedAt: number;
509
+ earliestCampaignStart: bigint | undefined;
510
+ latestCampaignStart: bigint | undefined;
511
+ earliestCampaignEnd: bigint | undefined;
512
+ latestCampaignEnd: bigint | undefined;
513
+ };
514
+ })[] | undefined;
515
+ liveCampaignsForCreator?: any;
516
+ soonCampaignsForCreator?: any;
517
+ pastCampaignsForCreator?: any;
518
+ distributedBycreator?: any;
519
+ tokens: {
520
+ id: string;
521
+ name: string | null;
522
+ chainId: number;
523
+ address: string;
524
+ decimals: number;
525
+ symbol: string;
526
+ icon: string;
527
+ verified: boolean;
528
+ isNative: boolean;
529
+ isTest: boolean;
530
+ type: "POINT" | "PRETGE" | "TOKEN";
531
+ price?: number | null | undefined;
532
+ updatedAt?: number | null | undefined;
533
+ priceSource?: string | null | undefined;
534
+ displaySymbol?: string | undefined;
535
+ underlyingTokenId?: string | undefined;
536
+ priceAlertDismissedAt?: number | undefined;
537
+ priceAlertCount?: number | undefined;
538
+ }[];
539
+ chain: {
540
+ id: number;
541
+ name: string;
542
+ icon: string;
543
+ liveCampaigns: number;
544
+ endOfDisputePeriod: number;
545
+ explorers?: {
546
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
547
+ url: string;
548
+ chainId: number;
549
+ }[] | undefined;
550
+ lastClaimsOnchainFetchTimestamp: string | null;
551
+ };
552
+ protocol: {
553
+ id: string;
554
+ tags: string[];
555
+ name: string;
556
+ description: string;
557
+ url: string;
558
+ icon: string;
559
+ banner: string | null;
560
+ opportunityBannerLight: string | null;
561
+ opportunityBannerDark: string | null;
562
+ } | undefined;
563
+ activePrograms: {
564
+ icon: string;
565
+ id: string;
566
+ name: string;
567
+ slug: string | null;
568
+ }[];
569
+ depositUrls: {
570
+ id: string;
571
+ title: string;
572
+ url: string;
573
+ subtitle?: string | undefined;
574
+ icon?: string | undefined;
575
+ priority: number;
576
+ }[] | undefined;
577
+ id: string;
578
+ hidden: true | undefined;
579
+ nativeApr: number | undefined;
580
+ depositUrl: string | undefined;
581
+ explorerAddress: string | undefined;
582
+ lastCampaignCreatedAt: number;
583
+ earliestCampaignStart: bigint | undefined;
584
+ latestCampaignStart: bigint | undefined;
585
+ earliestCampaignEnd: bigint | undefined;
586
+ latestCampaignEnd: bigint | undefined;
587
+ } | null>;
588
+ /** Counts opportunities matching the filter. `hidden` defaults to false. */
589
+ opportunityCount: (_parent: unknown, args: {
590
+ where?: Record<string, unknown> | null | undefined;
591
+ }, _ctx: GraphQLContext) => Promise<number>;
592
+ };
593
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../../../../apps/api/src/modules/graphql/resolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEhE,qEAAqE;AACrE,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,6BAA6B;AAC7B,SAAS,KAAK,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW,EAAU;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAAA,CACxC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,IAAwB,EAAE,SAAiB,EAAW;IAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,YAAY;QAAE,OAAO,KAAK,CAAC;IAE3C,MAAM,KAAK,GAAoB,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACxE,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,QAAQ,EAAE,YAAY;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACd;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW,EAAE;QACX,kEAAkE;QAClE,SAAS,EAAE,CAAC,MAAiC,EAAE,IAAoD,EAAE,EAAE,CAAC;YACtG,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAc,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;YACnE,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAAA,CAC3C;KACF;IAED,KAAK,EAAE;QACL;;;;;;WAMG;QACH,aAAa,EAAE,KAAK,EAClB,OAAgB,EAChB,IAKC,EACD,IAAoB,EACpB,IAAwB,EACxB,EAAE,CAAC;YACH,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACzC,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAE3D,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,eAAe,CAAC;gBACtD,KAAK,EAAE,UAAU;gBACjB,OAAO;gBACP,IAAI;gBACJ,IAAI;gBACJ,aAAa;aACd,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAAA,CACzD;QAED,+EAA+E;QAC/E,WAAW,EAAE,KAAK,EAAE,OAAgB,EAAE,IAAoB,EAAE,IAAoB,EAAE,EAAE,CAAC;YACnF,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5E,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YAC5B,OAAO,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAA,CACzC;QAED,4EAA4E;QAC5E,gBAAgB,EAAE,KAAK,EACrB,OAAgB,EAChB,IAAgD,EAChD,IAAoB,EACpB,EAAE,CAAC;YACH,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,qBAAqB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAAA,CACvD;KACF;CACF,CAAC"}
@@ -0,0 +1,87 @@
1
+ import Elysia from "elysia";
2
+ export declare const graphqlV1: Elysia<"/graphql", {
3
+ decorator: {};
4
+ store: {};
5
+ derive: {};
6
+ resolve: {};
7
+ }, {
8
+ typebox: {};
9
+ error: {};
10
+ }, {
11
+ schema: {};
12
+ standaloneSchema: {};
13
+ macro: {};
14
+ macroFn: {};
15
+ parser: {};
16
+ response: {};
17
+ }, {
18
+ graphql: {};
19
+ } & {
20
+ graphql: {
21
+ v1: {
22
+ [x: string]: {
23
+ body: unknown;
24
+ params: {};
25
+ query: unknown;
26
+ headers: unknown;
27
+ response: {
28
+ 200: Response;
29
+ };
30
+ };
31
+ };
32
+ };
33
+ } & {
34
+ graphql: {
35
+ v1: {
36
+ "*": {
37
+ [x: string]: {
38
+ body: unknown;
39
+ params: {
40
+ "*": string;
41
+ } & {};
42
+ query: unknown;
43
+ headers: unknown;
44
+ response: {
45
+ 200: Response;
46
+ 422: {
47
+ type: "validation";
48
+ on: string;
49
+ summary?: string | undefined;
50
+ message?: string | undefined;
51
+ found?: unknown;
52
+ property?: string | undefined;
53
+ expected?: string | undefined;
54
+ };
55
+ };
56
+ };
57
+ };
58
+ };
59
+ };
60
+ }, {
61
+ derive: {};
62
+ resolve: {};
63
+ schema: {};
64
+ standaloneSchema: {};
65
+ response: {};
66
+ }, {
67
+ derive: {};
68
+ resolve: {
69
+ readonly userAddress: null;
70
+ readonly userTier: 0;
71
+ readonly isBackOffice: true;
72
+ readonly apiKeyId: null;
73
+ } | {
74
+ readonly userAddress: string;
75
+ readonly userTier: number;
76
+ readonly isBackOffice: false;
77
+ readonly apiKeyId: string;
78
+ } | {
79
+ readonly userAddress: string | null;
80
+ readonly userTier: number;
81
+ readonly isBackOffice: false;
82
+ readonly apiKeyId: null;
83
+ };
84
+ schema: {};
85
+ standaloneSchema: {};
86
+ response: {};
87
+ }>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../../../apps/api/src/modules/graphql/router.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;;;;;;GAUG;AAEH,2EAA2E;AAC3E,KAAK,UAAU,aAAa,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,QAAQ,GAQT,EAAqB;IACpB,MAAM,OAAO,GAAmB;QAC9B,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;KACxD,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KACtD,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAAA,CAClC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;KAC5E,GAAG,CAAC,WAAW,CAAC;KAChB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAC3B,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,sCAAsC,CAAC;AAAA,CACvE,CAAC;KACD,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;KAC3C,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC"}