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

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 (254) hide show
  1. package/dist/Actions/Action.cjs +1 -1
  2. package/dist/Actions/Action.cjs.map +1 -1
  3. package/dist/Actions/Action.js +2 -2
  4. package/dist/Actions/ContractAction.d.ts +11 -11
  5. package/dist/Actions/ContractAction.d.ts.map +1 -1
  6. package/dist/Actions/ERC721MintAction.d.ts +14 -14
  7. package/dist/Actions/ERC721MintAction.d.ts.map +1 -1
  8. package/dist/Actions/EventAction.cjs +1 -1
  9. package/dist/Actions/EventAction.cjs.map +1 -1
  10. package/dist/Actions/EventAction.d.ts +174 -41
  11. package/dist/Actions/EventAction.d.ts.map +1 -1
  12. package/dist/Actions/EventAction.js +557 -129
  13. package/dist/Actions/EventAction.js.map +1 -1
  14. package/dist/AllowLists/AllowList.cjs +1 -1
  15. package/dist/AllowLists/AllowList.cjs.map +1 -1
  16. package/dist/AllowLists/AllowList.d.ts +6 -4
  17. package/dist/AllowLists/AllowList.d.ts.map +1 -1
  18. package/dist/AllowLists/AllowList.js +45 -23
  19. package/dist/AllowLists/AllowList.js.map +1 -1
  20. package/dist/AllowLists/OpenAllowList.d.ts +423 -0
  21. package/dist/AllowLists/OpenAllowList.d.ts.map +1 -0
  22. package/dist/AllowLists/SimpleAllowList.cjs +1 -1
  23. package/dist/AllowLists/SimpleAllowList.cjs.map +1 -1
  24. package/dist/AllowLists/SimpleAllowList.d.ts +92 -37
  25. package/dist/AllowLists/SimpleAllowList.d.ts.map +1 -1
  26. package/dist/AllowLists/SimpleAllowList.js +60 -75
  27. package/dist/AllowLists/SimpleAllowList.js.map +1 -1
  28. package/dist/AllowLists/SimpleDenyList.cjs +1 -1
  29. package/dist/AllowLists/SimpleDenyList.cjs.map +1 -1
  30. package/dist/AllowLists/SimpleDenyList.d.ts +203 -11
  31. package/dist/AllowLists/SimpleDenyList.d.ts.map +1 -1
  32. package/dist/AllowLists/SimpleDenyList.js +11 -112
  33. package/dist/AllowLists/SimpleDenyList.js.map +1 -1
  34. package/dist/Auth/PassthroughAuth.cjs +1 -1
  35. package/dist/Auth/PassthroughAuth.js +1 -1
  36. package/dist/Boost.cjs +1 -1
  37. package/dist/Boost.cjs.map +1 -1
  38. package/dist/Boost.d.ts +20 -21
  39. package/dist/Boost.d.ts.map +1 -1
  40. package/dist/Boost.js +43 -57
  41. package/dist/Boost.js.map +1 -1
  42. package/dist/BoostCore-Btl5BdAs.cjs +3 -0
  43. package/dist/BoostCore-Btl5BdAs.cjs.map +1 -0
  44. package/dist/BoostCore-CD56zbYX.js +2641 -0
  45. package/dist/BoostCore-CD56zbYX.js.map +1 -0
  46. package/dist/BoostCore.cjs +1 -2
  47. package/dist/BoostCore.cjs.map +1 -1
  48. package/dist/BoostCore.d.ts +749 -78
  49. package/dist/BoostCore.d.ts.map +1 -1
  50. package/dist/BoostCore.js +29 -1150
  51. package/dist/BoostCore.js.map +1 -1
  52. package/dist/BoostRegistry.cjs +1 -1
  53. package/dist/BoostRegistry.cjs.map +1 -1
  54. package/dist/BoostRegistry.d.ts +80 -25
  55. package/dist/BoostRegistry.d.ts.map +1 -1
  56. package/dist/BoostRegistry.js +164 -82
  57. package/dist/BoostRegistry.js.map +1 -1
  58. package/dist/Budgets/Budget.cjs +1 -1
  59. package/dist/Budgets/Budget.cjs.map +1 -1
  60. package/dist/Budgets/Budget.d.ts.map +1 -1
  61. package/dist/Budgets/Budget.js +2 -2
  62. package/dist/Budgets/Budget.js.map +1 -1
  63. package/dist/Budgets/ManagedBudget.cjs +1 -1
  64. package/dist/Budgets/ManagedBudget.cjs.map +1 -1
  65. package/dist/Budgets/ManagedBudget.d.ts +103 -221
  66. package/dist/Budgets/ManagedBudget.d.ts.map +1 -1
  67. package/dist/Budgets/ManagedBudget.js +81 -298
  68. package/dist/Budgets/ManagedBudget.js.map +1 -1
  69. package/dist/Budgets/VestingBudget.d.ts +223 -89
  70. package/dist/Budgets/VestingBudget.d.ts.map +1 -1
  71. package/dist/Deployable/Contract.cjs +1 -1
  72. package/dist/Deployable/Contract.cjs.map +1 -1
  73. package/dist/Deployable/Contract.d.ts +4 -5
  74. package/dist/Deployable/Contract.d.ts.map +1 -1
  75. package/dist/Deployable/Contract.js +5 -7
  76. package/dist/Deployable/Contract.js.map +1 -1
  77. package/dist/Deployable/Deployable.cjs.map +1 -1
  78. package/dist/Deployable/Deployable.d.ts +1 -1
  79. package/dist/Deployable/Deployable.d.ts.map +1 -1
  80. package/dist/Deployable/Deployable.js +3 -5
  81. package/dist/Deployable/Deployable.js.map +1 -1
  82. package/dist/Deployable/DeployableTarget.cjs +1 -1
  83. package/dist/Deployable/DeployableTarget.cjs.map +1 -1
  84. package/dist/Deployable/DeployableTarget.d.ts +13 -13
  85. package/dist/Deployable/DeployableTarget.d.ts.map +1 -1
  86. package/dist/Deployable/DeployableTarget.js +28 -25
  87. package/dist/Deployable/DeployableTarget.js.map +1 -1
  88. package/dist/Deployable/DeployableTargetWithRBAC.cjs +2 -0
  89. package/dist/Deployable/DeployableTargetWithRBAC.cjs.map +1 -0
  90. package/dist/Deployable/DeployableTargetWithRBAC.d.ts +248 -0
  91. package/dist/Deployable/DeployableTargetWithRBAC.d.ts.map +1 -0
  92. package/dist/Deployable/DeployableTargetWithRBAC.js +320 -0
  93. package/dist/Deployable/DeployableTargetWithRBAC.js.map +1 -0
  94. package/dist/Incentive-CcnOIc8L.cjs +2 -0
  95. package/dist/Incentive-CcnOIc8L.cjs.map +1 -0
  96. package/dist/Incentive-rM5nKznp.js +313 -0
  97. package/dist/Incentive-rM5nKznp.js.map +1 -0
  98. package/dist/Incentives/AllowListIncentive.cjs +1 -1
  99. package/dist/Incentives/AllowListIncentive.cjs.map +1 -1
  100. package/dist/Incentives/AllowListIncentive.d.ts +38 -16
  101. package/dist/Incentives/AllowListIncentive.d.ts.map +1 -1
  102. package/dist/Incentives/AllowListIncentive.js +43 -29
  103. package/dist/Incentives/AllowListIncentive.js.map +1 -1
  104. package/dist/Incentives/CGDAIncentive.cjs +1 -1
  105. package/dist/Incentives/CGDAIncentive.cjs.map +1 -1
  106. package/dist/Incentives/CGDAIncentive.d.ts +234 -21
  107. package/dist/Incentives/CGDAIncentive.d.ts.map +1 -1
  108. package/dist/Incentives/CGDAIncentive.js +46 -32
  109. package/dist/Incentives/CGDAIncentive.js.map +1 -1
  110. package/dist/Incentives/ERC1155Incentive.d.ts +224 -37
  111. package/dist/Incentives/ERC1155Incentive.d.ts.map +1 -1
  112. package/dist/Incentives/ERC20Incentive.cjs +1 -1
  113. package/dist/Incentives/ERC20Incentive.cjs.map +1 -1
  114. package/dist/Incentives/ERC20Incentive.d.ts +234 -30
  115. package/dist/Incentives/ERC20Incentive.d.ts.map +1 -1
  116. package/dist/Incentives/ERC20Incentive.js +62 -46
  117. package/dist/Incentives/ERC20Incentive.js.map +1 -1
  118. package/dist/{Budgets/SimpleBudget.d.ts → Incentives/ERC20VariableCriteriaIncentive.d.ts} +333 -438
  119. package/dist/Incentives/ERC20VariableCriteriaIncentive.d.ts.map +1 -0
  120. package/dist/Incentives/ERC20VariableIncentive.d.ts +231 -29
  121. package/dist/Incentives/ERC20VariableIncentive.d.ts.map +1 -1
  122. package/dist/Incentives/Incentive.cjs +1 -1
  123. package/dist/Incentives/Incentive.cjs.map +1 -1
  124. package/dist/Incentives/Incentive.d.ts +4 -4
  125. package/dist/Incentives/Incentive.d.ts.map +1 -1
  126. package/dist/Incentives/Incentive.js +16 -296
  127. package/dist/Incentives/Incentive.js.map +1 -1
  128. package/dist/Incentives/PointsIncentive.cjs +1 -1
  129. package/dist/Incentives/PointsIncentive.cjs.map +1 -1
  130. package/dist/Incentives/PointsIncentive.d.ts +40 -18
  131. package/dist/Incentives/PointsIncentive.d.ts.map +1 -1
  132. package/dist/Incentives/PointsIncentive.js +38 -24
  133. package/dist/Incentives/PointsIncentive.js.map +1 -1
  134. package/dist/SimpleDenyList-BDXpY74P.js +133 -0
  135. package/dist/SimpleDenyList-BDXpY74P.js.map +1 -0
  136. package/dist/SimpleDenyList-DNj5qDWM.cjs +2 -0
  137. package/dist/SimpleDenyList-DNj5qDWM.cjs.map +1 -0
  138. package/dist/Validators/SignerValidator.cjs +1 -1
  139. package/dist/Validators/SignerValidator.cjs.map +1 -1
  140. package/dist/Validators/SignerValidator.d.ts +16 -16
  141. package/dist/Validators/SignerValidator.d.ts.map +1 -1
  142. package/dist/Validators/SignerValidator.js +32 -28
  143. package/dist/Validators/SignerValidator.js.map +1 -1
  144. package/dist/Validators/Validator.cjs +1 -1
  145. package/dist/Validators/Validator.cjs.map +1 -1
  146. package/dist/Validators/Validator.d.ts +1 -1
  147. package/dist/Validators/Validator.js +2 -2
  148. package/dist/Validators/Validator.js.map +1 -1
  149. package/dist/claiming.cjs.map +1 -1
  150. package/dist/claiming.d.ts +1 -1
  151. package/dist/claiming.js.map +1 -1
  152. package/dist/componentInterfaces-BBCFkrZv.js +14 -0
  153. package/dist/componentInterfaces-BBCFkrZv.js.map +1 -0
  154. package/dist/componentInterfaces-DRI_dQ-P.cjs +2 -0
  155. package/dist/componentInterfaces-DRI_dQ-P.cjs.map +1 -0
  156. package/dist/deployments-DF_6-7hH.cjs +2 -0
  157. package/dist/deployments-DF_6-7hH.cjs.map +1 -0
  158. package/dist/deployments-fJsWblwS.js +56 -0
  159. package/dist/deployments-fJsWblwS.js.map +1 -0
  160. package/dist/deployments.json +58 -0
  161. package/dist/errors.cjs +1 -1
  162. package/dist/errors.cjs.map +1 -1
  163. package/dist/errors.d.ts +256 -20
  164. package/dist/errors.d.ts.map +1 -1
  165. package/dist/errors.js +183 -26
  166. package/dist/errors.js.map +1 -1
  167. package/dist/{generated-57_Kffpz.js → generated-CsNyWPKA.js} +3843 -2084
  168. package/dist/generated-CsNyWPKA.js.map +1 -0
  169. package/dist/generated-DHerxf1y.cjs +3 -0
  170. package/dist/generated-DHerxf1y.cjs.map +1 -0
  171. package/dist/index.cjs +1 -1
  172. package/dist/index.d.ts +5 -0
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +142 -108
  175. package/dist/index.js.map +1 -1
  176. package/dist/transfers.cjs.map +1 -1
  177. package/dist/transfers.d.ts +1 -1
  178. package/dist/transfers.js.map +1 -1
  179. package/dist/utils.cjs +1 -1
  180. package/dist/utils.cjs.map +1 -1
  181. package/dist/utils.d.ts +26 -12
  182. package/dist/utils.d.ts.map +1 -1
  183. package/dist/utils.js +38 -23
  184. package/dist/utils.js.map +1 -1
  185. package/package.json +20 -10
  186. package/src/Actions/Action.test.ts +14 -13
  187. package/src/Actions/ContractAction.test.ts +10 -10
  188. package/src/Actions/ContractAction.ts +11 -12
  189. package/src/Actions/ERC721MintAction.test.ts +6 -6
  190. package/src/Actions/ERC721MintAction.ts +14 -15
  191. package/src/Actions/EventAction.test.ts +735 -109
  192. package/src/Actions/EventAction.ts +527 -88
  193. package/src/AllowLists/AllowList.test.ts +7 -7
  194. package/src/AllowLists/AllowList.ts +5 -3
  195. package/src/AllowLists/OpenAllowList.test.ts +40 -0
  196. package/src/AllowLists/OpenAllowList.ts +45 -0
  197. package/src/AllowLists/SimpleAllowList.test.ts +4 -4
  198. package/src/AllowLists/SimpleAllowList.ts +40 -61
  199. package/src/AllowLists/SimpleDenyList.test.ts +4 -4
  200. package/src/AllowLists/SimpleDenyList.ts +41 -17
  201. package/src/Auth/PassthroughAuth.test.ts +1 -1
  202. package/src/Boost.ts +21 -24
  203. package/src/BoostCore.test.ts +361 -306
  204. package/src/BoostCore.ts +403 -220
  205. package/src/BoostRegistry.test.ts +53 -0
  206. package/src/BoostRegistry.ts +161 -40
  207. package/src/Budgets/Budget.test.ts +2 -2
  208. package/src/Budgets/Budget.ts +1 -2
  209. package/src/Budgets/ManagedBudget.test.ts +106 -19
  210. package/src/Budgets/ManagedBudget.ts +49 -321
  211. package/src/Budgets/VestingBudget.test.ts +7 -7
  212. package/src/Budgets/VestingBudget.ts +36 -106
  213. package/src/Deployable/Contract.ts +4 -5
  214. package/src/Deployable/Deployable.ts +1 -1
  215. package/src/Deployable/DeployableTarget.ts +30 -19
  216. package/src/Deployable/DeployableTargetWithRBAC.test.ts +103 -0
  217. package/src/Deployable/DeployableTargetWithRBAC.ts +447 -0
  218. package/src/Incentives/AllowListIncentive.test.ts +12 -12
  219. package/src/Incentives/AllowListIncentive.ts +30 -15
  220. package/src/Incentives/CGDAIncentive.test.ts +9 -6
  221. package/src/Incentives/CGDAIncentive.ts +39 -18
  222. package/src/Incentives/ERC1155Incentive.test.ts +3 -3
  223. package/src/Incentives/ERC1155Incentive.ts +30 -29
  224. package/src/Incentives/ERC20Incentive.test.ts +9 -6
  225. package/src/Incentives/ERC20Incentive.ts +54 -27
  226. package/src/Incentives/ERC20VariableCriteriaIncentive.test.ts +184 -0
  227. package/src/Incentives/ERC20VariableCriteriaIncentive.ts +325 -0
  228. package/src/Incentives/ERC20VariableIncentive.test.ts +8 -11
  229. package/src/Incentives/ERC20VariableIncentive.ts +50 -26
  230. package/src/Incentives/Incentive.test.ts +4 -1
  231. package/src/Incentives/Incentive.ts +7 -6
  232. package/src/Incentives/PointsIncentive.test.ts +24 -25
  233. package/src/Incentives/PointsIncentive.ts +32 -17
  234. package/src/Validators/SignerValidator.test.ts +6 -6
  235. package/src/Validators/SignerValidator.ts +20 -17
  236. package/src/Validators/Validator.test.ts +2 -2
  237. package/src/Validators/Validator.ts +1 -1
  238. package/src/claiming.ts +1 -1
  239. package/src/errors.ts +345 -21
  240. package/src/index.test.ts +118 -36
  241. package/src/index.ts +5 -0
  242. package/src/transfers.ts +1 -1
  243. package/src/utils.test.ts +2 -2
  244. package/src/utils.ts +61 -12
  245. package/dist/Budgets/SimpleBudget.d.ts.map +0 -1
  246. package/dist/componentInterfaces-CKCBwG16.cjs +0 -2
  247. package/dist/componentInterfaces-CKCBwG16.cjs.map +0 -1
  248. package/dist/componentInterfaces-DYkaxBda.js +0 -13
  249. package/dist/componentInterfaces-DYkaxBda.js.map +0 -1
  250. package/dist/generated-57_Kffpz.js.map +0 -1
  251. package/dist/generated-wKBNvm48.cjs +0 -3
  252. package/dist/generated-wKBNvm48.cjs.map +0 -1
  253. package/src/Budgets/SimpleBudget.test.ts +0 -152
  254. package/src/Budgets/SimpleBudget.ts +0 -564
