@boostxyz/sdk 0.0.0-alpha.9 → 1.1.0-alpha.22

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 (257) hide show
  1. package/dist/Actions/Action.cjs +1 -1
  2. package/dist/Actions/Action.cjs.map +1 -1
  3. package/dist/Actions/Action.js +7 -7
  4. package/dist/Actions/ContractAction.d.ts +11 -11
  5. package/dist/Actions/ContractAction.d.ts.map +1 -1
  6. package/dist/Actions/ERC721MintAction.d.ts +14 -14
  7. package/dist/Actions/ERC721MintAction.d.ts.map +1 -1
  8. package/dist/Actions/EventAction.cjs +1 -1
  9. package/dist/Actions/EventAction.cjs.map +1 -1
  10. package/dist/Actions/EventAction.d.ts +171 -41
  11. package/dist/Actions/EventAction.d.ts.map +1 -1
  12. package/dist/Actions/EventAction.js +15 -392
  13. package/dist/Actions/EventAction.js.map +1 -1
  14. package/dist/AllowLists/AllowList.cjs +1 -1
  15. package/dist/AllowLists/AllowList.cjs.map +1 -1
  16. package/dist/AllowLists/AllowList.d.ts +6 -4
  17. package/dist/AllowLists/AllowList.d.ts.map +1 -1
  18. package/dist/AllowLists/AllowList.js +45 -23
  19. package/dist/AllowLists/AllowList.js.map +1 -1
  20. package/dist/AllowLists/OpenAllowList.d.ts +423 -0
  21. package/dist/AllowLists/OpenAllowList.d.ts.map +1 -0
  22. package/dist/AllowLists/SimpleAllowList.cjs +1 -1
  23. package/dist/AllowLists/SimpleAllowList.cjs.map +1 -1
  24. package/dist/AllowLists/SimpleAllowList.d.ts +92 -37
  25. package/dist/AllowLists/SimpleAllowList.d.ts.map +1 -1
  26. package/dist/AllowLists/SimpleAllowList.js +55 -71
  27. package/dist/AllowLists/SimpleAllowList.js.map +1 -1
  28. package/dist/AllowLists/SimpleDenyList.cjs +1 -1
  29. package/dist/AllowLists/SimpleDenyList.cjs.map +1 -1
  30. package/dist/AllowLists/SimpleDenyList.d.ts +203 -11
  31. package/dist/AllowLists/SimpleDenyList.d.ts.map +1 -1
  32. package/dist/AllowLists/SimpleDenyList.js +11 -112
  33. package/dist/AllowLists/SimpleDenyList.js.map +1 -1
  34. package/dist/Auth/PassthroughAuth.cjs +1 -1
  35. package/dist/Auth/PassthroughAuth.js +1 -1
  36. package/dist/Boost.cjs +1 -1
  37. package/dist/Boost.cjs.map +1 -1
  38. package/dist/Boost.d.ts +20 -21
  39. package/dist/Boost.d.ts.map +1 -1
  40. package/dist/Boost.js +43 -57
  41. package/dist/Boost.js.map +1 -1
  42. package/dist/BoostCore-BVZExPPu.js +1462 -0
  43. package/dist/BoostCore-BVZExPPu.js.map +1 -0
  44. package/dist/BoostCore-D-E-cnGI.cjs +3 -0
  45. package/dist/BoostCore-D-E-cnGI.cjs.map +1 -0
  46. package/dist/BoostCore.cjs +1 -2
  47. package/dist/BoostCore.cjs.map +1 -1
  48. package/dist/BoostCore.d.ts +748 -77
  49. package/dist/BoostCore.d.ts.map +1 -1
  50. package/dist/BoostCore.js +29 -1150
  51. package/dist/BoostCore.js.map +1 -1
  52. package/dist/BoostRegistry.cjs +1 -1
  53. package/dist/BoostRegistry.cjs.map +1 -1
  54. package/dist/BoostRegistry.d.ts +80 -25
  55. package/dist/BoostRegistry.d.ts.map +1 -1
  56. package/dist/BoostRegistry.js +165 -83
  57. package/dist/BoostRegistry.js.map +1 -1
  58. package/dist/Budgets/Budget.cjs +1 -1
  59. package/dist/Budgets/Budget.cjs.map +1 -1
  60. package/dist/Budgets/Budget.d.ts.map +1 -1
  61. package/dist/Budgets/Budget.js +2 -2
  62. package/dist/Budgets/Budget.js.map +1 -1
  63. package/dist/Budgets/ManagedBudget.cjs +1 -1
  64. package/dist/Budgets/ManagedBudget.cjs.map +1 -1
  65. package/dist/Budgets/ManagedBudget.d.ts +75 -193
  66. package/dist/Budgets/ManagedBudget.d.ts.map +1 -1
  67. package/dist/Budgets/ManagedBudget.js +80 -298
  68. package/dist/Budgets/ManagedBudget.js.map +1 -1
  69. package/dist/Budgets/VestingBudget.d.ts +223 -89
  70. package/dist/Budgets/VestingBudget.d.ts.map +1 -1
  71. package/dist/Deployable/Contract.cjs +1 -1
  72. package/dist/Deployable/Contract.cjs.map +1 -1
  73. package/dist/Deployable/Contract.d.ts +4 -5
  74. package/dist/Deployable/Contract.d.ts.map +1 -1
  75. package/dist/Deployable/Contract.js +5 -7
  76. package/dist/Deployable/Contract.js.map +1 -1
  77. package/dist/Deployable/Deployable.cjs.map +1 -1
  78. package/dist/Deployable/Deployable.d.ts +1 -1
  79. package/dist/Deployable/Deployable.d.ts.map +1 -1
  80. package/dist/Deployable/Deployable.js +3 -5
  81. package/dist/Deployable/Deployable.js.map +1 -1
  82. package/dist/Deployable/DeployableTarget.cjs +1 -1
  83. package/dist/Deployable/DeployableTarget.cjs.map +1 -1
  84. package/dist/Deployable/DeployableTarget.d.ts +13 -13
  85. package/dist/Deployable/DeployableTarget.d.ts.map +1 -1
  86. package/dist/Deployable/DeployableTarget.js +28 -25
  87. package/dist/Deployable/DeployableTarget.js.map +1 -1
  88. package/dist/Deployable/DeployableTargetWithRBAC.cjs +2 -0
  89. package/dist/Deployable/DeployableTargetWithRBAC.cjs.map +1 -0
  90. package/dist/Deployable/DeployableTargetWithRBAC.d.ts +179 -0
  91. package/dist/Deployable/DeployableTargetWithRBAC.d.ts.map +1 -0
  92. package/dist/Deployable/DeployableTargetWithRBAC.js +222 -0
  93. package/dist/Deployable/DeployableTargetWithRBAC.js.map +1 -0
  94. package/dist/EventAction-BZt5cjbe.cjs +2 -0
  95. package/dist/EventAction-BZt5cjbe.cjs.map +1 -0
  96. package/dist/EventAction-C_-hJXWm.js +1541 -0
  97. package/dist/EventAction-C_-hJXWm.js.map +1 -0
  98. package/dist/Incentive-BhHaK3PZ.cjs +2 -0
  99. package/dist/Incentive-BhHaK3PZ.cjs.map +1 -0
  100. package/dist/Incentive-Cqg1w6wD.js +312 -0
  101. package/dist/Incentive-Cqg1w6wD.js.map +1 -0
  102. package/dist/Incentives/AllowListIncentive.cjs +1 -1
  103. package/dist/Incentives/AllowListIncentive.cjs.map +1 -1
  104. package/dist/Incentives/AllowListIncentive.d.ts +38 -16
  105. package/dist/Incentives/AllowListIncentive.d.ts.map +1 -1
  106. package/dist/Incentives/AllowListIncentive.js +42 -29
  107. package/dist/Incentives/AllowListIncentive.js.map +1 -1
  108. package/dist/Incentives/CGDAIncentive.cjs +1 -1
  109. package/dist/Incentives/CGDAIncentive.cjs.map +1 -1
  110. package/dist/Incentives/CGDAIncentive.d.ts +234 -21
  111. package/dist/Incentives/CGDAIncentive.d.ts.map +1 -1
  112. package/dist/Incentives/CGDAIncentive.js +45 -32
  113. package/dist/Incentives/CGDAIncentive.js.map +1 -1
  114. package/dist/Incentives/ERC1155Incentive.d.ts +224 -37
  115. package/dist/Incentives/ERC1155Incentive.d.ts.map +1 -1
  116. package/dist/Incentives/ERC20Incentive.cjs +1 -1
  117. package/dist/Incentives/ERC20Incentive.cjs.map +1 -1
  118. package/dist/Incentives/ERC20Incentive.d.ts +230 -29
  119. package/dist/Incentives/ERC20Incentive.d.ts.map +1 -1
  120. package/dist/Incentives/ERC20Incentive.js +56 -43
  121. package/dist/Incentives/ERC20Incentive.js.map +1 -1
  122. package/dist/{Budgets/SimpleBudget.d.ts → Incentives/ERC20VariableCriteriaIncentive.d.ts} +335 -440
  123. package/dist/Incentives/ERC20VariableCriteriaIncentive.d.ts.map +1 -0
  124. package/dist/Incentives/ERC20VariableIncentive.d.ts +231 -29
  125. package/dist/Incentives/ERC20VariableIncentive.d.ts.map +1 -1
  126. package/dist/Incentives/Incentive.cjs +1 -1
  127. package/dist/Incentives/Incentive.cjs.map +1 -1
  128. package/dist/Incentives/Incentive.d.ts +4 -4
  129. package/dist/Incentives/Incentive.d.ts.map +1 -1
  130. package/dist/Incentives/Incentive.js +16 -296
  131. package/dist/Incentives/Incentive.js.map +1 -1
  132. package/dist/Incentives/PointsIncentive.cjs +1 -1
  133. package/dist/Incentives/PointsIncentive.cjs.map +1 -1
  134. package/dist/Incentives/PointsIncentive.d.ts +40 -18
  135. package/dist/Incentives/PointsIncentive.d.ts.map +1 -1
  136. package/dist/Incentives/PointsIncentive.js +37 -24
  137. package/dist/Incentives/PointsIncentive.js.map +1 -1
  138. package/dist/SimpleDenyList-BUR17Tt1.cjs +2 -0
  139. package/dist/SimpleDenyList-BUR17Tt1.cjs.map +1 -0
  140. package/dist/SimpleDenyList-CGaWjuld.js +132 -0
  141. package/dist/SimpleDenyList-CGaWjuld.js.map +1 -0
  142. package/dist/Validators/SignerValidator.cjs +1 -1
  143. package/dist/Validators/SignerValidator.cjs.map +1 -1
  144. package/dist/Validators/SignerValidator.d.ts +16 -16
  145. package/dist/Validators/SignerValidator.d.ts.map +1 -1
  146. package/dist/Validators/SignerValidator.js +30 -27
  147. package/dist/Validators/SignerValidator.js.map +1 -1
  148. package/dist/Validators/Validator.cjs +1 -1
  149. package/dist/Validators/Validator.cjs.map +1 -1
  150. package/dist/Validators/Validator.d.ts +1 -1
  151. package/dist/Validators/Validator.js +2 -2
  152. package/dist/Validators/Validator.js.map +1 -1
  153. package/dist/claiming.cjs.map +1 -1
  154. package/dist/claiming.d.ts +1 -1
  155. package/dist/claiming.js.map +1 -1
  156. package/dist/componentInterfaces-BBCFkrZv.js +14 -0
  157. package/dist/componentInterfaces-BBCFkrZv.js.map +1 -0
  158. package/dist/componentInterfaces-DRI_dQ-P.cjs +2 -0
  159. package/dist/componentInterfaces-DRI_dQ-P.cjs.map +1 -0
  160. package/dist/deployments-DVXioW2i.cjs +2 -0
  161. package/dist/deployments-DVXioW2i.cjs.map +1 -0
  162. package/dist/deployments-oykLv3_Z.js +43 -0
  163. package/dist/deployments-oykLv3_Z.js.map +1 -0
  164. package/dist/deployments.json +44 -0
  165. package/dist/errors.cjs +1 -1
  166. package/dist/errors.cjs.map +1 -1
  167. package/dist/errors.d.ts +256 -20
  168. package/dist/errors.d.ts.map +1 -1
  169. package/dist/errors.js +183 -26
  170. package/dist/errors.js.map +1 -1
  171. package/dist/{generated-57_Kffpz.js → generated-CKt2yCQd.js} +3613 -1869
  172. package/dist/generated-CKt2yCQd.js.map +1 -0
  173. package/dist/generated-CyTNlOwM.cjs +3 -0
  174. package/dist/generated-CyTNlOwM.cjs.map +1 -0
  175. package/dist/index.cjs +1 -1
  176. package/dist/index.d.ts +5 -0
  177. package/dist/index.d.ts.map +1 -1
  178. package/dist/index.js +142 -108
  179. package/dist/index.js.map +1 -1
  180. package/dist/transfers.cjs.map +1 -1
  181. package/dist/transfers.d.ts +1 -1
  182. package/dist/transfers.js.map +1 -1
  183. package/dist/utils.cjs +1 -1
  184. package/dist/utils.cjs.map +1 -1
  185. package/dist/utils.d.ts +26 -12
  186. package/dist/utils.d.ts.map +1 -1
  187. package/dist/utils.js +38 -23
  188. package/dist/utils.js.map +1 -1
  189. package/package.json +20 -10
  190. package/src/Actions/Action.test.ts +14 -13
  191. package/src/Actions/ContractAction.test.ts +10 -10
  192. package/src/Actions/ContractAction.ts +11 -12
  193. package/src/Actions/ERC721MintAction.test.ts +6 -6
  194. package/src/Actions/ERC721MintAction.ts +14 -15
  195. package/src/Actions/EventAction.test.ts +729 -109
  196. package/src/Actions/EventAction.ts +542 -84
  197. package/src/AllowLists/AllowList.test.ts +7 -7
  198. package/src/AllowLists/AllowList.ts +5 -3
  199. package/src/AllowLists/OpenAllowList.test.ts +40 -0
  200. package/src/AllowLists/OpenAllowList.ts +45 -0
  201. package/src/AllowLists/SimpleAllowList.test.ts +4 -4
  202. package/src/AllowLists/SimpleAllowList.ts +39 -61
  203. package/src/AllowLists/SimpleDenyList.test.ts +4 -4
  204. package/src/AllowLists/SimpleDenyList.ts +40 -17
  205. package/src/Auth/PassthroughAuth.test.ts +1 -1
  206. package/src/Boost.ts +21 -24
  207. package/src/BoostCore.test.ts +323 -268
  208. package/src/BoostCore.ts +396 -219
  209. package/src/BoostRegistry.test.ts +53 -0
  210. package/src/BoostRegistry.ts +161 -40
  211. package/src/Budgets/Budget.test.ts +2 -2
  212. package/src/Budgets/Budget.ts +1 -2
  213. package/src/Budgets/ManagedBudget.test.ts +82 -19
  214. package/src/Budgets/ManagedBudget.ts +48 -310
  215. package/src/Budgets/VestingBudget.test.ts +7 -7
  216. package/src/Budgets/VestingBudget.ts +34 -106
  217. package/src/Deployable/Contract.ts +4 -5
  218. package/src/Deployable/Deployable.ts +1 -1
  219. package/src/Deployable/DeployableTarget.ts +30 -19
  220. package/src/Deployable/DeployableTargetWithRBAC.ts +323 -0
  221. package/src/Incentives/AllowListIncentive.test.ts +5 -5
  222. package/src/Incentives/AllowListIncentive.ts +29 -15
  223. package/src/Incentives/CGDAIncentive.test.ts +9 -6
  224. package/src/Incentives/CGDAIncentive.ts +38 -18
  225. package/src/Incentives/ERC1155Incentive.test.ts +3 -3
  226. package/src/Incentives/ERC1155Incentive.ts +28 -29
  227. package/src/Incentives/ERC20Incentive.test.ts +9 -6
  228. package/src/Incentives/ERC20Incentive.ts +46 -26
  229. package/src/Incentives/ERC20VariableCriteriaIncentive.test.ts +184 -0
  230. package/src/Incentives/ERC20VariableCriteriaIncentive.ts +324 -0
  231. package/src/Incentives/ERC20VariableIncentive.test.ts +8 -11
  232. package/src/Incentives/ERC20VariableIncentive.ts +49 -26
  233. package/src/Incentives/Incentive.test.ts +4 -1
  234. package/src/Incentives/Incentive.ts +7 -6
  235. package/src/Incentives/PointsIncentive.test.ts +24 -25
  236. package/src/Incentives/PointsIncentive.ts +31 -17
  237. package/src/Validators/SignerValidator.test.ts +6 -6
  238. package/src/Validators/SignerValidator.ts +19 -17
  239. package/src/Validators/Validator.test.ts +2 -2
  240. package/src/Validators/Validator.ts +1 -1
  241. package/src/claiming.ts +1 -1
  242. package/src/errors.ts +345 -21
  243. package/src/index.test.ts +118 -36
  244. package/src/index.ts +5 -0
  245. package/src/transfers.ts +1 -1
  246. package/src/utils.test.ts +2 -2
  247. package/src/utils.ts +61 -12
  248. package/dist/Budgets/SimpleBudget.d.ts.map +0 -1
  249. package/dist/componentInterfaces-CKCBwG16.cjs +0 -2
  250. package/dist/componentInterfaces-CKCBwG16.cjs.map +0 -1
  251. package/dist/componentInterfaces-DYkaxBda.js +0 -13
  252. package/dist/componentInterfaces-DYkaxBda.js.map +0 -1
  253. package/dist/generated-57_Kffpz.js.map +0 -1
  254. package/dist/generated-wKBNvm48.cjs +0 -3
  255. package/dist/generated-wKBNvm48.cjs.map +0 -1
  256. package/src/Budgets/SimpleBudget.test.ts +0 -152
  257. package/src/Budgets/SimpleBudget.ts +0 -564
