@snagsolutions/sdk 0.1.0-alpha.16 → 0.1.0-alpha.160

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 (271) hide show
  1. package/CHANGELOG.md +1328 -0
  2. package/README.md +13 -23
  3. package/core.d.ts +19 -5
  4. package/core.d.ts.map +1 -1
  5. package/core.js +24 -17
  6. package/core.js.map +1 -1
  7. package/core.mjs +24 -17
  8. package/core.mjs.map +1 -1
  9. package/index.d.mts +9 -6
  10. package/index.d.ts +9 -6
  11. package/index.d.ts.map +1 -1
  12. package/index.js +8 -4
  13. package/index.js.map +1 -1
  14. package/index.mjs +9 -5
  15. package/index.mjs.map +1 -1
  16. package/package.json +4 -5
  17. package/resource.d.ts +1 -1
  18. package/resource.d.ts.map +1 -1
  19. package/resource.js.map +1 -1
  20. package/resource.mjs.map +1 -1
  21. package/resources/assets.d.ts +16 -2
  22. package/resources/assets.d.ts.map +1 -1
  23. package/resources/assets.js +8 -0
  24. package/resources/assets.js.map +1 -1
  25. package/resources/assets.mjs +8 -0
  26. package/resources/assets.mjs.map +1 -1
  27. package/resources/auctions/auctions.d.ts +285 -0
  28. package/resources/auctions/auctions.d.ts.map +1 -0
  29. package/resources/auctions/auctions.js +76 -0
  30. package/resources/auctions/auctions.js.map +1 -0
  31. package/resources/auctions/auctions.mjs +49 -0
  32. package/resources/auctions/auctions.mjs.map +1 -0
  33. package/resources/auctions/index.d.ts +3 -0
  34. package/resources/auctions/index.d.ts.map +1 -0
  35. package/resources/auctions/index.js +9 -0
  36. package/resources/auctions/index.js.map +1 -0
  37. package/resources/auctions/index.mjs +4 -0
  38. package/resources/auctions/index.mjs.map +1 -0
  39. package/resources/auctions/website-user-attributes/index.d.ts +3 -0
  40. package/resources/auctions/website-user-attributes/index.d.ts.map +1 -0
  41. package/resources/auctions/website-user-attributes/index.js +9 -0
  42. package/resources/auctions/website-user-attributes/index.js.map +1 -0
  43. package/resources/auctions/website-user-attributes/index.mjs +4 -0
  44. package/resources/auctions/website-user-attributes/index.mjs.map +1 -0
  45. package/resources/auctions/website-user-attributes/values.d.ts +76 -0
  46. package/resources/auctions/website-user-attributes/values.d.ts.map +1 -0
  47. package/resources/auctions/website-user-attributes/values.js +35 -0
  48. package/resources/auctions/website-user-attributes/values.js.map +1 -0
  49. package/resources/auctions/website-user-attributes/values.mjs +31 -0
  50. package/resources/auctions/website-user-attributes/values.mjs.map +1 -0
  51. package/resources/auctions/website-user-attributes/website-user-attributes.d.ts +92 -0
  52. package/resources/auctions/website-user-attributes/website-user-attributes.d.ts.map +1 -0
  53. package/resources/auctions/website-user-attributes/website-user-attributes.js +69 -0
  54. package/resources/auctions/website-user-attributes/website-user-attributes.js.map +1 -0
  55. package/resources/auctions/website-user-attributes/website-user-attributes.mjs +42 -0
  56. package/resources/auctions/website-user-attributes/website-user-attributes.mjs.map +1 -0
  57. package/resources/auctions/website-user-attributes.d.ts +2 -0
  58. package/resources/auctions/website-user-attributes.d.ts.map +1 -0
  59. package/resources/auctions/website-user-attributes.js +19 -0
  60. package/resources/auctions/website-user-attributes.js.map +1 -0
  61. package/resources/auctions/website-user-attributes.mjs +3 -0
  62. package/resources/auctions/website-user-attributes.mjs.map +1 -0
  63. package/resources/auctions.d.ts +1 -133
  64. package/resources/auctions.d.ts.map +1 -1
  65. package/resources/auctions.js +15 -22
  66. package/resources/auctions.js.map +1 -1
  67. package/resources/auctions.mjs +1 -20
  68. package/resources/auctions.mjs.map +1 -1
  69. package/resources/auth.d.ts +11 -3
  70. package/resources/auth.d.ts.map +1 -1
  71. package/resources/auth.js.map +1 -1
  72. package/resources/auth.mjs.map +1 -1
  73. package/resources/index.d.ts +3 -3
  74. package/resources/index.d.ts.map +1 -1
  75. package/resources/index.js +1 -1
  76. package/resources/index.js.map +1 -1
  77. package/resources/index.mjs +2 -2
  78. package/resources/index.mjs.map +1 -1
  79. package/resources/loyalty/account-streaks.d.ts +81 -0
  80. package/resources/loyalty/account-streaks.d.ts.map +1 -0
  81. package/resources/loyalty/account-streaks.js +24 -0
  82. package/resources/loyalty/account-streaks.js.map +1 -0
  83. package/resources/loyalty/account-streaks.mjs +20 -0
  84. package/resources/loyalty/account-streaks.mjs.map +1 -0
  85. package/resources/loyalty/accounts.d.ts +58 -16
  86. package/resources/loyalty/accounts.d.ts.map +1 -1
  87. package/resources/loyalty/accounts.js +13 -0
  88. package/resources/loyalty/accounts.js.map +1 -1
  89. package/resources/loyalty/accounts.mjs +13 -0
  90. package/resources/loyalty/accounts.mjs.map +1 -1
  91. package/resources/loyalty/badges.d.ts +472 -22
  92. package/resources/loyalty/badges.d.ts.map +1 -1
  93. package/resources/loyalty/badges.js +19 -1
  94. package/resources/loyalty/badges.js.map +1 -1
  95. package/resources/loyalty/badges.mjs +19 -1
  96. package/resources/loyalty/badges.mjs.map +1 -1
  97. package/resources/loyalty/currencies.d.ts +19 -0
  98. package/resources/loyalty/currencies.d.ts.map +1 -1
  99. package/resources/loyalty/currencies.js +19 -0
  100. package/resources/loyalty/currencies.js.map +1 -1
  101. package/resources/loyalty/currencies.mjs +19 -0
  102. package/resources/loyalty/currencies.mjs.map +1 -1
  103. package/resources/loyalty/index.d.ts +4 -3
  104. package/resources/loyalty/index.d.ts.map +1 -1
  105. package/resources/loyalty/index.js +5 -3
  106. package/resources/loyalty/index.js.map +1 -1
  107. package/resources/loyalty/index.mjs +2 -1
  108. package/resources/loyalty/index.mjs.map +1 -1
  109. package/resources/loyalty/loyalty.d.ts +10 -6
  110. package/resources/loyalty/loyalty.d.ts.map +1 -1
  111. package/resources/loyalty/loyalty.js +6 -2
  112. package/resources/loyalty/loyalty.js.map +1 -1
  113. package/resources/loyalty/loyalty.mjs +7 -3
  114. package/resources/loyalty/loyalty.mjs.map +1 -1
  115. package/resources/loyalty/multipliers.d.ts +39 -2
  116. package/resources/loyalty/multipliers.d.ts.map +1 -1
  117. package/resources/loyalty/multipliers.js +23 -0
  118. package/resources/loyalty/multipliers.js.map +1 -1
  119. package/resources/loyalty/multipliers.mjs +23 -0
  120. package/resources/loyalty/multipliers.mjs.map +1 -1
  121. package/resources/loyalty/questions-responses.d.ts +39 -0
  122. package/resources/loyalty/questions-responses.d.ts.map +1 -1
  123. package/resources/loyalty/questions-responses.js +9 -0
  124. package/resources/loyalty/questions-responses.js.map +1 -1
  125. package/resources/loyalty/questions-responses.mjs +9 -0
  126. package/resources/loyalty/questions-responses.mjs.map +1 -1
  127. package/resources/loyalty/questions.d.ts +37 -2
  128. package/resources/loyalty/questions.d.ts.map +1 -1
  129. package/resources/loyalty/questions.js +31 -0
  130. package/resources/loyalty/questions.js.map +1 -1
  131. package/resources/loyalty/questions.mjs +31 -0
  132. package/resources/loyalty/questions.mjs.map +1 -1
  133. package/resources/loyalty/rule-edits.d.ts +2610 -4
  134. package/resources/loyalty/rule-edits.d.ts.map +1 -1
  135. package/resources/loyalty/rule-edits.js +14 -0
  136. package/resources/loyalty/rule-edits.js.map +1 -1
  137. package/resources/loyalty/rule-edits.mjs +14 -0
  138. package/resources/loyalty/rule-edits.mjs.map +1 -1
  139. package/resources/loyalty/rule-groups.d.ts +269 -58
  140. package/resources/loyalty/rule-groups.d.ts.map +1 -1
  141. package/resources/loyalty/rule-groups.js +36 -0
  142. package/resources/loyalty/rule-groups.js.map +1 -1
  143. package/resources/loyalty/rule-groups.mjs +36 -0
  144. package/resources/loyalty/rule-groups.mjs.map +1 -1
  145. package/resources/loyalty/rules.d.ts +1848 -265
  146. package/resources/loyalty/rules.d.ts.map +1 -1
  147. package/resources/loyalty/rules.js +40 -9
  148. package/resources/loyalty/rules.js.map +1 -1
  149. package/resources/loyalty/rules.mjs +40 -9
  150. package/resources/loyalty/rules.mjs.map +1 -1
  151. package/resources/loyalty/transactions/index.d.ts +3 -0
  152. package/resources/loyalty/transactions/index.d.ts.map +1 -0
  153. package/resources/loyalty/transactions/index.js +9 -0
  154. package/resources/loyalty/transactions/index.js.map +1 -0
  155. package/resources/loyalty/transactions/index.mjs +4 -0
  156. package/resources/loyalty/transactions/index.mjs.map +1 -0
  157. package/resources/loyalty/transactions/rule-statuses.d.ts +61 -0
  158. package/resources/loyalty/transactions/rule-statuses.d.ts.map +1 -0
  159. package/resources/loyalty/transactions/rule-statuses.js +23 -0
  160. package/resources/loyalty/transactions/rule-statuses.js.map +1 -0
  161. package/resources/loyalty/transactions/rule-statuses.mjs +19 -0
  162. package/resources/loyalty/transactions/rule-statuses.mjs.map +1 -0
  163. package/resources/loyalty/transactions/transactions.d.ts +292 -0
  164. package/resources/loyalty/transactions/transactions.d.ts.map +1 -0
  165. package/resources/loyalty/transactions/transactions.js +61 -0
  166. package/resources/loyalty/transactions/transactions.js.map +1 -0
  167. package/resources/loyalty/transactions/transactions.mjs +34 -0
  168. package/resources/loyalty/transactions/transactions.mjs.map +1 -0
  169. package/resources/loyalty/transactions.d.ts +1 -247
  170. package/resources/loyalty/transactions.d.ts.map +1 -1
  171. package/resources/loyalty/transactions.js +15 -18
  172. package/resources/loyalty/transactions.js.map +1 -1
  173. package/resources/loyalty/transactions.mjs +1 -16
  174. package/resources/loyalty/transactions.mjs.map +1 -1
  175. package/resources/minting.d.ts +5 -5
  176. package/resources/minting.d.ts.map +1 -1
  177. package/resources/referral/referral.d.ts +11 -3
  178. package/resources/referral/referral.d.ts.map +1 -1
  179. package/resources/referral/referral.js +11 -5
  180. package/resources/referral/referral.js.map +1 -1
  181. package/resources/referral/referral.mjs +11 -5
  182. package/resources/referral/referral.mjs.map +1 -1
  183. package/resources/referral/users.d.ts +28 -1
  184. package/resources/referral/users.d.ts.map +1 -1
  185. package/resources/referral/users.js +14 -0
  186. package/resources/referral/users.js.map +1 -1
  187. package/resources/referral/users.mjs +14 -0
  188. package/resources/referral/users.mjs.map +1 -1
  189. package/resources/users/index.d.ts +1 -1
  190. package/resources/users/index.d.ts.map +1 -1
  191. package/resources/users/index.js.map +1 -1
  192. package/resources/users/index.mjs.map +1 -1
  193. package/resources/users/metadatas.d.ts +27 -0
  194. package/resources/users/metadatas.d.ts.map +1 -1
  195. package/resources/users/metadatas.js.map +1 -1
  196. package/resources/users/metadatas.mjs.map +1 -1
  197. package/resources/users/users.d.ts +144 -6
  198. package/resources/users/users.d.ts.map +1 -1
  199. package/resources/users/users.js +53 -1
  200. package/resources/users/users.js.map +1 -1
  201. package/resources/users/users.mjs +53 -1
  202. package/resources/users/users.mjs.map +1 -1
  203. package/resources/websites/index.d.ts +2 -2
  204. package/resources/websites/index.d.ts.map +1 -1
  205. package/resources/websites/index.js.map +1 -1
  206. package/resources/websites/index.mjs +2 -2
  207. package/resources/websites/index.mjs.map +1 -1
  208. package/resources/websites/website-collections.d.ts +0 -69
  209. package/resources/websites/website-collections.d.ts.map +1 -1
  210. package/resources/websites/website-collections.js +0 -16
  211. package/resources/websites/website-collections.js.map +1 -1
  212. package/resources/websites/website-collections.mjs +0 -16
  213. package/resources/websites/website-collections.mjs.map +1 -1
  214. package/resources/websites/website-user-roles.d.ts +23 -0
  215. package/resources/websites/website-user-roles.d.ts.map +1 -1
  216. package/resources/websites/website-user-roles.js +23 -0
  217. package/resources/websites/website-user-roles.js.map +1 -1
  218. package/resources/websites/website-user-roles.mjs +23 -0
  219. package/resources/websites/website-user-roles.mjs.map +1 -1
  220. package/resources/websites/websites.d.ts +8 -98
  221. package/resources/websites/websites.d.ts.map +1 -1
  222. package/resources/websites/websites.js +0 -6
  223. package/resources/websites/websites.js.map +1 -1
  224. package/resources/websites/websites.mjs +1 -7
  225. package/resources/websites/websites.mjs.map +1 -1
  226. package/src/core.ts +39 -16
  227. package/src/index.ts +30 -11
  228. package/src/resource.ts +1 -1
  229. package/src/resources/assets.ts +18 -2
  230. package/src/resources/auctions/auctions.ts +432 -0
  231. package/src/resources/auctions/index.ts +16 -0
  232. package/src/resources/auctions/website-user-attributes/index.ts +10 -0
  233. package/src/resources/auctions/website-user-attributes/values.ts +97 -0
  234. package/src/resources/auctions/website-user-attributes/website-user-attributes.ts +137 -0
  235. package/src/resources/auctions/website-user-attributes.ts +3 -0
  236. package/src/resources/auctions.ts +1 -207
  237. package/src/resources/auth.ts +14 -4
  238. package/src/resources/index.ts +12 -8
  239. package/src/resources/loyalty/account-streaks.ts +110 -0
  240. package/src/resources/loyalty/accounts.ts +63 -18
  241. package/src/resources/loyalty/badges.ts +567 -24
  242. package/src/resources/loyalty/currencies.ts +19 -0
  243. package/src/resources/loyalty/index.ts +12 -1
  244. package/src/resources/loyalty/loyalty.ts +33 -3
  245. package/src/resources/loyalty/multipliers.ts +43 -4
  246. package/src/resources/loyalty/questions-responses.ts +45 -0
  247. package/src/resources/loyalty/questions.ts +38 -2
  248. package/src/resources/loyalty/rule-edits.ts +3669 -51
  249. package/src/resources/loyalty/rule-groups.ts +444 -65
  250. package/src/resources/loyalty/rules.ts +2769 -326
  251. package/src/resources/loyalty/transactions/index.ts +10 -0
  252. package/src/resources/loyalty/transactions/rule-statuses.ts +87 -0
  253. package/src/resources/loyalty/transactions/transactions.ts +520 -0
  254. package/src/resources/loyalty/transactions.ts +1 -330
  255. package/src/resources/minting.ts +19 -5
  256. package/src/resources/referral/referral.ts +13 -11
  257. package/src/resources/referral/users.ts +33 -2
  258. package/src/resources/users/index.ts +4 -0
  259. package/src/resources/users/metadatas.ts +52 -0
  260. package/src/resources/users/users.ts +192 -5
  261. package/src/resources/websites/index.ts +2 -13
  262. package/src/resources/websites/website-collections.ts +1 -145
  263. package/src/resources/websites/website-user-roles.ts +23 -0
  264. package/src/resources/websites/websites.ts +8 -134
  265. package/src/version.ts +1 -1
  266. package/version.d.ts +1 -1
  267. package/version.d.ts.map +1 -1
  268. package/version.js +1 -1
  269. package/version.js.map +1 -1
  270. package/version.mjs +1 -1
  271. package/version.mjs.map +1 -1