@@ -1 +1 @@
1
- {"version":3,"file":"ERC20Incentive.cjs","sources":["../../src/Incentives/ERC20Incentive.ts"],"sourcesContent":["import {\n erc20IncentiveAbi,\n readErc20IncentiveAsset,\n readErc20IncentiveClaimed,\n readErc20IncentiveClaims,\n readErc20IncentiveCurrentReward,\n readErc20IncentiveEntries,\n readErc20IncentiveIsClaimable,\n readErc20IncentiveLimit,\n readErc20IncentiveOwner,\n readErc20IncentiveReward,\n readErc20IncentiveStrategy,\n simulateErc20IncentiveClaim,\n simulateErc20IncentiveClawback,\n simulateErc20IncentiveDrawRaffle,\n writeErc20IncentiveClaim,\n writeErc20IncentiveClawback,\n writeErc20IncentiveDrawRaffle,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/incentives/ERC20Incentive.sol/ERC20Incentive.json';\nimport {\n type Address,\n type ContractEventName,\n type Hex,\n encodeAbiParameters,\n} from 'viem';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n type ClaimPayload,\n type StrategyType,\n prepareClaimPayload,\n} from '../claiming';\nimport {\n type GenericLog,\n type ReadParams,\n RegistryType,\n type WriteParams,\n} from '../utils';\n\nexport { erc20IncentiveAbi };\n\n/**\n * The object representation of a `ERC20Incentive.InitPayload`\n *\n * @export\n * @interface ERC20IncentivePayload\n * @typedef {ERC20IncentivePayload}\n */\nexport interface ERC20IncentivePayload {\n /**\n * The address of the incentivized asset.\n *\n * @type {Address}\n */\n asset: Address;\n /**\n * The type of disbursement strategy for the incentive. `StrategyType.MINT` is not supported for `ERC20Incentives`\n *\n * @type {StrategyType}\n */\n strategy: StrategyType;\n /**\n * The amount of the asset to distribute.\n *\n * @type {bigint}\n */\n reward: bigint;\n /**\n * How many times can this incentive be claimed.\n *\n * @type {bigint}\n */\n limit: bigint;\n}\n\n/**\n * A generic `viem.Log` event with support for `ERC20Incentive` event types.\n *\n * @export\n * @typedef {ERC20IncentiveLog}\n * @template {ContractEventName<typeof erc20IncentiveAbi>} [event=ContractEventName<\n * typeof erc20IncentiveAbi\n * >]\n */\nexport type ERC20IncentiveLog<\n event extends ContractEventName<typeof erc20IncentiveAbi> = ContractEventName<\n typeof erc20IncentiveAbi\n >,\n> = GenericLog<typeof erc20IncentiveAbi, event>;\n\n/**\n * A simple ERC20 incentive implementation that allows claiming of tokens\n *\n * @export\n * @class ERC20Incentive\n * @typedef {ERC20Incentive}\n * @extends {DeployableTarget<ERC20IncentivePayload>}\n */\nexport class ERC20Incentive extends DeployableTarget<\n ERC20IncentivePayload,\n typeof erc20IncentiveAbi\n> {\n public override readonly abi = erc20IncentiveAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Address}\n */\n public static override base: Address = import.meta.env\n .VITE_ERC20_INCENTIVE_BASE;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.INCENTIVE;\n\n /**\n * The owner of the incentive\n *\n * @public\n * @async\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'owner'>} [params]\n * @returns {unknown}\n */\n public async owner(params?: ReadParams<typeof erc20IncentiveAbi, 'owner'>) {\n return await readErc20IncentiveOwner(this._config, {\n address: this.assertValidAddress(),\n args: [],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Calculates the current reward based on the time since the last claim. The reward is calculated based on the time since the last claim, the available budget, and the reward parameters. It increases linearly over time in the absence of claims, with each hour adding `rewardBoost` to the current reward, up to the available budget. For example, if there is one claim in the first hour, then no claims for three hours, the claimable reward would be `initialReward - rewardDecay + (rewardBoost * 3)`\n *\n * @public\n * @async\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'currentReward'>} [params]\n * @returns {Promise<bigint>} - The current reward\n */\n public async currentReward(\n params?: ReadParams<typeof erc20IncentiveAbi, 'currentReward'>,\n ) {\n return await readErc20IncentiveCurrentReward(this._config, {\n address: this.assertValidAddress(),\n args: [],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The number of claims that have been made\n *\n * @public\n * @async\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'claims'>} [params]\n * @returns {Promise<bigint>}\n */\n public async claims(params?: ReadParams<typeof erc20IncentiveAbi, 'claims'>) {\n return await readErc20IncentiveClaims(this._config, {\n address: this.assertValidAddress(),\n args: [],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * A mapping of address to claim status\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'claimed'>} [params]\n * @returns {Promise<boolean>}\n */\n public async claimed(\n address: Address,\n params?: ReadParams<typeof erc20IncentiveAbi, 'claimed'>,\n ) {\n return await readErc20IncentiveClaimed(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The address of the ERC20-like token\n *\n * @public\n * @async\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'asset'>} [params]\n * @returns {Promise<Address>}\n */\n public async asset(params?: ReadParams<typeof erc20IncentiveAbi, 'asset'>) {\n return await readErc20IncentiveAsset(this._config, {\n address: this.assertValidAddress(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The strategy for the incentive (MINT or POOL)\n *\n * @public\n * @async\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'strategy'>} [params]\n * @returns {Promise<StrategyType>}\n */\n public strategy(\n params?: ReadParams<typeof erc20IncentiveAbi, 'strategy'>,\n ): Promise<StrategyType> {\n return readErc20IncentiveStrategy(this._config, {\n address: this.assertValidAddress(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n }) as Promise<StrategyType>;\n }\n\n /**\n * The reward amount issued for each claim\n *\n * @public\n * @async\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'reward'>} [params]\n * @returns {Promise<bigint>}\n */\n public async reward(params?: ReadParams<typeof erc20IncentiveAbi, 'reward'>) {\n return await readErc20IncentiveReward(this._config, {\n address: this.assertValidAddress(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The limit (max claims, or max entries for raffles)\n *\n * @public\n * @async\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'limit'>} [params]\n * @returns {unknown}\n */\n public async limit(params?: ReadParams<typeof erc20IncentiveAbi, 'limit'>) {\n return await readErc20IncentiveLimit(this._config, {\n address: this.assertValidAddress(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The set of addresses that have claimed a slot in the incentive raffle, accessed by bigint index.\n *\n * @public\n * @async\n * @param {bigint} i - Index of address\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'entries'>} [params]\n * @returns {Promise<Address>}\n */\n public async entries(\n i: bigint,\n params?: ReadParams<typeof erc20IncentiveAbi, 'entries'>,\n ) {\n return await readErc20IncentiveEntries(this._config, {\n address: this.assertValidAddress(),\n args: [i],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Claim the incentive\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?WriteParams<typeof erc20IncentiveAbi, 'claim'>} [params]\n * @returns {Promise<boolean>} - Returns true if successfully claimed\n */\n protected async claim(\n payload: ClaimPayload,\n params?: WriteParams<typeof erc20IncentiveAbi, 'claim'>,\n ) {\n return await this.awaitResult(this.claimRaw(payload, params));\n }\n\n /**\n * Claim the incentive\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?WriteParams<typeof erc20IncentiveAbi, 'claim'>} [params]\n * @returns {Promise<boolean>} - Returns true if successfully claimed\n */\n protected async claimRaw(\n payload: ClaimPayload,\n params?: WriteParams<typeof erc20IncentiveAbi, 'claim'>,\n ) {\n const { request, result } = await simulateErc20IncentiveClaim(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareClaimPayload(payload)],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeErc20IncentiveClaim(this._config, request);\n return { hash, result };\n }\n\n /**\n * Clawback assets from the incentive\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?WriteParams<typeof erc20IncentiveAbi, 'clawback'>} [params]\n * @returns {Promise<boolean>} - True if the assets were successfully clawbacked\n */\n public async clawback(\n payload: ClaimPayload,\n params?: WriteParams<typeof erc20IncentiveAbi, 'clawback'>,\n ) {\n return await this.awaitResult(this.clawbackRaw(payload, params));\n }\n\n /**\n * Clawback assets from the incentive\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?WriteParams<typeof erc20IncentiveAbi, 'clawback'>} [params]\n * @returns {Promise<boolean>} - True if the assets were successfully clawbacked\n */\n public async clawbackRaw(\n payload: ClaimPayload,\n params?: WriteParams<typeof erc20IncentiveAbi, 'clawback'>,\n ) {\n const { request, result } = await simulateErc20IncentiveClawback(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareClaimPayload(payload)],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeErc20IncentiveClawback(this._config, request);\n return { hash, result };\n }\n\n /**\n * Check if an incentive is claimable. For the POOL strategy, the `bytes data` portion of the payload ignored. The recipient must not have already claimed the incentive.\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?ReadParams<typeof erc20IncentiveAbi, 'isClaimable'>} [params]\n * @returns {unknown} = True if the incentive is claimable based on the data payload\n */\n public async isClaimable(\n payload: ClaimPayload,\n params?: ReadParams<typeof erc20IncentiveAbi, 'isClaimable'>,\n ) {\n return await readErc20IncentiveIsClaimable(this._config, {\n address: this.assertValidAddress(),\n args: [prepareClaimPayload(payload)],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Draw a winner from the raffle. Only callable by owner. Only valid when the strategy is set to `Strategy.RAFFLE`\n *\n * @public\n * @async\n * @param {?WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>} [params]\n * @returns {Promise<void>}\n */\n public async drawRaffle(\n params?: WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>,\n ) {\n return await this.awaitResult(this.drawRaffleRaw(params));\n }\n\n /**\n * Draw a winner from the raffle. Only callable by owner. Only valid when the strategy is set to `Strategy.RAFFLE`\n *\n * @public\n * @async\n * @param {?WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>} [params]\n * @returns {Promise<void>}\n */\n public async drawRaffleRaw(\n params?: WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>,\n ) {\n const { request, result } = await simulateErc20IncentiveDrawRaffle(\n this._config,\n {\n address: this.assertValidAddress(),\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeErc20IncentiveDrawRaffle(this._config, request);\n return { hash, result };\n }\n\n /**\n * @inheritdoc\n *\n * @public\n * @param {?ERC20IncentivePayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: ERC20IncentivePayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n return {\n abi: erc20IncentiveAbi,\n bytecode: bytecode as Hex,\n args: [prepareERC20IncentivePayload(payload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n}\n\n/**\n * Given a {@link ERC20IncentivePayload}, properly encode a `ERC20Incentive.InitPayload` for use with {@link ERC20Incentive} initialization.\n *\n * @param {ERC20IncentivePayload} param0\n * @param {Address} param0.asset - The address of the incentivized asset.\n * @param {StrategyType} param0.strategy - The type of disbursement strategy for the incentive. `StrategyType.MINT` is not supported for `ERC20Incentives`\n * @param {bigint} param0.reward - The amount of the asset to distribute.\n * @param {bigint} param0.limit - How many times can this incentive be claimed.\n * @returns {*}\n */\nexport function prepareERC20IncentivePayload({\n asset,\n strategy,\n reward,\n limit,\n}: ERC20IncentivePayload) {\n return encodeAbiParameters(\n [\n { type: 'address', name: 'asset' },\n { type: 'uint8', name: 'strategy' },\n { type: 'uint256', name: 'reward' },\n { type: 'uint256', name: 'limit' },\n ],\n [asset, strategy, reward, limit],\n );\n}\n"],"names":["_ERC20Incentive","DeployableTarget","erc20IncentiveAbi","params","readErc20IncentiveOwner","readErc20IncentiveCurrentReward","readErc20IncentiveClaims","address","readErc20IncentiveClaimed","readErc20IncentiveAsset","readErc20IncentiveStrategy","readErc20IncentiveReward","readErc20IncentiveLimit","i","readErc20IncentiveEntries","payload","request","result","simulateErc20IncentiveClaim","prepareClaimPayload","writeErc20IncentiveClaim","simulateErc20IncentiveClawback","writeErc20IncentiveClawback","readErc20IncentiveIsClaimable","simulateErc20IncentiveDrawRaffle","writeErc20IncentiveDrawRaffle","_payload","_options","options","bytecode","prepareERC20IncentivePayload","RegistryType","ERC20Incentive","asset","strategy","reward","limit","encodeAbiParameters"],"mappings":"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"}
1
+ {"version":3,"file":"ERC20Incentive.cjs","sources":["../../src/Incentives/ERC20Incentive.ts"],"sourcesContent":["import {\n erc20IncentiveAbi,\n readErc20IncentiveAsset,\n readErc20IncentiveClaimed,\n readErc20IncentiveClaims,\n readErc20IncentiveCurrentReward,\n readErc20IncentiveEntries,\n readErc20IncentiveIsClaimable,\n readErc20IncentiveLimit,\n readErc20IncentiveOwner,\n readErc20IncentiveReward,\n readErc20IncentiveStrategy,\n simulateErc20IncentiveClaim,\n simulateErc20IncentiveClawback,\n simulateErc20IncentiveDrawRaffle,\n writeErc20IncentiveClaim,\n writeErc20IncentiveClawback,\n writeErc20IncentiveDrawRaffle,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/incentives/ERC20Incentive.sol/ERC20Incentive.json';\nimport {\n type Address,\n type ContractEventName,\n type Hex,\n encodeAbiParameters,\n zeroAddress,\n zeroHash,\n} from 'viem';\nimport { ERC20Incentive as ERC20IncentiveBases } from '../../dist/deployments.json';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n type ClaimPayload,\n type StrategyType,\n prepareClaimPayload,\n} from '../claiming';\nimport {\n type GenericLog,\n type ReadParams,\n RegistryType,\n type WriteParams,\n} from '../utils';\n\nexport { erc20IncentiveAbi };\n\n/**\n * The object representation of a `ERC20Incentive.InitPayload`\n *\n * @export\n * @interface ERC20IncentivePayload\n * @typedef {ERC20IncentivePayload}\n */\nexport interface ERC20IncentivePayload {\n /**\n * The address of the incentivized asset.\n *\n * @type {Address}\n */\n asset: Address;\n /**\n * The type of disbursement strategy for the incentive. `StrategyType.MINT` is not supported for `ERC20Incentives`\n *\n * @type {StrategyType}\n */\n strategy: StrategyType;\n /**\n * The amount of the asset to distribute.\n *\n * @type {bigint}\n */\n reward: bigint;\n /**\n * How many times can this incentive be claimed.\n *\n * @type {bigint}\n */\n limit: bigint;\n /**\n * (Optional) The address of the entity that can trigger a raffle.\n * If omitted, the incentive will have no manager with permissions to draw the raffle.\n *\n * @type {Address}\n * @optional\n */\n manager?: Address;\n}\n\n/**\n * A generic `viem.Log` event with support for `ERC20Incentive` event types.\n *\n * @export\n * @typedef {ERC20IncentiveLog}\n * @template {ContractEventName<typeof erc20IncentiveAbi>} [event=ContractEventName<\n * typeof erc20IncentiveAbi\n * >]\n */\nexport type ERC20IncentiveLog<\n event extends ContractEventName<typeof erc20IncentiveAbi> = ContractEventName<\n typeof erc20IncentiveAbi\n >,\n> = GenericLog<typeof erc20IncentiveAbi, event>;\n\n/**\n * A simple ERC20 incentive implementation that allows claiming of tokens\n *\n * @export\n * @class ERC20Incentive\n * @typedef {ERC20Incentive}\n * @extends {DeployableTarget<ERC20IncentivePayload>}\n */\nexport class ERC20Incentive extends DeployableTarget<\n ERC20IncentivePayload,\n typeof erc20IncentiveAbi\n> {\n public override readonly abi = erc20IncentiveAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Record<number, Address>}\n */\n public static override bases: Record<number, Address> = {\n 31337: import.meta.env.VITE_ERC20_INCENTIVE_BASE,\n ...(ERC20IncentiveBases as Record<number, Address>),\n };\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.INCENTIVE;\n\n /**\n * The owner of the incentive\n *\n * @public\n * @async\n * @param {?ReadParams} [params]\n * @returns {Promise<Address>}\n */\n public async owner(params?: ReadParams<typeof erc20IncentiveAbi, 'owner'>) {\n return await readErc20IncentiveOwner(this._config, {\n address: this.assertValidAddress(),\n args: [],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Calculates the current reward based on the time since the last claim. The reward is calculated based on the time since the last claim, the available budget, and the reward parameters. It increases linearly over time in the absence of claims, with each hour adding `rewardBoost` to the current reward, up to the available budget. For example, if there is one claim in the first hour, then no claims for three hours, the claimable reward would be `initialReward - rewardDecay + (rewardBoost * 3)`\n *\n * @public\n * @async\n * @param {?ReadParams} [params]\n * @returns {Promise<bigint>} - The current reward\n */\n public async currentReward(\n params?: ReadParams<typeof erc20IncentiveAbi, 'currentReward'>,\n ) {\n return await readErc20IncentiveCurrentReward(this._config, {\n address: this.assertValidAddress(),\n args: [],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The number of claims that have been made\n *\n * @public\n * @async\n * @param {?ReadParams} [params]\n * @returns {Promise<bigint>}\n */\n public async claims(params?: ReadParams<typeof erc20IncentiveAbi, 'claims'>) {\n return await readErc20IncentiveClaims(this._config, {\n address: this.assertValidAddress(),\n args: [],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * A mapping of address to claim status\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?ReadParams} [params]\n * @returns {Promise<boolean>}\n */\n public async claimed(\n address: Address,\n params?: ReadParams<typeof erc20IncentiveAbi, 'claimed'>,\n ) {\n return await readErc20IncentiveClaimed(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The address of the ERC20-like token\n *\n * @public\n * @async\n * @param {?ReadParams} [params]\n * @returns {Promise<Address>}\n */\n public async asset(params?: ReadParams<typeof erc20IncentiveAbi, 'asset'>) {\n return await readErc20IncentiveAsset(this._config, {\n address: this.assertValidAddress(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The strategy for the incentive (MINT or POOL)\n *\n * @public\n * @async\n * @param {?ReadParams} [params]\n * @returns {Promise<StrategyType>}\n */\n public strategy(\n params?: ReadParams<typeof erc20IncentiveAbi, 'strategy'>,\n ): Promise<StrategyType> {\n return readErc20IncentiveStrategy(this._config, {\n address: this.assertValidAddress(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n }) as Promise<StrategyType>;\n }\n\n /**\n * The reward amount issued for each claim\n *\n * @public\n * @async\n * @param {?ReadParams} [params]\n * @returns {Promise<bigint>}\n */\n public async reward(params?: ReadParams<typeof erc20IncentiveAbi, 'reward'>) {\n return await readErc20IncentiveReward(this._config, {\n address: this.assertValidAddress(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The limit (max claims, or max entries for raffles)\n *\n * @public\n * @async\n * @param {?ReadParams} [params]\n * @returns {Promise<bigint>}\n */\n public async limit(params?: ReadParams<typeof erc20IncentiveAbi, 'limit'>) {\n return await readErc20IncentiveLimit(this._config, {\n address: this.assertValidAddress(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * The set of addresses that have claimed a slot in the incentive raffle, accessed by bigint index.\n *\n * @public\n * @async\n * @param {bigint} i - Index of address\n * @param {?ReadParams} [params]\n * @returns {Promise<Address>}\n */\n public async entries(\n i: bigint,\n params?: ReadParams<typeof erc20IncentiveAbi, 'entries'>,\n ) {\n return await readErc20IncentiveEntries(this._config, {\n address: this.assertValidAddress(),\n args: [i],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Claim the incentive\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - Returns true if successfully claimed\n */\n protected async claim(\n payload: ClaimPayload,\n params?: WriteParams<typeof erc20IncentiveAbi, 'claim'>,\n ) {\n return await this.awaitResult(this.claimRaw(payload, params));\n }\n\n /**\n * Claim the incentive\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - Returns true if successfully claimed\n */\n protected async claimRaw(\n payload: ClaimPayload,\n params?: WriteParams<typeof erc20IncentiveAbi, 'claim'>,\n ) {\n const { request, result } = await simulateErc20IncentiveClaim(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareClaimPayload(payload)],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeErc20IncentiveClaim(this._config, request);\n return { hash, result };\n }\n\n /**\n * Clawback assets from the incentive\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the assets were successfully clawbacked\n */\n public async clawback(\n payload: ClaimPayload,\n params?: WriteParams<typeof erc20IncentiveAbi, 'clawback'>,\n ) {\n return await this.awaitResult(this.clawbackRaw(payload, params));\n }\n\n /**\n * Clawback assets from the incentive\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the assets were successfully clawbacked\n */\n public async clawbackRaw(\n payload: ClaimPayload,\n params?: WriteParams<typeof erc20IncentiveAbi, 'clawback'>,\n ) {\n const { request, result } = await simulateErc20IncentiveClawback(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareClaimPayload(payload)],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeErc20IncentiveClawback(this._config, request);\n return { hash, result };\n }\n\n /**\n * Check if an incentive is claimable. For the POOL strategy, the `bytes data` portion of the payload ignored. The recipient must not have already claimed the incentive.\n *\n * @public\n * @async\n * @param {ClaimPayload} payload\n * @param {?ReadParams} [params]\n * @returns {Promise<boolean>} = True if the incentive is claimable based on the data payload\n */\n public async isClaimable(\n payload: ClaimPayload,\n params?: ReadParams<typeof erc20IncentiveAbi, 'isClaimable'>,\n ) {\n return await readErc20IncentiveIsClaimable(this._config, {\n address: this.assertValidAddress(),\n args: [prepareClaimPayload(payload)],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Draw a winner from the raffle. Only callable by owner. Only valid when the strategy is set to `Strategy.RAFFLE`\n *\n * @public\n * @async\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async drawRaffle(\n params?: WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>,\n ) {\n return await this.awaitResult(this.drawRaffleRaw(params));\n }\n\n /**\n * Draw a winner from the raffle. Only callable by owner. Only valid when the strategy is set to `Strategy.RAFFLE`\n *\n * @public\n * @async\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async drawRaffleRaw(\n params?: WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>,\n ) {\n const { request, result } = await simulateErc20IncentiveDrawRaffle(\n this._config,\n {\n address: this.assertValidAddress(),\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeErc20IncentiveDrawRaffle(this._config, request);\n return { hash, result };\n }\n\n /**\n * @inheritdoc\n *\n * @public\n * @param {?ERC20IncentivePayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: ERC20IncentivePayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n return {\n abi: erc20IncentiveAbi,\n bytecode: bytecode as Hex,\n args: [prepareERC20IncentivePayload(payload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n\n /**\n * Builds the claim data for the ERC20Incentive.\n *\n * @public\n * @returns {Hash} A `zeroHash`, as ERC20Incentive doesn't require specific claim data.\n * @description This function returns `zeroHash` because ERC20Incentive doesn't use any specific claim data.\n */\n public buildClaimData() {\n return zeroHash;\n }\n}\n\n/**\n * Given a {@link ERC20IncentivePayload}, properly encode a `ERC20Incentive.InitPayload` for use with {@link ERC20Incentive} initialization.\n *\n * @param {ERC20IncentivePayload} param0\n * @param {Address} param0.asset - The address of the incentivized asset.\n * @param {StrategyType} param0.strategy - The type of disbursement strategy for the incentive. `StrategyType.MINT` is not supported for `ERC20Incentives`\n * @param {bigint} param0.reward - The amount of the asset to distribute.\n * @param {bigint} param0.limit - How many times can this incentive be claimed.\n * @param {Address} [param0.manager=zeroAddress] - The entity that can draw raffles - defaults to unset\n * @returns {Hex}\n */\nexport function prepareERC20IncentivePayload({\n asset,\n strategy,\n reward,\n limit,\n manager = zeroAddress,\n}: ERC20IncentivePayload) {\n return encodeAbiParameters(\n [\n { type: 'address', name: 'asset' },\n { type: 'uint8', name: 'strategy' },\n { type: 'uint256', name: 'reward' },\n { type: 'uint256', name: 'limit' },\n { type: 'address', name: 'manager' },\n ],\n [asset, strategy, reward, limit, manager],\n );\n}\n"],"names":["_ERC20Incentive","DeployableTarget","erc20IncentiveAbi","params","readErc20IncentiveOwner","readErc20IncentiveCurrentReward","readErc20IncentiveClaims","address","readErc20IncentiveClaimed","readErc20IncentiveAsset","readErc20IncentiveStrategy","readErc20IncentiveReward","readErc20IncentiveLimit","i","readErc20IncentiveEntries","payload","request","result","simulateErc20IncentiveClaim","prepareClaimPayload","writeErc20IncentiveClaim","simulateErc20IncentiveClawback","writeErc20IncentiveClawback","readErc20IncentiveIsClaimable","simulateErc20IncentiveDrawRaffle","writeErc20IncentiveDrawRaffle","_payload","_options","options","bytecode","prepareERC20IncentivePayload","zeroHash","ERC20IncentiveBases","RegistryType","ERC20Incentive","asset","strategy","reward","limit","manager","zeroAddress","encodeAbiParameters"],"mappings":"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"}
@@ -37,6 +37,14 @@ export interface ERC20IncentivePayload {
37
37
  * @type {bigint}
38
38
  */
39
39
  limit: bigint;
40
+ /**
41
+ * (Optional) The address of the entity that can trigger a raffle.
42
+ * If omitted, the incentive will have no manager with permissions to draw the raffle.
43
+ *
44
+ * @type {Address}
45
+ * @optional
46
+ */
47
+ manager?: Address;
40
48
  }
