@snagsolutions/sdk 0.1.0-alpha.26 → 0.1.0-alpha.260

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