@boostxyz/sdk 6.1.2 → 7.0.0-canary.0

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 (180) hide show
  1. package/README.md +1 -1
  2. package/dist/Actions/Action.cjs +1 -1
  3. package/dist/Actions/Action.js +4 -4
  4. package/dist/Actions/EventAction.cjs +1 -1
  5. package/dist/Actions/EventAction.cjs.map +1 -1
  6. package/dist/Actions/EventAction.d.ts +10 -0
  7. package/dist/Actions/EventAction.d.ts.map +1 -1
  8. package/dist/Actions/EventAction.js +84 -83
  9. package/dist/Actions/EventAction.js.map +1 -1
  10. package/dist/AllowLists/AllowList.cjs +1 -1
  11. package/dist/AllowLists/AllowList.js +3 -3
  12. package/dist/AllowLists/SimpleAllowList.cjs +1 -1
  13. package/dist/AllowLists/SimpleAllowList.cjs.map +1 -1
  14. package/dist/AllowLists/SimpleAllowList.js +14 -14
  15. package/dist/AllowLists/SimpleAllowList.js.map +1 -1
  16. package/dist/AllowLists/SimpleDenyList.cjs +1 -1
  17. package/dist/AllowLists/SimpleDenyList.js +3 -3
  18. package/dist/Auth/PassthroughAuth.cjs +1 -1
  19. package/dist/Auth/PassthroughAuth.js +1 -1
  20. package/dist/BoostCore.cjs +2 -2
  21. package/dist/BoostCore.cjs.map +1 -1
  22. package/dist/BoostCore.d.ts +1894 -267
  23. package/dist/BoostCore.d.ts.map +1 -1
  24. package/dist/BoostCore.js +808 -497
  25. package/dist/BoostCore.js.map +1 -1
  26. package/dist/BoostRegistry.cjs +1 -1
  27. package/dist/BoostRegistry.js +47 -47
  28. package/dist/Budget-B_kgJGDu.cjs +2 -0
  29. package/dist/Budget-B_kgJGDu.cjs.map +1 -0
  30. package/dist/Budget-Bvi5Qjqp.js +1124 -0
  31. package/dist/Budget-Bvi5Qjqp.js.map +1 -0
  32. package/dist/Budgets/Budget.cjs +1 -1
  33. package/dist/Budgets/Budget.d.ts +5 -4
  34. package/dist/Budgets/Budget.d.ts.map +1 -1
  35. package/dist/Budgets/Budget.js +9 -6
  36. package/dist/Budgets/ManagedBudget.cjs +1 -1
  37. package/dist/Budgets/ManagedBudget.cjs.map +1 -1
  38. package/dist/Budgets/ManagedBudget.d.ts +4 -0
  39. package/dist/Budgets/ManagedBudget.d.ts.map +1 -1
  40. package/dist/Budgets/ManagedBudget.js +25 -25
  41. package/dist/Budgets/ManagedBudgetWithFees.d.ts +4 -0
  42. package/dist/Budgets/ManagedBudgetWithFees.d.ts.map +1 -1
  43. package/dist/Budgets/ManagedBudgetWithFeesV2.d.ts +4 -0
  44. package/dist/Budgets/ManagedBudgetWithFeesV2.d.ts.map +1 -1
  45. package/dist/Budgets/TransparentBudget.d.ts +944 -0
  46. package/dist/Budgets/TransparentBudget.d.ts.map +1 -0
  47. package/dist/Budgets/VestingBudget.d.ts +4 -0
  48. package/dist/Budgets/VestingBudget.d.ts.map +1 -1
  49. package/dist/Deployable/Deployable.cjs.map +1 -1
  50. package/dist/Deployable/Deployable.d.ts +1 -1
  51. package/dist/Deployable/Deployable.d.ts.map +1 -1
  52. package/dist/Deployable/Deployable.js.map +1 -1
  53. package/dist/Deployable/DeployableTarget.cjs +1 -1
  54. package/dist/Deployable/DeployableTarget.js +1 -1
  55. package/dist/Deployable/DeployableTargetWithRBAC.cjs +1 -1
  56. package/dist/Deployable/DeployableTargetWithRBAC.js +19 -19
  57. package/dist/Incentive-CLKutfnD.js +445 -0
  58. package/dist/Incentive-CLKutfnD.js.map +1 -0
  59. package/dist/Incentive-CLSVNxDz.cjs +2 -0
  60. package/dist/Incentive-CLSVNxDz.cjs.map +1 -0
  61. package/dist/Incentives/AllowListIncentive.cjs +1 -1
  62. package/dist/Incentives/AllowListIncentive.cjs.map +1 -1
  63. package/dist/Incentives/AllowListIncentive.js +9 -9
  64. package/dist/Incentives/AllowListIncentive.js.map +1 -1
  65. package/dist/Incentives/CGDAIncentive.cjs +1 -1
  66. package/dist/Incentives/CGDAIncentive.cjs.map +1 -1
  67. package/dist/Incentives/CGDAIncentive.js +5 -5
  68. package/dist/Incentives/CGDAIncentive.js.map +1 -1
  69. package/dist/Incentives/ERC20Incentive.cjs +1 -1
  70. package/dist/Incentives/ERC20Incentive.cjs.map +1 -1
  71. package/dist/Incentives/ERC20Incentive.js +17 -17
  72. package/dist/Incentives/ERC20Incentive.js.map +1 -1
  73. package/dist/Incentives/ERC20PeggedIncentive.d.ts +1 -1
  74. package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.cjs +2 -0
  75. package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.cjs.map +1 -0
  76. package/dist/Incentives/{ERC20PeggedVariableCriteriaIncentive.d.ts → ERC20PeggedVariableCriteriaIncentiveV2.d.ts} +39 -27
  77. package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.d.ts.map +1 -0
  78. package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.js +625 -0
  79. package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.js.map +1 -0
  80. package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.cjs +2 -0
  81. package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.cjs.map +1 -0
  82. package/dist/Incentives/{ERC20VariableCriteriaIncentive.d.ts → ERC20VariableCriteriaIncentiveV2.d.ts} +42 -13
  83. package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.d.ts.map +1 -0
  84. package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.js +242 -0
  85. package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.js.map +1 -0
  86. package/dist/Incentives/ERC20VariableIncentive.cjs +1 -1
  87. package/dist/Incentives/ERC20VariableIncentive.cjs.map +1 -1
  88. package/dist/Incentives/ERC20VariableIncentive.d.ts +3 -3
  89. package/dist/Incentives/ERC20VariableIncentive.d.ts.map +1 -1
  90. package/dist/Incentives/ERC20VariableIncentive.js +22 -22
  91. package/dist/Incentives/ERC20VariableIncentive.js.map +1 -1
  92. package/dist/Incentives/Incentive.cjs +1 -1
  93. package/dist/Incentives/Incentive.d.ts +8 -8
  94. package/dist/Incentives/Incentive.d.ts.map +1 -1
  95. package/dist/Incentives/Incentive.js +13 -12
  96. package/dist/Incentives/Incentive.js.map +1 -1
  97. package/dist/Incentives/PointsIncentive.cjs +1 -1
  98. package/dist/Incentives/PointsIncentive.cjs.map +1 -1
  99. package/dist/Incentives/PointsIncentive.js +13 -13
  100. package/dist/Incentives/PointsIncentive.js.map +1 -1
  101. package/dist/SimpleDenyList-C1C_BHkY.js +133 -0
  102. package/dist/{SimpleDenyList-BKfPoTo1.js.map → SimpleDenyList-C1C_BHkY.js.map} +1 -1
  103. package/dist/SimpleDenyList-CWthbyj7.cjs +2 -0
  104. package/dist/{SimpleDenyList-DgjVf7FK.cjs.map → SimpleDenyList-CWthbyj7.cjs.map} +1 -1
  105. package/dist/Validators/LimitedSignerValidator.cjs +1 -1
  106. package/dist/Validators/LimitedSignerValidator.cjs.map +1 -1
  107. package/dist/Validators/LimitedSignerValidator.d.ts.map +1 -1
  108. package/dist/Validators/LimitedSignerValidator.js +48 -52
  109. package/dist/Validators/LimitedSignerValidator.js.map +1 -1
  110. package/dist/Validators/SignerValidator.cjs +1 -1
  111. package/dist/Validators/SignerValidator.cjs.map +1 -1
  112. package/dist/Validators/SignerValidator.js +54 -54
  113. package/dist/Validators/SignerValidator.js.map +1 -1
  114. package/dist/Validators/Validator.cjs +1 -1
  115. package/dist/Validators/Validator.js +2 -2
  116. package/dist/componentInterfaces-BVHB4Fjw.js +21 -0
  117. package/dist/componentInterfaces-BVHB4Fjw.js.map +1 -0
  118. package/dist/componentInterfaces-BqhL-meV.cjs +2 -0
  119. package/dist/componentInterfaces-BqhL-meV.cjs.map +1 -0
  120. package/dist/deployments-D9QxJGrC.cjs +2 -0
  121. package/dist/deployments-D9QxJGrC.cjs.map +1 -0
  122. package/dist/deployments-De8_J7SS.js +120 -0
  123. package/dist/{deployments-W_LUj833.js.map → deployments-De8_J7SS.js.map} +1 -1
  124. package/dist/deployments.json +63 -48
  125. package/dist/{generated-CElkFqkY.js → generated-BJfQ-EBO.js} +1268 -737
  126. package/dist/generated-BJfQ-EBO.js.map +1 -0
  127. package/dist/generated-mJJNq-xb.cjs +3 -0
  128. package/dist/generated-mJJNq-xb.cjs.map +1 -0
  129. package/dist/index.cjs +1 -1
  130. package/dist/index.d.ts +3 -2
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +162 -158
  133. package/dist/index.js.map +1 -1
  134. package/dist/utils.cjs.map +1 -1
  135. package/dist/utils.js.map +1 -1
  136. package/package.json +13 -7
  137. package/src/Actions/EventAction.ts +11 -0
  138. package/src/BoostCore.test.ts +14 -9
  139. package/src/BoostCore.ts +428 -26
  140. package/src/Budgets/Budget.ts +8 -1
  141. package/src/Budgets/TransparentBudget.test.ts +70 -0
  142. package/src/Budgets/TransparentBudget.ts +334 -0
  143. package/src/Deployable/Deployable.ts +1 -1
  144. package/src/Incentives/ERC20PeggedIncentive.ts +1 -1
  145. package/src/Incentives/{ERC20PeggedVariableCriteriaIncentive.test.ts → ERC20PeggedVariableCriteriaIncentiveV2.test.ts} +14 -10
  146. package/src/Incentives/{ERC20PeggedVariableCriteriaIncentive.ts → ERC20PeggedVariableCriteriaIncentiveV2.ts} +122 -100
  147. package/src/Incentives/{ERC20VariableCriteriaIncentive.test.ts → ERC20VariableCriteriaIncentiveV2.test.ts} +18 -13
  148. package/src/Incentives/{ERC20VariableCriteriaIncentive.ts → ERC20VariableCriteriaIncentiveV2.ts} +83 -24
  149. package/src/Incentives/ERC20VariableIncentive.ts +4 -2
  150. package/src/Incentives/Incentive.ts +12 -12
  151. package/src/Validators/LimitedSignerValidator.ts +1 -4
  152. package/src/index.test.ts +2 -2
  153. package/src/index.ts +3 -2
  154. package/src/utils.ts +1 -1
  155. package/dist/Budget-BjfL8dVX.cjs +0 -2
  156. package/dist/Budget-BjfL8dVX.cjs.map +0 -1
  157. package/dist/Budget-DD7IPuDx.js +0 -922
  158. package/dist/Budget-DD7IPuDx.js.map +0 -1
  159. package/dist/Incentive-V1RjH38L.js +0 -1036
  160. package/dist/Incentive-V1RjH38L.js.map +0 -1
  161. package/dist/Incentive-gVTfsnMB.cjs +0 -2
  162. package/dist/Incentive-gVTfsnMB.cjs.map +0 -1
  163. package/dist/Incentives/ERC20PeggedVariableCriteriaIncentive.d.ts.map +0 -1
  164. package/dist/Incentives/ERC20VariableCriteriaIncentive.cjs +0 -2
  165. package/dist/Incentives/ERC20VariableCriteriaIncentive.cjs.map +0 -1
  166. package/dist/Incentives/ERC20VariableCriteriaIncentive.d.ts.map +0 -1
  167. package/dist/Incentives/ERC20VariableCriteriaIncentive.js +0 -207
  168. package/dist/Incentives/ERC20VariableCriteriaIncentive.js.map +0 -1
  169. package/dist/SimpleDenyList-BKfPoTo1.js +0 -133
  170. package/dist/SimpleDenyList-DgjVf7FK.cjs +0 -2
  171. package/dist/componentInterfaces-CA1UIqWL.js +0 -20
  172. package/dist/componentInterfaces-CA1UIqWL.js.map +0 -1
  173. package/dist/componentInterfaces-aBgBbB7r.cjs +0 -2
  174. package/dist/componentInterfaces-aBgBbB7r.cjs.map +0 -1
  175. package/dist/deployments-CwTZr-cK.cjs +0 -2
  176. package/dist/deployments-CwTZr-cK.cjs.map +0 -1
  177. package/dist/deployments-W_LUj833.js +0 -117
  178. package/dist/generated-BPiHi7W2.cjs +0 -3
  179. package/dist/generated-BPiHi7W2.cjs.map +0 -1
  180. package/dist/generated-CElkFqkY.js.map +0 -1