41
49
  /**
42
50
  * A generic `viem.Log` event with support for `ERC20Incentive` event types.
@@ -117,6 +125,10 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
117
125
  readonly type: "error";
118
126
  readonly inputs: readonly [];
119
127
  readonly name: "InvalidInitializationData";
128
+ }, {
129
+ readonly type: "error";
130
+ readonly inputs: readonly [];
131
+ readonly name: "LengthMismatch";
120
132
  }, {
121
133
  readonly type: "error";
122
134
  readonly inputs: readonly [];
@@ -211,6 +223,41 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
211
223
  readonly indexed: true;
212
224
  }];
213
225
  readonly name: "OwnershipTransferred";
226
+ }, {
227
+ readonly type: "event";
228
+ readonly anonymous: false;
229
+ readonly inputs: readonly [{
230
+ readonly name: "user";
231
+ readonly internalType: "address";
232
+ readonly type: "address";
233
+ readonly indexed: true;
234
+ }, {
235
+ readonly name: "roles";
236
+ readonly internalType: "uint256";
237
+ readonly type: "uint256";
238
+ readonly indexed: true;
239
+ }];
240
+ readonly name: "RolesUpdated";
241
+ }, {
242
+ readonly type: "function";
243
+ readonly inputs: readonly [];
244
+ readonly name: "ADMIN_ROLE";
245
+ readonly outputs: readonly [{
246
+ readonly name: "";
247
+ readonly internalType: "uint256";
248
+ readonly type: "uint256";
249
+ }];
250
+ readonly stateMutability: "view";
251
+ }, {
252
+ readonly type: "function";
253
+ readonly inputs: readonly [];
254
+ readonly name: "MANAGER_ROLE";
255
+ readonly outputs: readonly [{
256
+ readonly name: "";
257
+ readonly internalType: "uint256";
258
+ readonly type: "uint256";
259
+ }];
260
+ readonly stateMutability: "view";
214
261
  }, {
215
262
  readonly type: "function";
216
263
  readonly inputs: readonly [];
@@ -279,8 +326,12 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
279
326
  readonly name: "clawback";
280
327
  readonly outputs: readonly [{
281
328
  readonly name: "";
282
- readonly internalType: "bool";
283
- readonly type: "bool";
329
+ readonly internalType: "uint256";
330
+ readonly type: "uint256";
331
+ }, {
332
+ readonly name: "";
333
+ readonly internalType: "address";
334
+ readonly type: "address";
284
335
  }];
285
336
  readonly stateMutability: "nonpayable";
286
337
  }, {
@@ -333,6 +384,70 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
333
384
  readonly type: "bytes4";
334
385
  }];
335
386
  readonly stateMutability: "pure";
387
+ }, {
388
+ readonly type: "function";
389
+ readonly inputs: readonly [{
390
+ readonly name: "accounts_";
391
+ readonly internalType: "address[]";
392
+ readonly type: "address[]";
393
+ }, {
394
+ readonly name: "roles_";
395
+ readonly internalType: "uint256[]";
396
+ readonly type: "uint256[]";
397
+ }];
398
+ readonly name: "grantManyRoles";
399
+ readonly outputs: readonly [];
400
+ readonly stateMutability: "nonpayable";
401
+ }, {
402
+ readonly type: "function";
403
+ readonly inputs: readonly [{
404
+ readonly name: "user";
405
+ readonly internalType: "address";
406
+ readonly type: "address";
407
+ }, {
408
+ readonly name: "roles";
409
+ readonly internalType: "uint256";
410
+ readonly type: "uint256";
411
+ }];
412
+ readonly name: "grantRoles";
413
+ readonly outputs: readonly [];
414
+ readonly stateMutability: "payable";
415
+ }, {
416
+ readonly type: "function";
417
+ readonly inputs: readonly [{
418
+ readonly name: "user";
419
+ readonly internalType: "address";
420
+ readonly type: "address";
421
+ }, {
422
+ readonly name: "roles";
423
+ readonly internalType: "uint256";
424
+ readonly type: "uint256";
425
+ }];
426
+ readonly name: "hasAllRoles";
427
+ readonly outputs: readonly [{
428
+ readonly name: "";
429
+ readonly internalType: "bool";
430
+ readonly type: "bool";
431
+ }];
432
+ readonly stateMutability: "view";
433
+ }, {
434
+ readonly type: "function";
435
+ readonly inputs: readonly [{
436
+ readonly name: "user";
437
+ readonly internalType: "address";
438
+ readonly type: "address";
439
+ }, {
440
+ readonly name: "roles";
441
+ readonly internalType: "uint256";
442
+ readonly type: "uint256";
443
+ }];
444
+ readonly name: "hasAnyRole";
445
+ readonly outputs: readonly [{
446
+ readonly name: "";
447
+ readonly internalType: "bool";
448
+ readonly type: "bool";
449
+ }];
450
+ readonly stateMutability: "view";
336
451
  }, {
337
452
  readonly type: "function";
338
453
  readonly inputs: readonly [{
@@ -343,6 +458,20 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
343
458
  readonly name: "initialize";
344
459
  readonly outputs: readonly [];
345
460
  readonly stateMutability: "nonpayable";
461
+ }, {
462
+ readonly type: "function";
463
+ readonly inputs: readonly [{
464
+ readonly name: "account_";
465
+ readonly internalType: "address";
466
+ readonly type: "address";
467
+ }];
468
+ readonly name: "isAuthorized";
469
+ readonly outputs: readonly [{
470
+ readonly name: "";
471
+ readonly internalType: "bool";
472
+ readonly type: "bool";
473
+ }];
474
+ readonly stateMutability: "view";
346
475
  }, {
347
476
  readonly type: "function";
348
477
  readonly inputs: readonly [{
@@ -415,12 +544,50 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
415
544
  readonly name: "renounceOwnership";
416
545
  readonly outputs: readonly [];
417
546
  readonly stateMutability: "payable";
547
+ }, {
548
+ readonly type: "function";
549
+ readonly inputs: readonly [{
550
+ readonly name: "roles";
551
+ readonly internalType: "uint256";
552
+ readonly type: "uint256";
553
+ }];
554
+ readonly name: "renounceRoles";
555
+ readonly outputs: readonly [];
556
+ readonly stateMutability: "payable";
418
557
  }, {
419
558
  readonly type: "function";
420
559
  readonly inputs: readonly [];
421
560
  readonly name: "requestOwnershipHandover";
422
561
  readonly outputs: readonly [];
423
562
  readonly stateMutability: "payable";
563
+ }, {
564
+ readonly type: "function";
565
+ readonly inputs: readonly [{
566
+ readonly name: "accounts_";
567
+ readonly internalType: "address[]";
568
+ readonly type: "address[]";
569
+ }, {
570
+ readonly name: "roles_";
571
+ readonly internalType: "uint256[]";
572
+ readonly type: "uint256[]";
573
+ }];
574
+ readonly name: "revokeManyRoles";
575
+ readonly outputs: readonly [];
576
+ readonly stateMutability: "nonpayable";
577
+ }, {
578
+ readonly type: "function";
579
+ readonly inputs: readonly [{
580
+ readonly name: "user";
581
+ readonly internalType: "address";
582
+ readonly type: "address";
583
+ }, {
584
+ readonly name: "roles";
585
+ readonly internalType: "uint256";
586
+ readonly type: "uint256";
587
+ }];
588
+ readonly name: "revokeRoles";
589
+ readonly outputs: readonly [];
590
+ readonly stateMutability: "payable";
424
591
  }, {
425
592
  readonly type: "function";
426
593
  readonly inputs: readonly [];
@@ -431,6 +598,34 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
431
598
  readonly type: "uint256";
432
599
  }];
433
600
  readonly stateMutability: "view";
601
+ }, {
602
+ readonly type: "function";
603
+ readonly inputs: readonly [{
604
+ readonly name: "user";
605
+ readonly internalType: "address";
606
+ readonly type: "address";
607
+ }];
608
+ readonly name: "rolesOf";
609
+ readonly outputs: readonly [{
610
+ readonly name: "roles";
611
+ readonly internalType: "uint256";
612
+ readonly type: "uint256";
613
+ }];
614
+ readonly stateMutability: "view";
615
+ }, {
616
+ readonly type: "function";
617
+ readonly inputs: readonly [{
618
+ readonly name: "accounts_";
619
+ readonly internalType: "address[]";
620
+ readonly type: "address[]";
621
+ }, {
622
+ readonly name: "authorized_";
623
+ readonly internalType: "bool[]";
624
+ readonly type: "bool[]";
625
+ }];
626
+ readonly name: "setAuthorized";
627
+ readonly outputs: readonly [];
628
+ readonly stateMutability: "nonpayable";
434
629
  }, {
435
630
  readonly type: "function";
436
631
  readonly inputs: readonly [];
@@ -471,9 +666,9 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
471
666
  *
472
667
  * @public
473
668
  * @static
474
- * @type {Address}
669
+ * @type {Record<number, Address>}
475
670
  */