@@ -21,6 +21,7 @@ import {
21
21
  type Hex,
22
22
  encodeAbiParameters,
23
23
  } from 'viem';
24
+ import { ERC20VariableIncentive as ERC20VariableIncentiveBases } from '../../dist/deployments.json';
24
25
  import type {
25
26
  DeployableOptions,
26
27
  GenericDeployableParams,
@@ -56,11 +57,17 @@ export interface ERC20VariableIncentivePayload {
56
57
  */
57
58
  reward: bigint;
58
59
  /**
59
- * How many times can this incentive be claimed.
60
+ * The total spending limit of the asset that will be distributed.
60
61
  *
61
62
  * @type {bigint}
62
63
  */
63
64
  limit: bigint;
65
+ /**
66
+ * The entity that can `clawback` funds
67
+ *
68
+ * @type {Address}
69
+ */
70
+ manager: Address;
64
71
  }
65
72
 
66
73
  /**
@@ -79,7 +86,7 @@ export type ERC20VariableIncentiveLog<
79
86
  > = GenericLog<typeof erc20VariableIncentiveAbi, event>;
80
87
 
81
88
  /**
82
- * A simple ERC20 incentive implementation that allows claiming of tokens
89
+ * A modified ERC20 incentive implementation that allows claiming of variable token amounts with a spending limit
83
90
  *
84
91
  * @export
85
92
  * @class ERC20VariableIncentive
@@ -96,10 +103,11 @@ export class ERC20VariableIncentive extends DeployableTarget<
96
103
  *
97
104
  * @public
98
105
  * @static
99
- * @type {Address}
106
+ * @type {Record<number, Address>}
100
107
  */
101
- public static override base: Address = import.meta.env
102
- .VITE_ERC20_VARIABLE_INCENTIVE_BASE;
108
+ public static override bases: Record<number, Address> = {
109
+ ...(ERC20VariableIncentiveBases as Record<number, Address>),
110
+ };
103
111
  /**
104
112
  * @inheritdoc
105
113
  *
@@ -114,8 +122,8 @@ export class ERC20VariableIncentive extends DeployableTarget<
114
122
  *
115
123
  * @public
116
124
  * @async
117
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'owner'>} [params]
118
- * @returns {unknown}
125
+ * @param {?ReadParams} [params]
126
+ * @returns {Promise<Address>}
119
127
  */
120
128
  public async owner(
121
129
  params?: ReadParams<typeof erc20VariableIncentiveAbi, 'owner'>,
@@ -129,12 +137,12 @@ export class ERC20VariableIncentive extends DeployableTarget<
129
137
  }
130
138
 
131
139
  /**
132
- * The current reward
140
+ * The total amount of rewards claimed
133
141
  *
134
142
  * @public
135
143
  * @async
136
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'currentReward'>} [params]
137
- * @returns {Promise<bigint>} - The current reward
144
+ * @param {?ReadParams} [params]
145
+ * @returns {Promise<bigint>}
138
146
  */
139
147
  public async totalClaimed(
140
148
  params?: ReadParams<typeof erc20VariableIncentiveAbi, 'totalClaimed'>,
@@ -152,7 +160,7 @@ export class ERC20VariableIncentive extends DeployableTarget<
152
160
  *
153
161
  * @public
154
162
  * @async
155
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'currentReward'>} [params]
163
+ * @param {?ReadParams} [params]
156
164
  * @returns {Promise<bigint>} - The current reward
157
165
  */
158
166
  public async currentReward(
@@ -171,7 +179,7 @@ export class ERC20VariableIncentive extends DeployableTarget<
171
179
  *
172
180
  * @public
173
181
  * @async
174
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'claims'>} [params]
182
+ * @param {?ReadParams} [params]
175
183
  * @returns {Promise<bigint>}
176
184
  */
177
185
  public async claims(
@@ -191,7 +199,7 @@ export class ERC20VariableIncentive extends DeployableTarget<
191
199
  * @public
192
200
  * @async
193
201
  * @param {Address} address
194
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'claimed'>} [params]
202
+ * @param {?ReadParams} [params]
195
203
  * @returns {Promise<boolean>}
196
204
  */
197
205
  public async claimed(
@@ -211,7 +219,7 @@ export class ERC20VariableIncentive extends DeployableTarget<
211
219
  *
212
220
  * @public
213
221
  * @async
214
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'asset'>} [params]
222
+ * @param {?ReadParams} [params]
215
223
  * @returns {Promise<Address>}
216
224
  */
217
225
  public async asset(
@@ -229,7 +237,7 @@ export class ERC20VariableIncentive extends DeployableTarget<
229
237
  *
230
238
  * @public
231
239
  * @async
232
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'reward'>} [params]
240
+ * @param {?ReadParams} [params]
233
241
  * @returns {Promise<bigint>}
234
242
  */
235
243
  public async reward(
@@ -247,8 +255,8 @@ export class ERC20VariableIncentive extends DeployableTarget<
247
255
  *
248
256
  * @public
249
257
  * @async
250
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'limit'>} [params]
251
- * @returns {unknown}
258
+ * @param {?ReadParams} [params]
259
+ * @returns {Promise<bigint>}
252
260
  */
253
261
  public async limit(
254
262
  params?: ReadParams<typeof erc20VariableIncentiveAbi, 'limit'>,
@@ -266,7 +274,7 @@ export class ERC20VariableIncentive extends DeployableTarget<
266
274
  * @public
267
275
  * @async
268
276
  * @param {ClaimPayload} payload
269
- * @param {?WriteParams<typeof erc20VariableIncentiveAbi, 'claim'>} [params]
277
+ * @param {?WriteParams} [params]
270
278
  * @returns {Promise<boolean>} - Returns true if successfully claimed
271
279
  */
272
280
  protected async claim(
@@ -282,8 +290,8 @@ export class ERC20VariableIncentive extends DeployableTarget<
282
290
  * @public
283
291
  * @async
284
292
  * @param {ClaimPayload} payload
285
- * @param {?WriteParams<typeof erc20VariableIncentiveAbi, 'claim'>} [params]
286
- * @returns {Promise<boolean>} - Returns true if successfully claimed
293
+ * @param {?WriteParams} [params]
294
+ * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - Returns true if successfully claimed
287
295
  */
288
296
  protected async claimRaw(
289
297
  payload: ClaimPayload,
@@ -309,7 +317,7 @@ export class ERC20VariableIncentive extends DeployableTarget<
309
317
  * @public
310
318
  * @async
311
319
  * @param {ClaimPayload} payload
312
- * @param {?WriteParams<typeof erc20VariableIncentiveAbi, 'clawback'>} [params]
320
+ * @param {?WriteParams} [params]
313
321
  * @returns {Promise<boolean>} - True if the assets were successfully clawbacked
314
322
  */
315
323
  public async clawback(
@@ -325,8 +333,8 @@ export class ERC20VariableIncentive extends DeployableTarget<
325
333
  * @public
326
334
  * @async
327
335
  * @param {ClaimPayload} payload
328
- * @param {?WriteParams<typeof erc20VariableIncentiveAbi, 'clawback'>} [params]
329
- * @returns {Promise<boolean>} - True if the assets were successfully clawbacked
336
+ * @param {?WriteParams} [params]
337
+ * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the assets were successfully clawbacked
330
338
  */
331
339
  public async clawbackRaw(
332
340
  payload: ClaimPayload,
@@ -355,8 +363,8 @@ export class ERC20VariableIncentive extends DeployableTarget<
355
363
  * @public
356
364
  * @async
357
365
  * @param {ClaimPayload} payload
358
- * @param {?ReadParams<typeof erc20VariableIncentiveAbi, 'isClaimable'>} [params]
359
- * @returns {unknown} = True if the incentive is claimable based on the data payload
366
+ * @param {?ReadParams} [params]
367
+ * @returns {Promise<boolean>} = True if the incentive is claimable based on the data payload
360
368
  */
361
369
  public async isClaimable(
362
370
  payload: ClaimPayload,
@@ -370,6 +378,21 @@ export class ERC20VariableIncentive extends DeployableTarget<
370
378
  });
371
379
  }
372
380
 
381
+ /**
382
+ * Builds the claim data for the ERC20VariableIncentive.
383
+ *
384
+ * @public
385
+ * @param {bigint} rewardAmount
386
+ * @returns {Hex} Returns the encoded claim data
387
+ * @description This function returns the encoded claim data for the ERC20VariableIncentive.
388
+ */
389
+ public buildClaimData(rewardAmount: bigint) {
390
+ return encodeAbiParameters(
391
+ [{ type: 'uint256', name: 'rewardAmount' }],
392
+ [rewardAmount],
393
+ );
394
+ }
395
+
373
396
  /**
374
397
  * @inheritdoc
375
398
  *
@@ -402,7 +425,7 @@ export class ERC20VariableIncentive extends DeployableTarget<
402
425
  * @param {Address} param0.asset - The address of the incentivized asset.
403
426
  * @param {bigint} param0.reward - The amount of the asset to distribute.
404
427
  * @param {bigint} param0.limit - How many times can this incentive be claimed.
405
- * @returns {*}
428
+ * @returns {Hex}
406
429
  */
407
430
  export function prepareERC20VariableIncentivePayload({
408
431
  asset,
@@ -1,6 +1,6 @@
1
1
  import { zeroAddress } from 'viem';
2
2
  import { describe, expect, test } from 'vitest';
3
- import { defaultOptions } from '../../test/helpers';
3
+ import { defaultOptions } from '@boostxyz/test/helpers';
4
4
  import { StrategyType } from '../claiming';
5
5
  import {
6
6
  AllowListIncentive,
@@ -49,6 +49,7 @@ describe('Incentive', () => {
49
49
  totalBudget: 10n,
50
50
  rewardBoost: 1n,
51
51
  rewardDecay: 1n,
52
+ manager: zeroAddress,
52
53
  });
53
54
  await incentive.deploy();
54
55
  expect(
@@ -65,6 +66,7 @@ describe('Incentive', () => {
65
66
  strategy: StrategyType.POOL,
66
67
  reward: 1n,
67
68
  limit: 10n,
69
+ manager: zeroAddress,
68
70
  });
69
71
  await incentive.deploy();
70
72
  expect(
@@ -80,6 +82,7 @@ describe('Incentive', () => {
80
82
  asset: zeroAddress,
81
83
  reward: 1n,
82
84
  limit: 10n,
85
+ manager: zeroAddress,
83
86
  });
84
87
  await incentive.deploy();
85
88
  expect(
@@ -13,6 +13,7 @@ import { InvalidComponentInterfaceError } from '../errors';
13
13
  import { AllowListIncentive } from './AllowListIncentive';
14
14
  import { CGDAIncentive } from './CGDAIncentive';
15
15
  import { ERC20Incentive } from './ERC20Incentive';
16
+ import type { ERC20VariableCriteriaIncentive } from './ERC20VariableCriteriaIncentive';
16
17
  import { ERC20VariableIncentive } from './ERC20VariableIncentive';
17
18
  // import { ERC1155Incentive } from './ERC1155Incentive';
18
19
  import { PointsIncentive } from './PointsIncentive';
@@ -38,19 +39,19 @@ export type Incentive =
38
39
  | ERC20Incentive
39
40
  // | ERC1155Incentive
40
41
  | PointsIncentive
41
- | ERC20VariableIncentive;
42
+ | ERC20VariableIncentive
43
+ | ERC20VariableCriteriaIncentive;
42
44
 
43
45
  /**
44
46
  * A map of Incentive component interfaces to their constructors.
45
47
  *
46
- * @type {{ "0xc5b24b8e": typeof PointsIncentive; "0x8c901437": typeof ERC20Incentive; "0x0a466e6f": typeof AllowListIncentive; "0xa39e44d9": typeof CGDAIncentive; "0x6060409d": typeof ERC20VariableIncentive }}
48
+ * @type {{ "0xc5b24b8e": typeof PointsIncentive; "0x8c901437": typeof ERC20Incentive; "0x4414fbb4": typeof AllowListIncentive; "0xa39e44d9": typeof CGDAIncentive; "0xa8e4af1e": typeof ERC20VariableIncentive }}
47
49
  */
48
50
  export const IncentiveByComponentInterface = {
49
51
  [APointsIncentive as Hex]: PointsIncentive,
50
52
  [AERC20Incentive as Hex]: ERC20Incentive,
51
- // TODO: figure out why evm generates bad bytes4 here
52
- ['0x0a466e6f']: AllowListIncentive,
53
- // [APointsIncentive as Hex]: ERC1155Incentive,
53
+ [AAllowListIncentive]: AllowListIncentive,
54
+ // [AERC1155Incentive as Hex]: ERC1155Incentive,
54
55
  [ACGDAIncentive as Hex]: CGDAIncentive,
55
56
  [AERC20VariableIncentive as Hex]: ERC20VariableIncentive,
56
57
  };
@@ -62,7 +63,7 @@ export const IncentiveByComponentInterface = {
62
63
  * @async
63
64
  * @param {DeployableOptions} options
64
65
  * @param {Address} address
65
- * @returns {unknown}
66
+ * @returns {Incentive}
66
67
  * @throws {@link InvalidComponentInterfaceError}
67
68
  */
68
69
  export async function incentiveFromAddress(
@@ -1,34 +1,34 @@
1
- import { readPointsBalanceOf, writePointsGrantRoles } from '@boostxyz/evm';
2
- import { loadFixture } from '@nomicfoundation/hardhat-network-helpers';
3
- import { isAddress, pad, parseEther, zeroAddress } from 'viem';
4
- import { beforeAll, beforeEach, describe, expect, test } from 'vitest';
5
- import type { MockPoints } from '../../test/MockPoints';
6
- import { accounts } from '../../test/accounts';
1
+ import { readPointsBalanceOf, writePointsGrantRoles } from "@boostxyz/evm";
2
+ import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
3
+ import { isAddress, pad, parseEther, zeroAddress } from "viem";
4
+ import { beforeAll, beforeEach, describe, expect, test } from "vitest";
5
+ import type { MockPoints } from "@boostxyz/test/MockPoints";
6
+ import { accounts } from "@boostxyz/test/accounts";
7
7
  import {
8
8
  type Fixtures,
9
9
  defaultOptions,
10
10
  deployFixtures,
11
11
  freshBoost,
12
12
  freshPoints,
13
- } from '../../test/helpers';
14
- import { bytes4 } from '../utils';
15
- import { PointsIncentive } from './PointsIncentive';
13
+ } from "@boostxyz/test/helpers";
14
+ import { bytes4 } from "../utils";
15
+ import { PointsIncentive } from "./PointsIncentive";
16
16
 
17
17
  let fixtures: Fixtures, points: MockPoints;
18
18
 
19
- describe('PointsIncentive', () => {
19
+ describe("PointsIncentive", () => {
20
20
  beforeAll(async () => {
21
- fixtures = await loadFixture(deployFixtures);
21
+ fixtures = await loadFixture(deployFixtures(defaultOptions));
22
22
  });
23
23
 
24
24
  beforeEach(async () => {
25
25
  points = await loadFixture(freshPoints);
26
26
  });
27
27
 
28
- test('can successfully be deployed', async () => {
28
+ test("can successfully be deployed", async () => {
29
29
  const action = new PointsIncentive(defaultOptions, {
30
30
  venue: zeroAddress,
31
- selector: '0xdeadb33f',
31
+ selector: "0xdeadb33f",
32
32
  reward: 1n,
33
33
  limit: 1n,
34
34
  });
@@ -36,14 +36,14 @@ describe('PointsIncentive', () => {
36
36
  expect(isAddress(action.assertValidAddress())).toBe(true);
37
37
  });
38
38
 
39
- test('can claim', async () => {
39
+ test("can claim", async () => {
40
40
  // biome-ignore lint/style/noNonNullAssertion: we know this is defined
41
41
  const referrer = accounts.at(1)!.account!;
42
42
  // biome-ignore lint/style/noNonNullAssertion: we know this is defined
43
43
  const trustedSigner = accounts.at(0)!;
44
- const pointsIncentive = new fixtures.bases.PointsIncentive(defaultOptions, {
44
+ const pointsIncentive = fixtures.core.PointsIncentive({
45
45
  venue: points.assertValidAddress(),
46
- selector: bytes4('issue(address,uint256)'),
46
+ selector: bytes4("issue(address,uint256)"),
47
47
  reward: 1n,
48
48
  limit: 10n,
49
49
  });
@@ -52,7 +52,7 @@ describe('PointsIncentive', () => {
52
52
  });
53
53
 
54
54
  const claimant = trustedSigner.account;
55
- const incentiveData = pad('0xdef456232173821931823712381232131391321934');
55
+ const incentiveData = pad("0xdef456232173821931823712381232131391321934");
56
56
  const incentiveQuantity = 1;
57
57
  const claimDataPayload = await boost.validator.encodeClaimData({
58
58
  signer: trustedSigner,
@@ -72,8 +72,7 @@ describe('PointsIncentive', () => {
72
72
  boost.id,
73
73
  0n,
74
74
  referrer,
75
- claimDataPayload,
76
- { value: parseEther('0.000075') },
75
+ claimDataPayload
77
76
  );
78
77
  expect(
79
78
  await readPointsBalanceOf(defaultOptions.config, {
@@ -83,16 +82,16 @@ describe('PointsIncentive', () => {
83
82
  ).toBe(1n);
84
83
  });
85
84
 
86
- test('cannot claim twice', async () => {
85
+ test("cannot claim twice", async () => {
87
86
  const reward = 1n;
88
87
  // biome-ignore lint/style/noNonNullAssertion: we know this is defined
89
88
  const referrer = accounts.at(1)!.account!;
90
89
  // biome-ignore lint/style/noNonNullAssertion: we know this is defined
91
90
  const trustedSigner = accounts.at(0)!;
92
91
 
93
- const pointsIncentive = new fixtures.bases.PointsIncentive(defaultOptions, {
92
+ const pointsIncentive = fixtures.core.PointsIncentive({
94
93
  venue: points.assertValidAddress(),
95
- selector: bytes4('issue(address,uint256)'),
94
+ selector: bytes4("issue(address,uint256)"),
96
95
  reward,
97
96
  limit: 10n,
98
97
  });
@@ -101,7 +100,7 @@ describe('PointsIncentive', () => {
101
100
  });
102
101
 
103
102
  const claimant = trustedSigner.account;
104
- const incentiveData = pad('0xdef456232173821931823712381232131391321934');
103
+ const incentiveData = pad("0xdef456232173821931823712381232131391321934");
105
104
  const incentiveQuantity = 1;
106
105
  const claimDataPayload = await boost.validator.encodeClaimData({
107
106
  signer: trustedSigner,
@@ -122,7 +121,7 @@ describe('PointsIncentive', () => {
122
121
  0n,
123
122
  referrer,
124
123
  claimDataPayload,
125
- { value: parseEther('0.000075') },
124
+ { value: parseEther("0.000075") },
126
125
  );
127
126
  try {
128
127
  await fixtures.core.claimIncentive(
@@ -130,7 +129,7 @@ describe('PointsIncentive', () => {
130
129
  0n,
131
130
  referrer,
132
131
  claimDataPayload,
133
- { value: parseEther('0.000075') },
132
+ { value: parseEther("0.000075") },
134
133
  );
135
134
  } catch (e) {
136
135
  expect(e).toBeInstanceOf(Error);
@@ -17,7 +17,9 @@ import {
17
17
  type ContractEventName,
18
18
  type Hex,
19
19
  encodeAbiParameters,
20
+ zeroHash,
20
21
  } from 'viem';
22
+ import { PointsIncentive as PointsIncentiveBases } from '../../dist/deployments.json';
21
23
  import type {
22
24
  DeployableOptions,
23
25
  GenericDeployableParams,
@@ -105,10 +107,11 @@ export class PointsIncentive extends DeployableTarget<
105
107
  *
106
108
  * @public
107
109
  * @static
108
- * @type {Address}
110
+ * @type {Record<number, Address>}
109
111
  */
110
- public static override base: Address = import.meta.env
111
- .VITE_POINTS_INCENTIVE_BASE;
112
+ public static override bases: Record<number, Address> = {
113
+ ...(PointsIncentiveBases as Record<number, Address>),
114
+ };
112
115
  /**
113
116
  * @inheritdoc
114
117
  *
@@ -123,7 +126,7 @@ export class PointsIncentive extends DeployableTarget<
123
126
  *
124
127
  * @public
125
128
  * @async
126
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'claims'>} [params]
129
+ * @param {?ReadParams} [params]
127
130
  * @returns {Promise<bigint>}
128
131
  */
129
132
  public async claims(
@@ -142,7 +145,7 @@ export class PointsIncentive extends DeployableTarget<
142
145
  *
143
146
  * @public
144
147
  * @async
145
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'currentReward'>} [params]
148
+ * @param {?ReadParams} [params]
146
149
  * @returns {Promise<bigint>} - The current reward
147
150
  */
148
151
  public async currentReward(
@@ -161,8 +164,8 @@ export class PointsIncentive extends DeployableTarget<
161
164
  *
162
165
  * @public
163
166
  * @async
164
- * @param {?ReadParams<typeof pointsIncentiveAbi, 'reward'>} [params]
165
- * @returns {unknown}
167
+ * @param {?ReadParams} [params]
168
+ * @returns {Promise<bigint>} The reward amount issued for each claim
166
169
  */
167
170
  public async reward(
168
171
  params?: ReadParams<typeof pointsIncentiveAbi, 'reward'>,
@@ -181,8 +184,8 @@ export class PointsIncentive extends DeployableTarget<
181
184
  * @public
182
185
  * @async
183
186
  * @param {Address} address
184
- * @param {?ReadParams<typeof pointsIncentiveAbi, 'claimed'>} [params]
185
- * @returns {unknown}
187
+ * @param {?ReadParams} [params]
188
+ * @returns {Promise<boolean>}
186
189
  */
187
190
  public async claimed(
188
191
  address: Address,
@@ -201,8 +204,8 @@ export class PointsIncentive extends DeployableTarget<
201
204
  *
202
205
  * @public
203
206
  * @async
204
- * @param {?ReadParams<typeof pointsIncentiveAbi, 'venue'>} [params]
205
- * @returns {unknown}
207
+ * @param {?ReadParams} [params]
208
+ * @returns {Promise<Address>}
206
209
  */
207
210
  public async venue(params?: ReadParams<typeof pointsIncentiveAbi, 'venue'>) {
208
211
  return await readPointsIncentiveVenue(this._config, {
@@ -217,7 +220,7 @@ export class PointsIncentive extends DeployableTarget<
217
220
  *
218
221
  * @public
219
222
  * @async
220
- * @param {?ReadParams<typeof pointsIncentiveAbi, 'limit'>} [params]
223
+ * @param {?ReadParams} [params]
221
224
  * @returns {Promise<bigint>}
222
225
  */
223
226
  public async limit(params?: ReadParams<typeof pointsIncentiveAbi, 'limit'>) {
@@ -233,7 +236,7 @@ export class PointsIncentive extends DeployableTarget<
233
236
  *
234
237
  * @public
235
238
  * @async
236
- * @param {?ReadParams<typeof pointsIncentiveAbi, 'selector'>} [params]
239
+ * @param {?ReadParams} [params]
237
240
  * @returns {Promise<Hex>}
238
241
  */
239
242
  public async selector(
@@ -252,7 +255,7 @@ export class PointsIncentive extends DeployableTarget<
252
255
  * @public
253
256
  * @async
254
257
  * @param {ClaimPayload} payload
255
- * @param {?WriteParams<typeof pointsIncentiveAbi, 'claim'>} [params]
258
+ * @param {?WriteParams} [params]
256
259
  * @returns {Promise<boolean>} - True if the incentive was successfully claimed
257
260
  */
258
261
  protected async claim(
@@ -268,8 +271,8 @@ export class PointsIncentive extends DeployableTarget<
268
271
  * @public
269
272
  * @async
270
273
  * @param {ClaimPayload} payload
271
- * @param {?WriteParams<typeof pointsIncentiveAbi, 'claim'>} [params]
272
- * @returns {Promise<boolean>} - True if the incentive was successfully claimed
274
+ * @param {?WriteParams} [params]
275
+ * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the incentive was successfully claimed
273
276
  */
274
277
  protected async claimRaw(
275
278
  payload: ClaimPayload,
@@ -297,7 +300,7 @@ export class PointsIncentive extends DeployableTarget<
297
300
  * @public
298
301
  * @async
299
302
  * @param {ClaimPayload} payload
300
- * @param {?ReadParams<typeof pointsIncentiveAbi, 'isClaimable'>} [params]
303
+ * @param {?ReadParams} [params]
301
304
  * @returns {Promise<boolean>} - True if the incentive is claimable based on the data payload
302
305
  */
303
306
  public async isClaimable(
@@ -335,6 +338,17 @@ export class PointsIncentive extends DeployableTarget<
335
338
  ...this.optionallyAttachAccount(options.account),
336
339
  };
337
340
  }
341
+
342
+ /**
343
+ * Builds the claim data for the PointsIncentive.
344
+ *
345
+ * @public
346
+ * @returns {Hash} A `zeroHash`, as PointsIncentive doesn't require specific claim data.
347
+ * @description This function returns `zeroHash` because PointsIncentive doesn't use any specific claim data.
348
+ */
349
+ public buildClaimData() {
350
+ return zeroHash;
351
+ }
338
352
  }
339
353
 
340
354
  /**
@@ -1,13 +1,13 @@
1
1
  import { loadFixture } from '@nomicfoundation/hardhat-network-helpers';
2
2
  import { isAddress, pad } from 'viem';
3
3
  import { beforeAll, describe, expect, test } from 'vitest';
4
- import { accounts } from '../../test/accounts';
4
+ import { accounts } from '@boostxyz/test/accounts';
5
5
  import {
6
6
  type Fixtures,
7
7
  defaultOptions,
8
8
  deployFixtures,
9
- } from '../../test/helpers';
10
- import { testAccount } from '../../test/viem';
9
+ } from '@boostxyz/test/helpers';
10
+ import { testAccount } from '@boostxyz/test/viem';
11
11
  import { SignerValidator } from './SignerValidator';
12
12
 
13
13
  let fixtures: Fixtures;
@@ -16,9 +16,9 @@ function freshValidator(fixtures: Fixtures) {
16
16
  return function freshValidator() {
17
17
  // biome-ignore lint/style/noNonNullAssertion: this will never be undefined
18
18
  const account = accounts.at(1)!.account;
19
- return fixtures.registry.clone(
19
+ return fixtures.registry.initialize(
20
20
  crypto.randomUUID(),
21
- new fixtures.bases.SignerValidator(defaultOptions, {
21
+ fixtures.core.SignerValidator({
22
22
  signers: [defaultOptions.account.address, account],
23
23
  validatorCaller: testAccount.address,
24
24
  }),
@@ -28,7 +28,7 @@ function freshValidator(fixtures: Fixtures) {
28
28
 
29
29
  describe('SignerValidator', () => {
30
30
  beforeAll(async () => {
31
- fixtures = await loadFixture(deployFixtures);
31
+ fixtures = await loadFixture(deployFixtures(defaultOptions));
32
32
  });
33
33
 
34
34
  test('can successfully be deployed', async () => {