@@ -1,23 +1,25 @@
1
1
  import {
2
- erc20VariableCriteriaIncentiveAbi,
3
- readErc20VariableCriteriaIncentiveGetIncentiveCriteria,
4
- readErc20VariableCriteriaIncentiveGetMaxReward,
2
+ erc20VariableCriteriaIncentiveV2Abi,
3
+ readErc20VariableCriteriaIncentiveV2GetIncentiveCriteria,
4
+ readErc20VariableCriteriaIncentiveV2GetMaxReward,
5
5
  } from '@boostxyz/evm';
6
- import { bytecode } from '@boostxyz/evm/artifacts/contracts/incentives/ERC20VariableCriteriaIncentive.sol/ERC20VariableCriteriaIncentive.json';
6
+ import { bytecode } from '@boostxyz/evm/artifacts/contracts/incentives/ERC20VariableCriteriaIncentiveV2.sol/ERC20VariableCriteriaIncentiveV2.json';
7
7
  import { getTransaction, getTransactionReceipt } from '@wagmi/core';
8
8
  import {
9
9
  type AbiEvent,
10
10
  type AbiFunction,
11
11
  type Address,
12
12
  type Hex,
13
+ decodeAbiParameters,
13
14
  decodeFunctionData,
14
15
  encodeAbiParameters,
16
+ parseEther,
15
17
  parseEventLogs,
16
18
  zeroAddress,
17
19
  zeroHash,
18
20
  } from 'viem';
