@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.
- package/dist/Actions/Action.cjs +1 -1
- package/dist/Actions/Action.cjs.map +1 -1
- package/dist/Actions/Action.js +7 -7
- package/dist/Actions/ContractAction.d.ts +11 -11
- package/dist/Actions/ContractAction.d.ts.map +1 -1
- package/dist/Actions/ERC721MintAction.d.ts +14 -14
- package/dist/Actions/ERC721MintAction.d.ts.map +1 -1
- package/dist/Actions/EventAction.cjs +1 -1
- package/dist/Actions/EventAction.cjs.map +1 -1
- package/dist/Actions/EventAction.d.ts +171 -41
- package/dist/Actions/EventAction.d.ts.map +1 -1
- package/dist/Actions/EventAction.js +15 -392
- package/dist/Actions/EventAction.js.map +1 -1
- package/dist/AllowLists/AllowList.cjs +1 -1
- package/dist/AllowLists/AllowList.cjs.map +1 -1
- package/dist/AllowLists/AllowList.d.ts +6 -4
- package/dist/AllowLists/AllowList.d.ts.map +1 -1
- package/dist/AllowLists/AllowList.js +45 -23
- package/dist/AllowLists/AllowList.js.map +1 -1
- package/dist/AllowLists/OpenAllowList.d.ts +423 -0
- package/dist/AllowLists/OpenAllowList.d.ts.map +1 -0
- package/dist/AllowLists/SimpleAllowList.cjs +1 -1
- package/dist/AllowLists/SimpleAllowList.cjs.map +1 -1
- package/dist/AllowLists/SimpleAllowList.d.ts +92 -37
- package/dist/AllowLists/SimpleAllowList.d.ts.map +1 -1
- package/dist/AllowLists/SimpleAllowList.js +55 -71
- package/dist/AllowLists/SimpleAllowList.js.map +1 -1
- package/dist/AllowLists/SimpleDenyList.cjs +1 -1
- package/dist/AllowLists/SimpleDenyList.cjs.map +1 -1
- package/dist/AllowLists/SimpleDenyList.d.ts +203 -11
- package/dist/AllowLists/SimpleDenyList.d.ts.map +1 -1
- package/dist/AllowLists/SimpleDenyList.js +11 -112
- package/dist/AllowLists/SimpleDenyList.js.map +1 -1
- package/dist/Auth/PassthroughAuth.cjs +1 -1
- package/dist/Auth/PassthroughAuth.js +1 -1
- package/dist/Boost.cjs +1 -1
- package/dist/Boost.cjs.map +1 -1
- package/dist/Boost.d.ts +20 -21
- package/dist/Boost.d.ts.map +1 -1
- package/dist/Boost.js +43 -57
- package/dist/Boost.js.map +1 -1
- package/dist/BoostCore-BVZExPPu.js +1462 -0
- package/dist/BoostCore-BVZExPPu.js.map +1 -0
- package/dist/BoostCore-D-E-cnGI.cjs +3 -0
- package/dist/BoostCore-D-E-cnGI.cjs.map +1 -0
- package/dist/BoostCore.cjs +1 -2
- package/dist/BoostCore.cjs.map +1 -1
- package/dist/BoostCore.d.ts +748 -77
- package/dist/BoostCore.d.ts.map +1 -1
- package/dist/BoostCore.js +29 -1150
- package/dist/BoostCore.js.map +1 -1
- package/dist/BoostRegistry.cjs +1 -1
- package/dist/BoostRegistry.cjs.map +1 -1
- package/dist/BoostRegistry.d.ts +80 -25
- package/dist/BoostRegistry.d.ts.map +1 -1
- package/dist/BoostRegistry.js +165 -83
- package/dist/BoostRegistry.js.map +1 -1
- package/dist/Budgets/Budget.cjs +1 -1
- package/dist/Budgets/Budget.cjs.map +1 -1
- package/dist/Budgets/Budget.d.ts.map +1 -1
- package/dist/Budgets/Budget.js +2 -2
- package/dist/Budgets/Budget.js.map +1 -1
- package/dist/Budgets/ManagedBudget.cjs +1 -1
- package/dist/Budgets/ManagedBudget.cjs.map +1 -1
- package/dist/Budgets/ManagedBudget.d.ts +75 -193
- package/dist/Budgets/ManagedBudget.d.ts.map +1 -1
- package/dist/Budgets/ManagedBudget.js +80 -298
- package/dist/Budgets/ManagedBudget.js.map +1 -1
- package/dist/Budgets/VestingBudget.d.ts +223 -89
- package/dist/Budgets/VestingBudget.d.ts.map +1 -1
- package/dist/Deployable/Contract.cjs +1 -1
- package/dist/Deployable/Contract.cjs.map +1 -1
- package/dist/Deployable/Contract.d.ts +4 -5
- package/dist/Deployable/Contract.d.ts.map +1 -1
- package/dist/Deployable/Contract.js +5 -7
- package/dist/Deployable/Contract.js.map +1 -1
- package/dist/Deployable/Deployable.cjs.map +1 -1
- package/dist/Deployable/Deployable.d.ts +1 -1
- package/dist/Deployable/Deployable.d.ts.map +1 -1
- package/dist/Deployable/Deployable.js +3 -5
- package/dist/Deployable/Deployable.js.map +1 -1
- package/dist/Deployable/DeployableTarget.cjs +1 -1
- package/dist/Deployable/DeployableTarget.cjs.map +1 -1
- package/dist/Deployable/DeployableTarget.d.ts +13 -13
- package/dist/Deployable/DeployableTarget.d.ts.map +1 -1
- package/dist/Deployable/DeployableTarget.js +28 -25
- package/dist/Deployable/DeployableTarget.js.map +1 -1
- package/dist/Deployable/DeployableTargetWithRBAC.cjs +2 -0
- package/dist/Deployable/DeployableTargetWithRBAC.cjs.map +1 -0
- package/dist/Deployable/DeployableTargetWithRBAC.d.ts +179 -0
- package/dist/Deployable/DeployableTargetWithRBAC.d.ts.map +1 -0
- package/dist/Deployable/DeployableTargetWithRBAC.js +222 -0
- package/dist/Deployable/DeployableTargetWithRBAC.js.map +1 -0
- package/dist/EventAction-BZt5cjbe.cjs +2 -0
- package/dist/EventAction-BZt5cjbe.cjs.map +1 -0
- package/dist/EventAction-C_-hJXWm.js +1541 -0
- package/dist/EventAction-C_-hJXWm.js.map +1 -0
- package/dist/Incentive-BhHaK3PZ.cjs +2 -0
- package/dist/Incentive-BhHaK3PZ.cjs.map +1 -0
- package/dist/Incentive-Cqg1w6wD.js +312 -0
- package/dist/Incentive-Cqg1w6wD.js.map +1 -0
- package/dist/Incentives/AllowListIncentive.cjs +1 -1
- package/dist/Incentives/AllowListIncentive.cjs.map +1 -1
- package/dist/Incentives/AllowListIncentive.d.ts +38 -16
- package/dist/Incentives/AllowListIncentive.d.ts.map +1 -1
- package/dist/Incentives/AllowListIncentive.js +42 -29
- package/dist/Incentives/AllowListIncentive.js.map +1 -1
- package/dist/Incentives/CGDAIncentive.cjs +1 -1
- package/dist/Incentives/CGDAIncentive.cjs.map +1 -1
- package/dist/Incentives/CGDAIncentive.d.ts +234 -21
- package/dist/Incentives/CGDAIncentive.d.ts.map +1 -1
- package/dist/Incentives/CGDAIncentive.js +45 -32
- package/dist/Incentives/CGDAIncentive.js.map +1 -1
- package/dist/Incentives/ERC1155Incentive.d.ts +224 -37
- package/dist/Incentives/ERC1155Incentive.d.ts.map +1 -1
- package/dist/Incentives/ERC20Incentive.cjs +1 -1
- package/dist/Incentives/ERC20Incentive.cjs.map +1 -1
- package/dist/Incentives/ERC20Incentive.d.ts +230 -29
- package/dist/Incentives/ERC20Incentive.d.ts.map +1 -1
- package/dist/Incentives/ERC20Incentive.js +56 -43
- package/dist/Incentives/ERC20Incentive.js.map +1 -1
- package/dist/{Budgets/SimpleBudget.d.ts → Incentives/ERC20VariableCriteriaIncentive.d.ts} +335 -440
- package/dist/Incentives/ERC20VariableCriteriaIncentive.d.ts.map +1 -0
- package/dist/Incentives/ERC20VariableIncentive.d.ts +231 -29
- package/dist/Incentives/ERC20VariableIncentive.d.ts.map +1 -1
- package/dist/Incentives/Incentive.cjs +1 -1
- package/dist/Incentives/Incentive.cjs.map +1 -1
- package/dist/Incentives/Incentive.d.ts +4 -4
- package/dist/Incentives/Incentive.d.ts.map +1 -1
- package/dist/Incentives/Incentive.js +16 -296
- package/dist/Incentives/Incentive.js.map +1 -1
- package/dist/Incentives/PointsIncentive.cjs +1 -1
- package/dist/Incentives/PointsIncentive.cjs.map +1 -1
- package/dist/Incentives/PointsIncentive.d.ts +40 -18
- package/dist/Incentives/PointsIncentive.d.ts.map +1 -1
- package/dist/Incentives/PointsIncentive.js +37 -24
- package/dist/Incentives/PointsIncentive.js.map +1 -1
- package/dist/SimpleDenyList-BUR17Tt1.cjs +2 -0
- package/dist/SimpleDenyList-BUR17Tt1.cjs.map +1 -0
- package/dist/SimpleDenyList-CGaWjuld.js +132 -0
- package/dist/SimpleDenyList-CGaWjuld.js.map +1 -0
- package/dist/Validators/SignerValidator.cjs +1 -1
- package/dist/Validators/SignerValidator.cjs.map +1 -1
- package/dist/Validators/SignerValidator.d.ts +16 -16
- package/dist/Validators/SignerValidator.d.ts.map +1 -1
- package/dist/Validators/SignerValidator.js +30 -27
- package/dist/Validators/SignerValidator.js.map +1 -1
- package/dist/Validators/Validator.cjs +1 -1
- package/dist/Validators/Validator.cjs.map +1 -1
- package/dist/Validators/Validator.d.ts +1 -1
- package/dist/Validators/Validator.js +2 -2
- package/dist/Validators/Validator.js.map +1 -1
- package/dist/claiming.cjs.map +1 -1
- package/dist/claiming.d.ts +1 -1
- package/dist/claiming.js.map +1 -1
- package/dist/componentInterfaces-BBCFkrZv.js +14 -0
- package/dist/componentInterfaces-BBCFkrZv.js.map +1 -0
- package/dist/componentInterfaces-DRI_dQ-P.cjs +2 -0
- package/dist/componentInterfaces-DRI_dQ-P.cjs.map +1 -0
- package/dist/deployments-DVXioW2i.cjs +2 -0
- package/dist/deployments-DVXioW2i.cjs.map +1 -0
- package/dist/deployments-oykLv3_Z.js +43 -0
- package/dist/deployments-oykLv3_Z.js.map +1 -0
- package/dist/deployments.json +44 -0
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +256 -20
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +183 -26
- package/dist/errors.js.map +1 -1
- package/dist/{generated-57_Kffpz.js → generated-CKt2yCQd.js} +3613 -1869
- package/dist/generated-CKt2yCQd.js.map +1 -0
- package/dist/generated-CyTNlOwM.cjs +3 -0
- package/dist/generated-CyTNlOwM.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +142 -108
- package/dist/index.js.map +1 -1
- package/dist/transfers.cjs.map +1 -1
- package/dist/transfers.d.ts +1 -1
- package/dist/transfers.js.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +26 -12
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +38 -23
- package/dist/utils.js.map +1 -1
- package/package.json +20 -10
- package/src/Actions/Action.test.ts +14 -13
- package/src/Actions/ContractAction.test.ts +10 -10
- package/src/Actions/ContractAction.ts +11 -12
- package/src/Actions/ERC721MintAction.test.ts +6 -6
- package/src/Actions/ERC721MintAction.ts +14 -15
- package/src/Actions/EventAction.test.ts +729 -109
- package/src/Actions/EventAction.ts +542 -84
- package/src/AllowLists/AllowList.test.ts +7 -7
- package/src/AllowLists/AllowList.ts +5 -3
- package/src/AllowLists/OpenAllowList.test.ts +40 -0
- package/src/AllowLists/OpenAllowList.ts +45 -0
- package/src/AllowLists/SimpleAllowList.test.ts +4 -4
- package/src/AllowLists/SimpleAllowList.ts +39 -61
- package/src/AllowLists/SimpleDenyList.test.ts +4 -4
- package/src/AllowLists/SimpleDenyList.ts +40 -17
- package/src/Auth/PassthroughAuth.test.ts +1 -1
- package/src/Boost.ts +21 -24
- package/src/BoostCore.test.ts +323 -268
- package/src/BoostCore.ts +396 -219
- package/src/BoostRegistry.test.ts +53 -0
- package/src/BoostRegistry.ts +161 -40
- package/src/Budgets/Budget.test.ts +2 -2
- package/src/Budgets/Budget.ts +1 -2
- package/src/Budgets/ManagedBudget.test.ts +82 -19
- package/src/Budgets/ManagedBudget.ts +48 -310
- package/src/Budgets/VestingBudget.test.ts +7 -7
- package/src/Budgets/VestingBudget.ts +34 -106
- package/src/Deployable/Contract.ts +4 -5
- package/src/Deployable/Deployable.ts +1 -1
- package/src/Deployable/DeployableTarget.ts +30 -19
- package/src/Deployable/DeployableTargetWithRBAC.ts +323 -0
- package/src/Incentives/AllowListIncentive.test.ts +5 -5
- package/src/Incentives/AllowListIncentive.ts +29 -15
- package/src/Incentives/CGDAIncentive.test.ts +9 -6
- package/src/Incentives/CGDAIncentive.ts +38 -18
- package/src/Incentives/ERC1155Incentive.test.ts +3 -3
- package/src/Incentives/ERC1155Incentive.ts +28 -29
- package/src/Incentives/ERC20Incentive.test.ts +9 -6
- package/src/Incentives/ERC20Incentive.ts +46 -26
- package/src/Incentives/ERC20VariableCriteriaIncentive.test.ts +184 -0
- package/src/Incentives/ERC20VariableCriteriaIncentive.ts +324 -0
- package/src/Incentives/ERC20VariableIncentive.test.ts +8 -11
- package/src/Incentives/ERC20VariableIncentive.ts +49 -26
- package/src/Incentives/Incentive.test.ts +4 -1
- package/src/Incentives/Incentive.ts +7 -6
- package/src/Incentives/PointsIncentive.test.ts +24 -25
- package/src/Incentives/PointsIncentive.ts +31 -17
- package/src/Validators/SignerValidator.test.ts +6 -6
- package/src/Validators/SignerValidator.ts +19 -17
- package/src/Validators/Validator.test.ts +2 -2
- package/src/Validators/Validator.ts +1 -1
- package/src/claiming.ts +1 -1
- package/src/errors.ts +345 -21
- package/src/index.test.ts +118 -36
- package/src/index.ts +5 -0
- package/src/transfers.ts +1 -1
- package/src/utils.test.ts +2 -2
- package/src/utils.ts +61 -12
- package/dist/Budgets/SimpleBudget.d.ts.map +0 -1
- package/dist/componentInterfaces-CKCBwG16.cjs +0 -2
- package/dist/componentInterfaces-CKCBwG16.cjs.map +0 -1
- package/dist/componentInterfaces-DYkaxBda.js +0 -13
- package/dist/componentInterfaces-DYkaxBda.js.map +0 -1
- package/dist/generated-57_Kffpz.js.map +0 -1
- package/dist/generated-wKBNvm48.cjs +0 -3
- package/dist/generated-wKBNvm48.cjs.map +0 -1
- package/src/Budgets/SimpleBudget.test.ts +0 -152
- 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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
102
|
-
|
|
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
|
|
118
|
-
* @returns {
|
|
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
|
|
140
|
+
* The total amount of rewards claimed
|
|
133
141
|
*
|
|
134
142
|
* @public
|
|
135
143
|
* @async
|
|
136
|
-
* @param {?ReadParams
|
|
137
|
-
* @returns {Promise<bigint>}
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
251
|
-
* @returns {
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
359
|
-
* @returns {
|
|
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 '
|
|
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; "
|
|
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
|
-
|
|
52
|
-
[
|
|
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 {
|
|
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
|
|
2
|
-
import { loadFixture } from
|
|
3
|
-
import { isAddress, pad, parseEther, zeroAddress } from
|
|
4
|
-
import { beforeAll, beforeEach, describe, expect, test } from
|
|
5
|
-
import type { MockPoints } from
|
|
6
|
-
import { accounts } from
|
|
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
|
|
14
|
-
import { bytes4 } from
|
|
15
|
-
import { PointsIncentive } from
|
|
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(
|
|
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(
|
|
28
|
+
test("can successfully be deployed", async () => {
|
|
29
29
|
const action = new PointsIncentive(defaultOptions, {
|
|
30
30
|
venue: zeroAddress,
|
|
31
|
-
selector:
|
|
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(
|
|
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 =
|
|
44
|
+
const pointsIncentive = fixtures.core.PointsIncentive({
|
|
45
45
|
venue: points.assertValidAddress(),
|
|
46
|
-
selector: bytes4(
|
|
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(
|
|
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(
|
|
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 =
|
|
92
|
+
const pointsIncentive = fixtures.core.PointsIncentive({
|
|
94
93
|
venue: points.assertValidAddress(),
|
|
95
|
-
selector: bytes4(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
111
|
-
|
|
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
|
|
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
|
|
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
|
|
165
|
-
* @returns {
|
|
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
|
|
185
|
-
* @returns {
|
|
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
|
|
205
|
-
* @returns {
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 '
|
|
4
|
+
import { accounts } from '@boostxyz/test/accounts';
|
|
5
5
|
import {
|
|
6
6
|
type Fixtures,
|
|
7
7
|
defaultOptions,
|
|
8
8
|
deployFixtures,
|
|
9
|
-
} from '
|
|
10
|
-
import { testAccount } from '
|
|
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.
|
|
19
|
+
return fixtures.registry.initialize(
|
|
20
20
|
crypto.randomUUID(),
|
|
21
|
-
|
|
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 () => {
|