476
- static base: Address;
671
+ static bases: Record<number, Address>;
477
672
  /**
478
673
  * @inheritdoc
479
674
  *
@@ -487,8 +682,8 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
487
682
  *
488
683
  * @public
489
684
  * @async
490
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'owner'>} [params]
491
- * @returns {unknown}
685
+ * @param {?ReadParams} [params]
686
+ * @returns {Promise<Address>}
492
687
  */
493
688
  owner(params?: ReadParams<typeof erc20IncentiveAbi, 'owner'>): Promise<`0x${string}`>;
494
689
  /**
@@ -496,7 +691,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
496
691
  *
497
692
  * @public
498
693
  * @async
499
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'currentReward'>} [params]
694
+ * @param {?ReadParams} [params]
500
695
  * @returns {Promise<bigint>} - The current reward
501
696
  */
502
697
  currentReward(params?: ReadParams<typeof erc20IncentiveAbi, 'currentReward'>): Promise<bigint>;
@@ -505,7 +700,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
505
700
  *
506
701
  * @public
507
702
  * @async
508
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'claims'>} [params]
703
+ * @param {?ReadParams} [params]
509
704
  * @returns {Promise<bigint>}
510
705
  */
511
706
  claims(params?: ReadParams<typeof erc20IncentiveAbi, 'claims'>): Promise<bigint>;