19
- import { ERC20VariableCriteriaIncentive as ERC20VariableCriteriaIncentiveBases } from '../../dist/deployments.json';
20
- import { SignatureType } from '../Actions/EventAction';
21
+ import { ERC20VariableCriteriaIncentiveV2 as ERC20VariableCriteriaIncentiveV2Bases } from '../../dist/deployments.json';
22
+ import { SignatureType, ValueType } from '../Actions/EventAction';
21
23
  import type {
22
24
  DeployableOptions,
23
25
  GenericDeployableParams,
@@ -31,9 +33,9 @@ import {
31
33
  import { CheatCodes, type ReadParams } from '../utils';
32
34
  import { ERC20VariableIncentive } from './ERC20VariableIncentive';
33
35
 
34
- export { erc20VariableCriteriaIncentiveAbi };
36
+ export { erc20VariableCriteriaIncentiveV2Abi };
35
37
 
36
- export interface ERC20VariableCriteriaIncentivePayload {
38
+ export interface ERC20VariableCriteriaIncentiveV2Payload {
37
39
  /**
38
40
  * The address of the incentivized asset.
39
41
  *
@@ -92,6 +94,14 @@ export interface IncentiveCriteria {
92
94
  * @type {Address}
93
95
  */
94
96
  targetContract: Address;
97
+ /**
98
+ * The type of value used for the scalar value (RAW or WAD).
99
+ * - RAW: Raw integer value (e.g., NFT quantity)
100
+ * - WAD: Value with 18 decimals (e.g., token amount)
101
+ *
102
+ * @type {ValueType}
103
+ */
104
+ valueType: ValueType;
95
105
  }
96
106
 
97
107
  export interface ReadIncentiveCriteriaParams extends ReadParams {}
@@ -107,15 +117,16 @@ export interface GetIncentiveScalarParams {
107
117
  *
108
118
  * @export
109
119
  * @class ERC20VariableCriteriaIncentive
110
- * @typedef {ERC20VariableCriteriaIncentive}
111
- * @extends {ERC20VariableIncentive<ERC20VariableCriteriaIncentivePayload, typeof erc20VariableCriteriaIncentiveAbi>}
120
+ * @typedef {ERC20VariableCriteriaIncentiveV2}
121
+ * @extends {ERC20VariableIncentive<ERC20VariableCriteriaIncentiveV2Payload, typeof erc20VariableCriteriaIncentiveV2Abi>}
112
122
  */
113
- export class ERC20VariableCriteriaIncentive extends ERC20VariableIncentive<
114
- ERC20VariableCriteriaIncentivePayload,
115
- typeof erc20VariableCriteriaIncentiveAbi
123
+ export class ERC20VariableCriteriaIncentiveV2 extends ERC20VariableIncentive<
124
+ ERC20VariableCriteriaIncentiveV2Payload,
125
+ typeof erc20VariableCriteriaIncentiveV2Abi,
126
+ Promise<bigint>
116
127
  > {
117
128
  //@ts-expect-error instantiated correctly
118
- public override readonly abi = erc20VariableCriteriaIncentiveAbi;
129
+ public override readonly abi = erc20VariableCriteriaIncentiveV2Abi;
119
130
  /**
120
131
  * @inheritdoc
121
132
  *
@@ -124,8 +135,8 @@ export class ERC20VariableCriteriaIncentive extends ERC20VariableIncentive<
124
135
  * @type {Record<number, Address>}
125
136
  */
126
137
  public static override bases: Record<number, Address> = {
127
- 31337: import.meta.env.VITE_ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE,
128
- ...(ERC20VariableCriteriaIncentiveBases as Record<number, Address>),
138
+ 31337: import.meta.env.VITE_ERC20_VARIABLE_CRITERIA_INCENTIVE_V2_BASE,
139
+ ...(ERC20VariableCriteriaIncentiveV2Bases as Record<number, Address>),
129
140
  };
130
141
 
131
142
  /**
@@ -144,7 +155,7 @@ export class ERC20VariableCriteriaIncentive extends ERC20VariableIncentive<
144
155
  ): Promise<IncentiveCriteria> {
145
156
  try {
146
157
  const criteria =
147
- await readErc20VariableCriteriaIncentiveGetIncentiveCriteria(
158
+ await readErc20VariableCriteriaIncentiveV2GetIncentiveCriteria(
148
159
  this._config,
149
160
  {
150
161
  ...params,
@@ -158,6 +169,51 @@ export class ERC20VariableCriteriaIncentive extends ERC20VariableIncentive<
158
169
  }
159
170
  }
160
171
 
172
+ /**
173
+ * Decodes claim data for the ERC20VariableCriteriaIncentiveV2, returning the claim amount.
174
+ * Useful when deriving amount claimed from logs.
175
+ *
176
+ * @public
177
+ * @param {Hex} claimData
178
+ * @returns {Promise<bigint>} Returns the reward amount from a claim data payload
179
+ */
180
+ public override async decodeClaimData(claimData: Hex) {
181
+ const boostClaimData = decodeAbiParameters(
182
+ [
183
+ {
184
+ type: 'tuple',
185
+ name: 'BoostClaimData',
186
+ components: [
187
+ { type: 'bytes', name: 'validatorData' },
188
+ { type: 'bytes', name: 'incentiveData' },
189
+ ],
190
+ },
191
+ ],
192
+ claimData,
193
+ );
194
+ const signedAmount = decodeAbiParameters(
195
+ [{ type: 'uint256' }],
196
+ boostClaimData[0].incentiveData,
197
+ )[0];
198
+ let claimAmount = signedAmount;
199
+ const [reward, maxReward] = await Promise.all([
200
+ this.reward(),
201
+ this.getMaxReward(),
202
+ ]);
203
+
204
+ if (reward === 0n) {
205
+ return claimAmount;
206
+ } else {
207
+ claimAmount = (reward * signedAmount) / parseEther('1');
208
+ }
209
+
210
+ if (maxReward !== 0n && claimAmount > maxReward) {
211
+ claimAmount = maxReward;
212
+ }
213
+
214
+ return claimAmount;
215
+ }
216
+
161
217
  /**
162
218
  * Fetches the IncentiveCriteria struct from the contract
163
219
  *
@@ -166,7 +222,7 @@ export class ERC20VariableCriteriaIncentive extends ERC20VariableIncentive<
166
222
  * @throws {IncentiveCriteriaNotFoundError}
167
223
  */
168
224
  public async getMaxReward(params?: ReadParams): Promise<bigint> {
169
- const maxReward = await readErc20VariableCriteriaIncentiveGetMaxReward(
225
+ const maxReward = await readErc20VariableCriteriaIncentiveV2GetMaxReward(
170
226
  this._config,
171
227
  {
172
228
  ...params,
@@ -274,12 +330,12 @@ export class ERC20VariableCriteriaIncentive extends ERC20VariableIncentive<
274
330
  * @inheritdoc
275
331
  *
276
332
  * @public
277
- * @param {?ERC20VariableCriteriaIncentivePayload} [_payload]
333
+ * @param {?ERC20VariableCriteriaIncentiveV2Payload} [_payload]
278
334
  * @param {?DeployableOptions} [_options]
279
335
  * @returns {GenericDeployableParams}
280
336
  */
281
337
  public override buildParameters(
282
- _payload?: ERC20VariableCriteriaIncentivePayload,
338
+ _payload?: ERC20VariableCriteriaIncentiveV2Payload,
283
339
  _options?: DeployableOptions,
284
340
  ): GenericDeployableParams {
285
341
  const [payload, options] = this.validateDeploymentConfig(
@@ -287,9 +343,9 @@ export class ERC20VariableCriteriaIncentive extends ERC20VariableIncentive<
287
343
  _options,
288
344
  );
289
345
  return {
290
- abi: erc20VariableCriteriaIncentiveAbi,
346
+ abi: erc20VariableCriteriaIncentiveV2Abi,
291
347
  bytecode: bytecode as Hex,
292
- args: [prepareERC20VariableCriteriaIncentivePayload(payload)],
348
+ args: [prepareERC20VariableCriteriaIncentiveV2Payload(payload)],
293
349
  ...this.optionallyAttachAccount(options.account),
294
350
  };
295
351
  }
@@ -326,6 +382,7 @@ export function gasRebateIncentiveCriteria(): IncentiveCriteria {
326
382
  signature: zeroHash,
327
383
  fieldIndex: CheatCodes.GAS_REBATE_INCENTIVE,
328
384
  targetContract: zeroAddress,
385
+ valueType: ValueType.WAD,
329
386
  };
330
387
  }
331
388
 
@@ -340,13 +397,13 @@ export function gasRebateIncentiveCriteria(): IncentiveCriteria {
340
397
  * @param {IncentiveCriteria} param0.criteria - The incentive criteria for reward distribution.
341
398
  * @returns {Hex}
342
399
  */
343
- export function prepareERC20VariableCriteriaIncentivePayload({
400
+ export function prepareERC20VariableCriteriaIncentiveV2Payload({
344
401
  asset,
345
402
  reward,
346
403
  limit,
347
404
  maxReward = 0n,
348
405
  criteria,
349
- }: ERC20VariableCriteriaIncentivePayload) {
406
+ }: ERC20VariableCriteriaIncentiveV2Payload) {
350
407
  return encodeAbiParameters(
351
408
  [
352
409
  {
@@ -365,6 +422,7 @@ export function prepareERC20VariableCriteriaIncentivePayload({
365
422
  { type: 'bytes32', name: 'signature' },
366
423
  { type: 'uint8', name: 'fieldIndex' },
367
424
  { type: 'address', name: 'targetContract' },
425
+ { type: 'uint8', name: 'valueType' },
368
426
  ],
369
427
  },
370
428
  ],
@@ -381,6 +439,7 @@ export function prepareERC20VariableCriteriaIncentivePayload({
381
439
  signature: criteria.signature,
382
440
  fieldIndex: criteria.fieldIndex,
383
441
  targetContract: criteria.targetContract,
442
+ valueType: criteria.valueType,
384
443
  },
385
444
  },
386
445
  ],
@@ -101,6 +101,7 @@ export type ERC20VariableIncentiveLog<
101
101
  export class ERC20VariableIncentive<
102
102
  Payload = ERC20VariableIncentivePayload | undefined,
103
103
  ABI extends Abi = typeof erc20VariableIncentiveAbi,
104
+ DecodedClaimPayload = bigint,
104
105
  > extends DeployableTarget<Payload, ABI> {
105
106
  //@ts-expect-error it is instantiated correctly
106
107
  public override readonly abi = erc20VariableIncentiveAbi;
@@ -434,9 +435,10 @@ export class ERC20VariableIncentive<
434
435
  *
435
436
  * @public
436
437
  * @param {Hex} claimData
437
- * @returns {BigInt} Returns the reward amount from a claim data payload
438
+ * @returns {bigint} Returns the reward amount from a claim data payload
438
439
  */
439
- public decodeClaimData(data: Hex) {
440
+ public decodeClaimData(data: Hex): DecodedClaimPayload {
441
+ //@ts-expect-error making this generic to prevent major version
440
442
  return BigInt(decodeAbiParameters([{ type: 'uint256' }], data)[0]);
441
443
  }
442
444
 
@@ -4,8 +4,8 @@ import {
4
4
  ACGDAIncentive,
5
5
  AERC20Incentive,
6
6
  AERC20PeggedIncentive,
7
- AERC20PeggedVariableCriteriaIncentive,
8
- AERC20VariableCriteriaIncentive,
7
+ AERC20PeggedVariableCriteriaIncentiveV2,
8
+ AERC20VariableCriteriaIncentiveV2,
9
9
  AERC20VariableIncentive,
10
10
  // AERC20VariableCriteriaIncentive
11
11
  APointsIncentive,
@@ -19,8 +19,8 @@ import { AllowListIncentive } from './AllowListIncentive';
19
19
  import { CGDAIncentive } from './CGDAIncentive';
20
20
  import { ERC20Incentive } from './ERC20Incentive';
21
21
  import { ERC20PeggedIncentive } from './ERC20PeggedIncentive';
22
- import { ERC20PeggedVariableCriteriaIncentive } from './ERC20PeggedVariableCriteriaIncentive';
23
- import { ERC20VariableCriteriaIncentive } from './ERC20VariableCriteriaIncentive';
22
+ import { ERC20PeggedVariableCriteriaIncentiveV2 } from './ERC20PeggedVariableCriteriaIncentiveV2';
23
+ import { ERC20VariableCriteriaIncentiveV2 } from './ERC20VariableCriteriaIncentiveV2';
24
24
  import { ERC20VariableIncentive } from './ERC20VariableIncentive';
25
25
  // import { ERC1155Incentive } from './ERC1155Incentive';
26
26
  import { PointsIncentive } from './PointsIncentive';
@@ -31,10 +31,10 @@ export {
31
31
  // ERC1155Incentive,
32
32
  ERC20Incentive,
33
33
  ERC20PeggedIncentive,
34
- ERC20PeggedVariableCriteriaIncentive,
34
+ ERC20PeggedVariableCriteriaIncentiveV2,
35
35
  PointsIncentive,
36
36
  ERC20VariableIncentive,
37
- ERC20VariableCriteriaIncentive,
37
+ ERC20VariableCriteriaIncentiveV2,
38
38
  };
39
39
 
40
40
  /**
@@ -49,27 +49,27 @@ export type Incentive =
49
49
  | ERC20Incentive
50
50
  // | ERC1155Incentive
51
51
  | ERC20PeggedIncentive
52
- | ERC20PeggedVariableCriteriaIncentive
52
+ | ERC20PeggedVariableCriteriaIncentiveV2
53
53
  | PointsIncentive
54
54
  | ERC20VariableIncentive
55
- | ERC20VariableCriteriaIncentive;
55
+ | ERC20VariableCriteriaIncentiveV2;
56
56
 
57
57
  /**
58
58
  * A map of Incentive component interfaces to their constructors.
59
59
  *
60
- * @type {{ "0xc5b24b8e": typeof PointsIncentive; "0x8c901437": typeof ERC20Incentive; "0x4414fbb4": typeof ERC20PeggedIncentive; "0xf60c99c9": typeof ERC20PeggedVariableCriteriaIncentive; "0x56586338": typeof AllowListIncentive; "0xa39e44d9": typeof CGDAIncentive; "0xa8e4af1e": typeof ERC20VariableIncentive; "0x90318111": typeof ERC20VariableCriteriaIncentive }}
60
+ * @type {{ "0xc5b24b8e": typeof PointsIncentive; "0x8c901437": typeof ERC20Incentive; "0x4414fbb4": typeof ERC20PeggedIncentive; "0xf60c99c9": typeof ERC20PeggedVariableCriteriaIncentiveV2; "0x56586338": typeof AllowListIncentive; "0xa39e44d9": typeof CGDAIncentive; "0xa8e4af1e": typeof ERC20VariableIncentive; "0x90318111": typeof ERC20VariableCriteriaIncentiveV2 }}
61
61
  */
62
62
  export const IncentiveByComponentInterface = {
63
63
  [APointsIncentive as Hex]: PointsIncentive,
64
64
  [AERC20Incentive as Hex]: ERC20Incentive,
65
- [AERC20PeggedVariableCriteriaIncentive as Hex]:
66
- ERC20PeggedVariableCriteriaIncentive,
65
+ [AERC20PeggedVariableCriteriaIncentiveV2 as Hex]:
66
+ ERC20PeggedVariableCriteriaIncentiveV2,
67
67
  [AERC20PeggedIncentive as Hex]: ERC20PeggedIncentive,
68
68
  [AAllowListIncentive]: AllowListIncentive,
69
69
  // [AERC1155Incentive as Hex]: ERC1155Incentive,
70
70
  [ACGDAIncentive as Hex]: CGDAIncentive,
71
71
  [AERC20VariableIncentive as Hex]: ERC20VariableIncentive,
72
- [AERC20VariableCriteriaIncentive as Hex]: ERC20VariableCriteriaIncentive,
72
+ [AERC20VariableCriteriaIncentiveV2 as Hex]: ERC20VariableCriteriaIncentiveV2,
73
73
  };
74
74
 
75
75
  /**
@@ -602,10 +602,7 @@ export async function prepareLimitedSignerValidatorClaimDataPayload({
602
602
  },
603
603
  };
604
604
 
605
- const trustedSignature = await signTypedData({
606
- ...typedData,
607
- privateKey: signer.key,
608
- });
605
+ const trustedSignature = await signer.privateKey.signTypedData(typedData);
609
606
 
610
607
  // Prepare the claim data payload using the new helper
611
608
  const validatorData = prepareLimitedSignerValidatorInputParams({
package/src/index.test.ts CHANGED
@@ -20,7 +20,7 @@ const allExports = [
20
20
  "CGDAIncentive",
21
21
  "ERC20Incentive",
22
22
  "ERC20VariableIncentive",
23
- "ERC20VariableCriteriaIncentive",
23
+ "ERC20VariableCriteriaIncentiveV2",
24
24
  "PointsIncentive",
25
25
  "SignerValidator",
26
26
  "LimitedSignerValidator",
@@ -72,7 +72,7 @@ const allExports = [
72
72
  "prepareCGDAIncentivePayload",
73
73
  "prepareERC20IncentivePayload",
74
74
  "prepareERC20VariableIncentivePayload",
75
- "prepareERC20VariableCriteriaIncentivePayload",
75
+ "prepareERC20VariableCriteriaIncentiveV2Payload",
76
76
  "incentiveFromAddress",
77
77
  "preparePointsIncentivePayload",
78
78
  "prepareSignerValidatorClaimDataPayload",
package/src/index.ts CHANGED
@@ -18,6 +18,7 @@ export * from './AllowLists/SimpleDenyList';
18
18
  // Budgets
19
19
 
20
20
  export * from './Budgets/Budget';
21
+ export * from './Budgets/TransparentBudget';
21
22
  // export * from './Budgets/SimpleBudget';
22
23
  // export * from './Budgets/VestingBudget';
23
24
  export * from './Budgets/ManagedBudget';
@@ -38,8 +39,8 @@ export * from './Incentives/CGDAIncentive';
38
39
  export * from './Incentives/ERC20Incentive';
39
40
  export * from './Incentives/ERC20PeggedIncentive';
40
41
  export * from './Incentives/ERC20VariableIncentive';
41
- export * from './Incentives/ERC20VariableCriteriaIncentive';
42
- export * from './Incentives/ERC20PeggedVariableCriteriaIncentive';
42
+ export * from './Incentives/ERC20VariableCriteriaIncentiveV2';
43
+ export * from './Incentives/ERC20PeggedVariableCriteriaIncentiveV2';
43
44
  // export * from './Incentives/ERC1155Incentive';
44
45
  export * from './Incentives/Incentive';
45
46
  export * from './Incentives/PointsIncentive';
package/src/utils.ts CHANGED
@@ -58,7 +58,7 @@ export enum CheatCodes {
58
58
  ANY_ACTION_PARAM = 255,
59
59
  /* An Event Action `ActionClaimant` with a `fieldIndex` set to `CheatCodes.TX_SENDER_CLAIMANT`, will always validate with the sender of a given transaction. */
60
60
  TX_SENDER_CLAIMANT = 255,
61
- /* For use with `ERC20VariableCriteriaIncentive`, if the criteria's `fieldIndex` is set to `CheatCodes.GAS_REBATE_INCENTIVE`, will claim an incentive amount equal to the transaction's gas used. */
61
+ /* For use with `ERC20VariableCriteriaIncentiveV2`, if the criteria's `fieldIndex` is set to `CheatCodes.GAS_REBATE_INCENTIVE`, will claim an incentive amount equal to the transaction's gas used. */
62
62
  GAS_REBATE_INCENTIVE = 255,
63
63
  }
64
64
 
@@ -1,2 +0,0 @@
1
- "use strict";const e=require("./generated-BPiHi7W2.cjs"),g=require("./componentInterfaces-aBgBbB7r.cjs"),y=require("@wagmi/core"),A=require("./errors.cjs"),r=require("./Budgets/ManagedBudget.cjs"),t=require("viem"),p=require("./deployments-CwTZr-cK.cjs"),m=require("./Deployable/DeployableTargetWithRBAC.cjs"),R=require("./utils.cjs"),V="0x6080604052348015600e575f80fd5b506015601f565b601b601f565b607e565b63409feecd1980546001811615603c5763f92ee8a95f526004601cfd5b8160c01c808260011c146079578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6137998061008b5f395ff3fe6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129b4565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a07565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a07565b60046020525f908152604090205481565b6103c26103bd366004612a22565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a7e565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612ae0565b6109c3565b34801561041e575f80fd5b5061034261042d366004612ae0565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a07565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b4b565b610a26565b34801561050a575f80fd5b506103c2610519366004612bb7565b610b20565b348015610529575f80fd5b506103c2610538366004612bf6565b610d2a565b348015610548575f80fd5b50610376610557366004612bb7565b5f92915050565b348015610569575f80fd5b50610376610578366004612bb7565b6110b3565b6103c261058b366004612ae0565b611269565b34801561059b575f80fd5b506103426105aa366004612ae0565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a07565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bb7565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c16565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612ae0565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c49565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a7e565b6116d4565b348015610719575f80fd5b5061047e610728366004612cae565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b4b565b611842565b34801561077f575f80fd5b5061037661078e366004612a07565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a07565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a07565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b4b565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a07565b6119be565b34801561083a575f80fd5b5061047e610849366004612d71565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a07565b6119f8565b348015610892575f80fd5b506103766108a1366004612ae0565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612ae0565b611aab565b3480156108d0575f80fd5b506103426108df366004612bb7565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a22565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a07565b611f50565b34801561092d575f80fd5b5061037661093c366004612a07565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e15565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e28565b9050602002016020810190610a9c9190612e62565b9050801515600103610ade57610ad9878784818110610abd57610abd612e28565b9050602002016020810190610ad29190612a07565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e28565b9050602002016020810190610b089190612a07565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f83850185612ff6565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e28565b602002602001015183604001518381518110610bd357610bd3612e28565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e28565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce9190810190613197565b90505f81608001518381518110610de757610de7612e28565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613274565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f919061328f565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613274565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132eb565b90505f80825160028111156110e3576110e36133d1565b148061110157506001825160028111156110ff576110ff6133d1565b145b15611158575f826060015180602001905181019061111f91906133fe565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133d1565b03611255575f826060015180602001905181019061118b9190613440565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611240919061328f565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132eb565b90505f815160028111156112d8576112d86133d1565b03611351575f81606001518060200190518101906112f691906133fe565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133d1565b03611413575f816060015180602001905181019061138491906133fe565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126b8565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133d1565b036115a1575f81606001518060200190518101906114469190613440565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061354a565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e919061328f565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e28565b90506020028101906108df9190613591565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126eb565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b90889088908890889030906004016135f2565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c9061179390879060200161365e565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c293929190613693565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136b7565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e15565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e28565b90506020020160208101906118ba9190612a07565b8585848181106118cc576118cc612e28565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136e6565b61095d91906136e6565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e28565b90506020020160208101906119989190612a07565b8585848181106119aa576119aa612e28565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126eb565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126eb565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa4919061328f565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b919061328f565b611aa491906136e6565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132eb565b9050600181516002811115611bb957611bb96133d1565b1480611bd657505f81516002811115611bd457611bd46133d1565b145b15611d4f575f8160600151806020019051810190611bf491906133fe565b90505f612710600154835f0151611c0b91906136f9565b611c159190613710565b90505f611c258460200151610963565b90508082845f0151611c3791906136e6565b1115611c9c57602084015183518290611c519085906136e6565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136e6565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136e6565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136e6565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133d1565b036115a1575f8160600151806020019051810190611d829190613440565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e14919061328f565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612728565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126b8565b61095d565b4792915050565b6109d582825f612815565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d582826001612815565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e28565b6020908102919091018101516001600160a01b0381165f908152600283526040808220546003909452812054919350818561214988866136f9565b6121539190613710565b61215d9190612e15565b905061216981836136e6565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f89190613748565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e15565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136e6565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc828261286c565b612415565b6124156001600160a01b0384168383612885565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136e6565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161354a565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166126ab57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127ba57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061280657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128ce565b638b78c6d8600c52825f526020600c20805483811783612836575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c5576390b8ec185f526004601cfd5b5f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129c4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a17575f80fd5b8135611aa4816129f3565b5f60208284031215612a32575f80fd5b5035919050565b5f8083601f840112612a49575f80fd5b50813567ffffffffffffffff811115612a60575f80fd5b602083019150836020828501011115612a77575f80fd5b9250929050565b5f805f805f60808688031215612a92575f80fd5b8535612a9d816129f3565b9450602086013567ffffffffffffffff811115612ab8575f80fd5b612ac488828901612a39565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612af1575f80fd5b8235612afc816129f3565b946020939093013593505050565b5f8083601f840112612b1a575f80fd5b50813567ffffffffffffffff811115612b31575f80fd5b6020830191508360208260051b8501011115612a77575f80fd5b5f805f8060408587031215612b5e575f80fd5b843567ffffffffffffffff811115612b74575f80fd5b612b8087828801612b0a565b909550935050602085013567ffffffffffffffff811115612b9f575f80fd5b612bab87828801612b0a565b95989497509550505050565b5f8060208385031215612bc8575f80fd5b823567ffffffffffffffff811115612bde575f80fd5b612bea85828601612a39565b90969095509350505050565b5f8060408385031215612c07575f80fd5b50508035926020909101359150565b5f8060208385031215612c27575f80fd5b823567ffffffffffffffff811115612c3d575f80fd5b612bea85828601612b0a565b5f805f805f60808688031215612c5d575f80fd5b8535612c68816129f3565b94506020860135935060408601359250606086013567ffffffffffffffff811115612c91575f80fd5b612c9d88828901612a39565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cc5575f80fd5b8835612cd0816129f3565b97506020890135612ce0816129f3565b9650604089013567ffffffffffffffff811115612cfb575f80fd5b612d078b828c01612b0a565b909750955050606089013567ffffffffffffffff811115612d26575f80fd5b612d328b828c01612b0a565b909550935050608089013567ffffffffffffffff811115612d51575f80fd5b612d5d8b828c01612a39565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d86575f80fd5b8635612d91816129f3565b95506020870135612da1816129f3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dca575f80fd5b612dd689828a01612a39565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612de8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e72575f80fd5b8135611aa481612e55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b60405290565b604051610100810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b6040516060810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f6157612f61612e7d565b604052919050565b5f67ffffffffffffffff821115612f8257612f82612e7d565b5060051b60200190565b5f82601f830112612f9b575f80fd5b8135612fae612fa982612f69565b612f1a565b8082825260208201915060208360051b860101925085831115612fcf575f80fd5b602085015b83811015612fec578035835260209283019201612fd4565b5095945050505050565b5f60208284031215613006575f80fd5b813567ffffffffffffffff81111561301c575f80fd5b82016080818503121561302d575f80fd5b613035612eaa565b8135613040816129f3565b8152602082013567ffffffffffffffff81111561305b575f80fd5b8201601f8101861361306b575f80fd5b8035613079612fa982612f69565b8082825260208201915060208360051b85010192508883111561309a575f80fd5b6020840193505b828410156130c55783356130b4816129f3565b8252602093840193909101906130a1565b6020850152505050604082013567ffffffffffffffff8111156130e6575f80fd5b6130f286828501612f8c565b604083015250606091820135918101919091529392505050565b8051613117816129f3565b919050565b5f82601f83011261312b575f80fd5b8151613139612fa982612f69565b8082825260208201915060208360051b86010192508583111561315a575f80fd5b602085015b83811015612fec578051613172816129f3565b83526020928301920161315f565b805167ffffffffffffffff81168114613117575f80fd5b5f602082840312156131a7575f80fd5b815167ffffffffffffffff8111156131bd575f80fd5b820161010081850312156131cf575f80fd5b6131d7612ed3565b6131e08261310c565b81526131ee6020830161310c565b60208201526131ff6040830161310c565b60408201526132106060830161310c565b6060820152608082015167ffffffffffffffff81111561322e575f80fd5b61323a8682850161311c565b60808301525061324c60a08301613180565b60a082015260c0828101519082015261326760e0830161310c565b60e0820152949350505050565b5f60208284031215613284575f80fd5b8151611aa481612e55565b5f6020828403121561329f575f80fd5b5051919050565b5f67ffffffffffffffff8211156132bf576132bf612e7d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f602082840312156132fb575f80fd5b813567ffffffffffffffff811115613311575f80fd5b820160808185031215613322575f80fd5b61332a612eaa565b813560038110613338575f80fd5b81526020820135613348816129f3565b6020820152604082013561335b816129f3565b6040820152606082013567ffffffffffffffff811115613379575f80fd5b80830192505084601f83011261338d575f80fd5b813561339b612fa9826132a6565b8181528660208386010111156133af575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312801561340f575f80fd5b506040516020810167ffffffffffffffff8111828210171561343357613433612e7d565b6040529151825250919050565b5f60208284031215613450575f80fd5b815167ffffffffffffffff811115613466575f80fd5b820160608185031215613477575f80fd5b61347f612ef7565b8151815260208083015190820152604082015167ffffffffffffffff8111156134a6575f80fd5b80830192505084601f8301126134ba575f80fd5b81516134c8612fa9826132a6565b8181528660208386010111156134dc575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61358660a08301846134fe565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135c4575f80fd5b83018035915067ffffffffffffffff8211156135de575f80fd5b602001915036819003821315612a77575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261368b60608401826134fe565b949350505050565b606081525f6136a560608301866134fe565b60208301949094525060400152919050565b5f80604083850312156136c8575f80fd5b825160208401519092506136db816129f3565b809150509250929050565b8082018082111561095d5761095d612de8565b808202811582820484141761095d5761095d612de8565b5f82613743577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215613758575f80fd5b8151611aa4816129f356fea2646970667358221220dbd4f70bed9b922212a5c6bf33fbf9a035a23d8d6e2d872430cdd227c89ca9b664736f6c634300081a0033",u=class u extends m.DeployableTargetWithRBAC{constructor(){super(...arguments),this.abi=e.p}async allocate(f,b){return await this.awaitResult(this.allocateRaw(f,b))}async allocateRaw(f,b){const{request:a,result:d}=await e.wB(this._config,{address:this.assertValidAddress(),args:[r.prepareTransfer(f)],...this.optionallyAttachAccount(),...b});return{hash:await e.Yz(this._config,a),result:d}}async clawback(f,b){return await this.awaitResult(this.clawbackRaw(f,b))}async clawbackRaw(f,b){const{request:a,result:d}=await e.gB(this._config,{address:this.assertValidAddress(),args:[r.prepareTransfer(f)],...this.optionallyAttachAccount(),...b});return{hash:await e.tB(this._config,a),result:d}}async clawbackFromTarget(f,b,a,d,c){return await this.awaitResult(this.clawbackFromTargetRaw(f,b,a,d,c))}async clawbackFromTargetRaw(f,b,a,d,c){const{request:s,result:n}=await e.AB(this._config,{address:this.assertValidAddress(),args:[f,b,BigInt(a),BigInt(d)],...this.optionallyAttachAccount(),...c});return{hash:await e.nB(this._config,s),result:n}}async disburse(f,b){return await this.awaitResult(this.disburseRaw(f,b))}async disburseRaw(f,b){const{request:a,result:d}=await e.IB(this._config,{address:this.assertValidAddress(),args:[r.prepareTransfer(f)],...this.optionallyAttachAccount(),...b});return{hash:await e.iB(this._config,a),result:d}}async disburseBatch(f,b){return await this.awaitResult(this.disburseBatchRaw(f,b))}async disburseBatchRaw(f,b){const{request:a,result:d}=await e.NB(this._config,{address:this.assertValidAddress(),args:[f.map(r.prepareTransfer)],...this.optionallyAttachAccount(),...b});return{hash:await e.sB(this._config,a),result:d}}async payManagementFee(f,b,a){return await this.awaitResult(this.payManagementFeeRaw(f,b,a))}async payManagementFeeRaw(f,b,a){const{request:d,result:c}=await e.GF(this._config,{address:this.assertValidAddress(),args:[f,b],...this.optionallyAttachAccount(),...a});return{hash:await e.AF(this._config,d),result:c}}async setManagementFee(f,b){return await this.awaitResult(this.setManagementFeeRaw(f,b))}async setManagementFeeRaw(f,b){const{request:a,result:d}=await e.XF(this._config,{address:this.assertValidAddress(),args:[f],...this.optionallyAttachAccount(),...b});return{hash:await e.EF(this._config,a),result:d}}async managementFee(f){return await e.eF(this._config,{address:this.assertValidAddress(),args:[],...f})}owner(f){return e.jz(this._config,{address:this.assertValidAddress(),args:[],...f})}total(f=t.zeroAddress,b,a){return e.Kz(this._config,{address:this.assertValidAddress(),args:b?[f,b]:[f],...a})}available(f=t.zeroAddress,b,a){return e._z(this._config,{address:this.assertValidAddress(),args:b?[f,b]:[f],...a})}distributed(f=t.zeroAddress,b,a){return e.Lz(this._config,{address:this.assertValidAddress(),args:b?[f,b]:[f],...a})}buildParameters(f,b){var c;const[a,d]=this.validateDeploymentConfig(f,b);if(!a.owner||a.owner===t.zeroAddress){const s=d.account?d.account.address:d.config?y.getAccount(d.config).address:(c=this._account)==null?void 0:c.address;if(s)a.owner=s;else throw new A.DeployableUnknownOwnerProvidedError}return{abi:e.p,bytecode:V,args:[B(a)],...this.optionallyAttachAccount(d.account)}}};u.bases={31337:void 0,...p.ManagedBudgetWithFees},u.registryType=R.RegistryType.BUDGET;let o=u;const B=({owner:i,authorized:f,roles:b,managementFee:a})=>t.encodeAbiParameters(t.parseAbiParameters(["ManagedBudgetWithFeesPayload payload","struct ManagedBudgetWithFeesPayload { address owner; address[] authorized; uint256[] roles; uint256 managementFee; }"]),[{owner:i,authorized:f,roles:b,managementFee:a}]),q="0x6080604052348015600e575f80fd5b5060156025565b601b6025565b60216025565b6084565b63409feecd198054600181161560425763f92ee8a95f526004601cfd5b8160c01c808260011c14607f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b613d94806100915f395ff3fe608060405260043610610316575f3560e01c8063774c33ab11610199578063dcc21361116100e0578063f8724aba11610089578063fe56e23211610063578063fe56e2321461099b578063fe9fbb80146109ba578063fee81cf4146109d95761031d565b8063f8724aba1461093e578063f9a802c31461095d578063fa4ca9b11461097c5761031d565b8063f04e283e116100ba578063f04e283e146108d3578063f23a6e61146108e6578063f2fde38b1461092b5761031d565b8063dcc2136114610872578063eaefb5cf14610891578063ec87621c146108bf5761031d565b8063b5e4f55d11610142578063c6004a3a1161011c578063c6004a3a146107fd578063d2514e8414610828578063d8c12d22146108475761031d565b8063b5e4f55d14610778578063bc197c8114610797578063be4994f8146107de5761031d565b8063929470eb11610173578063929470eb14610725578063a6f7f5d614610744578063b3005793146107595761031d565b8063774c33ab1461069a57806380009630146106db5780638da5cb5b146106fa5761031d565b806343cc96e11161025d57806354feede51161020657806361400c99116101e057806361400c991461065f578063715018a61461067e57806375b238fc146106865761031d565b806354feede5146105f9578063578bcf35146106185780635aef467a1461064c5761031d565b80634a4ee7b1116102375780634a4ee7b1146105a9578063514e62fc146105bc57806354d1f13d146105f15761031d565b806343cc96e11461054a578063451cc19114610569578063474f5a441461058a5761031d565b80631cd64df4116102bf5780632de94807116102995780632de94807146104db5780634359d28a1461050c578063439fab911461052b5761031d565b80631cd64df41461043f578063256929621461047457806328d6183b1461047c5761031d565b8063183a4f6e116102f0578063183a4f6e146103db578063185832a3146103f05780631c10893f1461042c5761031d565b806301ffc9a71461034f57806310098ad51461038357806314135ce0146103b05761031d565b3661031d57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561035a575f80fd5b5061036e610369366004612f80565b610a0a565b60405190151581526020015b60405180910390f35b34801561038e575f80fd5b506103a261039d366004612fd3565b610a1a565b60405190815260200161037a565b3480156103bb575f80fd5b506103a26103ca366004612fd3565b60046020525f908152604090205481565b6103ee6103e9366004612fee565b610a45565b005b3480156103fb575f80fd5b5061040f61040a36600461304a565b610a52565b604080519283526001600160a01b0390911660208301520161037a565b6103ee61043a3660046130ac565b610a7a565b34801561044a575f80fd5b5061036e6104593660046130ac565b638b78c6d8600c9081525f9290925260209091205481161490565b6103ee610a90565b348015610487575f80fd5b507fa2dceadb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161037a565b3480156104e6575f80fd5b506103a26104f5366004612fd3565b638b78c6d8600c9081525f91909152602090205490565b348015610517575f80fd5b506103ee610526366004613117565b610add565b348015610536575f80fd5b506103ee610545366004613183565b610bd7565b348015610555575f80fd5b506103ee6105643660046131c2565b610db2565b348015610574575f80fd5b506103a2610583366004613183565b5f92915050565b348015610595575f80fd5b506103a26105a4366004613183565b61111d565b6103ee6105b73660046130ac565b6112d3565b3480156105c7575f80fd5b5061036e6105d63660046130ac565b638b78c6d8600c9081525f9290925260209091205416151590565b6103ee6112e5565b348015610604575f80fd5b506103ee6106133660046131e2565b61131e565b348015610623575f80fd5b506103a2610632366004612fd3565b6001600160a01b03165f9081526006602052604090205490565b61036e61065a366004613183565b6116e1565b34801561066a575f80fd5b5061036e610679366004613214565b6119e1565b6103ee611a28565b348015610691575f80fd5b506103a2600281565b3480156106a5575f80fd5b506103a26106b43660046130ac565b6001600160a01b03919091165f908152600760209081526040808320938352929052205490565b3480156106e6575f80fd5b506103ee6106f5366004612fd3565b611a3b565b348015610705575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161037a565b348015610730575f80fd5b5061036e61073f366004613247565b611a4f565b34801561074f575f80fd5b506103a260015481565b348015610764575f80fd5b5061040f61077336600461304a565b611b15565b348015610783575f80fd5b5061040f6107923660046132ac565b611b71565b3480156107a2575f80fd5b506104aa6107b1366004613321565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156107e9575f80fd5b506103ee6107f8366004613117565b611b9b565b348015610808575f80fd5b506103a2610817366004612fd3565b60036020525f908152604090205481565b348015610833575f80fd5b506103a2610842366004612fd3565b611c39565b348015610852575f80fd5b506103a2610861366004612fd3565b60026020525f908152604090205481565b34801561087d575f80fd5b506103ee61088c366004613117565b611c79565b34801561089c575f80fd5b5061036e6108ab366004612fd3565b60056020525f908152604090205460ff1681565b3480156108ca575f80fd5b506103a2600181565b6103ee6108e1366004612fd3565b611d17565b3480156108f1575f80fd5b506104aa6109003660046133e4565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103ee610939366004612fd3565b611d51565b348015610949575f80fd5b506103a26109583660046130ac565b611d77565b348015610968575f80fd5b506103a26109773660046130ac565b611e04565b348015610987575f80fd5b5061036e610996366004613183565b611eae565b3480156109a6575f80fd5b506103ee6109b5366004612fee565b6121f6565b3480156109c5575f80fd5b5061036e6109d4366004612fd3565b6122a9565b3480156109e4575f80fd5b506103a26109f3366004612fd3565b63389a75e1600c9081525f91909152602090205490565b5f610a14826122ee565b92915050565b6001600160a01b0381165f90815260046020526040812054610a3b83612343565b610a149190613488565b610a4f3382612372565b50565b5f80610a618787878787611b15565b9092509050610a708484610db2565b9550959350505050565b610a8261237d565b610a8c8282612397565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610ae8816123a3565b838214610b21576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610bcf575f848483818110610b3e57610b3e61349b565b9050602002016020810190610b5391906134d5565b9050801515600103610b9557610b90878784818110610b7457610b7461349b565b9050602002016020810190610b899190612fd3565b6001612397565b610bc6565b610bc6878784818110610baa57610baa61349b565b9050602002016020810190610bbf9190612fd3565b6001612372565b50600101610b23565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610c285760018160011c14303b10610c1f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610c368385018561364b565b9050610c44815f01516123d4565b60015b816020015151811015610ca057610c9882602001518281518110610c6d57610c6d61349b565b602002602001015183604001518381518110610c8b57610c8b61349b565b602002602001015161240f565b600101610c47565b508060200151515f03610d14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b610d3a81602001515f81518110610d2d57610d2d61349b565b6020026020010151612450565b606081015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a1508015610dad576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610e11573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e3891908101906137ec565b90505f81608001518381518110610e5157610e5161349b565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610eda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efe91906138c9565b15610fd8575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6591906138e4565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610fa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc991906138e4565b9050610bcf8686868585612505565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611053573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107791906138c9565b1561031d575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110de91906138e4565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa5573d5f803e3d5ffd5b5f6002611129816123a3565b5f61113684860186613922565b90505f808251600281111561114d5761114d613a08565b148061116b575060018251600281111561116957611169613a08565b145b156111c2575f82606001518060200190518101906111899190613a35565b6020840151604085015182519293506111ba92156111a857835161270a565b6111b58660200151610a1a565b61270a565b5190506112c8565b6002825160028111156111d7576111d7613a08565b036112bf575f82606001518060200190518101906111f59190613a77565b90506112b483602001518460400151835f015184602001515f1461121d5784602001516112aa565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112aa91906138e4565b856040015161287a565b6020015190506112c8565b92506112cc9050565b9250505b5092915050565b6112db61237d565b610a8c8282612372565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6001600160a01b0383165f9081526005602052604090205460ff1661136f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018390525f906001600160a01b038516906313c8e2de906024015f60405180830381865afa1580156113cc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113f391908101906137ec565b90505f8160800151838151811061140c5761140c61349b565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611495573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b991906138c9565b1561159c575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156114fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152091906138e4565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611560573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158491906138e4565b90506115938686868585612505565b50505050505050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611617573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163b91906138c9565b1561031d575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561167e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a291906138e4565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611560573d5f803e3d5ffd5b5f806116ef83850185613922565b90505f8151600281111561170557611705613a08565b0361177e575f81606001518060200190518101906117239190613a35565b8051909150341461177857602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610d0b565b506119d7565b60018151600281111561179357611793613a08565b03611840575f81606001518060200190518101906117b19190613a35565b6040830151815160208501519293506117d6926001600160a01b031691903090612a6e565b805160208301516117f0906001600160a01b031630612ac6565b101561177857602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610d0b565b60028151600281111561185557611855613a08565b036119ce575f81606001518060200190518101906118739190613a77565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016118bc959493929190613b63565b5f604051808303815f87803b1580156118d3575f80fd5b505af11580156118e5573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa158015611957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197b91906138e4565b101561177857602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610d0b565b5f915050610a14565b5060019392505050565b5f805b828110156119d757611a13848483818110611a0157611a0161349b565b90506020028101906109969190613baa565b611a20575f915050610a14565b6001016119e4565b611a3061237d565b611a395f612af9565b565b6002611a46816123a3565b610a8c82612450565b5f611a59336122a9565b611a8f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc90611adc9088908890889088903090600401613c0b565b5f604051808303815f87803b158015611af3575f80fd5b505af1158015611b05573d5f803e3d5ffd5b5060019998505050505050505050565b5f80611b20336122a9565b611b56576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b638787878787612b36565b915091509550959350505050565b5f80611b808888888787612b36565b9092509050611b9085858561131e565b965096945050505050565b6002611ba6816123a3565b838214611bdf576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610bcf57611c31868683818110611bfe57611bfe61349b565b9050602002016020810190611c139190612fd3565b858584818110611c2557611c2561349b565b90506020020135612397565b600101611be1565b6001600160a01b0381165f908152600460209081526040808320546006909252822054611c6584610a1a565b611c6f9190613c59565b610a149190613c59565b6002611c84816123a3565b838214611cbd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610bcf57611d0f868683818110611cdc57611cdc61349b565b9050602002016020810190611cf19190612fd3565b858584818110611d0357611d0361349b565b90506020020135612372565b600101611cbf565b611d1f61237d565b63389a75e1600c52805f526020600c208054421115611d4557636f5e88185f526004601cfd5b5f9055610a4f81612af9565b611d5961237d565b8060601b611d6e57637448fbae5f526004601cfd5b610a4f81612af9565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611dd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dfd91906138e4565b9392505050565b6001600160a01b0382165f8181526007602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611e80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ea491906138e4565b611dfd9190613c59565b5f611eb8336122a9565b611eee576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611efb83850185613922565b9050600181516002811115611f1257611f12613a08565b1480611f2f57505f81516002811115611f2d57611f2d613a08565b145b156120a8575f8160600151806020019051810190611f4d9190613a35565b90505f612710600154835f0151611f649190613c6c565b611f6e9190613c83565b90505f611f7e8460200151610a1a565b90508082845f0151611f909190613c59565b1115611ff557602084015183518290611faa908590613c59565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610d0b565b6040808501516001600160a01b03165f90815260026020529081208054849290612020908490613c59565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290612051908490613c59565b909155505082516020808601516001600160a01b03165f9081526006909152604081208054909190612084908490613c59565b90915550506020840151604085015184516120a092919061270a565b5050506119d7565b6002815160028111156120bd576120bd613a08565b036119ce575f81606001518060200190518101906120db9190613a77565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015612149573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061216d91906138e4565b905080826020015111156121cf57602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610d0b565b6121ef83602001518460400151845f01518560200151866040015161287a565b50506119d7565b6002612201816123a3565b61271082111561226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610d0b565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b03166122c1638b78c6d8195490565b6001600160a01b03161480610a145750638b78c6d8600c9081525f83905260209020546003161515610a14565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf0000000000000000000000000000000000000000000000000000000001480610a145750610a1482612ca4565b5f6001600160a01b0382161561236b576123666001600160a01b03831630612ac6565b610a14565b4792915050565b610a8c82825f612cf9565b638b78c6d819543314611a39576382b429005f526004601cfd5b610a8c82826001612cf9565b638b78c6d819543314610a4f57638b78c6d8600c52335f52806020600c205416610a4f576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556124c690829061240f565b6040516001600160a01b03821681527f11dd8c34fa7e859614e12db6445bd13eb507b6e1a382ae61214d4e5c349df0729060200160405180910390a150565b5f8360800151858151811061251c5761251c61349b565b6020908102919091018101516001600160a01b0381165f90815260028352604080822054600390945281205491935081856125578886613c6c565b6125619190613c83565b61256b9190613488565b90506125778183613c59565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156125e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126069190613cbb565b60e08901516001600160a01b0382165f9081526004602052604081208054939450919285929190612638908490613488565b90915550505f839003612677576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846126828486613c59565b036126ad576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516126ea91815260200190565b60405180910390a46126fd82828561270a565b5050505050505050505050565b3068929eee149b4bd2126854036127285763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b03821661278e576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610d0b565b61279783610a1a565b8111156127f257826127a884610a1a565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610d0b565b6001600160a01b03831661280f5761280a8282612d50565b612823565b6128236001600160a01b0384168383612d69565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036128985763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166128fe576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610d0b565b6129088584611d77565b821115612964578461291a8685611d77565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610d0b565b6001600160a01b0385165f90815260076020908152604080832086845290915281208054849290612996908490613c59565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906129e89030908890889088908890600401613b63565b5f604051808303815f87803b1580156129ff575f80fd5b505af1158015612a11573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612ab957637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f80612b41336122a9565b612b77576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c90612bf5908790602001613cd6565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401612c2493929190613d0b565b60408051808303815f875af1158015612c3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c639190613d2f565b6001600160a01b0381165f90815260066020526040812080549395509193508492612c8f908490613488565b90915550919b909a5098505050505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf0000000000000000000000000000000000000000000000000000000001480610a145750610a1482612db2565b638b78c6d8600c52825f526020600c20805483811783612d1a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af1610a8c5763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612da9576390b8ec185f526004601cfd5b5f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e000000000000000000000000000000000000000000000000000000001480612e4457507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b80612e9057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b80610a145750610a14825f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd7000000000000000000000000000000000000000000000000000000001480610a145750610a14825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d000000000000000000000000000000000000000000000000000000001480610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a14565b5f60208284031215612f90575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611dfd575f80fd5b6001600160a01b0381168114610a4f575f80fd5b5f60208284031215612fe3575f80fd5b8135611dfd81612fbf565b5f60208284031215612ffe575f80fd5b5035919050565b5f8083601f840112613015575f80fd5b50813567ffffffffffffffff81111561302c575f80fd5b602083019150836020828501011115613043575f80fd5b9250929050565b5f805f805f6080868803121561305e575f80fd5b853561306981612fbf565b9450602086013567ffffffffffffffff811115613084575f80fd5b61309088828901613005565b9699909850959660408101359660609091013595509350505050565b5f80604083850312156130bd575f80fd5b82356130c881612fbf565b946020939093013593505050565b5f8083601f8401126130e6575f80fd5b50813567ffffffffffffffff8111156130fd575f80fd5b6020830191508360208260051b8501011115613043575f80fd5b5f805f806040858703121561312a575f80fd5b843567ffffffffffffffff811115613140575f80fd5b61314c878288016130d6565b909550935050602085013567ffffffffffffffff81111561316b575f80fd5b613177878288016130d6565b95989497509550505050565b5f8060208385031215613194575f80fd5b823567ffffffffffffffff8111156131aa575f80fd5b6131b685828601613005565b90969095509350505050565b5f80604083850312156131d3575f80fd5b50508035926020909101359150565b5f805f606084860312156131f4575f80fd5b83356131ff81612fbf565b95602085013595506040909401359392505050565b5f8060208385031215613225575f80fd5b823567ffffffffffffffff81111561323b575f80fd5b6131b6858286016130d6565b5f805f805f6080868803121561325b575f80fd5b853561326681612fbf565b94506020860135935060408601359250606086013567ffffffffffffffff81111561328f575f80fd5b61329b88828901613005565b969995985093965092949392505050565b5f805f805f8060a087890312156132c1575f80fd5b86356132cc81612fbf565b9550602087013567ffffffffffffffff8111156132e7575f80fd5b6132f389828a01613005565b909650945050604087013561330781612fbf565b959894975092956060810135946080909101359350915050565b5f805f805f805f8060a0898b031215613338575f80fd5b883561334381612fbf565b9750602089013561335381612fbf565b9650604089013567ffffffffffffffff81111561336e575f80fd5b61337a8b828c016130d6565b909750955050606089013567ffffffffffffffff811115613399575f80fd5b6133a58b828c016130d6565b909550935050608089013567ffffffffffffffff8111156133c4575f80fd5b6133d08b828c01613005565b999c989b5096995094979396929594505050565b5f805f805f8060a087890312156133f9575f80fd5b863561340481612fbf565b9550602087013561341481612fbf565b94506040870135935060608701359250608087013567ffffffffffffffff81111561343d575f80fd5b61344989828a01613005565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610a1457610a1461345b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610a4f575f80fd5b5f602082840312156134e5575f80fd5b8135611dfd816134c8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715613540576135406134f0565b60405290565b604051610100810167ffffffffffffffff81118282101715613540576135406134f0565b6040516060810167ffffffffffffffff81118282101715613540576135406134f0565b604051601f8201601f1916810167ffffffffffffffff811182821017156135b6576135b66134f0565b604052919050565b5f67ffffffffffffffff8211156135d7576135d76134f0565b5060051b60200190565b5f82601f8301126135f0575f80fd5b81356136036135fe826135be565b61358d565b8082825260208201915060208360051b860101925085831115613624575f80fd5b602085015b83811015613641578035835260209283019201613629565b5095945050505050565b5f6020828403121561365b575f80fd5b813567ffffffffffffffff811115613671575f80fd5b820160808185031215613682575f80fd5b61368a61351d565b813561369581612fbf565b8152602082013567ffffffffffffffff8111156136b0575f80fd5b8201601f810186136136c0575f80fd5b80356136ce6135fe826135be565b8082825260208201915060208360051b8501019250888311156136ef575f80fd5b6020840193505b8284101561371a57833561370981612fbf565b8252602093840193909101906136f6565b6020850152505050604082013567ffffffffffffffff81111561373b575f80fd5b613747868285016135e1565b604083015250606091820135918101919091529392505050565b805161376c81612fbf565b919050565b5f82601f830112613780575f80fd5b815161378e6135fe826135be565b8082825260208201915060208360051b8601019250858311156137af575f80fd5b602085015b838110156136415780516137c781612fbf565b8352602092830192016137b4565b805167ffffffffffffffff8116811461376c575f80fd5b5f602082840312156137fc575f80fd5b815167ffffffffffffffff811115613812575f80fd5b82016101008185031215613824575f80fd5b61382c613546565b61383582613761565b815261384360208301613761565b602082015261385460408301613761565b604082015261386560608301613761565b6060820152608082015167ffffffffffffffff811115613883575f80fd5b61388f86828501613771565b6080830152506138a160a083016137d5565b60a082015260c082810151908201526138bc60e08301613761565b60e0820152949350505050565b5f602082840312156138d9575f80fd5b8151611dfd816134c8565b5f602082840312156138f4575f80fd5b5051919050565b5f67ffffffffffffffff821115613914576139146134f0565b50601f01601f191660200190565b5f60208284031215613932575f80fd5b813567ffffffffffffffff811115613948575f80fd5b820160808185031215613959575f80fd5b61396161351d565b81356003811061396f575f80fd5b8152602082013561397f81612fbf565b6020820152604082013561399281612fbf565b6040820152606082013567ffffffffffffffff8111156139b0575f80fd5b80830192505084601f8301126139c4575f80fd5b81356139d26135fe826138fb565b8181528660208386010111156139e6575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015613a46575f80fd5b506040516020810167ffffffffffffffff81118282101715613a6a57613a6a6134f0565b6040529151825250919050565b5f60208284031215613a87575f80fd5b815167ffffffffffffffff811115613a9d575f80fd5b820160608185031215613aae575f80fd5b613ab661356a565b8151815260208083015190820152604082015167ffffffffffffffff811115613add575f80fd5b80830192505084601f830112613af1575f80fd5b8151613aff6135fe826138fb565b818152866020838601011115613b13575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f613b9f60a0830184613b35565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613bdd575f80fd5b83018035915067ffffffffffffffff821115613bf7575f80fd5b602001915036819003821315613043575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a0601f19601f86011683010190506001600160a01b03831660608301529695505050505050565b80820180821115610a1457610a1461345b565b8082028115828204841417610a1457610a1461345b565b5f82613cb6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215613ccb575f80fd5b8151611dfd81612fbf565b602081526001600160a01b0382511660208201525f6020830151604080840152613d036060840182613b35565b949350505050565b606081525f613d1d6060830186613b35565b60208301949094525060400152919050565b5f8060408385031215613d40575f80fd5b82516020840151909250613d5381612fbf565b80915050925092905056fea2646970667358221220cca11825ffeee8b8c8a4abd0f0e1467bea1cbdc64017e22d37ba8b9ec9bdfff964736f6c634300081a0033",l=class l extends m.DeployableTargetWithRBAC{constructor(){super(...arguments),this.abi=e.r}async allocate(f,b){return await this.awaitResult(this.allocateRaw(f,b))}async allocateRaw(f,b){const{request:a,result:d}=await e.wB(this._config,{address:this.assertValidAddress(),args:[r.prepareTransfer(f)],...this.optionallyAttachAccount(),...b});return{hash:await e.Yz(this._config,a),result:d}}async clawback(f,b){return await this.awaitResult(this.clawbackRaw(f,b))}async clawbackRaw(f,b){const{request:a,result:d}=await e.gB(this._config,{address:this.assertValidAddress(),args:[r.prepareTransfer(f)],...this.optionallyAttachAccount(),...b});return{hash:await e.tB(this._config,a),result:d}}async clawbackFromTarget(f,b,a,d,c){return await this.awaitResult(this.clawbackFromTargetRaw(f,b,a,d,c))}async clawbackFromTargetRaw(f,b,a,d,c){const{request:s,result:n}=await e.AB(this._config,{address:this.assertValidAddress(),args:[f,b,BigInt(a),BigInt(d)],...this.optionallyAttachAccount(),...c});return{hash:await e.nB(this._config,s),result:n}}async disburse(f,b){return await this.awaitResult(this.disburseRaw(f,b))}async disburseRaw(f,b){const{request:a,result:d}=await e.IB(this._config,{address:this.assertValidAddress(),args:[r.prepareTransfer(f)],...this.optionallyAttachAccount(),...b});return{hash:await e.iB(this._config,a),result:d}}async disburseBatch(f,b){return await this.awaitResult(this.disburseBatchRaw(f,b))}async disburseBatchRaw(f,b){const{request:a,result:d}=await e.NB(this._config,{address:this.assertValidAddress(),args:[f.map(r.prepareTransfer)],...this.optionallyAttachAccount(),...b});return{hash:await e.sB(this._config,a),result:d}}async payManagementFee(f,b,a,d){return a?await this.awaitResult(this.payManagementFeeWithCoreRaw(a,f,b)):await this.awaitResult(this.payManagementFeeRaw(f,b,d))}async payManagementFeeRaw(f,b,a){const{request:d,result:c}=await e.GF(this._config,{address:this.assertValidAddress(),args:[f,b],...this.optionallyAttachAccount(),...a});return{hash:await e.AF(this._config,d),result:c}}async payManagementFeeWithCoreRaw(f,b,a,d){const{request:c,result:s}=await e.cH(this._config,{address:this.assertValidAddress(),args:[f,b,a],...this.optionallyAttachAccount(),...d});return{hash:await e.qV(this._config,c),result:s}}async setManagementFee(f,b){return await this.awaitResult(this.setManagementFeeRaw(f,b))}async setManagementFeeRaw(f,b){const{request:a,result:d}=await e.hH(this._config,{address:this.assertValidAddress(),args:[f],...this.optionallyAttachAccount(),...b});return{hash:await e.XV(this._config,a),result:d}}async managementFee(f){return await e.hV(this._config,{address:this.assertValidAddress(),args:[],...f})}owner(f){return e.jz(this._config,{address:this.assertValidAddress(),args:[],...f})}total(f=t.zeroAddress,b,a){return e.Kz(this._config,{address:this.assertValidAddress(),args:b?[f,b]:[f],...a})}available(f=t.zeroAddress,b,a){return e._z(this._config,{address:this.assertValidAddress(),args:b?[f,b]:[f],...a})}distributed(f=t.zeroAddress,b,a){return e.Lz(this._config,{address:this.assertValidAddress(),args:b?[f,b]:[f],...a})}buildParameters(f,b){var c;const[a,d]=this.validateDeploymentConfig(f,b);if(!a.owner||a.owner===t.zeroAddress){const s=d.account?d.account.address:d.config?y.getAccount(d.config).address:(c=this._account)==null?void 0:c.address;if(s)a.owner=s;else throw new A.DeployableUnknownOwnerProvidedError}return{abi:e.r,bytecode:q,args:[F(a)],...this.optionallyAttachAccount(d.account)}}};l.bases={31337:void 0,...p.ManagedBudgetWithFees},l.registryType=R.RegistryType.BUDGET;let h=l;const F=({owner:i,authorized:f,roles:b,managementFee:a})=>t.encodeAbiParameters(t.parseAbiParameters(["ManagedBudgetWithFeesV2Payload payload","struct ManagedBudgetWithFeesV2Payload { address owner; address[] authorized; uint256[] roles; uint256 managementFee; }"]),[{owner:i,authorized:f,roles:b,managementFee:a}]),w={[g.AManagedBudget]:r.ManagedBudget,[g.AManagedBudgetWithFees]:o,[g.AManagedBudgetWithFeesV2]:h};async function M(i,f,b){const a=await y.readContract(i.config,{abi:e.I,functionName:"getComponentInterface",address:f,...b}),d=w[a];if(!d)throw new A.InvalidComponentInterfaceError(Object.keys(w),a);return new d(i,f)}exports.BudgetByComponentInterface=w;exports.ManagedBudgetWithFees=o;exports.ManagedBudgetWithFeesV2=h;exports.budgetFromAddress=M;exports.prepareManagedBudgetWithFeesPayload=B;exports.prepareManagedBudgetWithFeesV2Payload=F;
2
- //# sourceMappingURL=Budget-BjfL8dVX.cjs.map