@@ -6,6 +6,13 @@ import * as Core from '../../core';
6
6
  export class RuleEdits extends APIResource {
7
7
  /**
8
8
  * Retrieve configured loyalty rule edits with optional pagination and filters
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const ruleEdits = await client.loyalty.ruleEdits.list({
13
+ * loyaltyRuleId: true,
14
+ * });
15
+ * ```
9
16
  */
10
17
  list(query: RuleEditListParams, options?: Core.RequestOptions): Core.APIPromise<RuleEditListResponse> {
11
18
  return this._client.get('/api/loyalty/rule_edits', { query, ...options });
@@ -13,6 +20,13 @@ export class RuleEdits extends APIResource {
13
20
 
14
21
  /**
15
22
  * Restore a loyalty rule from a rule edit
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const response = await client.loyalty.ruleEdits.restore(
27
+ * '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
28
+ * );
29
+ * ```
16
30
  */
17
31
  restore(
18
32
  id: string,
@@ -107,16 +121,41 @@ export namespace RuleEditListResponse {
107
121
  */
108
122
  deletedAt: string | null;
109
123
 
124
+ /**
125
+ * Description of the loyalty rule
126
+ */
127
+ description: string;
128
+
129
+ /**
130
+ * End time of the loyalty rule
131
+ */
132
+ endTime: string;
133
+
110
134
  /**
111
135
  * Frequency of the loyalty rule
112
136
  */
113
137
  frequency: string;
114
138
 
139
+ /**
140
+ * Name of the loyalty rule
141
+ */
142
+ name: string;
143
+
115
144
  /**
116
145
  * Unique identifier for the organization
117
146
  */
118
147
  organizationId: string;
119
148
 
149
+ /**
150
+ * Type of the reward
151
+ */
152
+ rewardType: 'points' | 'multiplier' | 'badge';
153
+
154
+ /**
155
+ * Start time of the loyalty rule
156
+ */
157
+ startTime: string;
158
+
120
159
  /**
121
160
  * Type of the loyalty rule
122
161
  */
@@ -137,10 +176,886 @@ export namespace RuleEditListResponse {
137
176
  */
138
177
  collectionAddress?: string;
139
178
 
179
+ /**
180
+ * URL of the media associated with the loyalty rule
181
+ */
182
+ mediaUrl?: string | null;
183
+
140
184
  /**
141
185
  * Optional metadata for the loyalty rule
142
186
  */
143
- metadata?: Record<string, unknown>;
187
+ metadata?: { [key: string]: Data.Metadata };
188
+ }
189
+
190
+ export namespace Data {
191
+ export interface Metadata {
192
+ /**
193
+ * Number of tokens per batch.
194
+ */
195
+ batchSize?: number | null;
196
+
197
+ /**
198
+ * Text displayed on the action button.
199
+ */
200
+ buttonText?: string | null;
201
+
202
+ /**
203
+ * Flag indicating if commenting is required.
204
+ */
205
+ checkComment?: boolean | null;
206
+
207
+ /**
208
+ * Flag indicating if liking the post is required.
209
+ */
210
+ checkLike?: boolean | null;
211
+
212
+ /**
213
+ * Flag indicating if reposting is required.
214
+ */
215
+ checkRepost?: boolean | null;
216
+
217
+ /**
218
+ * Text to check in the Twitter post, username, or bio.
219
+ */
220
+ checkText?: string | Array<string> | null;
221
+
222
+ /**
223
+ * Array of collections associated with the rule.
224
+ */
225
+ collection?: Array<Metadata.Collection>;
226
+
227
+ /**
228
+ * Conditions for completing the profile.
229
+ */
230
+ completeProfileConditions?: { [key: string]: boolean } | null;
231
+
232
+ /**
233
+ * Description of the external rule condition (only for external rules)
234
+ */
235
+ conditionDescription?: string;
236
+
237
+ /**
238
+ * Object containing details for the call-to-action.
239
+ */
240
+ cta?: Metadata.Cta | null;
241
+
242
+ /**
243
+ * API key for custom rewards integration.
244
+ */
245
+ customRewardsApiKey?: string;
246
+
247
+ /**
248
+ * Flag indicating if the rule should use direct RPC to get the balance of tokens.
249
+ */
250
+ directRpc?: boolean;
251
+
252
+ /**
253
+ * Array of Discord servers, channels, and roles to join.
254
+ */
255
+ discordServersToJoin?: Array<Metadata.DiscordServersToJoin> | null;
256
+
257
+ /**
258
+ * Array of drip quests required to complete the rule.
259
+ */
260
+ dripQuestsToComplete?: Array<Metadata.DripQuestsToComplete> | null;
261
+
262
+ /**
263
+ * Flag indicating whether joining Discord servers is required.
264
+ */
265
+ enableJoinDiscordServers?: boolean | null;
266
+
267
+ /**
268
+ * Flag indicating whether streaks are enabled.
269
+ */
270
+ enableStreaks?: boolean | null;
271
+
272
+ /**
273
+ * Flag indicating whether the verified multiplier is enabled.
274
+ */
275
+ enableVerifiedMultiplier?: boolean;
276
+
277
+ /**
278
+ * Fill source of the order for the token sale
279
+ */
280
+ fillSource?: string;
281
+
282
+ /**
283
+ * Percentage reward given to a user for their first referral.
284
+ */
285
+ firstReferralReward?: number | null;
286
+
287
+ /**
288
+ * Flag indicating whether the fill source is included.
289
+ */
290
+ hasFillSource?: boolean;
291
+
292
+ /**
293
+ * Indicates if the item has never been sold.
294
+ */
295
+ hasNeverSold?: boolean;
296
+
297
+ /**
298
+ * Indicates if the full royalty has been paid for items.
299
+ */
300
+ hasPaidFullRoyalty?: boolean;
301
+
302
+ /**
303
+ * Flag indicating if the sale currency is included.
304
+ */
305
+ hasSaleCurrency?: boolean;
306
+
307
+ /**
308
+ * Indicates if the user has a verified Twitter account.
309
+ */
310
+ hasVerifiedTwitter?: boolean;
311
+
312
+ /**
313
+ * URL of the image associated with the rule.
314
+ */
315
+ imageUrl?: string | null;
316
+
317
+ /**
318
+ * If enabled, the first transaction done on the platform will complete this rule
319
+ */
320
+ isCheckInOnEveryTxn?: boolean;
321
+
322
+ /**
323
+ * Indicates if the multiplier has been applied to rewards.
324
+ */
325
+ isMultiplierApplied?: boolean;
326
+
327
+ /**
328
+ * Flag indicating if the rule is restricted to new users.
329
+ */
330
+ isRestrictedToNewUsers?: boolean;
331
+
332
+ /**
333
+ * Flag indicating if rewards are applied retroactively.
334
+ */
335
+ isRetroactive?: boolean | null;
336
+
337
+ /**
338
+ * Flag indicating if the token hold multiplier is applied.
339
+ */
340
+ isTokenHoldMultiplier?: boolean;
341
+
342
+ /**
343
+ * Optional link associated with the metadata.
344
+ */
345
+ link?: string | null;
346
+
347
+ /**
348
+ * Liquidity pool details.
349
+ */
350
+ liquidity?: Metadata.Liquidity;
351
+
352
+ /**
353
+ * Maximum quantity constraint for token holding.
354
+ */
355
+ maxQty?: number | null;
356
+
357
+ /**
358
+ * Minimum quantity constraint for token holding.
359
+ */
360
+ minQty?: number | null;
361
+
362
+ /**
363
+ * Array of loyalty currency IDs used for multipliers.
364
+ */
365
+ multiplierLoyaltyCurrencyIds?: Array<string> | null;
366
+
367
+ /**
368
+ * Flag indicating whether to include only known users.
369
+ */
370
+ onlyKnownUsers?: boolean;
371
+
372
+ /**
373
+ * Flag indicating whether to include only native tokens.
374
+ */
375
+ onlyNative?: boolean;
376
+
377
+ /**
378
+ * Flag indicating whether to include only non-listed items.
379
+ */
380
+ onlyNonListed?: boolean;
381
+
382
+ /**
383
+ * Indicates if only existing users are rewarded.
384
+ */
385
+ onlyRewardExistingUser?: boolean;
386
+
387
+ /**
388
+ * give points for only one token ownership per contract
389
+ */
390
+ onlyRewardSingleTokenOwnership?: boolean | null;
391
+
392
+ /**
393
+ * Promotional code associated with the rule.
394
+ */
395
+ promoCode?: string;
396
+
397
+ /**
398
+ * URL of the CSV file containing promo codes.
399
+ */
400
+ promoCodeCsvUrl?: string;
401
+
402
+ /**
403
+ * Numbers of the promotional code to be generated.
404
+ */
405
+ promoCodeLength?: number | null;
406
+
407
+ /**
408
+ * Type of the promotional code.
409
+ */
410
+ promoCodeType?: 'code' | 'csv' | 'generate';
411
+
412
+ /**
413
+ * Array defining ranges and corresponding rewards.
414
+ */
415
+ range?: Array<Metadata.Range>;
416
+
417
+ /**
418
+ * Object defining referral requirements.
419
+ */
420
+ referralRequirements?: Metadata.ReferralRequirements | null;
421
+
422
+ /**
423
+ * Lump sum reward given to a referrer.
424
+ */
425
+ referrerReward?: number | null;
426
+
427
+ /**
428
+ * Loyalty currency ID of the referrer reward.
429
+ */
430
+ referrerRewardLoyaltyCurrencyId?: string | null;
431
+
432
+ /**
433
+ * Flag indicating if the post link is required.
434
+ */
435
+ requirePostLink?: boolean | null;
436
+
437
+ /**
438
+ * Flag indicating if media metadata is required.
439
+ */
440
+ requirePostMediaLink?: boolean | null;
441
+
442
+ /**
443
+ * Flag indicating if the rule can also reward badges per range.
444
+ */
445
+ rewardBadgePerRange?: boolean;
446
+
447
+ /**
448
+ * Flag indicating if the reward is rewarded by batch.
449
+ */
450
+ rewardByBatch?: boolean | null;
451
+
452
+ /**
453
+ * Criteria to evaluate the reward.
454
+ */
455
+ rewardCriteria?: 'IMPRESSIONS_COUNT' | 'ELIGIBLE_POST' | null;
456
+
457
+ /**
458
+ * Flag indicating if the reward is rewarded per action.
459
+ */
460
+ rewardPerAction?: boolean | null;
461
+
462
+ /**
463
+ * Flag indicating if rewards are given per impression.
464
+ */
465
+ rewardPerImpression?: boolean | null;
466
+
467
+ /**
468
+ * Flag indicating if the rule should reward based on value of traded tokens
469
+ * instead of count.
470
+ */
471
+ rewardPerValue?: boolean;
472
+
473
+ /**
474
+ * Wallet address of the user can only be used if userId is not provided
475
+ */
476
+ royaltyAddress?: string;
477
+
478
+ /**
479
+ * Royalty percentage of the item.
480
+ */
481
+ royaltyPercentage?: number;
482
+
483
+ /**
484
+ * Currency associated with sales.
485
+ */
486
+ saleCurrency?: string;
487
+
488
+ /**
489
+ * Percentage reward given for a second-level referral.
490
+ */
491
+ secondReferralReward?: number | null;
492
+
493
+ /**
494
+ * Flag indicating if the multiplier is skipped.
495
+ */
496
+ skipMultiplier?: boolean | null;
497
+
498
+ /**
499
+ * Object containing details of the associated smart contract.
500
+ */
501
+ smartContract?: Metadata.SmartContract;
502
+
503
+ /**
504
+ * Array of snapshot proposals for the rule.
505
+ */
506
+ snapshotProposals?: Array<Metadata.SnapshotProposal> | null;
507
+
508
+ /**
509
+ * Social media platform associated with the rule.
510
+ */
511
+ socialPlatform?:
512
+ | 'Custom'
513
+ | 'Discord'
514
+ | 'EpicGames'
515
+ | 'Instagram'
516
+ | 'Steam'
517
+ | 'Telegram'
518
+ | 'TikTok'
519
+ | 'Twitch'
520
+ | 'X(Twitter)'
521
+ | 'YouTube'
522
+ | 'Google'
523
+ | null;
524
+
525
+ /**
526
+ * URL of the social platform's logo.
527
+ */
528
+ socialPlatformLogo?: string | null;
529
+
530
+ /**
531
+ * Name of the social platform.
532
+ */
533
+ socialPlatformName?: string | null;
534
+
535
+ /**
536
+ * ID of the Steam app.
537
+ */
538
+ steamAppId?: string | null;
539
+
540
+ /**
541
+ * Array of streak milestones and corresponding rewards.
542
+ */
543
+ streakArray?: Array<Metadata.StreakArray> | null;
544
+
545
+ /**
546
+ * Metadata for swap loyalty rules
547
+ */
548
+ swap?: Metadata.Swap;
549
+
550
+ /**
551
+ * ID of the Telegram channel.
552
+ */
553
+ telegramChannelId?: string | null;
554
+
555
+ /**
556
+ * Time delay in seconds to verify actions.
557
+ */
558
+ timeDelayToVerifySeconds?: string | number | null;
559
+
560
+ /**
561
+ * Flag indicating if all contracts are tracked.
562
+ */
563
+ trackAllContracts?: boolean | null;
564
+
565
+ /**
566
+ * Flag indicating if the progress is tracked. If enabled, the rule can only be
567
+ * completed once the progress is 100%.
568
+ */
569
+ trackProgress?: boolean | null;
570
+
571
+ /**
572
+ * URL of the associated Twitter account.
573
+ */
574
+ twitterAccountUrl?: string;
575
+
576
+ /**
577
+ * Hashtag associated with the Twitter post.
578
+ */
579
+ twitterHashtag?: string;
580
+
581
+ /**
582
+ * URL of the associated Twitter post.
583
+ */
584
+ twitterPostUrl?: string;
585
+
586
+ /**
587
+ * Unique identifier of the Twitter user.
588
+ */
589
+ twitterUserId?: string;
590
+
591
+ /**
592
+ * Twitter username of the user.
593
+ */
594
+ twitterUsername?: string;
595
+
596
+ /**
597
+ * Minimum length of the verification text.
598
+ */
599
+ verificationTextMinimumLength?: number | null;
600
+
601
+ /**
602
+ * Multiplier applied to rewards for verified users.
603
+ */
604
+ verifiedMultiplier?: number | null;
605
+
606
+ /**
607
+ * Placeholder text for verification input fields.
608
+ */
609
+ verifyPlaceHolderText?: string | null;
610
+
611
+ /**
612
+ * Type of wallet associated with the rule.
613
+ */
614
+ walletType?: 'evm' | 'solana' | 'imx' | 'sui' | 'ton' | 'cosmos' | 'ultra' | 'agw' | null;
615
+
616
+ /**
617
+ * ID of the Youtube channel.
618
+ */
619
+ youtubeChannelId?: string | null;
620
+
621
+ /**
622
+ * ID of the Youtube video.
623
+ */
624
+ youtubeVideoId?: string | null;
625
+ }
626
+
627
+ export namespace Metadata {
628
+ export interface Collection {
629
+ /**
630
+ * Blockchain address of the collection.
631
+ */
632
+ address?: string;
633
+
634
+ /**
635
+ * Multiplier applied to the rewards for this collection.
636
+ */
637
+ multiplier?: number;
638
+
639
+ /**
640
+ * Blockchain network of the collection.
641
+ */
642
+ network?:
643
+ | 'abstract'
644
+ | 'abstractTestnet'
645
+ | 'apechain'
646
+ | 'arbitrum'
647
+ | 'avalanche'
648
+ | 'avalancheFuji'
649
+ | 'base'
650
+ | 'baseSepolia'
651
+ | 'berachain'
652
+ | 'berachainArtio'
653
+ | 'berachainBepolia'
654
+ | 'binance'
655
+ | 'bscTestnet'
656
+ | 'campTestnet'
657
+ | 'fantom'
658
+ | 'fantomTestnet'
659
+ | 'flowMainnet'
660
+ | 'mainnet'
661
+ | 'nexusTestnet'
662
+ | 'optimism'
663
+ | 'polygon'
664
+ | 'polygon_mumbai'
665
+ | 'skaleNebula'
666
+ | 'solana'
667
+ | 'sophon'
668
+ | 'sophonTestnet'
669
+ | 'sui'
670
+ | 'superseed'
671
+ | 'superseedSepolia'
672
+ | 'vanar'
673
+ | 'xai'
674
+ | 'zksync'
675
+ | 'coti'
676
+ | 'cotiTestnet'
677
+ | 'morph'
678
+ | 'morphTestnet'
679
+ | 'morphHolesky'
680
+ | 'ultra'
681
+ | 'ultraTestnet'
682
+ | 'nitrograph'
683
+ | 'sepolia'
684
+ | 'optimism_sepolia'
685
+ | 'arbitrumSepolia'
686
+ | 'goerli'
687
+ | 'optimism_goerli'
688
+ | 'arbitrumGoerli'
689
+ | 'basecamp'
690
+ | 'somnia';
691
+ }
692
+
693
+ /**
694
+ * Object containing details for the call-to-action.
695
+ */
696
+ export interface Cta {
697
+ /**
698
+ * Link for the call-to-action.
699
+ */
700
+ href?: string | null;
701
+
702
+ /**
703
+ * Label for the call-to-action.
704
+ */
705
+ label?: string | null;
706
+ }
707
+
708
+ export interface DiscordServersToJoin {
709
+ /**
710
+ * ID of the Discord server to join.
711
+ */
712
+ id?: string;
713
+
714
+ /**
715
+ * Array of Discord channels to join.
716
+ */
717
+ channels?: Array<DiscordServersToJoin.Channel>;
718
+
719
+ /**
720
+ * Array of roles to assign in the Discord server.
721
+ */
722
+ roles?: Array<DiscordServersToJoin.Role>;
723
+ }
724
+
725
+ export namespace DiscordServersToJoin {
726
+ export interface Channel {
727
+ /**
728
+ * ID of the Discord channel.
729
+ */
730
+ id?: string;
731
+
732
+ /**
733
+ * Array of emojis used in the channel.
734
+ */
735
+ emojis?: Array<Channel.Emoji>;
736
+
737
+ /**
738
+ * Phrase of text to be present in the discord message
739
+ */
740
+ text?: string;
741
+ }
742
+
743
+ export namespace Channel {
744
+ export interface Emoji {
745
+ /**
746
+ * ID of the emoji used in the channel.
747
+ */
748
+ id?: string;
749
+ }
750
+ }
751
+
752
+ export interface Role {
753
+ /**
754
+ * ID of the role in the Discord server.
755
+ */
756
+ id: string;
757
+ }
758
+ }
759
+
760
+ export interface DripQuestsToComplete {
761
+ /**
762
+ * ID of the drip quest to complete.
763
+ */
764
+ id: string;
765
+ }
766
+
767
+ /**
768
+ * Liquidity pool details.
769
+ */
770
+ export interface Liquidity {
771
+ /**
772
+ * Calculation type of the liquidity pool.
773
+ */
774
+ calculationType?: 'fixed' | 'custom';
775
+
776
+ /**
777
+ * Custom function to calculate the the reward amount based on the liquidity
778
+ * provided per day. X is the reward amount, Y is the liquidity provided per day in
779
+ * USD.
780
+ */
781
+ customFunction?: string;
782
+
783
+ /**
784
+ * Liquidity provided per day in USD
785
+ */
786
+ liquidityPerDay?: number;
787
+
788
+ /**
789
+ * Blockchain network of the liquidity pool.
790
+ */
791
+ network?:
792
+ | 'abstract'
793
+ | 'abstractTestnet'
794
+ | 'apechain'
795
+ | 'arbitrum'
796
+ | 'avalanche'
797
+ | 'avalancheFuji'
798
+ | 'base'
799
+ | 'baseSepolia'
800
+ | 'berachain'
801
+ | 'berachainArtio'
802
+ | 'berachainBepolia'
803
+ | 'binance'
804
+ | 'bscTestnet'
805
+ | 'campTestnet'
806
+ | 'fantom'
807
+ | 'fantomTestnet'
808
+ | 'flowMainnet'
809
+ | 'mainnet'
810
+ | 'nexusTestnet'
811
+ | 'optimism'
812
+ | 'polygon'
813
+ | 'polygon_mumbai'
814
+ | 'skaleNebula'
815
+ | 'solana'
816
+ | 'sophon'
817
+ | 'sophonTestnet'
818
+ | 'sui'
819
+ | 'superseed'
820
+ | 'superseedSepolia'
821
+ | 'vanar'
822
+ | 'xai'
823
+ | 'zksync'
824
+ | 'coti'
825
+ | 'cotiTestnet'
826
+ | 'morph'
827
+ | 'morphTestnet'
828
+ | 'morphHolesky'
829
+ | 'ultra'
830
+ | 'ultraTestnet'
831
+ | 'nitrograph'
832
+ | 'sepolia'
833
+ | 'optimism_sepolia'
834
+ | 'arbitrumSepolia'
835
+ | 'goerli'
836
+ | 'optimism_goerli'
837
+ | 'arbitrumGoerli'
838
+ | 'basecamp'
839
+ | 'somnia';
840
+
841
+ /**
842
+ * Indicates if only in-range liquidity is rewarded.
843
+ */
844
+ onlyRewardInRangeLiquidity?: boolean;
845
+
846
+ /**
847
+ * Array of liquidity pools associated with the rule.
848
+ */
849
+ pools?: Array<Liquidity.Pool>;
850
+
851
+ /**
852
+ * Protocol of the liquidity pool.
853
+ */
854
+ protocol?: string;
855
+ }
856
+
857
+ export namespace Liquidity {
858
+ export interface Pool {
859
+ /**
860
+ * Unique identifier of the liquidity pool.
861
+ */
862
+ id: string;
863
+ }
864
+ }
865
+
866
+ export interface Range {
867
+ /**
868
+ * Reward amount for this range.
869
+ */
870
+ amount: number;
871
+
872
+ /**
873
+ * End value of the range.
874
+ */
875
+ endRange: number;
876
+
877
+ /**
878
+ * Start value of the range.
879
+ */
880
+ startRange: number;
881
+
882
+ /**
883
+ * ID of the loyalty badge for this range.
884
+ */
885
+ loyaltyBadgeId?: string;
886
+
887
+ /**
888
+ * Amount of the loyalty multiplier for this range.
889
+ */
890
+ loyaltyMultiplierAmount?: number;
891
+ }
892
+
893
+ /**
894
+ * Object defining referral requirements.
895
+ */
896
+ export interface ReferralRequirements {
897
+ /**
898
+ * Flag indicating if achieving points is required.
899
+ */
900
+ achievePoints?: boolean | null;
901
+
902
+ /**
903
+ * Flag indicating if completing the profile is required.
904
+ */
905
+ completeProfile?: boolean | null;
906
+
907
+ /**
908
+ * Flag indicating if connecting Discord is required.
909
+ */
910
+ connectDiscord?: boolean | null;
911
+
912
+ /**
913
+ * Flag indicating if connecting email is required.
914
+ */
915
+ connectEmail?: boolean | null;
916
+
917
+ /**
918
+ * Flag indicating if connecting Twitter is required.
919
+ */
920
+ connectTwitter?: boolean | null;
921
+
922
+ points?: ReferralRequirements.Points | null;
923
+ }
924
+
925
+ export namespace ReferralRequirements {
926
+ export interface Points {
927
+ /**
928
+ * Points required for referral.
929
+ */
930
+ amount?: number | null;
931
+
932
+ /**
933
+ * ID of the loyalty currency for referral.
934
+ */
935
+ loyaltyCurrecyId?: string | null;
936
+ }
937
+ }
938
+
939
+ /**
940
+ * Object containing details of the associated smart contract.
941
+ */
942
+ export interface SmartContract {
943
+ /**
944
+ * Mapping of addresses for the smart contract.
945
+ */
946
+ addressMapping?: string | null;
947
+
948
+ /**
949
+ * Object containing details of the amount multiplier from the event.
950
+ */
951
+ amountMultiplier?: SmartContract.AmountMultiplier | null;
952
+
953
+ /**
954
+ * ID of the smart contract.
955
+ */
956
+ contractId?: string | null;
957
+
958
+ /**
959
+ * Criteria to evaluate the smart contract event.
960
+ */
961
+ criteria?: 'everyEvent' | 'byParameter' | null;
962
+
963
+ /**
964
+ * Event emitted by the smart contract.
965
+ */
966
+ event?: string | null;
967
+
968
+ /**
969
+ * Array of parameters for the smart contract.
970
+ */
971
+ params?: Array<SmartContract.Param> | null;
972
+
973
+ /**
974
+ * Type of the smart contract interaction.
975
+ */
976
+ type?: 'function' | 'event' | null;
977
+ }
978
+
979
+ export namespace SmartContract {
980
+ /**
981
+ * Object containing details of the amount multiplier from the event.
982
+ */
983
+ export interface AmountMultiplier {
984
+ /**
985
+ * Mapping of the value for the smart contract.
986
+ */
987
+ valueMapping?: string | null;
988
+ }
989
+
990
+ export interface Param {
991
+ /**
992
+ * Condition to check for the parameter.
993
+ */
994
+ condition?: string | null;
995
+
996
+ /**
997
+ * Name of the smart contract parameter.
998
+ */
999
+ name?: string | null;
1000
+
1001
+ /**
1002
+ * Value of the parameter.
1003
+ */
1004
+ value?: string | null;
1005
+ }
1006
+ }
1007
+
1008
+ export interface SnapshotProposal {
1009
+ /**
1010
+ * ID of the snapshot proposal.
1011
+ */
1012
+ id: string;
1013
+
1014
+ /**
1015
+ * Space associated with the snapshot proposal.
1016
+ */
1017
+ space: string;
1018
+ }
1019
+
1020
+ export interface StreakArray {
1021
+ /**
1022
+ * Reward amount for achieving the streak milestone.
1023
+ */
1024
+ streakAmount: number;
1025
+
1026
+ /**
1027
+ * Milestone required to achieve the streak.
1028
+ */
1029
+ streakMilestone: number;
1030
+ }
1031
+
1032
+ /**
1033
+ * Metadata for swap loyalty rules
1034
+ */
1035
+ export interface Swap {
1036
+ provider?: 'any' | 'relay' | 'lifi';
1037
+
1038
+ relayReferrerId?: string;
1039
+
1040
+ requireCrossChainSwap?: boolean;
1041
+
1042
+ swappedToChain?: 'any' | number | string;
1043
+
1044
+ swappedToTokens?: Array<Swap.SwappedToToken>;
1045
+
1046
+ tokenMode?: 'any' | 'specific';
1047
+
1048
+ trackTokenAmount?: boolean;
1049
+ }
1050
+
1051
+ export namespace Swap {
1052
+ export interface SwappedToToken {
1053
+ address: string;
1054
+
1055
+ chainId: string;
1056
+ }
1057
+ }
1058
+ }
144
1059
  }
145
1060
 
146
1061
  /**
@@ -167,16 +1082,41 @@ export namespace RuleEditListResponse {
167
1082
  */
168
1083
  deletedAt: string | null;
169
1084
 
1085
+ /**
1086
+ * Description of the loyalty rule
1087
+ */
1088
+ description: string;
1089
+
1090
+ /**
1091
+ * End time of the loyalty rule
1092
+ */
1093
+ endTime: string;
1094
+
170
1095
  /**
171
1096
  * Frequency of the loyalty rule
172
1097
  */
173
1098
  frequency: string;
174
1099
 
1100
+ /**
1101
+ * Name of the loyalty rule
1102
+ */
1103
+ name: string;
1104
+
175
1105
  /**
176
1106
  * Unique identifier for the organization
177
1107
  */
178
1108
  organizationId: string;
179
1109
 
1110
+ /**
1111
+ * Type of the reward
1112
+ */
1113
+ rewardType: 'points' | 'multiplier' | 'badge';
1114
+
1115
+ /**
1116
+ * Start time of the loyalty rule
1117
+ */
1118
+ startTime: string;
1119
+
180
1120
  /**
181
1121
  * Type of the loyalty rule
182
1122
  */
@@ -197,10 +1137,886 @@ export namespace RuleEditListResponse {
197
1137
  */
198
1138
  collectionAddress?: string;
199
1139
 
1140
+ /**
1141
+ * URL of the media associated with the loyalty rule
1142
+ */
1143
+ mediaUrl?: string | null;
1144
+
200
1145
  /**
201
1146
  * Optional metadata for the loyalty rule
202
1147
  */
203
- metadata?: Record<string, unknown>;
1148
+ metadata?: { [key: string]: PreviousData.Metadata };
1149
+ }
1150
+
1151
+ export namespace PreviousData {
1152
+ export interface Metadata {
1153
+ /**
1154
+ * Number of tokens per batch.
1155
+ */
1156
+ batchSize?: number | null;
1157
+
1158
+ /**
1159
+ * Text displayed on the action button.
1160
+ */
1161
+ buttonText?: string | null;
1162
+
1163
+ /**
1164
+ * Flag indicating if commenting is required.
1165
+ */
1166
+ checkComment?: boolean | null;
1167
+
1168
+ /**
1169
+ * Flag indicating if liking the post is required.
1170
+ */
1171
+ checkLike?: boolean | null;
1172
+
1173
+ /**
1174
+ * Flag indicating if reposting is required.
1175
+ */
1176
+ checkRepost?: boolean | null;
1177
+
1178
+ /**
1179
+ * Text to check in the Twitter post, username, or bio.
1180
+ */
1181
+ checkText?: string | Array<string> | null;
1182
+
1183
+ /**
1184
+ * Array of collections associated with the rule.
1185
+ */
1186
+ collection?: Array<Metadata.Collection>;
1187
+
1188
+ /**
1189
+ * Conditions for completing the profile.
1190
+ */
1191
+ completeProfileConditions?: { [key: string]: boolean } | null;
1192
+
1193
+ /**
1194
+ * Description of the external rule condition (only for external rules)
1195
+ */
1196
+ conditionDescription?: string;
1197
+
1198
+ /**
1199
+ * Object containing details for the call-to-action.
1200
+ */
1201
+ cta?: Metadata.Cta | null;
1202
+
1203
+ /**
1204
+ * API key for custom rewards integration.
1205
+ */
1206
+ customRewardsApiKey?: string;
1207
+
1208
+ /**
1209
+ * Flag indicating if the rule should use direct RPC to get the balance of tokens.
1210
+ */
1211
+ directRpc?: boolean;
1212
+
1213
+ /**
1214
+ * Array of Discord servers, channels, and roles to join.
1215
+ */
1216
+ discordServersToJoin?: Array<Metadata.DiscordServersToJoin> | null;
1217
+
1218
+ /**
1219
+ * Array of drip quests required to complete the rule.
1220
+ */
1221
+ dripQuestsToComplete?: Array<Metadata.DripQuestsToComplete> | null;
1222
+
1223
+ /**
1224
+ * Flag indicating whether joining Discord servers is required.
1225
+ */
1226
+ enableJoinDiscordServers?: boolean | null;
1227
+
1228
+ /**
1229
+ * Flag indicating whether streaks are enabled.
1230
+ */
1231
+ enableStreaks?: boolean | null;
1232
+
1233
+ /**
1234
+ * Flag indicating whether the verified multiplier is enabled.
1235
+ */
1236
+ enableVerifiedMultiplier?: boolean;
1237
+
1238
+ /**
1239
+ * Fill source of the order for the token sale
1240
+ */
1241
+ fillSource?: string;
1242
+
1243
+ /**
1244
+ * Percentage reward given to a user for their first referral.
1245
+ */
1246
+ firstReferralReward?: number | null;
1247
+
1248
+ /**
1249
+ * Flag indicating whether the fill source is included.
1250
+ */
1251
+ hasFillSource?: boolean;
1252
+
1253
+ /**
1254
+ * Indicates if the item has never been sold.
1255
+ */
1256
+ hasNeverSold?: boolean;
1257
+
1258
+ /**
1259
+ * Indicates if the full royalty has been paid for items.
1260
+ */
1261
+ hasPaidFullRoyalty?: boolean;
1262
+
1263
+ /**
1264
+ * Flag indicating if the sale currency is included.
1265
+ */
1266
+ hasSaleCurrency?: boolean;
1267
+
1268
+ /**
1269
+ * Indicates if the user has a verified Twitter account.
1270
+ */
1271
+ hasVerifiedTwitter?: boolean;
1272
+
1273
+ /**
1274
+ * URL of the image associated with the rule.
1275
+ */
1276
+ imageUrl?: string | null;
1277
+
1278
+ /**
1279
+ * If enabled, the first transaction done on the platform will complete this rule
1280
+ */
1281
+ isCheckInOnEveryTxn?: boolean;
1282
+
1283
+ /**
1284
+ * Indicates if the multiplier has been applied to rewards.
1285
+ */
1286
+ isMultiplierApplied?: boolean;
1287
+
1288
+ /**
1289
+ * Flag indicating if the rule is restricted to new users.
1290
+ */
1291
+ isRestrictedToNewUsers?: boolean;
1292
+
1293
+ /**
1294
+ * Flag indicating if rewards are applied retroactively.
1295
+ */
1296
+ isRetroactive?: boolean | null;
1297
+
1298
+ /**
1299
+ * Flag indicating if the token hold multiplier is applied.
1300
+ */
1301
+ isTokenHoldMultiplier?: boolean;
1302
+
1303
+ /**
1304
+ * Optional link associated with the metadata.
1305
+ */
1306
+ link?: string | null;
1307
+
1308
+ /**
1309
+ * Liquidity pool details.
1310
+ */
1311
+ liquidity?: Metadata.Liquidity;
1312
+
1313
+ /**
1314
+ * Maximum quantity constraint for token holding.
1315
+ */
1316
+ maxQty?: number | null;
1317
+
1318
+ /**
1319
+ * Minimum quantity constraint for token holding.
1320
+ */
1321
+ minQty?: number | null;
1322
+
1323
+ /**
1324
+ * Array of loyalty currency IDs used for multipliers.
1325
+ */
1326
+ multiplierLoyaltyCurrencyIds?: Array<string> | null;
1327
+
1328
+ /**
1329
+ * Flag indicating whether to include only known users.
1330
+ */
1331
+ onlyKnownUsers?: boolean;
1332
+
1333
+ /**
1334
+ * Flag indicating whether to include only native tokens.
1335
+ */
1336
+ onlyNative?: boolean;
1337
+
1338
+ /**
1339
+ * Flag indicating whether to include only non-listed items.
1340
+ */
1341
+ onlyNonListed?: boolean;
1342
+
1343
+ /**
1344
+ * Indicates if only existing users are rewarded.
1345
+ */
1346
+ onlyRewardExistingUser?: boolean;
1347
+
1348
+ /**
1349
+ * give points for only one token ownership per contract
1350
+ */
1351
+ onlyRewardSingleTokenOwnership?: boolean | null;
1352
+
1353
+ /**
1354
+ * Promotional code associated with the rule.
1355
+ */
1356
+ promoCode?: string;
1357
+
1358
+ /**
1359
+ * URL of the CSV file containing promo codes.
1360
+ */
1361
+ promoCodeCsvUrl?: string;
1362
+
1363
+ /**
1364
+ * Numbers of the promotional code to be generated.
1365
+ */
1366
+ promoCodeLength?: number | null;
1367
+
1368
+ /**
1369
+ * Type of the promotional code.
1370
+ */
1371
+ promoCodeType?: 'code' | 'csv' | 'generate';
1372
+
1373
+ /**
1374
+ * Array defining ranges and corresponding rewards.
1375
+ */
1376
+ range?: Array<Metadata.Range>;
1377
+
1378
+ /**
1379
+ * Object defining referral requirements.
1380
+ */
1381
+ referralRequirements?: Metadata.ReferralRequirements | null;
1382
+
1383
+ /**
1384
+ * Lump sum reward given to a referrer.
1385
+ */
1386
+ referrerReward?: number | null;
1387
+
1388
+ /**
1389
+ * Loyalty currency ID of the referrer reward.
1390
+ */
1391
+ referrerRewardLoyaltyCurrencyId?: string | null;
1392
+
1393
+ /**
1394
+ * Flag indicating if the post link is required.
1395
+ */
1396
+ requirePostLink?: boolean | null;
1397
+
1398
+ /**
1399
+ * Flag indicating if media metadata is required.
1400
+ */
1401
+ requirePostMediaLink?: boolean | null;
1402
+
1403
+ /**
1404
+ * Flag indicating if the rule can also reward badges per range.
1405
+ */
1406
+ rewardBadgePerRange?: boolean;
1407
+
1408
+ /**
1409
+ * Flag indicating if the reward is rewarded by batch.
1410
+ */
1411
+ rewardByBatch?: boolean | null;
1412
+
1413
+ /**
1414
+ * Criteria to evaluate the reward.
1415
+ */
1416
+ rewardCriteria?: 'IMPRESSIONS_COUNT' | 'ELIGIBLE_POST' | null;
1417
+
1418
+ /**
1419
+ * Flag indicating if the reward is rewarded per action.
1420
+ */
1421
+ rewardPerAction?: boolean | null;
1422
+
1423
+ /**
1424
+ * Flag indicating if rewards are given per impression.
1425
+ */
1426
+ rewardPerImpression?: boolean | null;
1427
+
1428
+ /**
1429
+ * Flag indicating if the rule should reward based on value of traded tokens
1430
+ * instead of count.
1431
+ */
1432
+ rewardPerValue?: boolean;
1433
+
1434
+ /**
1435
+ * Wallet address of the user can only be used if userId is not provided
1436
+ */
1437
+ royaltyAddress?: string;
1438
+
1439
+ /**
1440
+ * Royalty percentage of the item.
1441
+ */
1442
+ royaltyPercentage?: number;
1443
+
1444
+ /**
1445
+ * Currency associated with sales.
1446
+ */
1447
+ saleCurrency?: string;
1448
+
1449
+ /**
1450
+ * Percentage reward given for a second-level referral.
1451
+ */
1452
+ secondReferralReward?: number | null;
1453
+
1454
+ /**
1455
+ * Flag indicating if the multiplier is skipped.
1456
+ */
1457
+ skipMultiplier?: boolean | null;
1458
+
1459
+ /**
1460
+ * Object containing details of the associated smart contract.
1461
+ */
1462
+ smartContract?: Metadata.SmartContract;
1463
+
1464
+ /**
1465
+ * Array of snapshot proposals for the rule.
1466
+ */
1467
+ snapshotProposals?: Array<Metadata.SnapshotProposal> | null;
1468
+
1469
+ /**
1470
+ * Social media platform associated with the rule.
1471
+ */
1472
+ socialPlatform?:
1473
+ | 'Custom'
1474
+ | 'Discord'
1475
+ | 'EpicGames'
1476
+ | 'Instagram'
1477
+ | 'Steam'
1478
+ | 'Telegram'
1479
+ | 'TikTok'
1480
+ | 'Twitch'
1481
+ | 'X(Twitter)'
1482
+ | 'YouTube'
1483
+ | 'Google'
1484
+ | null;
1485
+
1486
+ /**
1487
+ * URL of the social platform's logo.
1488
+ */
1489
+ socialPlatformLogo?: string | null;
1490
+
1491
+ /**
1492
+ * Name of the social platform.
1493
+ */
1494
+ socialPlatformName?: string | null;
1495
+
1496
+ /**
1497
+ * ID of the Steam app.
1498
+ */
1499
+ steamAppId?: string | null;
1500
+
1501
+ /**
1502
+ * Array of streak milestones and corresponding rewards.
1503
+ */
1504
+ streakArray?: Array<Metadata.StreakArray> | null;
1505
+
1506
+ /**
1507
+ * Metadata for swap loyalty rules
1508
+ */
1509
+ swap?: Metadata.Swap;
1510
+
1511
+ /**
1512
+ * ID of the Telegram channel.
1513
+ */
1514
+ telegramChannelId?: string | null;
1515
+
1516
+ /**
1517
+ * Time delay in seconds to verify actions.
1518
+ */
1519
+ timeDelayToVerifySeconds?: string | number | null;
1520
+
1521
+ /**
1522
+ * Flag indicating if all contracts are tracked.
1523
+ */
1524
+ trackAllContracts?: boolean | null;
1525
+
1526
+ /**
1527
+ * Flag indicating if the progress is tracked. If enabled, the rule can only be
1528
+ * completed once the progress is 100%.
1529
+ */
1530
+ trackProgress?: boolean | null;
1531
+
1532
+ /**
1533
+ * URL of the associated Twitter account.
1534
+ */
1535
+ twitterAccountUrl?: string;
1536
+
1537
+ /**
1538
+ * Hashtag associated with the Twitter post.
1539
+ */
1540
+ twitterHashtag?: string;
1541
+
1542
+ /**
1543
+ * URL of the associated Twitter post.
1544
+ */
1545
+ twitterPostUrl?: string;
1546
+
1547
+ /**
1548
+ * Unique identifier of the Twitter user.
1549
+ */
1550
+ twitterUserId?: string;
1551
+
1552
+ /**
1553
+ * Twitter username of the user.
1554
+ */
1555
+ twitterUsername?: string;
1556
+
1557
+ /**
1558
+ * Minimum length of the verification text.
1559
+ */
1560
+ verificationTextMinimumLength?: number | null;
1561
+
1562
+ /**
1563
+ * Multiplier applied to rewards for verified users.
1564
+ */
1565
+ verifiedMultiplier?: number | null;
1566
+
1567
+ /**
1568
+ * Placeholder text for verification input fields.
1569
+ */
1570
+ verifyPlaceHolderText?: string | null;
1571
+
1572
+ /**
1573
+ * Type of wallet associated with the rule.
1574
+ */
1575
+ walletType?: 'evm' | 'solana' | 'imx' | 'sui' | 'ton' | 'cosmos' | 'ultra' | 'agw' | null;
1576
+
1577
+ /**
1578
+ * ID of the Youtube channel.
1579
+ */
1580
+ youtubeChannelId?: string | null;
1581
+
1582
+ /**
1583
+ * ID of the Youtube video.
1584
+ */
1585
+ youtubeVideoId?: string | null;
1586
+ }
1587
+
1588
+ export namespace Metadata {
1589
+ export interface Collection {
1590
+ /**
1591
+ * Blockchain address of the collection.
1592
+ */
1593
+ address?: string;
1594
+
1595
+ /**
1596
+ * Multiplier applied to the rewards for this collection.
1597
+ */
1598
+ multiplier?: number;
1599
+
1600
+ /**
1601
+ * Blockchain network of the collection.
1602
+ */
1603
+ network?:
1604
+ | 'abstract'
1605
+ | 'abstractTestnet'
1606
+ | 'apechain'
1607
+ | 'arbitrum'
1608
+ | 'avalanche'
1609
+ | 'avalancheFuji'
1610
+ | 'base'
1611
+ | 'baseSepolia'
1612
+ | 'berachain'
1613
+ | 'berachainArtio'
1614
+ | 'berachainBepolia'
1615
+ | 'binance'
1616
+ | 'bscTestnet'
1617
+ | 'campTestnet'
1618
+ | 'fantom'
1619
+ | 'fantomTestnet'
1620
+ | 'flowMainnet'
1621
+ | 'mainnet'
1622
+ | 'nexusTestnet'
1623
+ | 'optimism'
1624
+ | 'polygon'
1625
+ | 'polygon_mumbai'
1626
+ | 'skaleNebula'
1627
+ | 'solana'
1628
+ | 'sophon'
1629
+ | 'sophonTestnet'
1630
+ | 'sui'
1631
+ | 'superseed'
1632
+ | 'superseedSepolia'
1633
+ | 'vanar'
1634
+ | 'xai'
1635
+ | 'zksync'
1636
+ | 'coti'
1637
+ | 'cotiTestnet'
1638
+ | 'morph'
1639
+ | 'morphTestnet'
1640
+ | 'morphHolesky'
1641
+ | 'ultra'
1642
+ | 'ultraTestnet'
1643
+ | 'nitrograph'
1644
+ | 'sepolia'
1645
+ | 'optimism_sepolia'
1646
+ | 'arbitrumSepolia'
1647
+ | 'goerli'
1648
+ | 'optimism_goerli'
1649
+ | 'arbitrumGoerli'
1650
+ | 'basecamp'
1651
+ | 'somnia';
1652
+ }
1653
+
1654
+ /**
1655
+ * Object containing details for the call-to-action.
1656
+ */
1657
+ export interface Cta {
1658
+ /**
1659
+ * Link for the call-to-action.
1660
+ */
1661
+ href?: string | null;
1662
+
1663
+ /**
1664
+ * Label for the call-to-action.
1665
+ */
1666
+ label?: string | null;
1667
+ }
1668
+
1669
+ export interface DiscordServersToJoin {
1670
+ /**
1671
+ * ID of the Discord server to join.
1672
+ */
1673
+ id?: string;
1674
+
1675
+ /**
1676
+ * Array of Discord channels to join.
1677
+ */
1678
+ channels?: Array<DiscordServersToJoin.Channel>;
1679
+
1680
+ /**
1681
+ * Array of roles to assign in the Discord server.
1682
+ */
1683
+ roles?: Array<DiscordServersToJoin.Role>;
1684
+ }
1685
+
1686
+ export namespace DiscordServersToJoin {
1687
+ export interface Channel {
1688
+ /**
1689
+ * ID of the Discord channel.
1690
+ */
1691
+ id?: string;
1692
+
1693
+ /**
1694
+ * Array of emojis used in the channel.
1695
+ */
1696
+ emojis?: Array<Channel.Emoji>;
1697
+
1698
+ /**
1699
+ * Phrase of text to be present in the discord message
1700
+ */
1701
+ text?: string;
1702
+ }
1703
+
1704
+ export namespace Channel {
1705
+ export interface Emoji {
1706
+ /**
1707
+ * ID of the emoji used in the channel.
1708
+ */
1709
+ id?: string;
1710
+ }
1711
+ }
1712
+
1713
+ export interface Role {
1714
+ /**
1715
+ * ID of the role in the Discord server.
1716
+ */
1717
+ id: string;
1718
+ }
1719
+ }
1720
+
1721
+ export interface DripQuestsToComplete {
1722
+ /**
1723
+ * ID of the drip quest to complete.
1724
+ */
1725
+ id: string;
1726
+ }
1727
+
1728
+ /**
1729
+ * Liquidity pool details.
1730
+ */
1731
+ export interface Liquidity {
1732
+ /**
1733
+ * Calculation type of the liquidity pool.
1734
+ */
1735
+ calculationType?: 'fixed' | 'custom';
1736
+
1737
+ /**
1738
+ * Custom function to calculate the the reward amount based on the liquidity
1739
+ * provided per day. X is the reward amount, Y is the liquidity provided per day in
1740
+ * USD.
1741
+ */
1742
+ customFunction?: string;
1743
+
1744
+ /**
1745
+ * Liquidity provided per day in USD
1746
+ */
1747
+ liquidityPerDay?: number;
1748
+
1749
+ /**
1750
+ * Blockchain network of the liquidity pool.
1751
+ */
1752
+ network?:
1753
+ | 'abstract'
1754
+ | 'abstractTestnet'
1755
+ | 'apechain'
1756
+ | 'arbitrum'
1757
+ | 'avalanche'
1758
+ | 'avalancheFuji'
1759
+ | 'base'
1760
+ | 'baseSepolia'
1761
+ | 'berachain'
1762
+ | 'berachainArtio'
1763
+ | 'berachainBepolia'
1764
+ | 'binance'
1765
+ | 'bscTestnet'
1766
+ | 'campTestnet'
1767
+ | 'fantom'
1768
+ | 'fantomTestnet'
1769
+ | 'flowMainnet'
1770
+ | 'mainnet'
1771
+ | 'nexusTestnet'
1772
+ | 'optimism'
1773
+ | 'polygon'
1774
+ | 'polygon_mumbai'
1775
+ | 'skaleNebula'
1776
+ | 'solana'
1777
+ | 'sophon'
1778
+ | 'sophonTestnet'
1779
+ | 'sui'
1780
+ | 'superseed'
1781
+ | 'superseedSepolia'
1782
+ | 'vanar'
1783
+ | 'xai'
1784
+ | 'zksync'
1785
+ | 'coti'
1786
+ | 'cotiTestnet'
1787
+ | 'morph'
1788
+ | 'morphTestnet'
1789
+ | 'morphHolesky'
1790
+ | 'ultra'
1791
+ | 'ultraTestnet'
1792
+ | 'nitrograph'
1793
+ | 'sepolia'
1794
+ | 'optimism_sepolia'
1795
+ | 'arbitrumSepolia'
1796
+ | 'goerli'
1797
+ | 'optimism_goerli'
1798
+ | 'arbitrumGoerli'
1799
+ | 'basecamp'
1800
+ | 'somnia';
1801
+
1802
+ /**
1803
+ * Indicates if only in-range liquidity is rewarded.
1804
+ */
1805
+ onlyRewardInRangeLiquidity?: boolean;
1806
+
1807
+ /**
1808
+ * Array of liquidity pools associated with the rule.
1809
+ */
1810
+ pools?: Array<Liquidity.Pool>;
1811
+
1812
+ /**
1813
+ * Protocol of the liquidity pool.
1814
+ */
1815
+ protocol?: string;
1816
+ }
1817
+
1818
+ export namespace Liquidity {
1819
+ export interface Pool {
1820
+ /**
1821
+ * Unique identifier of the liquidity pool.
1822
+ */
1823
+ id: string;
1824
+ }
1825
+ }
1826
+
1827
+ export interface Range {
1828
+ /**
1829
+ * Reward amount for this range.
1830
+ */
1831
+ amount: number;
1832
+
1833
+ /**
1834
+ * End value of the range.
1835
+ */
1836
+ endRange: number;
1837
+
1838
+ /**
1839
+ * Start value of the range.
1840
+ */
1841
+ startRange: number;
1842
+
1843
+ /**
1844
+ * ID of the loyalty badge for this range.
1845
+ */
1846
+ loyaltyBadgeId?: string;
1847
+
1848
+ /**
1849
+ * Amount of the loyalty multiplier for this range.
1850
+ */
1851
+ loyaltyMultiplierAmount?: number;
1852
+ }
1853
+
1854
+ /**
1855
+ * Object defining referral requirements.
1856
+ */
1857
+ export interface ReferralRequirements {
1858
+ /**
1859
+ * Flag indicating if achieving points is required.
1860
+ */
1861
+ achievePoints?: boolean | null;
1862
+
1863
+ /**
1864
+ * Flag indicating if completing the profile is required.
1865
+ */
1866
+ completeProfile?: boolean | null;
1867
+
1868
+ /**
1869
+ * Flag indicating if connecting Discord is required.
1870
+ */
1871
+ connectDiscord?: boolean | null;
1872
+
1873
+ /**
1874
+ * Flag indicating if connecting email is required.
1875
+ */
1876
+ connectEmail?: boolean | null;
1877
+
1878
+ /**
1879
+ * Flag indicating if connecting Twitter is required.
1880
+ */
1881
+ connectTwitter?: boolean | null;
1882
+
1883
+ points?: ReferralRequirements.Points | null;
1884
+ }
1885
+
1886
+ export namespace ReferralRequirements {
1887
+ export interface Points {
1888
+ /**
1889
+ * Points required for referral.
1890
+ */
1891
+ amount?: number | null;
1892
+
1893
+ /**
1894
+ * ID of the loyalty currency for referral.
1895
+ */
1896
+ loyaltyCurrecyId?: string | null;
1897
+ }
1898
+ }
1899
+
1900
+ /**
1901
+ * Object containing details of the associated smart contract.
1902
+ */
1903
+ export interface SmartContract {
1904
+ /**
1905
+ * Mapping of addresses for the smart contract.
1906
+ */
1907
+ addressMapping?: string | null;
1908
+
1909
+ /**
1910
+ * Object containing details of the amount multiplier from the event.
1911
+ */
1912
+ amountMultiplier?: SmartContract.AmountMultiplier | null;
1913
+
1914
+ /**
1915
+ * ID of the smart contract.
1916
+ */
1917
+ contractId?: string | null;
1918
+
1919
+ /**
1920
+ * Criteria to evaluate the smart contract event.
1921
+ */
1922
+ criteria?: 'everyEvent' | 'byParameter' | null;
1923
+
1924
+ /**
1925
+ * Event emitted by the smart contract.
1926
+ */
1927
+ event?: string | null;
1928
+
1929
+ /**
1930
+ * Array of parameters for the smart contract.
1931
+ */
1932
+ params?: Array<SmartContract.Param> | null;
1933
+
1934
+ /**
1935
+ * Type of the smart contract interaction.
1936
+ */
1937
+ type?: 'function' | 'event' | null;
1938
+ }
1939
+
1940
+ export namespace SmartContract {
1941
+ /**
1942
+ * Object containing details of the amount multiplier from the event.
1943
+ */
1944
+ export interface AmountMultiplier {
1945
+ /**
1946
+ * Mapping of the value for the smart contract.
1947
+ */
1948
+ valueMapping?: string | null;
1949
+ }
1950
+
1951
+ export interface Param {
1952
+ /**
1953
+ * Condition to check for the parameter.
1954
+ */
1955
+ condition?: string | null;
1956
+
1957
+ /**
1958
+ * Name of the smart contract parameter.
1959
+ */
1960
+ name?: string | null;
1961
+
1962
+ /**
1963
+ * Value of the parameter.
1964
+ */
1965
+ value?: string | null;
1966
+ }
1967
+ }
1968
+
1969
+ export interface SnapshotProposal {
1970
+ /**
1971
+ * ID of the snapshot proposal.
1972
+ */
1973
+ id: string;
1974
+
1975
+ /**
1976
+ * Space associated with the snapshot proposal.
1977
+ */
1978
+ space: string;
1979
+ }
1980
+
1981
+ export interface StreakArray {
1982
+ /**
1983
+ * Reward amount for achieving the streak milestone.
1984
+ */
1985
+ streakAmount: number;
1986
+
1987
+ /**
1988
+ * Milestone required to achieve the streak.
1989
+ */
1990
+ streakMilestone: number;
1991
+ }
1992
+
1993
+ /**
1994
+ * Metadata for swap loyalty rules
1995
+ */
1996
+ export interface Swap {
1997
+ provider?: 'any' | 'relay' | 'lifi';
1998
+
1999
+ relayReferrerId?: string;
2000
+
2001
+ requireCrossChainSwap?: boolean;
2002
+
2003
+ swappedToChain?: 'any' | number | string;
2004
+
2005
+ swappedToTokens?: Array<Swap.SwappedToToken>;
2006
+
2007
+ tokenMode?: 'any' | 'specific';
2008
+
2009
+ trackTokenAmount?: boolean;
2010
+ }
2011
+
2012
+ export namespace Swap {
2013
+ export interface SwappedToToken {
2014
+ address: string;
2015
+
2016
+ chainId: string;
2017
+ }
2018
+ }
2019
+ }
204
2020
  }
205
2021
  }
206
2022
  }
@@ -282,16 +2098,41 @@ export namespace RuleEditRestoreResponse {
282
2098
  */
283
2099
  deletedAt: string | null;
284
2100
 
2101
+ /**
2102
+ * Description of the loyalty rule
2103
+ */
2104
+ description: string;
2105
+
2106
+ /**
2107
+ * End time of the loyalty rule
2108
+ */
2109
+ endTime: string;
2110
+
285
2111
  /**
286
2112
  * Frequency of the loyalty rule
287
2113
  */
288
2114
  frequency: string;
289
2115
 
2116
+ /**
2117
+ * Name of the loyalty rule
2118
+ */
2119
+ name: string;
2120
+
290
2121
  /**
291
2122
  * Unique identifier for the organization
292
2123
  */
293
2124
  organizationId: string;
294
2125
 
2126
+ /**
2127
+ * Type of the reward
2128
+ */
2129
+ rewardType: 'points' | 'multiplier' | 'badge';
2130
+
2131
+ /**
2132
+ * Start time of the loyalty rule
2133
+ */
2134
+ startTime: string;
2135
+
295
2136
  /**
296
2137
  * Type of the loyalty rule
297
2138
  */
@@ -313,69 +2154,1846 @@ export namespace RuleEditRestoreResponse {
313
2154
  collectionAddress?: string;
314
2155
 
315
2156
  /**
316
- * Optional metadata for the loyalty rule
2157
+ * URL of the media associated with the loyalty rule
317
2158
  */
318
- metadata?: Record<string, unknown>;
319
- }
2159
+ mediaUrl?: string | null;
320
2160
 
321
- /**
322
- * Previous data of the rule before the edit
323
- */
324
- export interface PreviousData {
325
2161
  /**
326
- * Unique identifier for the loyalty rule
2162
+ * Optional metadata for the loyalty rule
327
2163
  */
328
- id: string;
2164
+ metadata?: { [key: string]: Data.Metadata };
2165
+ }
329
2166
 
330
- /**
331
- * Amount associated with the loyalty rule
332
- */
333
- amount: number;
2167
+ export namespace Data {
2168
+ export interface Metadata {
2169
+ /**
2170
+ * Number of tokens per batch.
2171
+ */
2172
+ batchSize?: number | null;
334
2173
 
335
- /**
336
- * Timestamp when the loyalty rule was created
337
- */
338
- createdAt: string;
2174
+ /**
2175
+ * Text displayed on the action button.
2176
+ */
2177
+ buttonText?: string | null;
339
2178
 
340
- /**
341
- * Timestamp when the loyalty rule was deleted (if applicable)
342
- */
343
- deletedAt: string | null;
2179
+ /**
2180
+ * Flag indicating if commenting is required.
2181
+ */
2182
+ checkComment?: boolean | null;
344
2183
 
345
- /**
346
- * Frequency of the loyalty rule
347
- */
348
- frequency: string;
2184
+ /**
2185
+ * Flag indicating if liking the post is required.
2186
+ */
2187
+ checkLike?: boolean | null;
349
2188
 
350
- /**
351
- * Unique identifier for the organization
352
- */
353
- organizationId: string;
2189
+ /**
2190
+ * Flag indicating if reposting is required.
2191
+ */
2192
+ checkRepost?: boolean | null;
354
2193
 
355
- /**
356
- * Type of the loyalty rule
357
- */
358
- type: string;
2194
+ /**
2195
+ * Text to check in the Twitter post, username, or bio.
2196
+ */
2197
+ checkText?: string | Array<string> | null;
359
2198
 
360
- /**
361
- * Timestamp when the loyalty rule was last updated
362
- */
363
- updatedAt: string;
2199
+ /**
2200
+ * Array of collections associated with the rule.
2201
+ */
2202
+ collection?: Array<Metadata.Collection>;
364
2203
 
365
- /**
366
- * Unique identifier for the website
367
- */
368
- websiteId: string;
2204
+ /**
2205
+ * Conditions for completing the profile.
2206
+ */
2207
+ completeProfileConditions?: { [key: string]: boolean } | null;
369
2208
 
370
- /**
371
- * Optional address of the collection
372
- */
373
- collectionAddress?: string;
2209
+ /**
2210
+ * Description of the external rule condition (only for external rules)
2211
+ */
2212
+ conditionDescription?: string;
374
2213
 
375
- /**
376
- * Optional metadata for the loyalty rule
377
- */
378
- metadata?: Record<string, unknown>;
2214
+ /**
2215
+ * Object containing details for the call-to-action.
2216
+ */
2217
+ cta?: Metadata.Cta | null;
2218
+
2219
+ /**
2220
+ * API key for custom rewards integration.
2221
+ */
2222
+ customRewardsApiKey?: string;
2223
+
2224
+ /**
2225
+ * Flag indicating if the rule should use direct RPC to get the balance of tokens.
2226
+ */
2227
+ directRpc?: boolean;
2228
+
2229
+ /**
2230
+ * Array of Discord servers, channels, and roles to join.
2231
+ */
2232
+ discordServersToJoin?: Array<Metadata.DiscordServersToJoin> | null;
2233
+
2234
+ /**
2235
+ * Array of drip quests required to complete the rule.
2236
+ */
2237
+ dripQuestsToComplete?: Array<Metadata.DripQuestsToComplete> | null;
2238
+
2239
+ /**
2240
+ * Flag indicating whether joining Discord servers is required.
2241
+ */
2242
+ enableJoinDiscordServers?: boolean | null;
2243
+
2244
+ /**
2245
+ * Flag indicating whether streaks are enabled.
2246
+ */
2247
+ enableStreaks?: boolean | null;
2248
+
2249
+ /**
2250
+ * Flag indicating whether the verified multiplier is enabled.
2251
+ */
2252
+ enableVerifiedMultiplier?: boolean;
2253
+
2254
+ /**
2255
+ * Fill source of the order for the token sale
2256
+ */
2257
+ fillSource?: string;
2258
+
2259
+ /**
2260
+ * Percentage reward given to a user for their first referral.
2261
+ */
2262
+ firstReferralReward?: number | null;
2263
+
2264
+ /**
2265
+ * Flag indicating whether the fill source is included.
2266
+ */
2267
+ hasFillSource?: boolean;
2268
+
2269
+ /**
2270
+ * Indicates if the item has never been sold.
2271
+ */
2272
+ hasNeverSold?: boolean;
2273
+
2274
+ /**
2275
+ * Indicates if the full royalty has been paid for items.
2276
+ */
2277
+ hasPaidFullRoyalty?: boolean;
2278
+
2279
+ /**
2280
+ * Flag indicating if the sale currency is included.
2281
+ */
2282
+ hasSaleCurrency?: boolean;
2283
+
2284
+ /**
2285
+ * Indicates if the user has a verified Twitter account.
2286
+ */
2287
+ hasVerifiedTwitter?: boolean;
2288
+
2289
+ /**
2290
+ * URL of the image associated with the rule.
2291
+ */
2292
+ imageUrl?: string | null;
2293
+
2294
+ /**
2295
+ * If enabled, the first transaction done on the platform will complete this rule
2296
+ */
2297
+ isCheckInOnEveryTxn?: boolean;
2298
+
2299
+ /**
2300
+ * Indicates if the multiplier has been applied to rewards.
2301
+ */
2302
+ isMultiplierApplied?: boolean;
2303
+
2304
+ /**
2305
+ * Flag indicating if the rule is restricted to new users.
2306
+ */
2307
+ isRestrictedToNewUsers?: boolean;
2308
+
2309
+ /**
2310
+ * Flag indicating if rewards are applied retroactively.
2311
+ */
2312
+ isRetroactive?: boolean | null;
2313
+
2314
+ /**
2315
+ * Flag indicating if the token hold multiplier is applied.
2316
+ */
2317
+ isTokenHoldMultiplier?: boolean;
2318
+
2319
+ /**
2320
+ * Optional link associated with the metadata.
2321
+ */
2322
+ link?: string | null;
2323
+
2324
+ /**
2325
+ * Liquidity pool details.
2326
+ */
2327
+ liquidity?: Metadata.Liquidity;
2328
+
2329
+ /**
2330
+ * Maximum quantity constraint for token holding.
2331
+ */
2332
+ maxQty?: number | null;
2333
+
2334
+ /**
2335
+ * Minimum quantity constraint for token holding.
2336
+ */
2337
+ minQty?: number | null;
2338
+
2339
+ /**
2340
+ * Array of loyalty currency IDs used for multipliers.
2341
+ */
2342
+ multiplierLoyaltyCurrencyIds?: Array<string> | null;
2343
+
2344
+ /**
2345
+ * Flag indicating whether to include only known users.
2346
+ */
2347
+ onlyKnownUsers?: boolean;
2348
+
2349
+ /**
2350
+ * Flag indicating whether to include only native tokens.
2351
+ */
2352
+ onlyNative?: boolean;
2353
+
2354
+ /**
2355
+ * Flag indicating whether to include only non-listed items.
2356
+ */
2357
+ onlyNonListed?: boolean;
2358
+
2359
+ /**
2360
+ * Indicates if only existing users are rewarded.
2361
+ */
2362
+ onlyRewardExistingUser?: boolean;
2363
+
2364
+ /**
2365
+ * give points for only one token ownership per contract
2366
+ */
2367
+ onlyRewardSingleTokenOwnership?: boolean | null;
2368
+
2369
+ /**
2370
+ * Promotional code associated with the rule.
2371
+ */
2372
+ promoCode?: string;
2373
+
2374
+ /**
2375
+ * URL of the CSV file containing promo codes.
2376
+ */
2377
+ promoCodeCsvUrl?: string;
2378
+
2379
+ /**
2380
+ * Numbers of the promotional code to be generated.
2381
+ */
2382
+ promoCodeLength?: number | null;
2383
+
2384
+ /**
2385
+ * Type of the promotional code.
2386
+ */
2387
+ promoCodeType?: 'code' | 'csv' | 'generate';
2388
+
2389
+ /**
2390
+ * Array defining ranges and corresponding rewards.
2391
+ */
2392
+ range?: Array<Metadata.Range>;
2393
+
2394
+ /**
2395
+ * Object defining referral requirements.
2396
+ */
2397
+ referralRequirements?: Metadata.ReferralRequirements | null;
2398
+
2399
+ /**
2400
+ * Lump sum reward given to a referrer.
2401
+ */
2402
+ referrerReward?: number | null;
2403
+
2404
+ /**
2405
+ * Loyalty currency ID of the referrer reward.
2406
+ */
2407
+ referrerRewardLoyaltyCurrencyId?: string | null;
2408
+
2409
+ /**
2410
+ * Flag indicating if the post link is required.
2411
+ */
2412
+ requirePostLink?: boolean | null;
2413
+
2414
+ /**
2415
+ * Flag indicating if media metadata is required.
2416
+ */
2417
+ requirePostMediaLink?: boolean | null;
2418
+
2419
+ /**
2420
+ * Flag indicating if the rule can also reward badges per range.
2421
+ */
2422
+ rewardBadgePerRange?: boolean;
2423
+
2424
+ /**
2425
+ * Flag indicating if the reward is rewarded by batch.
2426
+ */
2427
+ rewardByBatch?: boolean | null;
2428
+
2429
+ /**
2430
+ * Criteria to evaluate the reward.
2431
+ */
2432
+ rewardCriteria?: 'IMPRESSIONS_COUNT' | 'ELIGIBLE_POST' | null;
2433
+
2434
+ /**
2435
+ * Flag indicating if the reward is rewarded per action.
2436
+ */
2437
+ rewardPerAction?: boolean | null;
2438
+
2439
+ /**
2440
+ * Flag indicating if rewards are given per impression.
2441
+ */
2442
+ rewardPerImpression?: boolean | null;
2443
+
2444
+ /**
2445
+ * Flag indicating if the rule should reward based on value of traded tokens
2446
+ * instead of count.
2447
+ */
2448
+ rewardPerValue?: boolean;
2449
+
2450
+ /**
2451
+ * Wallet address of the user can only be used if userId is not provided
2452
+ */
2453
+ royaltyAddress?: string;
2454
+
2455
+ /**
2456
+ * Royalty percentage of the item.
2457
+ */
2458
+ royaltyPercentage?: number;
2459
+
2460
+ /**
2461
+ * Currency associated with sales.
2462
+ */
2463
+ saleCurrency?: string;
2464
+
2465
+ /**
2466
+ * Percentage reward given for a second-level referral.
2467
+ */
2468
+ secondReferralReward?: number | null;
2469
+
2470
+ /**
2471
+ * Flag indicating if the multiplier is skipped.
2472
+ */
2473
+ skipMultiplier?: boolean | null;
2474
+
2475
+ /**
2476
+ * Object containing details of the associated smart contract.
2477
+ */
2478
+ smartContract?: Metadata.SmartContract;
2479
+
2480
+ /**
2481
+ * Array of snapshot proposals for the rule.
2482
+ */
2483
+ snapshotProposals?: Array<Metadata.SnapshotProposal> | null;
2484
+
2485
+ /**
2486
+ * Social media platform associated with the rule.
2487
+ */
2488
+ socialPlatform?:
2489
+ | 'Custom'
2490
+ | 'Discord'
2491
+ | 'EpicGames'
2492
+ | 'Instagram'
2493
+ | 'Steam'
2494
+ | 'Telegram'
2495
+ | 'TikTok'
2496
+ | 'Twitch'
2497
+ | 'X(Twitter)'
2498
+ | 'YouTube'
2499
+ | 'Google'
2500
+ | null;
2501
+
2502
+ /**
2503
+ * URL of the social platform's logo.
2504
+ */
2505
+ socialPlatformLogo?: string | null;
2506
+
2507
+ /**
2508
+ * Name of the social platform.
2509
+ */
2510
+ socialPlatformName?: string | null;
2511
+
2512
+ /**
2513
+ * ID of the Steam app.
2514
+ */
2515
+ steamAppId?: string | null;
2516
+
2517
+ /**
2518
+ * Array of streak milestones and corresponding rewards.
2519
+ */
2520
+ streakArray?: Array<Metadata.StreakArray> | null;
2521
+
2522
+ /**
2523
+ * Metadata for swap loyalty rules
2524
+ */
2525
+ swap?: Metadata.Swap;
2526
+
2527
+ /**
2528
+ * ID of the Telegram channel.
2529
+ */
2530
+ telegramChannelId?: string | null;
2531
+
2532
+ /**
2533
+ * Time delay in seconds to verify actions.
2534
+ */
2535
+ timeDelayToVerifySeconds?: string | number | null;
2536
+
2537
+ /**
2538
+ * Flag indicating if all contracts are tracked.
2539
+ */
2540
+ trackAllContracts?: boolean | null;
2541
+
2542
+ /**
2543
+ * Flag indicating if the progress is tracked. If enabled, the rule can only be
2544
+ * completed once the progress is 100%.
2545
+ */
2546
+ trackProgress?: boolean | null;
2547
+
2548
+ /**
2549
+ * URL of the associated Twitter account.
2550
+ */
2551
+ twitterAccountUrl?: string;
2552
+
2553
+ /**
2554
+ * Hashtag associated with the Twitter post.
2555
+ */
2556
+ twitterHashtag?: string;
2557
+
2558
+ /**
2559
+ * URL of the associated Twitter post.
2560
+ */
2561
+ twitterPostUrl?: string;
2562
+
2563
+ /**
2564
+ * Unique identifier of the Twitter user.
2565
+ */
2566
+ twitterUserId?: string;
2567
+
2568
+ /**
2569
+ * Twitter username of the user.
2570
+ */
2571
+ twitterUsername?: string;
2572
+
2573
+ /**
2574
+ * Minimum length of the verification text.
2575
+ */
2576
+ verificationTextMinimumLength?: number | null;
2577
+
2578
+ /**
2579
+ * Multiplier applied to rewards for verified users.
2580
+ */
2581
+ verifiedMultiplier?: number | null;
2582
+
2583
+ /**
2584
+ * Placeholder text for verification input fields.
2585
+ */
2586
+ verifyPlaceHolderText?: string | null;
2587
+
2588
+ /**
2589
+ * Type of wallet associated with the rule.
2590
+ */
2591
+ walletType?: 'evm' | 'solana' | 'imx' | 'sui' | 'ton' | 'cosmos' | 'ultra' | 'agw' | null;
2592
+
2593
+ /**
2594
+ * ID of the Youtube channel.
2595
+ */
2596
+ youtubeChannelId?: string | null;
2597
+
2598
+ /**
2599
+ * ID of the Youtube video.
2600
+ */
2601
+ youtubeVideoId?: string | null;
2602
+ }
2603
+
2604
+ export namespace Metadata {
2605
+ export interface Collection {
2606
+ /**
2607
+ * Blockchain address of the collection.
2608
+ */
2609
+ address?: string;
2610
+
2611
+ /**
2612
+ * Multiplier applied to the rewards for this collection.
2613
+ */
2614
+ multiplier?: number;
2615
+
2616
+ /**
2617
+ * Blockchain network of the collection.
2618
+ */
2619
+ network?:
2620
+ | 'abstract'
2621
+ | 'abstractTestnet'
2622
+ | 'apechain'
2623
+ | 'arbitrum'
2624
+ | 'avalanche'
2625
+ | 'avalancheFuji'
2626
+ | 'base'
2627
+ | 'baseSepolia'
2628
+ | 'berachain'
2629
+ | 'berachainArtio'
2630
+ | 'berachainBepolia'
2631
+ | 'binance'
2632
+ | 'bscTestnet'
2633
+ | 'campTestnet'
2634
+ | 'fantom'
2635
+ | 'fantomTestnet'
2636
+ | 'flowMainnet'
2637
+ | 'mainnet'
2638
+ | 'nexusTestnet'
2639
+ | 'optimism'
2640
+ | 'polygon'
2641
+ | 'polygon_mumbai'
2642
+ | 'skaleNebula'
2643
+ | 'solana'
2644
+ | 'sophon'
2645
+ | 'sophonTestnet'
2646
+ | 'sui'
2647
+ | 'superseed'
2648
+ | 'superseedSepolia'
2649
+ | 'vanar'
2650
+ | 'xai'
2651
+ | 'zksync'
2652
+ | 'coti'
2653
+ | 'cotiTestnet'
2654
+ | 'morph'
2655
+ | 'morphTestnet'
2656
+ | 'morphHolesky'
2657
+ | 'ultra'
2658
+ | 'ultraTestnet'
2659
+ | 'nitrograph'
2660
+ | 'sepolia'
2661
+ | 'optimism_sepolia'
2662
+ | 'arbitrumSepolia'
2663
+ | 'goerli'
2664
+ | 'optimism_goerli'
2665
+ | 'arbitrumGoerli'
2666
+ | 'basecamp'
2667
+ | 'somnia';
2668
+ }
2669
+
2670
+ /**
2671
+ * Object containing details for the call-to-action.
2672
+ */
2673
+ export interface Cta {
2674
+ /**
2675
+ * Link for the call-to-action.
2676
+ */
2677
+ href?: string | null;
2678
+
2679
+ /**
2680
+ * Label for the call-to-action.
2681
+ */
2682
+ label?: string | null;
2683
+ }
2684
+
2685
+ export interface DiscordServersToJoin {
2686
+ /**
2687
+ * ID of the Discord server to join.
2688
+ */
2689
+ id?: string;
2690
+
2691
+ /**
2692
+ * Array of Discord channels to join.
2693
+ */
2694
+ channels?: Array<DiscordServersToJoin.Channel>;
2695
+
2696
+ /**
2697
+ * Array of roles to assign in the Discord server.
2698
+ */
2699
+ roles?: Array<DiscordServersToJoin.Role>;
2700
+ }
2701
+
2702
+ export namespace DiscordServersToJoin {
2703
+ export interface Channel {
2704
+ /**
2705
+ * ID of the Discord channel.
2706
+ */
2707
+ id?: string;
2708
+
2709
+ /**
2710
+ * Array of emojis used in the channel.
2711
+ */
2712
+ emojis?: Array<Channel.Emoji>;
2713
+
2714
+ /**
2715
+ * Phrase of text to be present in the discord message
2716
+ */
2717
+ text?: string;
2718
+ }
2719
+
2720
+ export namespace Channel {
2721
+ export interface Emoji {
2722
+ /**
2723
+ * ID of the emoji used in the channel.
2724
+ */
2725
+ id?: string;
2726
+ }
2727
+ }
2728
+
2729
+ export interface Role {
2730
+ /**
2731
+ * ID of the role in the Discord server.
2732
+ */
2733
+ id: string;
2734
+ }
2735
+ }
2736
+
2737
+ export interface DripQuestsToComplete {
2738
+ /**
2739
+ * ID of the drip quest to complete.
2740
+ */
2741
+ id: string;
2742
+ }
2743
+
2744
+ /**
2745
+ * Liquidity pool details.
2746
+ */
2747
+ export interface Liquidity {
2748
+ /**
2749
+ * Calculation type of the liquidity pool.
2750
+ */
2751
+ calculationType?: 'fixed' | 'custom';
2752
+
2753
+ /**
2754
+ * Custom function to calculate the the reward amount based on the liquidity
2755
+ * provided per day. X is the reward amount, Y is the liquidity provided per day in
2756
+ * USD.
2757
+ */
2758
+ customFunction?: string;
2759
+
2760
+ /**
2761
+ * Liquidity provided per day in USD
2762
+ */
2763
+ liquidityPerDay?: number;
2764
+
2765
+ /**
2766
+ * Blockchain network of the liquidity pool.
2767
+ */
2768
+ network?:
2769
+ | 'abstract'
2770
+ | 'abstractTestnet'
2771
+ | 'apechain'
2772
+ | 'arbitrum'
2773
+ | 'avalanche'
2774
+ | 'avalancheFuji'
2775
+ | 'base'
2776
+ | 'baseSepolia'
2777
+ | 'berachain'
2778
+ | 'berachainArtio'
2779
+ | 'berachainBepolia'
2780
+ | 'binance'
2781
+ | 'bscTestnet'
2782
+ | 'campTestnet'
2783
+ | 'fantom'
2784
+ | 'fantomTestnet'
2785
+ | 'flowMainnet'
2786
+ | 'mainnet'
2787
+ | 'nexusTestnet'
2788
+ | 'optimism'
2789
+ | 'polygon'
2790
+ | 'polygon_mumbai'
2791
+ | 'skaleNebula'
2792
+ | 'solana'
2793
+ | 'sophon'
2794
+ | 'sophonTestnet'
2795
+ | 'sui'
2796
+ | 'superseed'
2797
+ | 'superseedSepolia'
2798
+ | 'vanar'
2799
+ | 'xai'
2800
+ | 'zksync'
2801
+ | 'coti'
2802
+ | 'cotiTestnet'
2803
+ | 'morph'
2804
+ | 'morphTestnet'
2805
+ | 'morphHolesky'
2806
+ | 'ultra'
2807
+ | 'ultraTestnet'
2808
+ | 'nitrograph'
2809
+ | 'sepolia'
2810
+ | 'optimism_sepolia'
2811
+ | 'arbitrumSepolia'
2812
+ | 'goerli'
2813
+ | 'optimism_goerli'
2814
+ | 'arbitrumGoerli'
2815
+ | 'basecamp'
2816
+ | 'somnia';
2817
+
2818
+ /**
2819
+ * Indicates if only in-range liquidity is rewarded.
2820
+ */
2821
+ onlyRewardInRangeLiquidity?: boolean;
2822
+
2823
+ /**
2824
+ * Array of liquidity pools associated with the rule.
2825
+ */
2826
+ pools?: Array<Liquidity.Pool>;
2827
+
2828
+ /**
2829
+ * Protocol of the liquidity pool.
2830
+ */
2831
+ protocol?: string;
2832
+ }
2833
+
2834
+ export namespace Liquidity {
2835
+ export interface Pool {
2836
+ /**
2837
+ * Unique identifier of the liquidity pool.
2838
+ */
2839
+ id: string;
2840
+ }
2841
+ }
2842
+
2843
+ export interface Range {
2844
+ /**
2845
+ * Reward amount for this range.
2846
+ */
2847
+ amount: number;
2848
+
2849
+ /**
2850
+ * End value of the range.
2851
+ */
2852
+ endRange: number;
2853
+
2854
+ /**
2855
+ * Start value of the range.
2856
+ */
2857
+ startRange: number;
2858
+
2859
+ /**
2860
+ * ID of the loyalty badge for this range.
2861
+ */
2862
+ loyaltyBadgeId?: string;
2863
+
2864
+ /**
2865
+ * Amount of the loyalty multiplier for this range.
2866
+ */
2867
+ loyaltyMultiplierAmount?: number;
2868
+ }
2869
+
2870
+ /**
2871
+ * Object defining referral requirements.
2872
+ */
2873
+ export interface ReferralRequirements {
2874
+ /**
2875
+ * Flag indicating if achieving points is required.
2876
+ */
2877
+ achievePoints?: boolean | null;
2878
+
2879
+ /**
2880
+ * Flag indicating if completing the profile is required.
2881
+ */
2882
+ completeProfile?: boolean | null;
2883
+
2884
+ /**
2885
+ * Flag indicating if connecting Discord is required.
2886
+ */
2887
+ connectDiscord?: boolean | null;
2888
+
2889
+ /**
2890
+ * Flag indicating if connecting email is required.
2891
+ */
2892
+ connectEmail?: boolean | null;
2893
+
2894
+ /**
2895
+ * Flag indicating if connecting Twitter is required.
2896
+ */
2897
+ connectTwitter?: boolean | null;
2898
+
2899
+ points?: ReferralRequirements.Points | null;
2900
+ }
2901
+
2902
+ export namespace ReferralRequirements {
2903
+ export interface Points {
2904
+ /**
2905
+ * Points required for referral.
2906
+ */
2907
+ amount?: number | null;
2908
+
2909
+ /**
2910
+ * ID of the loyalty currency for referral.
2911
+ */
2912
+ loyaltyCurrecyId?: string | null;
2913
+ }
2914
+ }
2915
+
2916
+ /**
2917
+ * Object containing details of the associated smart contract.
2918
+ */
2919
+ export interface SmartContract {
2920
+ /**
2921
+ * Mapping of addresses for the smart contract.
2922
+ */
2923
+ addressMapping?: string | null;
2924
+
2925
+ /**
2926
+ * Object containing details of the amount multiplier from the event.
2927
+ */
2928
+ amountMultiplier?: SmartContract.AmountMultiplier | null;
2929
+
2930
+ /**
2931
+ * ID of the smart contract.
2932
+ */
2933
+ contractId?: string | null;
2934
+
2935
+ /**
2936
+ * Criteria to evaluate the smart contract event.
2937
+ */
2938
+ criteria?: 'everyEvent' | 'byParameter' | null;
2939
+
2940
+ /**
2941
+ * Event emitted by the smart contract.
2942
+ */
2943
+ event?: string | null;
2944
+
2945
+ /**
2946
+ * Array of parameters for the smart contract.
2947
+ */
2948
+ params?: Array<SmartContract.Param> | null;
2949
+
2950
+ /**
2951
+ * Type of the smart contract interaction.
2952
+ */
2953
+ type?: 'function' | 'event' | null;
2954
+ }
2955
+
2956
+ export namespace SmartContract {
2957
+ /**
2958
+ * Object containing details of the amount multiplier from the event.
2959
+ */
2960
+ export interface AmountMultiplier {
2961
+ /**
2962
+ * Mapping of the value for the smart contract.
2963
+ */
2964
+ valueMapping?: string | null;
2965
+ }
2966
+
2967
+ export interface Param {
2968
+ /**
2969
+ * Condition to check for the parameter.
2970
+ */
2971
+ condition?: string | null;
2972
+
2973
+ /**
2974
+ * Name of the smart contract parameter.
2975
+ */
2976
+ name?: string | null;
2977
+
2978
+ /**
2979
+ * Value of the parameter.
2980
+ */
2981
+ value?: string | null;
2982
+ }
2983
+ }
2984
+
2985
+ export interface SnapshotProposal {
2986
+ /**
2987
+ * ID of the snapshot proposal.
2988
+ */
2989
+ id: string;
2990
+
2991
+ /**
2992
+ * Space associated with the snapshot proposal.
2993
+ */
2994
+ space: string;
2995
+ }
2996
+
2997
+ export interface StreakArray {
2998
+ /**
2999
+ * Reward amount for achieving the streak milestone.
3000
+ */
3001
+ streakAmount: number;
3002
+
3003
+ /**
3004
+ * Milestone required to achieve the streak.
3005
+ */
3006
+ streakMilestone: number;
3007
+ }
3008
+
3009
+ /**
3010
+ * Metadata for swap loyalty rules
3011
+ */
3012
+ export interface Swap {
3013
+ provider?: 'any' | 'relay' | 'lifi';
3014
+
3015
+ relayReferrerId?: string;
3016
+
3017
+ requireCrossChainSwap?: boolean;
3018
+
3019
+ swappedToChain?: 'any' | number | string;
3020
+
3021
+ swappedToTokens?: Array<Swap.SwappedToToken>;
3022
+
3023
+ tokenMode?: 'any' | 'specific';
3024
+
3025
+ trackTokenAmount?: boolean;
3026
+ }
3027
+
3028
+ export namespace Swap {
3029
+ export interface SwappedToToken {
3030
+ address: string;
3031
+
3032
+ chainId: string;
3033
+ }
3034
+ }
3035
+ }
3036
+ }
3037
+
3038
+ /**
3039
+ * Previous data of the rule before the edit
3040
+ */
3041
+ export interface PreviousData {
3042
+ /**
3043
+ * Unique identifier for the loyalty rule
3044
+ */
3045
+ id: string;
3046
+
3047
+ /**
3048
+ * Amount associated with the loyalty rule
3049
+ */
3050
+ amount: number;
3051
+
3052
+ /**
3053
+ * Timestamp when the loyalty rule was created
3054
+ */
3055
+ createdAt: string;
3056
+
3057
+ /**
3058
+ * Timestamp when the loyalty rule was deleted (if applicable)
3059
+ */
3060
+ deletedAt: string | null;
3061
+
3062
+ /**
3063
+ * Description of the loyalty rule
3064
+ */
3065
+ description: string;
3066
+
3067
+ /**
3068
+ * End time of the loyalty rule
3069
+ */
3070
+ endTime: string;
3071
+
3072
+ /**
3073
+ * Frequency of the loyalty rule
3074
+ */
3075
+ frequency: string;
3076
+
3077
+ /**
3078
+ * Name of the loyalty rule
3079
+ */
3080
+ name: string;
3081
+
3082
+ /**
3083
+ * Unique identifier for the organization
3084
+ */
3085
+ organizationId: string;
3086
+
3087
+ /**
3088
+ * Type of the reward
3089
+ */
3090
+ rewardType: 'points' | 'multiplier' | 'badge';
3091
+
3092
+ /**
3093
+ * Start time of the loyalty rule
3094
+ */
3095
+ startTime: string;
3096
+
3097
+ /**
3098
+ * Type of the loyalty rule
3099
+ */
3100
+ type: string;
3101
+
3102
+ /**
3103
+ * Timestamp when the loyalty rule was last updated
3104
+ */
3105
+ updatedAt: string;
3106
+
3107
+ /**
3108
+ * Unique identifier for the website
3109
+ */
3110
+ websiteId: string;
3111
+
3112
+ /**
3113
+ * Optional address of the collection
3114
+ */
3115
+ collectionAddress?: string;
3116
+
3117
+ /**
3118
+ * URL of the media associated with the loyalty rule
3119
+ */
3120
+ mediaUrl?: string | null;
3121
+
3122
+ /**
3123
+ * Optional metadata for the loyalty rule
3124
+ */
3125
+ metadata?: { [key: string]: PreviousData.Metadata };
3126
+ }
3127
+
3128
+ export namespace PreviousData {
3129
+ export interface Metadata {
3130
+ /**
3131
+ * Number of tokens per batch.
3132
+ */
3133
+ batchSize?: number | null;
3134
+
3135
+ /**
3136
+ * Text displayed on the action button.
3137
+ */
3138
+ buttonText?: string | null;
3139
+
3140
+ /**
3141
+ * Flag indicating if commenting is required.
3142
+ */
3143
+ checkComment?: boolean | null;
3144
+
3145
+ /**
3146
+ * Flag indicating if liking the post is required.
3147
+ */
3148
+ checkLike?: boolean | null;
3149
+
3150
+ /**
3151
+ * Flag indicating if reposting is required.
3152
+ */
3153
+ checkRepost?: boolean | null;
3154
+
3155
+ /**
3156
+ * Text to check in the Twitter post, username, or bio.
3157
+ */
3158
+ checkText?: string | Array<string> | null;
3159
+
3160
+ /**
3161
+ * Array of collections associated with the rule.
3162
+ */
3163
+ collection?: Array<Metadata.Collection>;
3164
+
3165
+ /**
3166
+ * Conditions for completing the profile.
3167
+ */
3168
+ completeProfileConditions?: { [key: string]: boolean } | null;
3169
+
3170
+ /**
3171
+ * Description of the external rule condition (only for external rules)
3172
+ */
3173
+ conditionDescription?: string;
3174
+
3175
+ /**
3176
+ * Object containing details for the call-to-action.
3177
+ */
3178
+ cta?: Metadata.Cta | null;
3179
+
3180
+ /**
3181
+ * API key for custom rewards integration.
3182
+ */
3183
+ customRewardsApiKey?: string;
3184
+
3185
+ /**
3186
+ * Flag indicating if the rule should use direct RPC to get the balance of tokens.
3187
+ */
3188
+ directRpc?: boolean;
3189
+
3190
+ /**
3191
+ * Array of Discord servers, channels, and roles to join.
3192
+ */
3193
+ discordServersToJoin?: Array<Metadata.DiscordServersToJoin> | null;
3194
+
3195
+ /**
3196
+ * Array of drip quests required to complete the rule.
3197
+ */
3198
+ dripQuestsToComplete?: Array<Metadata.DripQuestsToComplete> | null;
3199
+
3200
+ /**
3201
+ * Flag indicating whether joining Discord servers is required.
3202
+ */
3203
+ enableJoinDiscordServers?: boolean | null;
3204
+
3205
+ /**
3206
+ * Flag indicating whether streaks are enabled.
3207
+ */
3208
+ enableStreaks?: boolean | null;
3209
+
3210
+ /**
3211
+ * Flag indicating whether the verified multiplier is enabled.
3212
+ */
3213
+ enableVerifiedMultiplier?: boolean;
3214
+
3215
+ /**
3216
+ * Fill source of the order for the token sale
3217
+ */
3218
+ fillSource?: string;
3219
+
3220
+ /**
3221
+ * Percentage reward given to a user for their first referral.
3222
+ */
3223
+ firstReferralReward?: number | null;
3224
+
3225
+ /**
3226
+ * Flag indicating whether the fill source is included.
3227
+ */
3228
+ hasFillSource?: boolean;
3229
+
3230
+ /**
3231
+ * Indicates if the item has never been sold.
3232
+ */
3233
+ hasNeverSold?: boolean;
3234
+
3235
+ /**
3236
+ * Indicates if the full royalty has been paid for items.
3237
+ */
3238
+ hasPaidFullRoyalty?: boolean;
3239
+
3240
+ /**
3241
+ * Flag indicating if the sale currency is included.
3242
+ */
3243
+ hasSaleCurrency?: boolean;
3244
+
3245
+ /**
3246
+ * Indicates if the user has a verified Twitter account.
3247
+ */
3248
+ hasVerifiedTwitter?: boolean;
3249
+
3250
+ /**
3251
+ * URL of the image associated with the rule.
3252
+ */
3253
+ imageUrl?: string | null;
3254
+
3255
+ /**
3256
+ * If enabled, the first transaction done on the platform will complete this rule
3257
+ */
3258
+ isCheckInOnEveryTxn?: boolean;
3259
+
3260
+ /**
3261
+ * Indicates if the multiplier has been applied to rewards.
3262
+ */
3263
+ isMultiplierApplied?: boolean;
3264
+
3265
+ /**
3266
+ * Flag indicating if the rule is restricted to new users.
3267
+ */
3268
+ isRestrictedToNewUsers?: boolean;
3269
+
3270
+ /**
3271
+ * Flag indicating if rewards are applied retroactively.
3272
+ */
3273
+ isRetroactive?: boolean | null;
3274
+
3275
+ /**
3276
+ * Flag indicating if the token hold multiplier is applied.
3277
+ */
3278
+ isTokenHoldMultiplier?: boolean;
3279
+
3280
+ /**
3281
+ * Optional link associated with the metadata.
3282
+ */
3283
+ link?: string | null;
3284
+
3285
+ /**
3286
+ * Liquidity pool details.
3287
+ */
3288
+ liquidity?: Metadata.Liquidity;
3289
+
3290
+ /**
3291
+ * Maximum quantity constraint for token holding.
3292
+ */
3293
+ maxQty?: number | null;
3294
+
3295
+ /**
3296
+ * Minimum quantity constraint for token holding.
3297
+ */
3298
+ minQty?: number | null;
3299
+
3300
+ /**
3301
+ * Array of loyalty currency IDs used for multipliers.
3302
+ */
3303
+ multiplierLoyaltyCurrencyIds?: Array<string> | null;
3304
+
3305
+ /**
3306
+ * Flag indicating whether to include only known users.
3307
+ */
3308
+ onlyKnownUsers?: boolean;
3309
+
3310
+ /**
3311
+ * Flag indicating whether to include only native tokens.
3312
+ */
3313
+ onlyNative?: boolean;
3314
+
3315
+ /**
3316
+ * Flag indicating whether to include only non-listed items.
3317
+ */
3318
+ onlyNonListed?: boolean;
3319
+
3320
+ /**
3321
+ * Indicates if only existing users are rewarded.
3322
+ */
3323
+ onlyRewardExistingUser?: boolean;
3324
+
3325
+ /**
3326
+ * give points for only one token ownership per contract
3327
+ */
3328
+ onlyRewardSingleTokenOwnership?: boolean | null;
3329
+
3330
+ /**
3331
+ * Promotional code associated with the rule.
3332
+ */
3333
+ promoCode?: string;
3334
+
3335
+ /**
3336
+ * URL of the CSV file containing promo codes.
3337
+ */
3338
+ promoCodeCsvUrl?: string;
3339
+
3340
+ /**
3341
+ * Numbers of the promotional code to be generated.
3342
+ */
3343
+ promoCodeLength?: number | null;
3344
+
3345
+ /**
3346
+ * Type of the promotional code.
3347
+ */
3348
+ promoCodeType?: 'code' | 'csv' | 'generate';
3349
+
3350
+ /**
3351
+ * Array defining ranges and corresponding rewards.
3352
+ */
3353
+ range?: Array<Metadata.Range>;
3354
+
3355
+ /**
3356
+ * Object defining referral requirements.
3357
+ */
3358
+ referralRequirements?: Metadata.ReferralRequirements | null;
3359
+
3360
+ /**
3361
+ * Lump sum reward given to a referrer.
3362
+ */
3363
+ referrerReward?: number | null;
3364
+
3365
+ /**
3366
+ * Loyalty currency ID of the referrer reward.
3367
+ */
3368
+ referrerRewardLoyaltyCurrencyId?: string | null;
3369
+
3370
+ /**
3371
+ * Flag indicating if the post link is required.
3372
+ */
3373
+ requirePostLink?: boolean | null;
3374
+
3375
+ /**
3376
+ * Flag indicating if media metadata is required.
3377
+ */
3378
+ requirePostMediaLink?: boolean | null;
3379
+
3380
+ /**
3381
+ * Flag indicating if the rule can also reward badges per range.
3382
+ */
3383
+ rewardBadgePerRange?: boolean;
3384
+
3385
+ /**
3386
+ * Flag indicating if the reward is rewarded by batch.
3387
+ */
3388
+ rewardByBatch?: boolean | null;
3389
+
3390
+ /**
3391
+ * Criteria to evaluate the reward.
3392
+ */
3393
+ rewardCriteria?: 'IMPRESSIONS_COUNT' | 'ELIGIBLE_POST' | null;
3394
+
3395
+ /**
3396
+ * Flag indicating if the reward is rewarded per action.
3397
+ */
3398
+ rewardPerAction?: boolean | null;
3399
+
3400
+ /**
3401
+ * Flag indicating if rewards are given per impression.
3402
+ */
3403
+ rewardPerImpression?: boolean | null;
3404
+
3405
+ /**
3406
+ * Flag indicating if the rule should reward based on value of traded tokens
3407
+ * instead of count.
3408
+ */
3409
+ rewardPerValue?: boolean;
3410
+
3411
+ /**
3412
+ * Wallet address of the user can only be used if userId is not provided
3413
+ */
3414
+ royaltyAddress?: string;
3415
+
3416
+ /**
3417
+ * Royalty percentage of the item.
3418
+ */
3419
+ royaltyPercentage?: number;
3420
+
3421
+ /**
3422
+ * Currency associated with sales.
3423
+ */
3424
+ saleCurrency?: string;
3425
+
3426
+ /**
3427
+ * Percentage reward given for a second-level referral.
3428
+ */
3429
+ secondReferralReward?: number | null;
3430
+
3431
+ /**
3432
+ * Flag indicating if the multiplier is skipped.
3433
+ */
3434
+ skipMultiplier?: boolean | null;
3435
+
3436
+ /**
3437
+ * Object containing details of the associated smart contract.
3438
+ */
3439
+ smartContract?: Metadata.SmartContract;
3440
+
3441
+ /**
3442
+ * Array of snapshot proposals for the rule.
3443
+ */
3444
+ snapshotProposals?: Array<Metadata.SnapshotProposal> | null;
3445
+
3446
+ /**
3447
+ * Social media platform associated with the rule.
3448
+ */
3449
+ socialPlatform?:
3450
+ | 'Custom'
3451
+ | 'Discord'
3452
+ | 'EpicGames'
3453
+ | 'Instagram'
3454
+ | 'Steam'
3455
+ | 'Telegram'
3456
+ | 'TikTok'
3457
+ | 'Twitch'
3458
+ | 'X(Twitter)'
3459
+ | 'YouTube'
3460
+ | 'Google'
3461
+ | null;
3462
+
3463
+ /**
3464
+ * URL of the social platform's logo.
3465
+ */
3466
+ socialPlatformLogo?: string | null;
3467
+
3468
+ /**
3469
+ * Name of the social platform.
3470
+ */
3471
+ socialPlatformName?: string | null;
3472
+
3473
+ /**
3474
+ * ID of the Steam app.
3475
+ */
3476
+ steamAppId?: string | null;
3477
+
3478
+ /**
3479
+ * Array of streak milestones and corresponding rewards.
3480
+ */
3481
+ streakArray?: Array<Metadata.StreakArray> | null;
3482
+
3483
+ /**
3484
+ * Metadata for swap loyalty rules
3485
+ */
3486
+ swap?: Metadata.Swap;
3487
+
3488
+ /**
3489
+ * ID of the Telegram channel.
3490
+ */
3491
+ telegramChannelId?: string | null;
3492
+
3493
+ /**
3494
+ * Time delay in seconds to verify actions.
3495
+ */
3496
+ timeDelayToVerifySeconds?: string | number | null;
3497
+
3498
+ /**
3499
+ * Flag indicating if all contracts are tracked.
3500
+ */
3501
+ trackAllContracts?: boolean | null;
3502
+
3503
+ /**
3504
+ * Flag indicating if the progress is tracked. If enabled, the rule can only be
3505
+ * completed once the progress is 100%.
3506
+ */
3507
+ trackProgress?: boolean | null;
3508
+
3509
+ /**
3510
+ * URL of the associated Twitter account.
3511
+ */
3512
+ twitterAccountUrl?: string;
3513
+
3514
+ /**
3515
+ * Hashtag associated with the Twitter post.
3516
+ */
3517
+ twitterHashtag?: string;
3518
+
3519
+ /**
3520
+ * URL of the associated Twitter post.
3521
+ */
3522
+ twitterPostUrl?: string;
3523
+
3524
+ /**
3525
+ * Unique identifier of the Twitter user.
3526
+ */
3527
+ twitterUserId?: string;
3528
+
3529
+ /**
3530
+ * Twitter username of the user.
3531
+ */
3532
+ twitterUsername?: string;
3533
+
3534
+ /**
3535
+ * Minimum length of the verification text.
3536
+ */
3537
+ verificationTextMinimumLength?: number | null;
3538
+
3539
+ /**
3540
+ * Multiplier applied to rewards for verified users.
3541
+ */
3542
+ verifiedMultiplier?: number | null;
3543
+
3544
+ /**
3545
+ * Placeholder text for verification input fields.
3546
+ */
3547
+ verifyPlaceHolderText?: string | null;
3548
+
3549
+ /**
3550
+ * Type of wallet associated with the rule.
3551
+ */
3552
+ walletType?: 'evm' | 'solana' | 'imx' | 'sui' | 'ton' | 'cosmos' | 'ultra' | 'agw' | null;
3553
+
3554
+ /**
3555
+ * ID of the Youtube channel.
3556
+ */
3557
+ youtubeChannelId?: string | null;
3558
+
3559
+ /**
3560
+ * ID of the Youtube video.
3561
+ */
3562
+ youtubeVideoId?: string | null;
3563
+ }
3564
+
3565
+ export namespace Metadata {
3566
+ export interface Collection {
3567
+ /**
3568
+ * Blockchain address of the collection.
3569
+ */
3570
+ address?: string;
3571
+
3572
+ /**
3573
+ * Multiplier applied to the rewards for this collection.
3574
+ */
3575
+ multiplier?: number;
3576
+
3577
+ /**
3578
+ * Blockchain network of the collection.
3579
+ */
3580
+ network?:
3581
+ | 'abstract'
3582
+ | 'abstractTestnet'
3583
+ | 'apechain'
3584
+ | 'arbitrum'
3585
+ | 'avalanche'
3586
+ | 'avalancheFuji'
3587
+ | 'base'
3588
+ | 'baseSepolia'
3589
+ | 'berachain'
3590
+ | 'berachainArtio'
3591
+ | 'berachainBepolia'
3592
+ | 'binance'
3593
+ | 'bscTestnet'
3594
+ | 'campTestnet'
3595
+ | 'fantom'
3596
+ | 'fantomTestnet'
3597
+ | 'flowMainnet'
3598
+ | 'mainnet'
3599
+ | 'nexusTestnet'
3600
+ | 'optimism'
3601
+ | 'polygon'
3602
+ | 'polygon_mumbai'
3603
+ | 'skaleNebula'
3604
+ | 'solana'
3605
+ | 'sophon'
3606
+ | 'sophonTestnet'
3607
+ | 'sui'
3608
+ | 'superseed'
3609
+ | 'superseedSepolia'
3610
+ | 'vanar'
3611
+ | 'xai'
3612
+ | 'zksync'
3613
+ | 'coti'
3614
+ | 'cotiTestnet'
3615
+ | 'morph'
3616
+ | 'morphTestnet'
3617
+ | 'morphHolesky'
3618
+ | 'ultra'
3619
+ | 'ultraTestnet'
3620
+ | 'nitrograph'
3621
+ | 'sepolia'
3622
+ | 'optimism_sepolia'
3623
+ | 'arbitrumSepolia'
3624
+ | 'goerli'
3625
+ | 'optimism_goerli'
3626
+ | 'arbitrumGoerli'
3627
+ | 'basecamp'
3628
+ | 'somnia';
3629
+ }
3630
+
3631
+ /**
3632
+ * Object containing details for the call-to-action.
3633
+ */
3634
+ export interface Cta {
3635
+ /**
3636
+ * Link for the call-to-action.
3637
+ */
3638
+ href?: string | null;
3639
+
3640
+ /**
3641
+ * Label for the call-to-action.
3642
+ */
3643
+ label?: string | null;
3644
+ }
3645
+
3646
+ export interface DiscordServersToJoin {
3647
+ /**
3648
+ * ID of the Discord server to join.
3649
+ */
3650
+ id?: string;
3651
+
3652
+ /**
3653
+ * Array of Discord channels to join.
3654
+ */
3655
+ channels?: Array<DiscordServersToJoin.Channel>;
3656
+
3657
+ /**
3658
+ * Array of roles to assign in the Discord server.
3659
+ */
3660
+ roles?: Array<DiscordServersToJoin.Role>;
3661
+ }
3662
+
3663
+ export namespace DiscordServersToJoin {
3664
+ export interface Channel {
3665
+ /**
3666
+ * ID of the Discord channel.
3667
+ */
3668
+ id?: string;
3669
+
3670
+ /**
3671
+ * Array of emojis used in the channel.
3672
+ */
3673
+ emojis?: Array<Channel.Emoji>;
3674
+
3675
+ /**
3676
+ * Phrase of text to be present in the discord message
3677
+ */
3678
+ text?: string;
3679
+ }
3680
+
3681
+ export namespace Channel {
3682
+ export interface Emoji {
3683
+ /**
3684
+ * ID of the emoji used in the channel.
3685
+ */
3686
+ id?: string;
3687
+ }
3688
+ }
3689
+
3690
+ export interface Role {
3691
+ /**
3692
+ * ID of the role in the Discord server.
3693
+ */
3694
+ id: string;
3695
+ }
3696
+ }
3697
+
3698
+ export interface DripQuestsToComplete {
3699
+ /**
3700
+ * ID of the drip quest to complete.
3701
+ */
3702
+ id: string;
3703
+ }
3704
+
3705
+ /**
3706
+ * Liquidity pool details.
3707
+ */
3708
+ export interface Liquidity {
3709
+ /**
3710
+ * Calculation type of the liquidity pool.
3711
+ */
3712
+ calculationType?: 'fixed' | 'custom';
3713
+
3714
+ /**
3715
+ * Custom function to calculate the the reward amount based on the liquidity
3716
+ * provided per day. X is the reward amount, Y is the liquidity provided per day in
3717
+ * USD.
3718
+ */
3719
+ customFunction?: string;
3720
+
3721
+ /**
3722
+ * Liquidity provided per day in USD
3723
+ */
3724
+ liquidityPerDay?: number;
3725
+
3726
+ /**
3727
+ * Blockchain network of the liquidity pool.
3728
+ */
3729
+ network?:
3730
+ | 'abstract'
3731
+ | 'abstractTestnet'
3732
+ | 'apechain'
3733
+ | 'arbitrum'
3734
+ | 'avalanche'
3735
+ | 'avalancheFuji'
3736
+ | 'base'
3737
+ | 'baseSepolia'
3738
+ | 'berachain'
3739
+ | 'berachainArtio'
3740
+ | 'berachainBepolia'
3741
+ | 'binance'
3742
+ | 'bscTestnet'
3743
+ | 'campTestnet'
3744
+ | 'fantom'
3745
+ | 'fantomTestnet'
3746
+ | 'flowMainnet'
3747
+ | 'mainnet'
3748
+ | 'nexusTestnet'
3749
+ | 'optimism'
3750
+ | 'polygon'
3751
+ | 'polygon_mumbai'
3752
+ | 'skaleNebula'
3753
+ | 'solana'
3754
+ | 'sophon'
3755
+ | 'sophonTestnet'
3756
+ | 'sui'
3757
+ | 'superseed'
3758
+ | 'superseedSepolia'
3759
+ | 'vanar'
3760
+ | 'xai'
3761
+ | 'zksync'
3762
+ | 'coti'
3763
+ | 'cotiTestnet'
3764
+ | 'morph'
3765
+ | 'morphTestnet'
3766
+ | 'morphHolesky'
3767
+ | 'ultra'
3768
+ | 'ultraTestnet'
3769
+ | 'nitrograph'
3770
+ | 'sepolia'
3771
+ | 'optimism_sepolia'
3772
+ | 'arbitrumSepolia'
3773
+ | 'goerli'
3774
+ | 'optimism_goerli'
3775
+ | 'arbitrumGoerli'
3776
+ | 'basecamp'
3777
+ | 'somnia';
3778
+
3779
+ /**
3780
+ * Indicates if only in-range liquidity is rewarded.
3781
+ */
3782
+ onlyRewardInRangeLiquidity?: boolean;
3783
+
3784
+ /**
3785
+ * Array of liquidity pools associated with the rule.
3786
+ */
3787
+ pools?: Array<Liquidity.Pool>;
3788
+
3789
+ /**
3790
+ * Protocol of the liquidity pool.
3791
+ */
3792
+ protocol?: string;
3793
+ }
3794
+
3795
+ export namespace Liquidity {
3796
+ export interface Pool {
3797
+ /**
3798
+ * Unique identifier of the liquidity pool.
3799
+ */
3800
+ id: string;
3801
+ }
3802
+ }
3803
+
3804
+ export interface Range {
3805
+ /**
3806
+ * Reward amount for this range.
3807
+ */
3808
+ amount: number;
3809
+
3810
+ /**
3811
+ * End value of the range.
3812
+ */
3813
+ endRange: number;
3814
+
3815
+ /**
3816
+ * Start value of the range.
3817
+ */
3818
+ startRange: number;
3819
+
3820
+ /**
3821
+ * ID of the loyalty badge for this range.
3822
+ */
3823
+ loyaltyBadgeId?: string;
3824
+
3825
+ /**
3826
+ * Amount of the loyalty multiplier for this range.
3827
+ */
3828
+ loyaltyMultiplierAmount?: number;
3829
+ }
3830
+
3831
+ /**
3832
+ * Object defining referral requirements.
3833
+ */
3834
+ export interface ReferralRequirements {
3835
+ /**
3836
+ * Flag indicating if achieving points is required.
3837
+ */
3838
+ achievePoints?: boolean | null;
3839
+
3840
+ /**
3841
+ * Flag indicating if completing the profile is required.
3842
+ */
3843
+ completeProfile?: boolean | null;
3844
+
3845
+ /**
3846
+ * Flag indicating if connecting Discord is required.
3847
+ */
3848
+ connectDiscord?: boolean | null;
3849
+
3850
+ /**
3851
+ * Flag indicating if connecting email is required.
3852
+ */
3853
+ connectEmail?: boolean | null;
3854
+
3855
+ /**
3856
+ * Flag indicating if connecting Twitter is required.
3857
+ */
3858
+ connectTwitter?: boolean | null;
3859
+
3860
+ points?: ReferralRequirements.Points | null;
3861
+ }
3862
+
3863
+ export namespace ReferralRequirements {
3864
+ export interface Points {
3865
+ /**
3866
+ * Points required for referral.
3867
+ */
3868
+ amount?: number | null;
3869
+
3870
+ /**
3871
+ * ID of the loyalty currency for referral.
3872
+ */
3873
+ loyaltyCurrecyId?: string | null;
3874
+ }
3875
+ }
3876
+
3877
+ /**
3878
+ * Object containing details of the associated smart contract.
3879
+ */
3880
+ export interface SmartContract {
3881
+ /**
3882
+ * Mapping of addresses for the smart contract.
3883
+ */
3884
+ addressMapping?: string | null;
3885
+
3886
+ /**
3887
+ * Object containing details of the amount multiplier from the event.
3888
+ */
3889
+ amountMultiplier?: SmartContract.AmountMultiplier | null;
3890
+
3891
+ /**
3892
+ * ID of the smart contract.
3893
+ */
3894
+ contractId?: string | null;
3895
+
3896
+ /**
3897
+ * Criteria to evaluate the smart contract event.
3898
+ */
3899
+ criteria?: 'everyEvent' | 'byParameter' | null;
3900
+
3901
+ /**
3902
+ * Event emitted by the smart contract.
3903
+ */
3904
+ event?: string | null;
3905
+
3906
+ /**
3907
+ * Array of parameters for the smart contract.
3908
+ */
3909
+ params?: Array<SmartContract.Param> | null;
3910
+
3911
+ /**
3912
+ * Type of the smart contract interaction.
3913
+ */
3914
+ type?: 'function' | 'event' | null;
3915
+ }
3916
+
3917
+ export namespace SmartContract {
3918
+ /**
3919
+ * Object containing details of the amount multiplier from the event.
3920
+ */
3921
+ export interface AmountMultiplier {
3922
+ /**
3923
+ * Mapping of the value for the smart contract.
3924
+ */
3925
+ valueMapping?: string | null;
3926
+ }
3927
+
3928
+ export interface Param {
3929
+ /**
3930
+ * Condition to check for the parameter.
3931
+ */
3932
+ condition?: string | null;
3933
+
3934
+ /**
3935
+ * Name of the smart contract parameter.
3936
+ */
3937
+ name?: string | null;
3938
+
3939
+ /**
3940
+ * Value of the parameter.
3941
+ */
3942
+ value?: string | null;
3943
+ }
3944
+ }
3945
+
3946
+ export interface SnapshotProposal {
3947
+ /**
3948
+ * ID of the snapshot proposal.
3949
+ */
3950
+ id: string;
3951
+
3952
+ /**
3953
+ * Space associated with the snapshot proposal.
3954
+ */
3955
+ space: string;
3956
+ }
3957
+
3958
+ export interface StreakArray {
3959
+ /**
3960
+ * Reward amount for achieving the streak milestone.
3961
+ */
3962
+ streakAmount: number;
3963
+
3964
+ /**
3965
+ * Milestone required to achieve the streak.
3966
+ */
3967
+ streakMilestone: number;
3968
+ }
3969
+
3970
+ /**
3971
+ * Metadata for swap loyalty rules
3972
+ */
3973
+ export interface Swap {
3974
+ provider?: 'any' | 'relay' | 'lifi';
3975
+
3976
+ relayReferrerId?: string;
3977
+
3978
+ requireCrossChainSwap?: boolean;
3979
+
3980
+ swappedToChain?: 'any' | number | string;
3981
+
3982
+ swappedToTokens?: Array<Swap.SwappedToToken>;
3983
+
3984
+ tokenMode?: 'any' | 'specific';
3985
+
3986
+ trackTokenAmount?: boolean;
3987
+ }
3988
+
3989
+ export namespace Swap {
3990
+ export interface SwappedToToken {
3991
+ address: string;
3992
+
3993
+ chainId: string;
3994
+ }
3995
+ }
3996
+ }
379
3997
  }
380
3998
  }
381
3999