@@ -515,7 +710,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
515
710
  * @public
516
711
  * @async
517
712
  * @param {Address} address
518
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'claimed'>} [params]
713
+ * @param {?ReadParams} [params]
519
714
  * @returns {Promise<boolean>}
520
715
  */
521
716
  claimed(address: Address, params?: ReadParams<typeof erc20IncentiveAbi, 'claimed'>): Promise<boolean>;
@@ -524,7 +719,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
524
719
  *
525
720
  * @public
526
721
  * @async
527
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'asset'>} [params]
722
+ * @param {?ReadParams} [params]
528
723
  * @returns {Promise<Address>}
529
724
  */
530
725
  asset(params?: ReadParams<typeof erc20IncentiveAbi, 'asset'>): Promise<`0x${string}`>;
@@ -533,7 +728,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
533
728
  *
534
729
  * @public
535
730
  * @async
536
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'strategy'>} [params]
731
+ * @param {?ReadParams} [params]
537
732
  * @returns {Promise<StrategyType>}
538
733
  */
539
734
  strategy(params?: ReadParams<typeof erc20IncentiveAbi, 'strategy'>): Promise<StrategyType>;
@@ -542,7 +737,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
542
737
  *
543
738
  * @public
544
739
  * @async
545
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'reward'>} [params]
740
+ * @param {?ReadParams} [params]
546
741
  * @returns {Promise<bigint>}
