@boostxyz/sdk 0.0.0-alpha.7 → 0.0.0-alpha.9
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.js +1 -1
- package/dist/Actions/ContractAction.d.ts +46 -3
- package/dist/Actions/ContractAction.d.ts.map +1 -1
- package/dist/Actions/ERC721MintAction.d.ts +37 -10
- 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 +257 -11
- package/dist/Actions/EventAction.d.ts.map +1 -1
- package/dist/Actions/EventAction.js +249 -82
- package/dist/Actions/EventAction.js.map +1 -1
- package/dist/AllowLists/AllowList.cjs +1 -1
- package/dist/AllowLists/AllowList.d.ts +2 -2
- package/dist/AllowLists/AllowList.js +1 -1
- package/dist/AllowLists/SimpleAllowList.cjs +1 -1
- package/dist/AllowLists/SimpleAllowList.cjs.map +1 -1
- package/dist/AllowLists/SimpleAllowList.d.ts +33 -4
- package/dist/AllowLists/SimpleAllowList.d.ts.map +1 -1
- package/dist/AllowLists/SimpleAllowList.js +52 -37
- 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 +31 -2
- package/dist/AllowLists/SimpleDenyList.d.ts.map +1 -1
- package/dist/AllowLists/SimpleDenyList.js +41 -129
- package/dist/AllowLists/SimpleDenyList.js.map +1 -1
- package/dist/Auth/PassthroughAuth.cjs +1 -1
- package/dist/Auth/PassthroughAuth.cjs.map +1 -1
- package/dist/Auth/PassthroughAuth.js +4 -4
- package/dist/Auth/PassthroughAuth.js.map +1 -1
- package/dist/Boost.cjs +1 -1
- package/dist/Boost.cjs.map +1 -1
- package/dist/Boost.d.ts +93 -1
- package/dist/Boost.d.ts.map +1 -1
- package/dist/Boost.js +151 -5
- package/dist/Boost.js.map +1 -1
- package/dist/BoostCore.cjs +2 -2
- package/dist/BoostCore.cjs.map +1 -1
- package/dist/BoostCore.d.ts +45 -7
- package/dist/BoostCore.d.ts.map +1 -1
- package/dist/BoostCore.js +352 -305
- 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 +18 -4
- package/dist/BoostRegistry.d.ts.map +1 -1
- package/dist/BoostRegistry.js +36 -25
- package/dist/BoostRegistry.js.map +1 -1
- package/dist/Budgets/Budget.cjs +1 -1
- package/dist/Budgets/Budget.js +1 -1
- package/dist/Budgets/ManagedBudget.cjs +1 -1
- package/dist/Budgets/ManagedBudget.cjs.map +1 -1
- package/dist/Budgets/ManagedBudget.d.ts +40 -2
- package/dist/Budgets/ManagedBudget.d.ts.map +1 -1
- package/dist/Budgets/ManagedBudget.js +53 -36
- package/dist/Budgets/ManagedBudget.js.map +1 -1
- package/dist/Budgets/SimpleBudget.d.ts +33 -2
- package/dist/Budgets/SimpleBudget.d.ts.map +1 -1
- package/dist/Budgets/VestingBudget.d.ts +54 -2
- 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.js +1 -1
- package/dist/Deployable/Contract.js.map +1 -1
- package/dist/Deployable/Deployable.cjs.map +1 -1
- package/dist/Deployable/Deployable.d.ts +8 -2
- package/dist/Deployable/Deployable.d.ts.map +1 -1
- package/dist/Deployable/Deployable.js +6 -0
- 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 +4 -3
- package/dist/Deployable/DeployableTarget.d.ts.map +1 -1
- package/dist/Deployable/DeployableTarget.js +31 -28
- package/dist/Deployable/DeployableTarget.js.map +1 -1
- package/dist/Incentives/AllowListIncentive.cjs +1 -1
- package/dist/Incentives/AllowListIncentive.cjs.map +1 -1
- package/dist/Incentives/AllowListIncentive.d.ts +35 -5
- package/dist/Incentives/AllowListIncentive.d.ts.map +1 -1
- package/dist/Incentives/AllowListIncentive.js +33 -21
- 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 +89 -5
- package/dist/Incentives/CGDAIncentive.d.ts.map +1 -1
- package/dist/Incentives/CGDAIncentive.js +44 -23
- package/dist/Incentives/CGDAIncentive.js.map +1 -1
- package/dist/Incentives/ERC1155Incentive.d.ts +67 -6
- 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 +49 -5
- package/dist/Incentives/ERC20Incentive.d.ts.map +1 -1
- package/dist/Incentives/ERC20Incentive.js +46 -27
- package/dist/Incentives/ERC20Incentive.js.map +1 -1
- package/dist/Incentives/ERC20VariableIncentive.d.ts +42 -5
- 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.js +48 -32
- 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 +49 -5
- package/dist/Incentives/PointsIncentive.d.ts.map +1 -1
- package/dist/Incentives/PointsIncentive.js +38 -21
- package/dist/Incentives/PointsIncentive.js.map +1 -1
- package/dist/Validators/SignerValidator.cjs +1 -1
- package/dist/Validators/SignerValidator.cjs.map +1 -1
- package/dist/Validators/SignerValidator.d.ts +298 -5
- package/dist/Validators/SignerValidator.d.ts.map +1 -1
- package/dist/Validators/SignerValidator.js +151 -26
- package/dist/Validators/SignerValidator.js.map +1 -1
- package/dist/Validators/Validator.cjs +1 -1
- package/dist/Validators/Validator.js +1 -1
- package/dist/claiming.cjs +2 -0
- package/dist/claiming.cjs.map +1 -0
- package/dist/claiming.d.ts +43 -0
- package/dist/claiming.d.ts.map +1 -0
- package/dist/claiming.js +17 -0
- package/dist/claiming.js.map +1 -0
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +15 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +30 -21
- package/dist/errors.js.map +1 -1
- package/dist/{generated-DGpIVcv5.js → generated-57_Kffpz.js} +293 -282
- package/dist/generated-57_Kffpz.js.map +1 -0
- package/dist/{generated-Cd-Fe7W7.cjs → generated-wKBNvm48.cjs} +3 -3
- package/dist/generated-wKBNvm48.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +108 -124
- package/dist/transfers.cjs +2 -0
- package/dist/transfers.cjs.map +1 -0
- package/dist/transfers.d.ts +198 -0
- package/dist/transfers.d.ts.map +1 -0
- package/dist/transfers.js +84 -0
- package/dist/transfers.js.map +1 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +2 -1371
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +26 -653
- package/dist/utils.js.map +1 -1
- package/package.json +17 -3
- package/src/Actions/Action.test.ts +5 -4
- package/src/Actions/ContractAction.test.ts +4 -6
- package/src/Actions/ContractAction.ts +73 -10
- package/src/Actions/ERC721MintAction.test.ts +2 -2
- package/src/Actions/ERC721MintAction.ts +70 -16
- package/src/Actions/EventAction.test.ts +43 -17
- package/src/Actions/EventAction.ts +451 -26
- package/src/AllowLists/SimpleAllowList.ts +51 -7
- package/src/AllowLists/SimpleDenyList.ts +47 -109
- package/src/Auth/PassthroughAuth.ts +1 -1
- package/src/Boost.ts +136 -1
- package/src/BoostCore.test.ts +4 -11
- package/src/BoostCore.ts +114 -45
- package/src/BoostRegistry.ts +39 -21
- package/src/Budgets/ManagedBudget.ts +69 -16
- package/src/Budgets/SimpleBudget.ts +57 -14
- package/src/Budgets/VestingBudget.ts +79 -9
- package/src/Deployable/Contract.ts +1 -1
- package/src/Deployable/Deployable.ts +8 -2
- package/src/Deployable/DeployableTarget.ts +19 -6
- package/src/Incentives/AllowListIncentive.test.ts +2 -5
- package/src/Incentives/AllowListIncentive.ts +59 -15
- package/src/Incentives/CGDAIncentive.test.ts +3 -7
- package/src/Incentives/CGDAIncentive.ts +123 -19
- package/src/Incentives/ERC1155Incentive.test.ts +2 -13
- package/src/Incentives/ERC1155Incentive.ts +104 -22
- package/src/Incentives/ERC20Incentive.test.ts +6 -17
- package/src/Incentives/ERC20Incentive.ts +86 -21
- package/src/Incentives/ERC20VariableIncentive.test.ts +4 -24
- package/src/Incentives/ERC20VariableIncentive.ts +71 -19
- package/src/Incentives/Incentive.test.ts +1 -1
- package/src/Incentives/PointsIncentive.test.ts +3 -6
- package/src/Incentives/PointsIncentive.ts +79 -17
- package/src/Validators/SignerValidator.test.ts +3 -7
- package/src/Validators/SignerValidator.ts +422 -13
- package/src/claiming.ts +56 -0
- package/src/errors.ts +19 -1
- package/src/index.ts +10 -7
- package/src/transfers.ts +284 -0
- package/src/utils.ts +3 -2052
- package/dist/generated-Cd-Fe7W7.cjs.map +0 -1
- package/dist/generated-DGpIVcv5.js.map +0 -1
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
type ContractEventName,
|
|
15
15
|
type Hex,
|
|
16
16
|
type Log,
|
|
17
|
+
encodeAbiParameters,
|
|
17
18
|
isAddressEqual,
|
|
18
19
|
} from 'viem';
|
|
19
20
|
import { getLogs } from 'viem/actions';
|
|
@@ -31,23 +32,253 @@ import {
|
|
|
31
32
|
UnrecognizedFilterTypeError,
|
|
32
33
|
} from '../errors';
|
|
33
34
|
import {
|
|
34
|
-
type ActionClaimant,
|
|
35
|
-
type ActionStep,
|
|
36
|
-
type Criteria,
|
|
37
|
-
type EventActionPayload,
|
|
38
|
-
type EventActionPayloadRaw,
|
|
39
|
-
FilterType,
|
|
40
35
|
type GetLogsParams,
|
|
41
|
-
|
|
36
|
+
type Overwrite,
|
|
42
37
|
type ReadParams,
|
|
43
38
|
RegistryType,
|
|
44
39
|
type WriteParams,
|
|
45
|
-
dedupeActionSteps,
|
|
46
|
-
isEventActionPayloadSimple,
|
|
47
|
-
prepareEventActionPayload,
|
|
48
40
|
} from '../utils';
|
|
49
41
|
|
|
50
|
-
|
|
42
|
+
/*
|
|
43
|
+
* Action Event Payloads
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Filter types used to determine how criteria are evaluated.
|
|
48
|
+
*
|
|
49
|
+
* @export
|
|
50
|
+
* @enum {number}
|
|
51
|
+
*/
|
|
52
|
+
export enum FilterType {
|
|
53
|
+
EQUAL = 0,
|
|
54
|
+
NOT_EQUAL = 1,
|
|
55
|
+
GREATER_THAN = 2,
|
|
56
|
+
LESS_THAN = 3,
|
|
57
|
+
CONTAINS = 4,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The primitive types supported for filtering.
|
|
62
|
+
*
|
|
63
|
+
* @export
|
|
64
|
+
* @enum {number}
|
|
65
|
+
*/
|
|
66
|
+
export enum PrimitiveType {
|
|
67
|
+
UINT = 0,
|
|
68
|
+
ADDRESS = 1,
|
|
69
|
+
BYTES = 2,
|
|
70
|
+
STRING = 3,
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Object representation of a `Criteria` struct used in event actions.
|
|
75
|
+
*
|
|
76
|
+
* @export
|
|
77
|
+
* @interface Criteria
|
|
78
|
+
* @typedef {Criteria}
|
|
79
|
+
*/
|
|
80
|
+
export interface Criteria {
|
|
81
|
+
/**
|
|
82
|
+
* The filter type used in this criteria.
|
|
83
|
+
*
|
|
84
|
+
* @type {FilterType}
|
|
85
|
+
*/
|
|
86
|
+
filterType: FilterType;
|
|
87
|
+
/**
|
|
88
|
+
* The primitive type of the field being filtered.
|
|
89
|
+
*
|
|
90
|
+
* @type {PrimitiveType}
|
|
91
|
+
*/
|
|
92
|
+
fieldType: PrimitiveType;
|
|
93
|
+
/**
|
|
94
|
+
* The index in the logs argument array where the field is located.
|
|
95
|
+
*
|
|
96
|
+
* @type {number}
|
|
97
|
+
*/
|
|
98
|
+
fieldIndex: number;
|
|
99
|
+
/**
|
|
100
|
+
* The filter data used for complex filtering.
|
|
101
|
+
*
|
|
102
|
+
* @type {Hex}
|
|
103
|
+
*/
|
|
104
|
+
filterData: Hex;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Whether a given signature is an event or function
|
|
109
|
+
*
|
|
110
|
+
* @export
|
|
111
|
+
* @enum {number}
|
|
112
|
+
*/
|
|
113
|
+
export enum SignatureType {
|
|
114
|
+
EVENT = 0,
|
|
115
|
+
FUNC = 1,
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* The payload describing how claimants are identified
|
|
120
|
+
*
|
|
121
|
+
* @export
|
|
122
|
+
* @interface ActionClaimant
|
|
123
|
+
* @typedef {ActionClaimant}
|
|
124
|
+
*/
|
|
125
|
+
export interface ActionClaimant {
|
|
126
|
+
/**
|
|
127
|
+
* Whether claimaint is inferred from event or function
|
|
128
|
+
*
|
|
129
|
+
* @type {SignatureType}
|
|
130
|
+
*/
|
|
131
|
+
signatureType: SignatureType;
|
|
132
|
+
/**
|
|
133
|
+
* The 4 byte signature of the event or function
|
|
134
|
+
*
|
|
135
|
+
* @type {Hex}
|
|
136
|
+
*/
|
|
137
|
+
signature: Hex;
|
|
138
|
+
/**
|
|
139
|
+
* The index corresponding to claimant.
|
|
140
|
+
*
|
|
141
|
+
* @type {number}
|
|
142
|
+
*/
|
|
143
|
+
fieldIndex: number;
|
|
144
|
+
/**
|
|
145
|
+
* The address of the target contract
|
|
146
|
+
*
|
|
147
|
+
* @type {Address}
|
|
148
|
+
*/
|
|
149
|
+
targetContract: Address;
|
|
150
|
+
/**
|
|
151
|
+
* The chain id of the target contract.
|
|
152
|
+
* @type {number}
|
|
153
|
+
*/
|
|
154
|
+
chainid: number;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Object representation of an `ActionStep` struct used in event actions.
|
|
159
|
+
*
|
|
160
|
+
* @export
|
|
161
|
+
* @interface ActionStep
|
|
162
|
+
* @typedef {ActionStep}
|
|
163
|
+
*/
|
|
164
|
+
export interface ActionStep {
|
|
165
|
+
/**
|
|
166
|
+
* The signature of the event.
|
|
167
|
+
*
|
|
168
|
+
* @type {Hex}
|
|
169
|
+
*/
|
|
170
|
+
signature: Hex;
|
|
171
|
+
/**
|
|
172
|
+
* Whether claimaint is inferred from event or function
|
|
173
|
+
*
|
|
174
|
+
* @type {SignatureType}
|
|
175
|
+
*/
|
|
176
|
+
signatureType: SignatureType;
|
|
177
|
+
/**
|
|
178
|
+
* The type of action being performed.
|
|
179
|
+
*
|
|
180
|
+
* @type {number}
|
|
181
|
+
*/
|
|
182
|
+
actionType?: number;
|
|
183
|
+
/**
|
|
184
|
+
* The address of the target contract.
|
|
185
|
+
*
|
|
186
|
+
* @type {Address}
|
|
187
|
+
*/
|
|
188
|
+
targetContract: Address;
|
|
189
|
+
/**
|
|
190
|
+
* The chain id of the target contract.
|
|
191
|
+
* @type {number}
|
|
192
|
+
*/
|
|
193
|
+
chainid: number;
|
|
194
|
+
/**
|
|
195
|
+
* The criteria used for this action step.
|
|
196
|
+
*
|
|
197
|
+
* @type {Criteria}
|
|
198
|
+
*/
|
|
199
|
+
actionParameter: Criteria;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* You can either supply a simplified version of the payload, or one that explicitly declares action steps.
|
|
203
|
+
*
|
|
204
|
+
* @export
|
|
205
|
+
* @typedef {EventActionPayload}
|
|
206
|
+
*/
|
|
207
|
+
export type EventActionPayload =
|
|
208
|
+
| EventActionPayloadSimple
|
|
209
|
+
| EventActionPayloadRaw;
|
|
210
|
+
|
|
211
|
+
export interface EventActionPayloadSimple {
|
|
212
|
+
/**
|
|
213
|
+
* The payload describing how claimants are identified
|
|
214
|
+
*
|
|
215
|
+
* @type {ActionClaimant}
|
|
216
|
+
*/
|
|
217
|
+
actionClaimant: ActionClaimant;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Up to 4 action steps.
|
|
221
|
+
* If you supply less than 4, then the last step will be reused to satisfy the EventAction.InitPayload
|
|
222
|
+
* Any more than 4 will throw an error.
|
|
223
|
+
*
|
|
224
|
+
* @type {ActionStep[]}
|
|
225
|
+
*/
|
|
226
|
+
actionSteps: ActionStep[];
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export type ActionStepTuple = [ActionStep, ActionStep, ActionStep, ActionStep];
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Typeguard to determine if a user is supplying a simple or raw EventActionPayload
|
|
233
|
+
*
|
|
234
|
+
* @param {*} opts
|
|
235
|
+
* @returns {opts is EventActionPayloadSimple}
|
|
236
|
+
*/
|
|
237
|
+
export function isEventActionPayloadSimple(
|
|
238
|
+
opts: EventActionPayload,
|
|
239
|
+
): opts is EventActionPayloadSimple {
|
|
240
|
+
return Array.isArray((opts as EventActionPayloadSimple).actionSteps);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Object representation of an `InitPayload` struct used to initialize event actions.
|
|
245
|
+
*
|
|
246
|
+
* @export
|
|
247
|
+
* @interface EventActionPayloadRaw
|
|
248
|
+
* @typedef {EventActionPayloadRaw}
|
|
249
|
+
*/
|
|
250
|
+
export interface EventActionPayloadRaw {
|
|
251
|
+
/**
|
|
252
|
+
* The payload describing how claimants are identified
|
|
253
|
+
*
|
|
254
|
+
* @type {ActionClaimant}
|
|
255
|
+
*/
|
|
256
|
+
actionClaimant: ActionClaimant;
|
|
257
|
+
/**
|
|
258
|
+
* The first action step.
|
|
259
|
+
*
|
|
260
|
+
* @type {ActionStep}
|
|
261
|
+
*/
|
|
262
|
+
actionStepOne: ActionStep;
|
|
263
|
+
/**
|
|
264
|
+
* The second action step.
|
|
265
|
+
*
|
|
266
|
+
* @type {ActionStep}
|
|
267
|
+
*/
|
|
268
|
+
actionStepTwo: ActionStep;
|
|
269
|
+
/**
|
|
270
|
+
* The third action step.
|
|
271
|
+
*
|
|
272
|
+
* @type {ActionStep}
|
|
273
|
+
*/
|
|
274
|
+
actionStepThree: ActionStep;
|
|
275
|
+
/**
|
|
276
|
+
* The fourth action step.
|
|
277
|
+
*
|
|
278
|
+
* @type {ActionStep}
|
|
279
|
+
*/
|
|
280
|
+
actionStepFour: ActionStep;
|
|
281
|
+
}
|
|
51
282
|
|
|
52
283
|
/**
|
|
53
284
|
* A generic event action
|
|
@@ -119,8 +350,8 @@ export class EventAction extends DeployableTarget<
|
|
|
119
350
|
...this.optionallyAttachAccount(),
|
|
120
351
|
// biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally
|
|
121
352
|
...(params as any),
|
|
122
|
-
})) as
|
|
123
|
-
return
|
|
353
|
+
})) as RawActionStep[];
|
|
354
|
+
return _dedupeActionSteps(steps.map(_fromRawActionStep));
|
|
124
355
|
}
|
|
125
356
|
|
|
126
357
|
/**
|
|
@@ -149,12 +380,13 @@ export class EventAction extends DeployableTarget<
|
|
|
149
380
|
public async getActionClaimant(
|
|
150
381
|
params?: ReadParams<typeof eventActionAbi, 'getActionClaimant'>,
|
|
151
382
|
) {
|
|
152
|
-
|
|
383
|
+
const result = (await readEventActionGetActionClaimant(this._config, {
|
|
153
384
|
address: this.assertValidAddress(),
|
|
154
385
|
...this.optionallyAttachAccount(),
|
|
155
386
|
// biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally
|
|
156
387
|
...(params as any),
|
|
157
|
-
}) as
|
|
388
|
+
})) as RawActionClaimant;
|
|
389
|
+
return _fromRawActionStep(result);
|
|
158
390
|
}
|
|
159
391
|
|
|
160
392
|
/**
|
|
@@ -170,7 +402,7 @@ export class EventAction extends DeployableTarget<
|
|
|
170
402
|
data: Hex,
|
|
171
403
|
params?: WriteParams<typeof eventActionAbi, 'execute'>,
|
|
172
404
|
) {
|
|
173
|
-
return this.awaitResult(this.executeRaw(data, params));
|
|
405
|
+
return await this.awaitResult(this.executeRaw(data, params));
|
|
174
406
|
}
|
|
175
407
|
|
|
176
408
|
/**
|
|
@@ -282,9 +514,9 @@ export class EventAction extends DeployableTarget<
|
|
|
282
514
|
*
|
|
283
515
|
* @param {Criteria} criteria - The criteria to validate against.
|
|
284
516
|
* @param {Log} log - The Viem event log.
|
|
285
|
-
* @returns {
|
|
517
|
+
* @returns {boolean} - Returns true if the log passes the criteria, false otherwise.
|
|
286
518
|
*/
|
|
287
|
-
public
|
|
519
|
+
public validateLogAgainstCriteria(criteria: Criteria, log: Log) {
|
|
288
520
|
const fieldValue = log.topics.at(criteria.fieldIndex);
|
|
289
521
|
if (fieldValue === undefined) {
|
|
290
522
|
throw new FieldValueUndefinedError({ log, criteria, fieldValue });
|
|
@@ -348,24 +580,24 @@ export class EventAction extends DeployableTarget<
|
|
|
348
580
|
let rawPayload: EventActionPayloadRaw;
|
|
349
581
|
if (isEventActionPayloadSimple(payload)) {
|
|
350
582
|
// filter out any falsy potential values
|
|
351
|
-
let tmpSteps = payload.actionSteps.filter((step) => !!step);
|
|
583
|
+
let tmpSteps: ActionStep[] = payload.actionSteps.filter((step) => !!step);
|
|
352
584
|
if (tmpSteps.length === 0) {
|
|
353
585
|
throw new NoEventActionStepsProvidedError();
|
|
354
586
|
}
|
|
355
587
|
if (tmpSteps.length > 4) {
|
|
356
588
|
throw new TooManyEventActionStepsProvidedError();
|
|
357
589
|
}
|
|
358
|
-
let steps:
|
|
590
|
+
let steps: ActionStepTuple = Array.from({ length: 4 }, (_, i) => {
|
|
359
591
|
// use either the provided step at the given index, or reuse the previous step
|
|
360
592
|
// should aways exist
|
|
361
|
-
return tmpSteps.at(i)
|
|
362
|
-
});
|
|
593
|
+
return tmpSteps.at(i) || tmpSteps.at(-1);
|
|
594
|
+
}) as ActionStepTuple;
|
|
363
595
|
rawPayload = {
|
|
364
596
|
actionClaimant: payload.actionClaimant,
|
|
365
|
-
actionStepOne: steps
|
|
366
|
-
actionStepTwo: steps
|
|
367
|
-
actionStepThree: steps
|
|
368
|
-
actionStepFour: steps
|
|
597
|
+
actionStepOne: steps[0],
|
|
598
|
+
actionStepTwo: steps[1],
|
|
599
|
+
actionStepThree: steps[2],
|
|
600
|
+
actionStepFour: steps[3],
|
|
369
601
|
};
|
|
370
602
|
} else {
|
|
371
603
|
rawPayload = payload;
|
|
@@ -378,3 +610,196 @@ export class EventAction extends DeployableTarget<
|
|
|
378
610
|
};
|
|
379
611
|
}
|
|
380
612
|
}
|
|
613
|
+
|
|
614
|
+
function _dedupeActionSteps(_steps: ActionStep[]): ActionStep[] {
|
|
615
|
+
const steps: ActionStep[] = [],
|
|
616
|
+
signatures: Record<string, boolean> = {};
|
|
617
|
+
for (let step of _steps) {
|
|
618
|
+
const signature = JSON.stringify(step);
|
|
619
|
+
if (signatures[signature]) continue;
|
|
620
|
+
steps.push(step);
|
|
621
|
+
signatures[signature] = true;
|
|
622
|
+
}
|
|
623
|
+
return steps;
|
|
624
|
+
}
|
|
625
|
+
type RawActionStep = Overwrite<ActionStep, { chainid: bigint }>;
|
|
626
|
+
type RawActionClaimant = Overwrite<ActionClaimant, { chainid: bigint }>;
|
|
627
|
+
|
|
628
|
+
function _toRawActionStep<T extends ActionStep | ActionClaimant>(obj: T) {
|
|
629
|
+
return {
|
|
630
|
+
...obj,
|
|
631
|
+
chainid: BigInt(obj.chainid),
|
|
632
|
+
};
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
function _fromRawActionStep<T extends RawActionStep | RawActionClaimant>(
|
|
636
|
+
obj: T,
|
|
637
|
+
) {
|
|
638
|
+
if (obj.chainid > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
639
|
+
throw new Error('Chain ID exceeds max safe integer');
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
return {
|
|
643
|
+
...obj,
|
|
644
|
+
chainid: Number(obj.chainid),
|
|
645
|
+
};
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* Typeguard to determine if a user is supplying a simple or raw EventActionPayload
|
|
650
|
+
*
|
|
651
|
+
* @param {*} opts
|
|
652
|
+
* @returns {opts is EventActionPayloadSimple}
|
|
653
|
+
*/
|
|
654
|
+
function _isEventActionPayloadSimple(
|
|
655
|
+
opts: EventActionPayload,
|
|
656
|
+
): opts is EventActionPayloadSimple {
|
|
657
|
+
return Array.isArray((opts as EventActionPayloadSimple).actionSteps);
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
/**
|
|
661
|
+
* Function to properly encode an event action payload.
|
|
662
|
+
*
|
|
663
|
+
* @param {InitPayload} param0
|
|
664
|
+
* @param {ActionStep} param0.actionStepOne - The first action step to initialize.
|
|
665
|
+
* @param {ActionStep} param0.actionStepTwo - The second action step to initialize.
|
|
666
|
+
* @param {ActionStep} param0.actionStepThree - The third action step to initialize.
|
|
667
|
+
* @param {ActionStep} param0.actionStepFour - The fourth action step to initialize.
|
|
668
|
+
* @returns {Hex}
|
|
669
|
+
*/
|
|
670
|
+
export function prepareEventActionPayload({
|
|
671
|
+
actionClaimant,
|
|
672
|
+
actionStepOne,
|
|
673
|
+
actionStepTwo,
|
|
674
|
+
actionStepThree,
|
|
675
|
+
actionStepFour,
|
|
676
|
+
}: EventActionPayloadRaw) {
|
|
677
|
+
// note chainIds are technically uint256 but viem treats them (safely) as numbers,
|
|
678
|
+
// so we encode them as uint32 here to avoid downcast issues
|
|
679
|
+
return encodeAbiParameters(
|
|
680
|
+
[
|
|
681
|
+
{
|
|
682
|
+
type: 'tuple',
|
|
683
|
+
name: 'initPayload',
|
|
684
|
+
components: [
|
|
685
|
+
{
|
|
686
|
+
type: 'tuple',
|
|
687
|
+
name: 'actionClaimant',
|
|
688
|
+
components: [
|
|
689
|
+
{ type: 'uint8', name: 'signatureType' },
|
|
690
|
+
{ type: 'bytes32', name: 'signature' },
|
|
691
|
+
{ type: 'uint8', name: 'fieldIndex' },
|
|
692
|
+
{ type: 'address', name: 'targetContract' },
|
|
693
|
+
{ type: 'uint256', name: 'chainid' },
|
|
694
|
+
],
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
type: 'tuple',
|
|
698
|
+
name: 'actionStepOne',
|
|
699
|
+
components: [
|
|
700
|
+
{ type: 'bytes32', name: 'signature' },
|
|
701
|
+
{ type: 'uint8', name: 'signatureType' },
|
|
702
|
+
{ type: 'uint8', name: 'actionType' },
|
|
703
|
+
{ type: 'address', name: 'targetContract' },
|
|
704
|
+
{ type: 'uint256', name: 'chainid' },
|
|
705
|
+
{
|
|
706
|
+
type: 'tuple',
|
|
707
|
+
name: 'actionParameter',
|
|
708
|
+
components: [
|
|
709
|
+
{ type: 'uint8', name: 'filterType' },
|
|
710
|
+
{ type: 'uint8', name: 'fieldType' },
|
|
711
|
+
{ type: 'uint8', name: 'fieldIndex' },
|
|
712
|
+
{ type: 'bytes', name: 'filterData' },
|
|
713
|
+
],
|
|
714
|
+
},
|
|
715
|
+
],
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
type: 'tuple',
|
|
719
|
+
name: 'actionStepTwo',
|
|
720
|
+
components: [
|
|
721
|
+
{ type: 'bytes32', name: 'signature' },
|
|
722
|
+
{ type: 'uint8', name: 'signatureType' },
|
|
723
|
+
{ type: 'uint8', name: 'actionType' },
|
|
724
|
+
{ type: 'address', name: 'targetContract' },
|
|
725
|
+
{ type: 'uint256', name: 'chainid' },
|
|
726
|
+
{
|
|
727
|
+
type: 'tuple',
|
|
728
|
+
name: 'actionParameter',
|
|
729
|
+
components: [
|
|
730
|
+
{ type: 'uint8', name: 'filterType' },
|
|
731
|
+
{ type: 'uint8', name: 'fieldType' },
|
|
732
|
+
{ type: 'uint8', name: 'fieldIndex' },
|
|
733
|
+
{ type: 'bytes', name: 'filterData' },
|
|
734
|
+
],
|
|
735
|
+
},
|
|
736
|
+
],
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
type: 'tuple',
|
|
740
|
+
name: 'actionStepThree',
|
|
741
|
+
components: [
|
|
742
|
+
{ type: 'bytes32', name: 'signature' },
|
|
743
|
+
{ type: 'uint8', name: 'signatureType' },
|
|
744
|
+
{ type: 'uint8', name: 'actionType' },
|
|
745
|
+
{ type: 'address', name: 'targetContract' },
|
|
746
|
+
{ type: 'uint256', name: 'chainid' },
|
|
747
|
+
{
|
|
748
|
+
type: 'tuple',
|
|
749
|
+
name: 'actionParameter',
|
|
750
|
+
components: [
|
|
751
|
+
{ type: 'uint8', name: 'filterType' },
|
|
752
|
+
{ type: 'uint8', name: 'fieldType' },
|
|
753
|
+
{ type: 'uint8', name: 'fieldIndex' },
|
|
754
|
+
{ type: 'bytes', name: 'filterData' },
|
|
755
|
+
],
|
|
756
|
+
},
|
|
757
|
+
],
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
type: 'tuple',
|
|
761
|
+
name: 'actionStepFour',
|
|
762
|
+
components: [
|
|
763
|
+
{ type: 'bytes32', name: 'signature' },
|
|
764
|
+
{ type: 'uint8', name: 'signatureType' },
|
|
765
|
+
{ type: 'uint8', name: 'actionType' },
|
|
766
|
+
{ type: 'address', name: 'targetContract' },
|
|
767
|
+
{ type: 'uint256', name: 'chainid' },
|
|
768
|
+
{
|
|
769
|
+
type: 'tuple',
|
|
770
|
+
name: 'actionParameter',
|
|
771
|
+
components: [
|
|
772
|
+
{ type: 'uint8', name: 'filterType' },
|
|
773
|
+
{ type: 'uint8', name: 'fieldType' },
|
|
774
|
+
{ type: 'uint8', name: 'fieldIndex' },
|
|
775
|
+
{ type: 'bytes', name: 'filterData' },
|
|
776
|
+
],
|
|
777
|
+
},
|
|
778
|
+
],
|
|
779
|
+
},
|
|
780
|
+
],
|
|
781
|
+
},
|
|
782
|
+
],
|
|
783
|
+
[
|
|
784
|
+
{
|
|
785
|
+
actionClaimant: _toRawActionStep(actionClaimant),
|
|
786
|
+
actionStepOne: {
|
|
787
|
+
..._toRawActionStep(actionStepOne),
|
|
788
|
+
actionType: actionStepOne.actionType || 0,
|
|
789
|
+
},
|
|
790
|
+
actionStepTwo: {
|
|
791
|
+
..._toRawActionStep(actionStepTwo),
|
|
792
|
+
actionType: actionStepTwo.actionType || 0,
|
|
793
|
+
},
|
|
794
|
+
actionStepThree: {
|
|
795
|
+
..._toRawActionStep(actionStepThree),
|
|
796
|
+
actionType: actionStepThree.actionType || 0,
|
|
797
|
+
},
|
|
798
|
+
actionStepFour: {
|
|
799
|
+
..._toRawActionStep(actionStepFour),
|
|
800
|
+
actionType: actionStepFour.actionType || 0,
|
|
801
|
+
},
|
|
802
|
+
},
|
|
803
|
+
],
|
|
804
|
+
);
|
|
805
|
+
}
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
type Address,
|
|
13
13
|
type ContractEventName,
|
|
14
14
|
type Hex,
|
|
15
|
+
encodeAbiParameters,
|
|
15
16
|
zeroAddress,
|
|
16
17
|
zeroHash,
|
|
17
18
|
} from 'viem';
|
|
@@ -25,12 +26,32 @@ import {
|
|
|
25
26
|
type GenericLog,
|
|
26
27
|
type ReadParams,
|
|
27
28
|
RegistryType,
|
|
28
|
-
type
|
|
29
|
-
prepareSimpleAllowListPayload,
|
|
29
|
+
type WriteParams,
|
|
30
30
|
} from '../utils';
|
|
31
31
|
|
|
32
32
|
export { simpleAllowListAbi };
|
|
33
|
-
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Object representation of a {@link SimpleAllowList} initialization payload.
|
|
36
|
+
*
|
|
37
|
+
* @export
|
|
38
|
+
* @interface SimpleAllowListPayload
|
|
39
|
+
* @typedef {SimpleAllowListPayload}
|
|
40
|
+
*/
|
|
41
|
+
export interface SimpleAllowListPayload {
|
|
42
|
+
/**
|
|
43
|
+
* The allow list's owner, given the {@link LIST_MANAGER_ROLE} role.
|
|
44
|
+
*
|
|
45
|
+
* @type {Address}
|
|
46
|
+
*/
|
|
47
|
+
owner: Address;
|
|
48
|
+
/**
|
|
49
|
+
* List of allowed addresses.
|
|
50
|
+
*
|
|
51
|
+
* @type {Address[]}
|
|
52
|
+
*/
|
|
53
|
+
allowed: Address[];
|
|
54
|
+
}
|
|
34
55
|
|
|
35
56
|
/**
|
|
36
57
|
* A generic `viem.Log` event with support for `SimpleAllowList` event types.
|
|
@@ -120,9 +141,11 @@ export class SimpleAllowList extends DeployableTarget<
|
|
|
120
141
|
public async setAllowed(
|
|
121
142
|
addresses: Address[],
|
|
122
143
|
allowed: boolean[],
|
|
123
|
-
params?:
|
|
144
|
+
params?: WriteParams<typeof simpleAllowListAbi, 'setAllowed'>,
|
|
124
145
|
) {
|
|
125
|
-
return this.awaitResult(
|
|
146
|
+
return await this.awaitResult(
|
|
147
|
+
this.setAllowedRaw(addresses, allowed, params),
|
|
148
|
+
);
|
|
126
149
|
}
|
|
127
150
|
|
|
128
151
|
/**
|
|
@@ -168,9 +191,9 @@ export class SimpleAllowList extends DeployableTarget<
|
|
|
168
191
|
public async grantRoles(
|
|
169
192
|
address: Address,
|
|
170
193
|
role: bigint,
|
|
171
|
-
params?:
|
|
194
|
+
params?: WriteParams<typeof simpleAllowListAbi, 'grantRoles'>,
|
|
172
195
|
) {
|
|
173
|
-
return this.awaitResult(this.grantRolesRaw(address, role, params));
|
|
196
|
+
return await this.awaitResult(this.grantRolesRaw(address, role, params));
|
|
174
197
|
}
|
|
175
198
|
|
|
176
199
|
/**
|
|
@@ -238,3 +261,24 @@ export class SimpleAllowList extends DeployableTarget<
|
|
|
238
261
|
};
|
|
239
262
|
}
|
|
240
263
|
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Given a {@link SimpleAllowListPayload}, properly encode the initialization payload.
|
|
267
|
+
*
|
|
268
|
+
* @param {SimpleAllowListPayload} param0
|
|
269
|
+
* @param {Address} param0.owner - The allow list's owner, given the {@link LIST_MANAGER_ROLE} role.
|
|
270
|
+
* @param {Address[]} param0.allowed - List of allowed addresses.
|
|
271
|
+
* @returns {Hex}
|
|
272
|
+
*/
|
|
273
|
+
export function prepareSimpleAllowListPayload({
|
|
274
|
+
owner,
|
|
275
|
+
allowed,
|
|
276
|
+
}: SimpleAllowListPayload) {
|
|
277
|
+
return encodeAbiParameters(
|
|
278
|
+
[
|
|
279
|
+
{ type: 'address', name: 'owner' },
|
|
280
|
+
{ type: 'address[]', name: 'allowed' },
|
|
281
|
+
],
|
|
282
|
+
[owner, allowed],
|
|
283
|
+
);
|
|
284
|
+
}
|