547
742
  */
548
743
  reward(params?: ReadParams<typeof erc20IncentiveAbi, 'reward'>): Promise<bigint>;
@@ -551,8 +746,8 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
551
746
  *
552
747
  * @public
553
748
  * @async
554
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'limit'>} [params]
555
- * @returns {unknown}
749
+ * @param {?ReadParams} [params]
750
+ * @returns {Promise<bigint>}
556
751
  */
557
752
  limit(params?: ReadParams<typeof erc20IncentiveAbi, 'limit'>): Promise<bigint>;
558
753
  /**
@@ -561,7 +756,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
561
756
  * @public
562
757
  * @async
563
758
  * @param {bigint} i - Index of address
564
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'entries'>} [params]
759
+ * @param {?ReadParams} [params]
565
760
  * @returns {Promise<Address>}
566
761
  */
567
762
  entries(i: bigint, params?: ReadParams<typeof erc20IncentiveAbi, 'entries'>): Promise<`0x${string}`>;
@@ -571,7 +766,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
571
766
  * @public
572
767
  * @async
573
768
  * @param {ClaimPayload} payload
574
- * @param {?WriteParams<typeof erc20IncentiveAbi, 'claim'>} [params]
769
+ * @param {?WriteParams} [params]
575
770
  * @returns {Promise<boolean>} - Returns true if successfully claimed
576
771
  */
577
772
  protected claim(payload: ClaimPayload, params?: WriteParams<typeof erc20IncentiveAbi, 'claim'>): Promise<boolean>;
@@ -581,8 +776,8 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
581
776
  * @public
582
777
  * @async
583
778
  * @param {ClaimPayload} payload
584
- * @param {?WriteParams<typeof erc20IncentiveAbi, 'claim'>} [params]
585
- * @returns {Promise<boolean>} - Returns true if successfully claimed
779
+ * @param {?WriteParams} [params]
780
+ * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - Returns true if successfully claimed
586
781
  */
587
782
  protected claimRaw(payload: ClaimPayload, params?: WriteParams<typeof erc20IncentiveAbi, 'claim'>): Promise<{
588
783
  hash: `0x${string}`;
@@ -594,22 +789,22 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
594
789
  * @public
595
790
  * @async
596
791
  * @param {ClaimPayload} payload
597
- * @param {?WriteParams<typeof erc20IncentiveAbi, 'clawback'>} [params]
792
+ * @param {?WriteParams} [params]
598
793
  * @returns {Promise<boolean>} - True if the assets were successfully clawbacked
599
794
  */
600
- clawback(payload: ClaimPayload, params?: WriteParams<typeof erc20IncentiveAbi, 'clawback'>): Promise<boolean>;
795
+ clawback(payload: ClaimPayload, params?: WriteParams<typeof erc20IncentiveAbi, 'clawback'>): Promise<readonly [bigint, `0x${string}`]>;
601
796
  /**
602
797
  * Clawback assets from the incentive
603
798
  *
604
799
  * @public
605
800
  * @async
606
801
  * @param {ClaimPayload} payload
607
- * @param {?WriteParams<typeof erc20IncentiveAbi, 'clawback'>} [params]
608
- * @returns {Promise<boolean>} - True if the assets were successfully clawbacked
802
+ * @param {?WriteParams} [params]
803
+ * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the assets were successfully clawbacked
609
804
  */
610
805
  clawbackRaw(payload: ClaimPayload, params?: WriteParams<typeof erc20IncentiveAbi, 'clawback'>): Promise<{
611
806
  hash: `0x${string}`;
612
- result: boolean;
807
+ result: readonly [bigint, `0x${string}`];
613
808
  }>;
614
809
  /**
615
810
  * Check if an incentive is claimable. For the POOL strategy, the `bytes data` portion of the payload ignored. The recipient must not have already claimed the incentive.
@@ -617,8 +812,8 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
617
812
  * @public
618
813
  * @async
619
814
  * @param {ClaimPayload} payload
620
- * @param {?ReadParams<typeof erc20IncentiveAbi, 'isClaimable'>} [params]
621
- * @returns {unknown} = True if the incentive is claimable based on the data payload
815
+ * @param {?ReadParams} [params]
816
+ * @returns {Promise<boolean>} = True if the incentive is claimable based on the data payload
622
817
  */
623
818
  isClaimable(payload: ClaimPayload, params?: ReadParams<typeof erc20IncentiveAbi, 'isClaimable'>): Promise<boolean>;
624
819
  /**
@@ -626,7 +821,7 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
626
821
  *
627
822
  * @public
628
823
  * @async
629
- * @param {?WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>} [params]
824
+ * @param {?WriteParams} [params]
630
825
  * @returns {Promise<void>}
631
826
  */
632
827
  drawRaffle(params?: WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>): Promise<void>;
@@ -635,8 +830,8 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
635
830
  *
636
831
  * @public
637
832
  * @async
638
- * @param {?WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>} [params]
639
- * @returns {Promise<void>}
833
+ * @param {?WriteParams} [params]
834
+ * @returns {Promise<{ hash: `0x${string}`; result: void; }>}
640
835
  */
641
836
  drawRaffleRaw(params?: WriteParams<typeof erc20IncentiveAbi, 'drawRaffle'>): Promise<{
642
837
  hash: `0x${string}`;
@@ -651,6 +846,14 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
651
846
  * @returns {GenericDeployableParams}
652
847
  */
653
848
  buildParameters(_payload?: ERC20IncentivePayload, _options?: DeployableOptions): GenericDeployableParams;
849
+ /**
850
+ * Builds the claim data for the ERC20Incentive.
851
+ *
852
+ * @public
853
+ * @returns {Hash} A `zeroHash`, as ERC20Incentive doesn't require specific claim data.
854
+ * @description This function returns `zeroHash` because ERC20Incentive doesn't use any specific claim data.
855
+ */
856
+ buildClaimData(): "0x0000000000000000000000000000000000000000000000000000000000000000";
654
857
  }
655
858
  /**
656
859
  * Given a {@link ERC20IncentivePayload}, properly encode a `ERC20Incentive.InitPayload` for use with {@link ERC20Incentive} initialization.
@@ -660,7 +863,8 @@ export declare class ERC20Incentive extends DeployableTarget<ERC20IncentivePaylo
660
863
  * @param {StrategyType} param0.strategy - The type of disbursement strategy for the incentive. `StrategyType.MINT` is not supported for `ERC20Incentives`
661
864
  * @param {bigint} param0.reward - The amount of the asset to distribute.
662
865
  * @param {bigint} param0.limit - How many times can this incentive be claimed.
663
- * @returns {*}
866
+ * @param {Address} [param0.manager=zeroAddress] - The entity that can draw raffles - defaults to unset
867
+ * @returns {Hex}
664
868
  */
665
- export declare function prepareERC20IncentivePayload({ asset, strategy, reward, limit, }: ERC20IncentivePayload): `0x${string}`;
869
+ export declare function prepareERC20IncentivePayload({ asset, strategy, reward, limit, manager, }: ERC20IncentivePayload): `0x${string}`;
666
870
  //# sourceMappingURL=ERC20Incentive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ERC20Incentive.d.ts","sourceRoot":"","sources":["../../src/Incentives/ERC20Incentive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ERC20Incentive.d.ts","sourceRoot":"","sources":["../../src/Incentives/ERC20Incentive.ts"],"names":[],"mappings":"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"}