@boostxyz/sdk 0.0.0-alpha.9 → 1.1.0-alpha.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Actions/Action.cjs +1 -1
- package/dist/Actions/Action.cjs.map +1 -1
- package/dist/Actions/Action.js +7 -7
- package/dist/Actions/ContractAction.d.ts +11 -11
- package/dist/Actions/ContractAction.d.ts.map +1 -1
- package/dist/Actions/ERC721MintAction.d.ts +14 -14
- package/dist/Actions/ERC721MintAction.d.ts.map +1 -1
- package/dist/Actions/EventAction.cjs +1 -1
- package/dist/Actions/EventAction.cjs.map +1 -1
- package/dist/Actions/EventAction.d.ts +171 -41
- package/dist/Actions/EventAction.d.ts.map +1 -1
- package/dist/Actions/EventAction.js +15 -392
- package/dist/Actions/EventAction.js.map +1 -1
- package/dist/AllowLists/AllowList.cjs +1 -1
- package/dist/AllowLists/AllowList.cjs.map +1 -1
- package/dist/AllowLists/AllowList.d.ts +6 -4
- package/dist/AllowLists/AllowList.d.ts.map +1 -1
- package/dist/AllowLists/AllowList.js +45 -23
- package/dist/AllowLists/AllowList.js.map +1 -1
- package/dist/AllowLists/OpenAllowList.d.ts +423 -0
- package/dist/AllowLists/OpenAllowList.d.ts.map +1 -0
- package/dist/AllowLists/SimpleAllowList.cjs +1 -1
- package/dist/AllowLists/SimpleAllowList.cjs.map +1 -1
- package/dist/AllowLists/SimpleAllowList.d.ts +92 -37
- package/dist/AllowLists/SimpleAllowList.d.ts.map +1 -1
- package/dist/AllowLists/SimpleAllowList.js +55 -71
- package/dist/AllowLists/SimpleAllowList.js.map +1 -1
- package/dist/AllowLists/SimpleDenyList.cjs +1 -1
- package/dist/AllowLists/SimpleDenyList.cjs.map +1 -1
- package/dist/AllowLists/SimpleDenyList.d.ts +203 -11
- package/dist/AllowLists/SimpleDenyList.d.ts.map +1 -1
- package/dist/AllowLists/SimpleDenyList.js +11 -112
- package/dist/AllowLists/SimpleDenyList.js.map +1 -1
- package/dist/Auth/PassthroughAuth.cjs +1 -1
- package/dist/Auth/PassthroughAuth.js +1 -1
- package/dist/Boost.cjs +1 -1
- package/dist/Boost.cjs.map +1 -1
- package/dist/Boost.d.ts +20 -21
- package/dist/Boost.d.ts.map +1 -1
- package/dist/Boost.js +43 -57
- package/dist/Boost.js.map +1 -1
- package/dist/BoostCore-BVZExPPu.js +1462 -0
- package/dist/BoostCore-BVZExPPu.js.map +1 -0
- package/dist/BoostCore-D-E-cnGI.cjs +3 -0
- package/dist/BoostCore-D-E-cnGI.cjs.map +1 -0
- package/dist/BoostCore.cjs +1 -2
- package/dist/BoostCore.cjs.map +1 -1
- package/dist/BoostCore.d.ts +748 -77
- package/dist/BoostCore.d.ts.map +1 -1
- package/dist/BoostCore.js +29 -1150
- package/dist/BoostCore.js.map +1 -1
- package/dist/BoostRegistry.cjs +1 -1
- package/dist/BoostRegistry.cjs.map +1 -1
- package/dist/BoostRegistry.d.ts +80 -25
- package/dist/BoostRegistry.d.ts.map +1 -1
- package/dist/BoostRegistry.js +165 -83
- package/dist/BoostRegistry.js.map +1 -1
- package/dist/Budgets/Budget.cjs +1 -1
- package/dist/Budgets/Budget.cjs.map +1 -1
- package/dist/Budgets/Budget.d.ts.map +1 -1
- package/dist/Budgets/Budget.js +2 -2
- package/dist/Budgets/Budget.js.map +1 -1
- package/dist/Budgets/ManagedBudget.cjs +1 -1
- package/dist/Budgets/ManagedBudget.cjs.map +1 -1
- package/dist/Budgets/ManagedBudget.d.ts +75 -193
- package/dist/Budgets/ManagedBudget.d.ts.map +1 -1
- package/dist/Budgets/ManagedBudget.js +80 -298
- package/dist/Budgets/ManagedBudget.js.map +1 -1
- package/dist/Budgets/VestingBudget.d.ts +223 -89
- package/dist/Budgets/VestingBudget.d.ts.map +1 -1
- package/dist/Deployable/Contract.cjs +1 -1
- package/dist/Deployable/Contract.cjs.map +1 -1
- package/dist/Deployable/Contract.d.ts +4 -5
- package/dist/Deployable/Contract.d.ts.map +1 -1
- package/dist/Deployable/Contract.js +5 -7
- package/dist/Deployable/Contract.js.map +1 -1
- package/dist/Deployable/Deployable.cjs.map +1 -1
- package/dist/Deployable/Deployable.d.ts +1 -1
- package/dist/Deployable/Deployable.d.ts.map +1 -1
- package/dist/Deployable/Deployable.js +3 -5
- package/dist/Deployable/Deployable.js.map +1 -1
- package/dist/Deployable/DeployableTarget.cjs +1 -1
- package/dist/Deployable/DeployableTarget.cjs.map +1 -1
- package/dist/Deployable/DeployableTarget.d.ts +13 -13
- package/dist/Deployable/DeployableTarget.d.ts.map +1 -1
- package/dist/Deployable/DeployableTarget.js +28 -25
- package/dist/Deployable/DeployableTarget.js.map +1 -1
- package/dist/Deployable/DeployableTargetWithRBAC.cjs +2 -0
- package/dist/Deployable/DeployableTargetWithRBAC.cjs.map +1 -0
- package/dist/Deployable/DeployableTargetWithRBAC.d.ts +179 -0
- package/dist/Deployable/DeployableTargetWithRBAC.d.ts.map +1 -0
- package/dist/Deployable/DeployableTargetWithRBAC.js +222 -0
- package/dist/Deployable/DeployableTargetWithRBAC.js.map +1 -0
- package/dist/EventAction-BZt5cjbe.cjs +2 -0
- package/dist/EventAction-BZt5cjbe.cjs.map +1 -0
- package/dist/EventAction-C_-hJXWm.js +1541 -0
- package/dist/EventAction-C_-hJXWm.js.map +1 -0
- package/dist/Incentive-BhHaK3PZ.cjs +2 -0
- package/dist/Incentive-BhHaK3PZ.cjs.map +1 -0
- package/dist/Incentive-Cqg1w6wD.js +312 -0
- package/dist/Incentive-Cqg1w6wD.js.map +1 -0
- package/dist/Incentives/AllowListIncentive.cjs +1 -1
- package/dist/Incentives/AllowListIncentive.cjs.map +1 -1
- package/dist/Incentives/AllowListIncentive.d.ts +38 -16
- package/dist/Incentives/AllowListIncentive.d.ts.map +1 -1
- package/dist/Incentives/AllowListIncentive.js +42 -29
- package/dist/Incentives/AllowListIncentive.js.map +1 -1
- package/dist/Incentives/CGDAIncentive.cjs +1 -1
- package/dist/Incentives/CGDAIncentive.cjs.map +1 -1
- package/dist/Incentives/CGDAIncentive.d.ts +234 -21
- package/dist/Incentives/CGDAIncentive.d.ts.map +1 -1
- package/dist/Incentives/CGDAIncentive.js +45 -32
- package/dist/Incentives/CGDAIncentive.js.map +1 -1
- package/dist/Incentives/ERC1155Incentive.d.ts +224 -37
- package/dist/Incentives/ERC1155Incentive.d.ts.map +1 -1
- package/dist/Incentives/ERC20Incentive.cjs +1 -1
- package/dist/Incentives/ERC20Incentive.cjs.map +1 -1
- package/dist/Incentives/ERC20Incentive.d.ts +230 -29
- package/dist/Incentives/ERC20Incentive.d.ts.map +1 -1
- package/dist/Incentives/ERC20Incentive.js +56 -43
- package/dist/Incentives/ERC20Incentive.js.map +1 -1
- package/dist/{Budgets/SimpleBudget.d.ts → Incentives/ERC20VariableCriteriaIncentive.d.ts} +335 -440
- package/dist/Incentives/ERC20VariableCriteriaIncentive.d.ts.map +1 -0
- package/dist/Incentives/ERC20VariableIncentive.d.ts +231 -29
- package/dist/Incentives/ERC20VariableIncentive.d.ts.map +1 -1
- package/dist/Incentives/Incentive.cjs +1 -1
- package/dist/Incentives/Incentive.cjs.map +1 -1
- package/dist/Incentives/Incentive.d.ts +4 -4
- package/dist/Incentives/Incentive.d.ts.map +1 -1
- package/dist/Incentives/Incentive.js +16 -296
- package/dist/Incentives/Incentive.js.map +1 -1
- package/dist/Incentives/PointsIncentive.cjs +1 -1
- package/dist/Incentives/PointsIncentive.cjs.map +1 -1
- package/dist/Incentives/PointsIncentive.d.ts +40 -18
- package/dist/Incentives/PointsIncentive.d.ts.map +1 -1
- package/dist/Incentives/PointsIncentive.js +37 -24
- package/dist/Incentives/PointsIncentive.js.map +1 -1
- package/dist/SimpleDenyList-BUR17Tt1.cjs +2 -0
- package/dist/SimpleDenyList-BUR17Tt1.cjs.map +1 -0
- package/dist/SimpleDenyList-CGaWjuld.js +132 -0
- package/dist/SimpleDenyList-CGaWjuld.js.map +1 -0
- package/dist/Validators/SignerValidator.cjs +1 -1
- package/dist/Validators/SignerValidator.cjs.map +1 -1
- package/dist/Validators/SignerValidator.d.ts +16 -16
- package/dist/Validators/SignerValidator.d.ts.map +1 -1
- package/dist/Validators/SignerValidator.js +30 -27
- package/dist/Validators/SignerValidator.js.map +1 -1
- package/dist/Validators/Validator.cjs +1 -1
- package/dist/Validators/Validator.cjs.map +1 -1
- package/dist/Validators/Validator.d.ts +1 -1
- package/dist/Validators/Validator.js +2 -2
- package/dist/Validators/Validator.js.map +1 -1
- package/dist/claiming.cjs.map +1 -1
- package/dist/claiming.d.ts +1 -1
- package/dist/claiming.js.map +1 -1
- package/dist/componentInterfaces-BBCFkrZv.js +14 -0
- package/dist/componentInterfaces-BBCFkrZv.js.map +1 -0
- package/dist/componentInterfaces-DRI_dQ-P.cjs +2 -0
- package/dist/componentInterfaces-DRI_dQ-P.cjs.map +1 -0
- package/dist/deployments-DVXioW2i.cjs +2 -0
- package/dist/deployments-DVXioW2i.cjs.map +1 -0
- package/dist/deployments-oykLv3_Z.js +43 -0
- package/dist/deployments-oykLv3_Z.js.map +1 -0
- package/dist/deployments.json +44 -0
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +256 -20
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +183 -26
- package/dist/errors.js.map +1 -1
- package/dist/{generated-57_Kffpz.js → generated-CKt2yCQd.js} +3613 -1869
- package/dist/generated-CKt2yCQd.js.map +1 -0
- package/dist/generated-CyTNlOwM.cjs +3 -0
- package/dist/generated-CyTNlOwM.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +142 -108
- package/dist/index.js.map +1 -1
- package/dist/transfers.cjs.map +1 -1
- package/dist/transfers.d.ts +1 -1
- package/dist/transfers.js.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +26 -12
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +38 -23
- package/dist/utils.js.map +1 -1
- package/package.json +20 -10
- package/src/Actions/Action.test.ts +14 -13
- package/src/Actions/ContractAction.test.ts +10 -10
- package/src/Actions/ContractAction.ts +11 -12
- package/src/Actions/ERC721MintAction.test.ts +6 -6
- package/src/Actions/ERC721MintAction.ts +14 -15
- package/src/Actions/EventAction.test.ts +729 -109
- package/src/Actions/EventAction.ts +542 -84
- package/src/AllowLists/AllowList.test.ts +7 -7
- package/src/AllowLists/AllowList.ts +5 -3
- package/src/AllowLists/OpenAllowList.test.ts +40 -0
- package/src/AllowLists/OpenAllowList.ts +45 -0
- package/src/AllowLists/SimpleAllowList.test.ts +4 -4
- package/src/AllowLists/SimpleAllowList.ts +39 -61
- package/src/AllowLists/SimpleDenyList.test.ts +4 -4
- package/src/AllowLists/SimpleDenyList.ts +40 -17
- package/src/Auth/PassthroughAuth.test.ts +1 -1
- package/src/Boost.ts +21 -24
- package/src/BoostCore.test.ts +323 -268
- package/src/BoostCore.ts +396 -219
- package/src/BoostRegistry.test.ts +53 -0
- package/src/BoostRegistry.ts +161 -40
- package/src/Budgets/Budget.test.ts +2 -2
- package/src/Budgets/Budget.ts +1 -2
- package/src/Budgets/ManagedBudget.test.ts +82 -19
- package/src/Budgets/ManagedBudget.ts +48 -310
- package/src/Budgets/VestingBudget.test.ts +7 -7
- package/src/Budgets/VestingBudget.ts +34 -106
- package/src/Deployable/Contract.ts +4 -5
- package/src/Deployable/Deployable.ts +1 -1
- package/src/Deployable/DeployableTarget.ts +30 -19
- package/src/Deployable/DeployableTargetWithRBAC.ts +323 -0
- package/src/Incentives/AllowListIncentive.test.ts +5 -5
- package/src/Incentives/AllowListIncentive.ts +29 -15
- package/src/Incentives/CGDAIncentive.test.ts +9 -6
- package/src/Incentives/CGDAIncentive.ts +38 -18
- package/src/Incentives/ERC1155Incentive.test.ts +3 -3
- package/src/Incentives/ERC1155Incentive.ts +28 -29
- package/src/Incentives/ERC20Incentive.test.ts +9 -6
- package/src/Incentives/ERC20Incentive.ts +46 -26
- package/src/Incentives/ERC20VariableCriteriaIncentive.test.ts +184 -0
- package/src/Incentives/ERC20VariableCriteriaIncentive.ts +324 -0
- package/src/Incentives/ERC20VariableIncentive.test.ts +8 -11
- package/src/Incentives/ERC20VariableIncentive.ts +49 -26
- package/src/Incentives/Incentive.test.ts +4 -1
- package/src/Incentives/Incentive.ts +7 -6
- package/src/Incentives/PointsIncentive.test.ts +24 -25
- package/src/Incentives/PointsIncentive.ts +31 -17
- package/src/Validators/SignerValidator.test.ts +6 -6
- package/src/Validators/SignerValidator.ts +19 -17
- package/src/Validators/Validator.test.ts +2 -2
- package/src/Validators/Validator.ts +1 -1
- package/src/claiming.ts +1 -1
- package/src/errors.ts +345 -21
- package/src/index.test.ts +118 -36
- package/src/index.ts +5 -0
- package/src/transfers.ts +1 -1
- package/src/utils.test.ts +2 -2
- package/src/utils.ts +61 -12
- package/dist/Budgets/SimpleBudget.d.ts.map +0 -1
- package/dist/componentInterfaces-CKCBwG16.cjs +0 -2
- package/dist/componentInterfaces-CKCBwG16.cjs.map +0 -1
- package/dist/componentInterfaces-DYkaxBda.js +0 -13
- package/dist/componentInterfaces-DYkaxBda.js.map +0 -1
- package/dist/generated-57_Kffpz.js.map +0 -1
- package/dist/generated-wKBNvm48.cjs +0 -3
- package/dist/generated-wKBNvm48.cjs.map +0 -1
- package/src/Budgets/SimpleBudget.test.ts +0 -152
- package/src/Budgets/SimpleBudget.ts +0 -564
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedBudget.js","sources":["../../src/Budgets/ManagedBudget.ts"],"sourcesContent":["import {\n managedBudgetAbi,\n readManagedBudgetAvailable,\n readManagedBudgetDistributed,\n readManagedBudgetHasAllRoles,\n readManagedBudgetHasAnyRole,\n readManagedBudgetIsAuthorized,\n readManagedBudgetOwner,\n readManagedBudgetRolesOf,\n readManagedBudgetTotal,\n simulateManagedBudgetAllocate,\n simulateManagedBudgetClawback,\n simulateManagedBudgetDisburse,\n simulateManagedBudgetDisburseBatch,\n simulateManagedBudgetGrantRoles,\n simulateManagedBudgetRevokeRoles,\n simulateManagedBudgetSetAuthorized,\n writeManagedBudgetAllocate,\n writeManagedBudgetClawback,\n writeManagedBudgetDisburse,\n writeManagedBudgetDisburseBatch,\n writeManagedBudgetGrantRoles,\n writeManagedBudgetRevokeRoles,\n writeManagedBudgetSetAuthorized,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/budgets/ManagedBudget.sol/ManagedBudget.json';\nimport { getAccount } from '@wagmi/core';\nimport {\n type Address,\n type ContractEventName,\n type Hex,\n encodeAbiParameters,\n parseAbiParameters,\n zeroAddress,\n} from 'viem';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n DeployableUnknownOwnerProvidedError,\n UnknownTransferPayloadSupplied,\n} from '../errors';\nimport {\n type ERC1155TransferPayload,\n type FungibleTransferPayload,\n prepareERC1155Transfer,\n prepareFungibleTransfer,\n} from '../transfers';\nimport {\n type GenericLog,\n type ReadParams,\n RegistryType,\n type WriteParams,\n} from '../utils';\n\nexport { managedBudgetAbi };\nexport type { ERC1155TransferPayload, FungibleTransferPayload };\n\n/**\n * The object representation of a `ManagedBudgetPayload.InitPayload`\n *\n * @export\n * @interface ManagedBudgetPayload\n * @typedef {ManagedBudgetPayload}\n */\nexport interface ManagedBudgetPayload {\n /**\n * The budget's owner\n *\n * @type {Address}\n */\n owner: Address;\n /**\n * List of accounts authorized to use the budget. This list should include a Boost core address to interact with the protocol.\n *\n * @type {Address[]}\n */\n authorized: Address[];\n /**\n * List of roles to assign to the corresponding account by index.\n *\n * @type {bigint[]}\n */\n roles: bigint[];\n}\n\n/**\n * Enum representing available roles for use in the `ManagedBudget`.\n * `MANAGER` can disburse funds.\n * `ADMIN` can additionally manage authorized users on the budget.\n *\n * @type {{ readonly MANAGER: 1n; readonly ADMIN_ROLE: 2n; }}\n */\nexport const ManagedBudgetRoles = {\n MANAGER: 1n,\n ADMIN: 2n,\n} as const;\n\n/**\n * A generic `viem.Log` event with support for `ManagedBudget` event types.\n *\n * @export\n * @typedef {ManagedBudgetLog}\n * @template {ContractEventName<typeof managedBudgetAbi>} [event=ContractEventName<\n * typeof managedBudgetAbi\n * >]\n */\nexport type ManagedBudgetLog<\n event extends ContractEventName<typeof managedBudgetAbi> = ContractEventName<\n typeof managedBudgetAbi\n >,\n> = GenericLog<typeof managedBudgetAbi, event>;\n\n/**\n * Typeguard to determine if a transfer payload is a Fungible Transfer\n *\n * @export\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @returns {transfer is FungibleTransferPayload}\n */\nexport function isFungibleTransfer(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n): transfer is FungibleTransferPayload {\n return (transfer as ERC1155TransferPayload).tokenId === undefined;\n}\n\n/**\n * Typeguard to determine if a transfer payload is an ERC1155 Transfer\n *\n * @export\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @returns {transfer is ERC1155TransferPayload}\n */\nexport function isERC1155TransferPayload(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n): transfer is ERC1155TransferPayload {\n return (transfer as ERC1155TransferPayload).tokenId !== undefined;\n}\n\n/**\n * Given either a Fungible transfer, or ERC1155 transfer, will properly encode parameters for transfers, claims, disbursements, allocations, etc.\n *\n * @export\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @returns {*}\n * @throws {@link UnknownTransferPayloadSupplied}\n */\nexport function prepareTransfer(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n) {\n if (isFungibleTransfer(transfer)) {\n return prepareFungibleTransfer(transfer);\n } else if (isERC1155TransferPayload(transfer)) {\n return prepareERC1155Transfer(transfer);\n } else throw new UnknownTransferPayloadSupplied(transfer);\n}\n\n/**\n * A minimal budget implementation that simply holds and distributes tokens (ERC20-like and native)\n * This type of budget supports ETH, ERC20, and ERC1155 assets only\n *\n * @export\n * @class ManagedBudget\n * @typedef {ManagedBudget}\n * @extends {DeployableTarget<ManagedBudgetPayload>}\n */\nexport class ManagedBudget extends DeployableTarget<\n ManagedBudgetPayload,\n typeof managedBudgetAbi\n> {\n /**\n * @inheritdoc\n *\n * @public\n * @readonly\n * @type {*}\n */\n public override readonly abi = managedBudgetAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Address}\n */\n public static override base: Address = import.meta.env\n .VITE_MANAGED_BUDGET_BASE;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.BUDGET;\n\n /**\n * Allocates assets to the budget.\n * The caller must have already approved the contract to transfer the asset\n * If the asset transfer fails, the allocation will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams<typeof managedBudgetAbi, 'allocate'>} [params]\n * @returns {Promise<boolean>} - True if the allocation was successful\n */\n public async allocate(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'allocate'>,\n ) {\n return await this.awaitResult(this.allocateRaw(transfer, params));\n }\n\n /**\n * Allocates assets to the budget.\n * The caller must have already approved the contract to transfer the asset\n * If the asset transfer fails, the allocation will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams<typeof managedBudgetAbi, 'allocate'>} [params]\n * @returns {Promise<boolean>} - True if the allocation was successful\n */\n public async allocateRaw(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'allocate'>,\n ) {\n const { request, result } = await simulateManagedBudgetAllocate(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareTransfer(transfer)],\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 writeManagedBudgetAllocate(this._config, request);\n return { hash, result };\n }\n\n /**\n * Clawbacks assets from the budget.\n * Only the owner can directly clawback assets from the budget\n * If the amount is zero, the entire balance of the asset will be transferred to the receiver\n * If the asset transfer fails, the reclamation will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams<typeof managedBudgetAbi, 'clawback'>} [params]\n * @returns {Promise<boolean>} - True if the request was successful\n */\n public async clawback(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'clawback'>,\n ) {\n return await this.awaitResult(this.clawbackRaw(transfer, params));\n }\n\n /**\n * Clawbacks assets from the budget.\n * Only the owner can directly clawback assets from the budget\n * If the amount is zero, the entire balance of the asset will be transferred to the receiver\n * If the asset transfer fails, the reclamation will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams<typeof managedBudgetAbi, 'clawback'>} [params]\n * @returns {Promise<boolean>} - True if the request was successful\n */\n public async clawbackRaw(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'clawback'>,\n ) {\n const { request, result } = await simulateManagedBudgetClawback(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareTransfer(transfer)],\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 writeManagedBudgetClawback(this._config, request);\n return { hash, result };\n }\n\n /**\n * Disburses assets from the budget to a single recipient\n * If the asset transfer fails, the disbursement will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams<typeof managedBudgetAbi, 'disburse'>} [params]\n * @returns {Promise<boolean>} - True if the disbursement was successful\n */\n public async disburse(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'disburse'>,\n ) {\n return await this.awaitResult(this.disburseRaw(transfer, params));\n }\n\n /**\n * Disburses assets from the budget to a single recipient\n * If the asset transfer fails, the disbursement will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams<typeof managedBudgetAbi, 'disburse'>} [params]\n * @returns {Promise<boolean>} - True if the disbursement was successful\n */\n public async disburseRaw(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'disburse'>,\n ) {\n const { request, result } = await simulateManagedBudgetDisburse(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareTransfer(transfer)],\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 writeManagedBudgetDisburse(this._config, request);\n return { hash, result };\n }\n\n /**\n * Disburses assets from the budget to multiple recipients\n *\n * @public\n * @async\n * @param {Array<FungibleTransferPayload | ERC1155TransferPayload>} transfers\n * @param {?WriteParams<typeof managedBudgetAbi, 'disburseBatch'>} [params]\n * @returns {Promise<boolean>} - True if all disbursements were successful\n */\n public async disburseBatch(\n transfers: Array<FungibleTransferPayload | ERC1155TransferPayload>,\n params?: WriteParams<typeof managedBudgetAbi, 'disburseBatch'>,\n ) {\n return await this.awaitResult(this.disburseBatchRaw(transfers, params));\n }\n\n /**\n * Disburses assets from the budget to multiple recipients\n *\n * @public\n * @async\n * @param {Array<FungibleTransferPayload | ERC1155TransferPayload>} transfers\n * @param {?WriteParams<typeof managedBudgetAbi, 'disburseBatch'>} [params]\n * @returns {Promise<boolean>} - True if all disbursements were successful\n */\n public async disburseBatchRaw(\n transfers: Array<FungibleTransferPayload | ERC1155TransferPayload>,\n params?: WriteParams<typeof managedBudgetAbi, 'disburseBatch'>,\n ) {\n const { request, result } = await simulateManagedBudgetDisburseBatch(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [transfers.map(prepareTransfer)],\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 writeManagedBudgetDisburseBatch(this._config, request);\n return { hash, result };\n }\n\n /**\n * Set the authorized status of the given accounts\n * The mechanism for managing authorization is left to the implementing contract\n *\n * @public\n * @async\n * @param {Address[]} addresses - The accounts to authorize or deauthorize\n * @param {boolean[]} allowed - The authorization status for the given accounts\n * @param {?WriteParams<typeof managedBudgetAbi, 'setAuthorized'>} [params]\n * @returns {Promise<void>}\n */\n public async setAuthorized(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams<typeof managedBudgetAbi, 'setAuthorized'>,\n ) {\n return await this.awaitResult(\n this.setAuthorizedRaw(addresses, allowed, params),\n );\n }\n\n /**\n * Set the authorized status of the given accounts\n * The mechanism for managing authorization is left to the implementing contract\n *\n * @public\n * @async\n * @param {Address[]} addresses - The accounts to authorize or deauthorize\n * @param {boolean[]} allowed - The authorization status for the given accounts\n * @param {?WriteParams<typeof managedBudgetAbi, 'setAuthorized'>} [params]\n * @returns {Promise<void>}\n */\n public async setAuthorizedRaw(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams<typeof managedBudgetAbi, 'setAuthorized'>,\n ) {\n const { request, result } = await simulateManagedBudgetSetAuthorized(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [addresses, allowed],\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 writeManagedBudgetSetAuthorized(this._config, request);\n return { hash, result };\n }\n\n /**\n * Grant many accounts permissions on the budget.\n *\n * @example\n * ```ts\n * await budget.grantRoles(['0xfoo', '0xbar], [ManagedBudgetRoles.MANAGER, ManagedBudgetRoles.ADMIN])\n * ```\n * @public\n * @async\n * @param {Address[]} addresses\n * @param {bigint[]} roles\n * @param {?WriteParams<typeof managedBudgetAbi, 'grantRoles'>} [params]\n * @returns {unknown}\n */\n public async grantRoles(\n addresses: Address[],\n roles: bigint[],\n params?: WriteParams<typeof managedBudgetAbi, 'grantRoles'>,\n ) {\n return await this.awaitResult(this.grantRolesRaw(addresses, roles, params));\n }\n\n /**\n * Grant many accounts permissions on the budget.\n *\n * @example\n * ```ts\n * await budget.grantRoles(['0xfoo', '0xbar], [ManagedBudgetRoles.MANAGER, ManagedBudgetRoles.ADMIN])\n *\n * @public\n * @async\n * @param {Address[]} addresses\n * @param {bigint[]} roles\n * @param {?WriteParams<typeof managedBudgetAbi, 'grantRoles'>} [params]\n * @returns {unknown}\n */\n public async grantRolesRaw(\n addresses: Address[],\n roles: bigint[],\n params?: WriteParams<typeof managedBudgetAbi, 'grantRoles'>,\n ) {\n const { request, result } = await simulateManagedBudgetGrantRoles(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [addresses, roles],\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 writeManagedBudgetGrantRoles(\n this._config,\n // biome-ignore lint/suspicious/noExplicitAny: negligible low level lack of type intersection\n request as any,\n );\n return { hash, result };\n }\n\n /**\n * Revoke many accounts' permissions on the budget.\n *\n * @example\n * ```ts\n * await budget.revokeRoles(['0xfoo', '0xbar], [ManagedBudgetRoles.MANAGER, ManagedBudgetRoles.ADMIN])\n *\n * @public\n * @async\n * @param {Address[]} addresses\n * @param {bigint[]} roles\n * @param {?WriteParams<typeof managedBudgetAbi, 'revokeRoles'>} [params]\n * @returns {unknown}\n */\n public async revokeRoles(\n addresses: Address[],\n roles: bigint[],\n params?: WriteParams<typeof managedBudgetAbi, 'revokeRoles'>,\n ) {\n return await this.awaitResult(\n this.revokeRolesRaw(addresses, roles, params),\n );\n }\n\n /**\n * Revoke many accounts' permissions on the budget.\n *\n * @example\n * ```ts\n * await budget.revokeRoles(['0xfoo', '0xbar], [ManagedBudgetRoles.MANAGER, ManagedBudgetRoles.ADMIN])\n * @public\n * @async\n * @param {Address[]} addresses\n * @param {bigint[]} roles\n * @param {?WriteParams<typeof managedBudgetAbi, 'revokeRoles'>} [params]\n * @returns {unknown}\n */\n public async revokeRolesRaw(\n addresses: Address[],\n roles: bigint[],\n params?: WriteParams<typeof managedBudgetAbi, 'revokeRoles'>,\n ) {\n const { request, result } = await simulateManagedBudgetRevokeRoles(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [addresses, roles],\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 writeManagedBudgetRevokeRoles(\n this._config,\n // biome-ignore lint/suspicious/noExplicitAny: negligible low level lack of type intersection\n request as any,\n );\n return { hash, result };\n }\n\n /**\n * Return an array of the roles assigned to the given account.\n * @example\n * ```ts\n * (await budget.rolesOf(0xfoo)).includes(ManagedBudgetRoles.ADMIN)\n * @public\n * @param {Address} account\n * @param {?ReadParams<typeof managedBudgetAbi, 'rolesOf'>} [params]\n * @returns {Promise<Array<bigint>>}\n */\n public async rolesOf(\n account: Address,\n params?: ReadParams<typeof managedBudgetAbi, 'rolesOf'>,\n ) {\n const roles = await readManagedBudgetRolesOf(this._config, {\n address: this.assertValidAddress(),\n args: [account],\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 return [ManagedBudgetRoles.MANAGER, ManagedBudgetRoles.ADMIN].filter(\n (role) => (roles & role) === role,\n );\n }\n\n /**\n * Returns whether given account has any of the provided roles bitmap.\n *\n * @example\n * ```ts\n * await budget.hasAnyRole(0xfoo, ManagedBudgetRoles.ADMIN | ManagedBudgetRoles.MANAGER)\n * @public\n * @param {Address} account\n * @param {bigint} roles\n * @param {?ReadParams<typeof managedBudgetAbi, 'hasAnyRole'>} [params]\n * @returns {Promise<boolean>}\n */\n public hasAnyRole(\n account: Address,\n roles: bigint,\n params?: ReadParams<typeof managedBudgetAbi, 'hasAnyRole'>,\n ) {\n return readManagedBudgetHasAnyRole(this._config, {\n address: this.assertValidAddress(),\n args: [account, roles],\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\n /**\n * Returns whether given account has all of the provided roles bitmap.\n *\n * @example\n * ```ts\n * await budget.hasAllRoles(0xfoo, ManagedBudgetRoles.ADMIN & ManagedBudgetRoles.MANAGER)\n *\n * @public\n * @param {Address} account\n * @param {bigint} roles\n * @param {?ReadParams<typeof managedBudgetAbi, 'hasAllRoles'>} [params]\n * @returns {*}\n */\n public hasAllRoles(\n account: Address,\n roles: bigint,\n params?: ReadParams<typeof managedBudgetAbi, 'hasAllRoles'>,\n ) {\n return readManagedBudgetHasAllRoles(this._config, {\n address: this.assertValidAddress(),\n args: [account, roles],\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\n /**\n * Check if the given account is authorized to use the budget\n *\n * @public\n * @param {Address} account\n * @param {?ReadParams<typeof managedBudgetAbi, 'isAuthorized'>} [params]\n * @returns {Promise<boolean>} - True if the account is authorized\n */\n public isAuthorized(\n account: Address,\n params?: ReadParams<typeof managedBudgetAbi, 'isAuthorized'>,\n ) {\n return readManagedBudgetIsAuthorized(this._config, {\n address: this.assertValidAddress(),\n args: [account],\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\n /**\n * Get the owner of the budget\n *\n * @public\n * @param {?ReadParams<typeof managedBudgetAbi, 'owner'>} [params]\n * @returns {Promise<Address>}\n */\n public owner(params?: ReadParams<typeof managedBudgetAbi, 'owner'>) {\n return readManagedBudgetOwner(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 * Get the total amount of assets allocated to the budget, including any that have been distributed\n * If a tokenId is provided, get the total amount of ERC1155 assets allocated to the budget, including any that have been distributed\n *\n * @public\n * @param {Address} asset - The address of the asset\n * @param {?(bigint | undefined)} [tokenId] - The ID of the token\n * @param {?ReadParams<typeof managedBudgetAbi, 'total'>} [params]\n * @returns {Promise<bigint>} - The total amount of assets\n */\n public total(\n asset: Address,\n tokenId?: bigint | undefined,\n params?: ReadParams<typeof managedBudgetAbi, 'total'>,\n ) {\n return readManagedBudgetTotal(this._config, {\n address: this.assertValidAddress(),\n args: tokenId ? [asset, tokenId] : [asset],\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 * Get the amount of assets available for distribution from the budget.\n * If a tokenId is provided, get the amount of ERC1155 assets available for distribution from the budget\n *\n * @public\n * @param {Address} asset\n * @param {?(bigint | undefined)} [tokenId]\n * @param {?ReadParams<typeof managedBudgetAbi, 'available'>} [params]\n * @returns {Promise<bigint>} - The amount of assets available\n */\n public available(\n asset: Address,\n tokenId?: bigint | undefined,\n params?: ReadParams<typeof managedBudgetAbi, 'available'>,\n ) {\n return readManagedBudgetAvailable(this._config, {\n address: this.assertValidAddress(),\n args: tokenId ? [asset, tokenId] : [asset],\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 * Get the amount of assets that have been distributed from the budget.\n * If a tokenId is provided, get the amount of ERC1155 assets that have been distributed from the budget\n *\n * @public\n * @param {Address} asset\n * @param {?(bigint | undefined)} [tokenId]\n * @param {?ReadParams<typeof managedBudgetAbi, 'distributed'>} [params]\n * @returns {Promise<bigint>} - The amount of assets distributed\n */\n public distributed(\n asset: Address,\n tokenId?: bigint | undefined,\n params?: ReadParams<typeof managedBudgetAbi, 'distributed'>,\n ) {\n return readManagedBudgetDistributed(this._config, {\n address: this.assertValidAddress(),\n args: tokenId ? [asset, tokenId] : [asset],\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 * @inheritdoc\n *\n * @public\n * @param {?ManagedBudgetPayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: ManagedBudgetPayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n if (!payload.owner || payload.owner === zeroAddress) {\n const owner = options.account\n ? options.account.address\n : options.config\n ? getAccount(options.config).address\n : this._account?.address;\n if (owner) {\n payload.owner = owner;\n } else {\n throw new DeployableUnknownOwnerProvidedError();\n }\n }\n return {\n abi: managedBudgetAbi,\n bytecode: bytecode as Hex,\n args: [prepareManagedBudgetPayload(payload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n}\n\n/**\n * Given a {@link ManagedBudgetPayload}, properly encode a `ManagedBudget.InitPayload` for use with {@link ManagedBudget} initialization.\n *\n * @param {ManagedBudgetPayload} param0\n * @param {Address} param0.owner - The budget's owner\n * @param {{}} param0.authorized - List of accounts authorized to use the budget. This list should include a Boost core address to interact with the protocol.\n * @param {{}} param0.roles - List of roles to assign to the corresponding account by index.\n * @returns {*}\n */\nexport const prepareManagedBudgetPayload = ({\n owner,\n authorized,\n roles,\n}: ManagedBudgetPayload) => {\n return encodeAbiParameters(\n parseAbiParameters([\n 'ManagedBudgetPayload payload',\n 'struct ManagedBudgetPayload { address owner; address[] authorized; uint256[] roles; }',\n ]),\n [{ owner, authorized, roles }],\n );\n};\n"],"names":["ManagedBudgetRoles","isFungibleTransfer","transfer","isERC1155TransferPayload","prepareTransfer","prepareFungibleTransfer","prepareERC1155Transfer","UnknownTransferPayloadSupplied","_ManagedBudget","DeployableTarget","managedBudgetAbi","params","request","result","simulateManagedBudgetAllocate","writeManagedBudgetAllocate","simulateManagedBudgetClawback","writeManagedBudgetClawback","simulateManagedBudgetDisburse","writeManagedBudgetDisburse","transfers","simulateManagedBudgetDisburseBatch","writeManagedBudgetDisburseBatch","addresses","allowed","simulateManagedBudgetSetAuthorized","writeManagedBudgetSetAuthorized","roles","simulateManagedBudgetGrantRoles","writeManagedBudgetGrantRoles","simulateManagedBudgetRevokeRoles","writeManagedBudgetRevokeRoles","account","readManagedBudgetRolesOf","role","readManagedBudgetHasAnyRole","readManagedBudgetHasAllRoles","readManagedBudgetIsAuthorized","readManagedBudgetOwner","asset","tokenId","readManagedBudgetTotal","readManagedBudgetAvailable","readManagedBudgetDistributed","_payload","_options","payload","options","zeroAddress","owner","getAccount","_a","DeployableUnknownOwnerProvidedError","bytecode","prepareManagedBudgetPayload","RegistryType","ManagedBudget","authorized","encodeAbiParameters","parseAbiParameters"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ManagedBudget.js","sources":["../../src/Budgets/ManagedBudget.ts"],"sourcesContent":["import {\n managedBudgetAbi,\n readManagedBudgetAvailable,\n readManagedBudgetDistributed,\n readManagedBudgetHasAllRoles,\n readManagedBudgetHasAnyRole,\n readManagedBudgetIsAuthorized,\n readManagedBudgetOwner,\n readManagedBudgetRolesOf,\n readManagedBudgetTotal,\n simulateManagedBudgetAllocate,\n simulateManagedBudgetClawback,\n simulateManagedBudgetDisburse,\n simulateManagedBudgetDisburseBatch,\n simulateManagedBudgetGrantRoles,\n simulateManagedBudgetRevokeRoles,\n simulateManagedBudgetSetAuthorized,\n writeManagedBudgetAllocate,\n writeManagedBudgetClawback,\n writeManagedBudgetDisburse,\n writeManagedBudgetDisburseBatch,\n writeManagedBudgetGrantRoles,\n writeManagedBudgetRevokeRoles,\n writeManagedBudgetSetAuthorized,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/budgets/ManagedBudget.sol/ManagedBudget.json';\nimport { getAccount } from '@wagmi/core';\nimport {\n type Address,\n type ContractEventName,\n type Hex,\n encodeAbiParameters,\n parseAbiParameters,\n zeroAddress,\n} from 'viem';\nimport { ManagedBudget as ManagedBudgetBases } from '../../dist/deployments.json';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport { DeployableTargetWithRBAC } from '../Deployable/DeployableTargetWithRBAC';\nimport {\n DeployableUnknownOwnerProvidedError,\n UnknownTransferPayloadSupplied,\n} from '../errors';\nimport {\n type ERC1155TransferPayload,\n type FungibleTransferPayload,\n prepareERC1155Transfer,\n prepareFungibleTransfer,\n} from '../transfers';\nimport {\n type GenericLog,\n type ReadParams,\n RegistryType,\n type WriteParams,\n} from '../utils';\nexport { managedBudgetAbi };\nexport type { ERC1155TransferPayload, FungibleTransferPayload };\n\n/**\n * The object representation of a `ManagedBudgetPayload.InitPayload`\n *\n * @export\n * @interface ManagedBudgetPayload\n * @typedef {ManagedBudgetPayload}\n */\nexport interface ManagedBudgetPayload {\n /**\n * The budget's owner\n *\n * @type {Address}\n */\n owner: Address;\n /**\n * List of accounts authorized to use the budget. This list should include a Boost core address to interact with the protocol.\n *\n * @type {Address[]}\n */\n authorized: Address[];\n /**\n * List of roles to assign to the corresponding account by index.\n *\n * @type {ManagedBudgetRoles[]}\n */\n roles: ManagedBudgetRoles[];\n}\n\n/**\n * Enum representing available roles for use in the `ManagedBudget`.\n * `MANAGER` can disburse funds.\n * `ADMIN` can additionally manage authorized users on the budget.\n *\n * @export\n * @type {{ readonly MANAGER: 1n; readonly ADMIN_ROLE: 2n; }}\n * @enum {bigint}\n */\nexport enum ManagedBudgetRoles {\n //@ts-expect-error ts doesn't like bigint enum values\n MANAGER = 1n,\n //@ts-expect-error ts doesn't like bigint enum values\n ADMIN = 2n,\n}\n\n/**\n * A generic `viem.Log` event with support for `ManagedBudget` event types.\n *\n * @export\n * @typedef {ManagedBudgetLog}\n * @template {ContractEventName<typeof managedBudgetAbi>} [event=ContractEventName<\n * typeof managedBudgetAbi\n * >]\n */\nexport type ManagedBudgetLog<\n event extends ContractEventName<typeof managedBudgetAbi> = ContractEventName<\n typeof managedBudgetAbi\n >,\n> = GenericLog<typeof managedBudgetAbi, event>;\n\n/**\n * Typeguard to determine if a transfer payload is a Fungible Transfer\n *\n * @export\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @returns {transfer is FungibleTransferPayload}\n */\nexport function isFungibleTransfer(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n): transfer is FungibleTransferPayload {\n return (transfer as ERC1155TransferPayload).tokenId === undefined;\n}\n\n/**\n * Typeguard to determine if a transfer payload is an ERC1155 Transfer\n *\n * @export\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @returns {transfer is ERC1155TransferPayload}\n */\nexport function isERC1155TransferPayload(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n): transfer is ERC1155TransferPayload {\n return (transfer as ERC1155TransferPayload).tokenId !== undefined;\n}\n\n/**\n * Given either a Fungible transfer, or ERC1155 transfer, will properly encode parameters for transfers, claims, disbursements, allocations, etc.\n *\n * @export\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @returns {Hex}\n * @throws {@link UnknownTransferPayloadSupplied}\n */\nexport function prepareTransfer(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n) {\n if (isFungibleTransfer(transfer)) {\n return prepareFungibleTransfer(transfer);\n }\n if (isERC1155TransferPayload(transfer)) {\n return prepareERC1155Transfer(transfer);\n }\n throw new UnknownTransferPayloadSupplied(transfer);\n}\n\n/**\n * A minimal budget implementation that simply holds and distributes tokens (ERC20-like and native)\n * This type of budget supports ETH, ERC20, and ERC1155 assets only\n *\n * @export\n * @class ManagedBudget\n * @typedef {ManagedBudget}\n * @extends {DeployableTargetWithRBAC<ManagedBudgetPayload>}\n */\nexport class ManagedBudget extends DeployableTargetWithRBAC<\n ManagedBudgetPayload,\n typeof managedBudgetAbi\n> {\n /**\n * @inheritdoc\n *\n * @public\n * @readonly\n * @type {*}\n */\n public override readonly abi = managedBudgetAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Record<number, Address>}\n */\n public static override bases: Record<number, Address> = {\n ...(ManagedBudgetBases as Record<number, Address>),\n };\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.BUDGET;\n\n /**\n * Allocates assets to the budget.\n * The caller must have already approved the contract to transfer the asset\n * If the asset transfer fails, the allocation will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the allocation was successful\n */\n public async allocate(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'allocate'>,\n ) {\n return await this.awaitResult(this.allocateRaw(transfer, params));\n }\n\n /**\n * Allocates assets to the budget.\n * The caller must have already approved the contract to transfer the asset\n * If the asset transfer fails, the allocation will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the allocation was successful\n */\n public async allocateRaw(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'allocate'>,\n ) {\n const { request, result } = await simulateManagedBudgetAllocate(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareTransfer(transfer)],\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 writeManagedBudgetAllocate(this._config, request);\n return { hash, result };\n }\n\n /**\n * Clawbacks assets from the budget.\n * Only the owner can directly clawback assets from the budget\n * If the amount is zero, the entire balance of the asset will be transferred to the receiver\n * If the asset transfer fails, the reclamation will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the request was successful\n */\n public async clawback(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'clawback'>,\n ) {\n return await this.awaitResult(this.clawbackRaw(transfer, params));\n }\n\n /**\n * Clawbacks assets from the budget.\n * Only the owner can directly clawback assets from the budget\n * If the amount is zero, the entire balance of the asset will be transferred to the receiver\n * If the asset transfer fails, the reclamation will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the request was successful\n */\n public async clawbackRaw(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'clawback'>,\n ) {\n const { request, result } = await simulateManagedBudgetClawback(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareTransfer(transfer)],\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 writeManagedBudgetClawback(this._config, request);\n return { hash, result };\n }\n\n /**\n * Disburses assets from the budget to a single recipient\n * If the asset transfer fails, the disbursement will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the disbursement was successful\n */\n public async disburse(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'disburse'>,\n ) {\n return await this.awaitResult(this.disburseRaw(transfer, params));\n }\n\n /**\n * Disburses assets from the budget to a single recipient\n * If the asset transfer fails, the disbursement will revert\n *\n * @public\n * @async\n * @param {(FungibleTransferPayload | ERC1155TransferPayload)} transfer\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the disbursement was successful\n */\n public async disburseRaw(\n transfer: FungibleTransferPayload | ERC1155TransferPayload,\n params?: WriteParams<typeof managedBudgetAbi, 'disburse'>,\n ) {\n const { request, result } = await simulateManagedBudgetDisburse(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [prepareTransfer(transfer)],\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 writeManagedBudgetDisburse(this._config, request);\n return { hash, result };\n }\n\n /**\n * Disburses assets from the budget to multiple recipients\n *\n * @public\n * @async\n * @param {Array<FungibleTransferPayload | ERC1155TransferPayload>} transfers\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if all disbursements were successful\n */\n public async disburseBatch(\n transfers: Array<FungibleTransferPayload | ERC1155TransferPayload>,\n params?: WriteParams<typeof managedBudgetAbi, 'disburseBatch'>,\n ) {\n return await this.awaitResult(this.disburseBatchRaw(transfers, params));\n }\n\n /**\n * Disburses assets from the budget to multiple recipients\n *\n * @public\n * @async\n * @param {Array<FungibleTransferPayload | ERC1155TransferPayload>} transfers\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if all disbursements were successful\n */\n public async disburseBatchRaw(\n transfers: Array<FungibleTransferPayload | ERC1155TransferPayload>,\n params?: WriteParams<typeof managedBudgetAbi, 'disburseBatch'>,\n ) {\n const { request, result } = await simulateManagedBudgetDisburseBatch(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [transfers.map(prepareTransfer)],\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 writeManagedBudgetDisburseBatch(this._config, request);\n return { hash, result };\n }\n\n /**\n * Get the owner of the budget\n *\n * @public\n * @param {?ReadParams} [params]\n * @returns {Promise<Address>}\n */\n public owner(params?: ReadParams<typeof managedBudgetAbi, 'owner'>) {\n return readManagedBudgetOwner(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 * Get the total amount of assets allocated to the budget, including any that have been distributed\n * If a tokenId is provided, get the total amount of ERC1155 assets allocated to the budget, including any that have been distributed\n *\n * @public\n * @param {Address} [asset=\"0x0000000000000000000000000000000000000000\"] - The address of the asset\n * @param {?(bigint | undefined)} [tokenId] - The ID of the token\n * @param {?ReadParams} [params]\n * @returns {Promise<bigint>} - The total amount of assets\n */\n public total(\n asset: Address = zeroAddress,\n tokenId?: bigint | undefined,\n params?: ReadParams<typeof managedBudgetAbi, 'total'>,\n ) {\n return readManagedBudgetTotal(this._config, {\n address: this.assertValidAddress(),\n args: tokenId ? [asset, tokenId] : [asset],\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 * Get the amount of assets available for distribution from the budget.\n * If a tokenId is provided, get the amount of ERC1155 assets available for distribution from the budget\n *\n * @public\n * @param {Address} [asset=\"0x0000000000000000000000000000000000000000\"]\n * @param {?(bigint | undefined)} [tokenId]\n * @param {?ReadParams} [params]\n * @returns {Promise<bigint>} - The amount of assets available\n */\n public available(\n asset: Address = zeroAddress,\n tokenId?: bigint | undefined,\n params?: ReadParams<typeof managedBudgetAbi, 'available'>,\n ) {\n return readManagedBudgetAvailable(this._config, {\n address: this.assertValidAddress(),\n args: tokenId ? [asset, tokenId] : [asset],\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 * Get the amount of assets that have been distributed from the budget.\n * If a tokenId is provided, get the amount of ERC1155 assets that have been distributed from the budget\n *\n * @public\n * @param {Address} [asset=\"0x0000000000000000000000000000000000000000\"]\n * @param {?(bigint | undefined)} [tokenId]\n * @param {?ReadParams} [params]\n * @returns {Promise<bigint>} - The amount of assets distributed\n */\n public distributed(\n asset: Address = zeroAddress,\n tokenId?: bigint | undefined,\n params?: ReadParams<typeof managedBudgetAbi, 'distributed'>,\n ) {\n return readManagedBudgetDistributed(this._config, {\n address: this.assertValidAddress(),\n args: tokenId ? [asset, tokenId] : [asset],\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 * @inheritdoc\n *\n * @public\n * @param {?ManagedBudgetPayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: ManagedBudgetPayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n if (!payload.owner || payload.owner === zeroAddress) {\n const owner = options.account\n ? options.account.address\n : options.config\n ? getAccount(options.config).address\n : this._account?.address;\n if (owner) {\n payload.owner = owner;\n } else {\n throw new DeployableUnknownOwnerProvidedError();\n }\n }\n return {\n abi: managedBudgetAbi,\n bytecode: bytecode as Hex,\n args: [prepareManagedBudgetPayload(payload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n}\n\n/**\n * Given a {@link ManagedBudgetPayload}, properly encode a `ManagedBudget.InitPayload` for use with {@link ManagedBudget} initialization.\n *\n * @param {ManagedBudgetPayload} param0\n * @param {Address} param0.owner - The budget's owner\n * @param {{}} param0.authorized - List of accounts authorized to use the budget. This list should include a Boost core address to interact with the protocol.\n * @param {{}} param0.roles - List of roles to assign to the corresponding account by index.\n * @returns {Hex}\n */\nexport const prepareManagedBudgetPayload = ({\n owner,\n authorized,\n roles,\n}: ManagedBudgetPayload) => {\n return encodeAbiParameters(\n parseAbiParameters([\n 'ManagedBudgetPayload payload',\n 'struct ManagedBudgetPayload { address owner; address[] authorized; uint256[] roles; }',\n ]),\n [{ owner, authorized, roles: roles as unknown as Array<bigint> }],\n );\n};\n"],"names":["ManagedBudgetRoles","isFungibleTransfer","transfer","isERC1155TransferPayload","prepareTransfer","prepareFungibleTransfer","prepareERC1155Transfer","UnknownTransferPayloadSupplied","_ManagedBudget","DeployableTargetWithRBAC","managedBudgetAbi","params","request","result","simulateManagedBudgetAllocate","writeManagedBudgetAllocate","simulateManagedBudgetClawback","writeManagedBudgetClawback","simulateManagedBudgetDisburse","writeManagedBudgetDisburse","transfers","simulateManagedBudgetDisburseBatch","writeManagedBudgetDisburseBatch","readManagedBudgetOwner","asset","zeroAddress","tokenId","readManagedBudgetTotal","readManagedBudgetAvailable","readManagedBudgetDistributed","_payload","_options","payload","options","owner","getAccount","_a","DeployableUnknownOwnerProvidedError","bytecode","prepareManagedBudgetPayload","ManagedBudgetBases","RegistryType","ManagedBudget","authorized","roles","encodeAbiParameters","parseAbiParameters"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { vestingBudgetAbi } from '@boostxyz/evm';
|
|
2
2
|
import { type Address, type ContractEventName } from 'viem';
|
|
3
3
|
import type { DeployableOptions, GenericDeployableParams } from '../Deployable/Deployable';
|
|
4
|
-
import {
|
|
4
|
+
import { DeployableTargetWithRBAC } from '../Deployable/DeployableTargetWithRBAC';
|
|
5
5
|
import { type FungibleTransferPayload } from '../transfers';
|
|
6
6
|
import { type GenericLog, type ReadParams, RegistryType, type WriteParams } from '../utils';
|
|
7
7
|
export { vestingBudgetAbi };
|
|
@@ -66,9 +66,9 @@ export type VestingBudgetLog<event extends ContractEventName<typeof vestingBudge
|
|
|
66
66
|
* @export
|
|
67
67
|
* @class VestingBudget
|
|
68
68
|
* @typedef {VestingBudget}
|
|
69
|
-
* @extends {
|
|
69
|
+
* @extends {DeployableTargetWithRBAC<VestingBudgetPayload>}
|
|
70
70
|
*/
|
|
71
|
-
export declare class VestingBudget extends
|
|
71
|
+
export declare class VestingBudget extends DeployableTargetWithRBAC<VestingBudgetPayload, typeof vestingBudgetAbi> {
|
|
72
72
|
readonly abi: readonly [{
|
|
73
73
|
readonly type: "constructor";
|
|
74
74
|
readonly inputs: readonly [];
|
|
@@ -166,20 +166,9 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
166
166
|
readonly inputs: readonly [];
|
|
167
167
|
readonly name: "Unauthorized";
|
|
168
168
|
}, {
|
|
169
|
-
readonly type: "
|
|
170
|
-
readonly
|
|
171
|
-
readonly
|
|
172
|
-
readonly name: "account";
|
|
173
|
-
readonly internalType: "address";
|
|
174
|
-
readonly type: "address";
|
|
175
|
-
readonly indexed: true;
|
|
176
|
-
}, {
|
|
177
|
-
readonly name: "isAuthorized";
|
|
178
|
-
readonly internalType: "bool";
|
|
179
|
-
readonly type: "bool";
|
|
180
|
-
readonly indexed: false;
|
|
181
|
-
}];
|
|
182
|
-
readonly name: "Authorized";
|
|
169
|
+
readonly type: "error";
|
|
170
|
+
readonly inputs: readonly [];
|
|
171
|
+
readonly name: "Unauthorized";
|
|
183
172
|
}, {
|
|
184
173
|
readonly type: "event";
|
|
185
174
|
readonly anonymous: false;
|
|
@@ -245,9 +234,44 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
245
234
|
readonly indexed: true;
|
|
246
235
|
}];
|
|
247
236
|
readonly name: "OwnershipTransferred";
|
|
237
|
+
}, {
|
|
238
|
+
readonly type: "event";
|
|
239
|
+
readonly anonymous: false;
|
|
240
|
+
readonly inputs: readonly [{
|
|
241
|
+
readonly name: "user";
|
|
242
|
+
readonly internalType: "address";
|
|
243
|
+
readonly type: "address";
|
|
244
|
+
readonly indexed: true;
|
|
245
|
+
}, {
|
|
246
|
+
readonly name: "roles";
|
|
247
|
+
readonly internalType: "uint256";
|
|
248
|
+
readonly type: "uint256";
|
|
249
|
+
readonly indexed: true;
|
|
250
|
+
}];
|
|
251
|
+
readonly name: "RolesUpdated";
|
|
248
252
|
}, {
|
|
249
253
|
readonly type: "fallback";
|
|
250
254
|
readonly stateMutability: "payable";
|
|
255
|
+
}, {
|
|
256
|
+
readonly type: "function";
|
|
257
|
+
readonly inputs: readonly [];
|
|
258
|
+
readonly name: "ADMIN_ROLE";
|
|
259
|
+
readonly outputs: readonly [{
|
|
260
|
+
readonly name: "";
|
|
261
|
+
readonly internalType: "uint256";
|
|
262
|
+
readonly type: "uint256";
|
|
263
|
+
}];
|
|
264
|
+
readonly stateMutability: "view";
|
|
265
|
+
}, {
|
|
266
|
+
readonly type: "function";
|
|
267
|
+
readonly inputs: readonly [];
|
|
268
|
+
readonly name: "MANAGER_ROLE";
|
|
269
|
+
readonly outputs: readonly [{
|
|
270
|
+
readonly name: "";
|
|
271
|
+
readonly internalType: "uint256";
|
|
272
|
+
readonly type: "uint256";
|
|
273
|
+
}];
|
|
274
|
+
readonly stateMutability: "view";
|
|
251
275
|
}, {
|
|
252
276
|
readonly type: "function";
|
|
253
277
|
readonly inputs: readonly [{
|
|
@@ -292,8 +316,38 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
292
316
|
readonly name: "clawback";
|
|
293
317
|
readonly outputs: readonly [{
|
|
294
318
|
readonly name: "";
|
|
295
|
-
readonly internalType: "
|
|
296
|
-
readonly type: "
|
|
319
|
+
readonly internalType: "uint256";
|
|
320
|
+
readonly type: "uint256";
|
|
321
|
+
}];
|
|
322
|
+
readonly stateMutability: "nonpayable";
|
|
323
|
+
}, {
|
|
324
|
+
readonly type: "function";
|
|
325
|
+
readonly inputs: readonly [{
|
|
326
|
+
readonly name: "target";
|
|
327
|
+
readonly internalType: "address";
|
|
328
|
+
readonly type: "address";
|
|
329
|
+
}, {
|
|
330
|
+
readonly name: "data_";
|
|
331
|
+
readonly internalType: "bytes";
|
|
332
|
+
readonly type: "bytes";
|
|
333
|
+
}, {
|
|
334
|
+
readonly name: "boostId";
|
|
335
|
+
readonly internalType: "uint256";
|
|
336
|
+
readonly type: "uint256";
|
|
337
|
+
}, {
|
|
338
|
+
readonly name: "incentiveId";
|
|
339
|
+
readonly internalType: "uint256";
|
|
340
|
+
readonly type: "uint256";
|
|
341
|
+
}];
|
|
342
|
+
readonly name: "clawbackFromTarget";
|
|
343
|
+
readonly outputs: readonly [{
|
|
344
|
+
readonly name: "";
|
|
345
|
+
readonly internalType: "uint256";
|
|
346
|
+
readonly type: "uint256";
|
|
347
|
+
}, {
|
|
348
|
+
readonly name: "";
|
|
349
|
+
readonly internalType: "address";
|
|
350
|
+
readonly type: "address";
|
|
297
351
|
}];
|
|
298
352
|
readonly stateMutability: "nonpayable";
|
|
299
353
|
}, {
|
|
@@ -388,6 +442,70 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
388
442
|
readonly type: "bytes4";
|
|
389
443
|
}];
|
|
390
444
|
readonly stateMutability: "pure";
|
|
445
|
+
}, {
|
|
446
|
+
readonly type: "function";
|
|
447
|
+
readonly inputs: readonly [{
|
|
448
|
+
readonly name: "user";
|
|
449
|
+
readonly internalType: "address";
|
|
450
|
+
readonly type: "address";
|
|
451
|
+
}, {
|
|
452
|
+
readonly name: "roles";
|
|
453
|
+
readonly internalType: "uint256";
|
|
454
|
+
readonly type: "uint256";
|
|
455
|
+
}];
|
|
456
|
+
readonly name: "grantRoles";
|
|
457
|
+
readonly outputs: readonly [];
|
|
458
|
+
readonly stateMutability: "payable";
|
|
459
|
+
}, {
|
|
460
|
+
readonly type: "function";
|
|
461
|
+
readonly inputs: readonly [{
|
|
462
|
+
readonly name: "accounts_";
|
|
463
|
+
readonly internalType: "address[]";
|
|
464
|
+
readonly type: "address[]";
|
|
465
|
+
}, {
|
|
466
|
+
readonly name: "roles_";
|
|
467
|
+
readonly internalType: "uint256[]";
|
|
468
|
+
readonly type: "uint256[]";
|
|
469
|
+
}];
|
|
470
|
+
readonly name: "grantRoles";
|
|
471
|
+
readonly outputs: readonly [];
|
|
472
|
+
readonly stateMutability: "nonpayable";
|
|
473
|
+
}, {
|
|
474
|
+
readonly type: "function";
|
|
475
|
+
readonly inputs: readonly [{
|
|
476
|
+
readonly name: "user";
|
|
477
|
+
readonly internalType: "address";
|
|
478
|
+
readonly type: "address";
|
|
479
|
+
}, {
|
|
480
|
+
readonly name: "roles";
|
|
481
|
+
readonly internalType: "uint256";
|
|
482
|
+
readonly type: "uint256";
|
|
483
|
+
}];
|
|
484
|
+
readonly name: "hasAllRoles";
|
|
485
|
+
readonly outputs: readonly [{
|
|
486
|
+
readonly name: "";
|
|
487
|
+
readonly internalType: "bool";
|
|
488
|
+
readonly type: "bool";
|
|
489
|
+
}];
|
|
490
|
+
readonly stateMutability: "view";
|
|
491
|
+
}, {
|
|
492
|
+
readonly type: "function";
|
|
493
|
+
readonly inputs: readonly [{
|
|
494
|
+
readonly name: "user";
|
|
495
|
+
readonly internalType: "address";
|
|
496
|
+
readonly type: "address";
|
|
497
|
+
}, {
|
|
498
|
+
readonly name: "roles";
|
|
499
|
+
readonly internalType: "uint256";
|
|
500
|
+
readonly type: "uint256";
|
|
501
|
+
}];
|
|
502
|
+
readonly name: "hasAnyRole";
|
|
503
|
+
readonly outputs: readonly [{
|
|
504
|
+
readonly name: "";
|
|
505
|
+
readonly internalType: "bool";
|
|
506
|
+
readonly type: "bool";
|
|
507
|
+
}];
|
|
508
|
+
readonly stateMutability: "view";
|
|
391
509
|
}, {
|
|
392
510
|
readonly type: "function";
|
|
393
511
|
readonly inputs: readonly [{
|
|
@@ -456,6 +574,16 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
456
574
|
readonly name: "renounceOwnership";
|
|
457
575
|
readonly outputs: readonly [];
|
|
458
576
|
readonly stateMutability: "payable";
|
|
577
|
+
}, {
|
|
578
|
+
readonly type: "function";
|
|
579
|
+
readonly inputs: readonly [{
|
|
580
|
+
readonly name: "roles";
|
|
581
|
+
readonly internalType: "uint256";
|
|
582
|
+
readonly type: "uint256";
|
|
583
|
+
}];
|
|
584
|
+
readonly name: "renounceRoles";
|
|
585
|
+
readonly outputs: readonly [];
|
|
586
|
+
readonly stateMutability: "payable";
|
|
459
587
|
}, {
|
|
460
588
|
readonly type: "function";
|
|
461
589
|
readonly inputs: readonly [];
|
|
@@ -465,7 +593,49 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
465
593
|
}, {
|
|
466
594
|
readonly type: "function";
|
|
467
595
|
readonly inputs: readonly [{
|
|
468
|
-
readonly name: "
|
|
596
|
+
readonly name: "user";
|
|
597
|
+
readonly internalType: "address";
|
|
598
|
+
readonly type: "address";
|
|
599
|
+
}, {
|
|
600
|
+
readonly name: "roles";
|
|
601
|
+
readonly internalType: "uint256";
|
|
602
|
+
readonly type: "uint256";
|
|
603
|
+
}];
|
|
604
|
+
readonly name: "revokeRoles";
|
|
605
|
+
readonly outputs: readonly [];
|
|
606
|
+
readonly stateMutability: "payable";
|
|
607
|
+
}, {
|
|
608
|
+
readonly type: "function";
|
|
609
|
+
readonly inputs: readonly [{
|
|
610
|
+
readonly name: "accounts_";
|
|
611
|
+
readonly internalType: "address[]";
|
|
612
|
+
readonly type: "address[]";
|
|
613
|
+
}, {
|
|
614
|
+
readonly name: "roles_";
|
|
615
|
+
readonly internalType: "uint256[]";
|
|
616
|
+
readonly type: "uint256[]";
|
|
617
|
+
}];
|
|
618
|
+
readonly name: "revokeRoles";
|
|
619
|
+
readonly outputs: readonly [];
|
|
620
|
+
readonly stateMutability: "nonpayable";
|
|
621
|
+
}, {
|
|
622
|
+
readonly type: "function";
|
|
623
|
+
readonly inputs: readonly [{
|
|
624
|
+
readonly name: "user";
|
|
625
|
+
readonly internalType: "address";
|
|
626
|
+
readonly type: "address";
|
|
627
|
+
}];
|
|
628
|
+
readonly name: "rolesOf";
|
|
629
|
+
readonly outputs: readonly [{
|
|
630
|
+
readonly name: "roles";
|
|
631
|
+
readonly internalType: "uint256";
|
|
632
|
+
readonly type: "uint256";
|
|
633
|
+
}];
|
|
634
|
+
readonly stateMutability: "view";
|
|
635
|
+
}, {
|
|
636
|
+
readonly type: "function";
|
|
637
|
+
readonly inputs: readonly [{
|
|
638
|
+
readonly name: "accounts_";
|
|
469
639
|
readonly internalType: "address[]";
|
|
470
640
|
readonly type: "address[]";
|
|
471
641
|
}, {
|
|
@@ -533,9 +703,9 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
533
703
|
*
|
|
534
704
|
* @public
|
|
535
705
|
* @static
|
|
536
|
-
* @type {Address}
|
|
706
|
+
* @type {Record<number, Address>}
|
|
537
707
|
*/
|
|
538
|
-
static
|
|
708
|
+
static bases: Record<number, Address>;
|
|
539
709
|
/**
|
|
540
710
|
* @inheritdoc
|
|
541
711
|
*
|
|
@@ -548,7 +718,7 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
548
718
|
* Get the owner of the budget
|
|
549
719
|
*
|
|
550
720
|
* @public
|
|
551
|
-
* @param {?ReadParams
|
|
721
|
+
* @param {?ReadParams} [params]
|
|
552
722
|
* @returns {Promise<Address>}
|
|
553
723
|
*/
|
|
554
724
|
owner(params?: ReadParams<typeof vestingBudgetAbi, 'owner'>): Promise<`0x${string}`>;
|
|
@@ -556,24 +726,24 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
556
726
|
* The timestamp at which the vesting schedule begins
|
|
557
727
|
*
|
|
558
728
|
* @public
|
|
559
|
-
* @param {?ReadParams
|
|
560
|
-
* @returns {
|
|
729
|
+
* @param {?ReadParams} [params]
|
|
730
|
+
* @returns {Promise<bigint>}
|
|
561
731
|
*/
|
|
562
732
|
start(params?: ReadParams<typeof vestingBudgetAbi, 'start'>): Promise<bigint>;
|
|
563
733
|
/**
|
|
564
734
|
* The duration of the vesting schedule (in seconds)
|
|
565
735
|
*
|
|
566
736
|
* @public
|
|
567
|
-
* @param {?ReadParams
|
|
568
|
-
* @returns {
|
|
737
|
+
* @param {?ReadParams} [params]
|
|
738
|
+
* @returns {Promise<bigint>}
|
|
569
739
|
*/
|
|
570
740
|
duration(params?: ReadParams<typeof vestingBudgetAbi, 'duration'>): Promise<bigint>;
|
|
571
741
|
/**
|
|
572
742
|
* The duration of the cliff period (in seconds)
|
|
573
743
|
*
|
|
574
744
|
* @public
|
|
575
|
-
* @param {?ReadParams
|
|
576
|
-
* @returns {
|
|
745
|
+
* @param {?ReadParams} [params]
|
|
746
|
+
* @returns {Promise<bigint>}
|
|
577
747
|
*/
|
|
578
748
|
cliff(params?: ReadParams<typeof vestingBudgetAbi, 'cliff'>): Promise<bigint>;
|
|
579
749
|
/**
|
|
@@ -584,7 +754,7 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
584
754
|
* @public
|
|
585
755
|
* @async
|
|
586
756
|
* @param {(FungibleTransferPayload)} transfer
|
|
587
|
-
* @param {?WriteParams
|
|
757
|
+
* @param {?WriteParams} [params]
|
|
588
758
|
* @returns {Promise<boolean>} - True if the allocation was successful
|
|
589
759
|
*/
|
|
590
760
|
allocate(transfer: FungibleTransferPayload, params?: WriteParams<typeof vestingBudgetAbi, 'allocate'>): Promise<boolean>;
|
|
@@ -596,8 +766,8 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
596
766
|
* @public
|
|
597
767
|
* @async
|
|
598
768
|
* @param {(FungibleTransferPayload)} transfer
|
|
599
|
-
* @param {?WriteParams
|
|
600
|
-
* @returns {Promise<boolean>} - True if the allocation was successful
|
|
769
|
+
* @param {?WriteParams} [params]
|
|
770
|
+
* @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the allocation was successful
|
|
601
771
|
*/
|
|
602
772
|
allocateRaw(transfer: FungibleTransferPayload, params?: WriteParams<typeof vestingBudgetAbi, 'allocate'>): Promise<{
|
|
603
773
|
hash: `0x${string}`;
|
|
@@ -612,10 +782,10 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
612
782
|
* @public
|
|
613
783
|
* @async
|
|
614
784
|
* @param {(FungibleTransferPayload)} transfer
|
|
615
|
-
* @param {?WriteParams
|
|
785
|
+
* @param {?WriteParams} [params]
|
|
616
786
|
* @returns {Promise<boolean>} - True if the request was successful
|
|
617
787
|
*/
|
|
618
|
-
clawback(transfer: FungibleTransferPayload, params?: WriteParams<typeof vestingBudgetAbi, 'clawback'>): Promise<
|
|
788
|
+
clawback(transfer: FungibleTransferPayload, params?: WriteParams<typeof vestingBudgetAbi, 'clawback'>): Promise<bigint>;
|
|
619
789
|
/**
|
|
620
790
|
* Clawbacks assets from the budget.
|
|
621
791
|
* Only the owner can directly clawback assets from the budget
|
|
@@ -625,12 +795,12 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
625
795
|
* @public
|
|
626
796
|
* @async
|
|
627
797
|
* @param {(FungibleTransferPayload)} transfer
|
|
628
|
-
* @param {?WriteParams
|
|
629
|
-
* @returns {Promise<boolean>} - True if the request was successful
|
|
798
|
+
* @param {?WriteParams} [params]
|
|
799
|
+
* @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the request was successful
|
|
630
800
|
*/
|
|
631
801
|
clawbackRaw(transfer: FungibleTransferPayload, params?: WriteParams<typeof vestingBudgetAbi, 'clawback'>): Promise<{
|
|
632
802
|
hash: `0x${string}`;
|
|
633
|
-
result:
|
|
803
|
+
result: bigint;
|
|
634
804
|
}>;
|
|
635
805
|
/**
|
|
636
806
|
* Disburses assets from the budget to a single recipient
|
|
@@ -639,7 +809,7 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
639
809
|
* @public
|
|
640
810
|
* @async
|
|
641
811
|
* @param {(FungibleTransferPayload)} transfer
|
|
642
|
-
* @param {?WriteParams
|
|
812
|
+
* @param {?WriteParams} [params]
|
|
643
813
|
* @returns {Promise<boolean>} - True if the disbursement was successful
|
|
644
814
|
*/
|
|
645
815
|
disburse(transfer: FungibleTransferPayload, params?: WriteParams<typeof vestingBudgetAbi, 'disburse'>): Promise<boolean>;
|
|
@@ -650,8 +820,8 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
650
820
|
* @public
|
|
651
821
|
* @async
|
|
652
822
|
* @param {(FungibleTransferPayload)} transfer
|
|
653
|
-
* @param {?WriteParams
|
|
654
|
-
* @returns {Promise<boolean>} - True if the disbursement was successful
|
|
823
|
+
* @param {?WriteParams} [params]
|
|
824
|
+
* @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if the disbursement was successful
|
|
655
825
|
*/
|
|
656
826
|
disburseRaw(transfer: FungibleTransferPayload, params?: WriteParams<typeof vestingBudgetAbi, 'disburse'>): Promise<{
|
|
657
827
|
hash: `0x${string}`;
|
|
@@ -663,7 +833,7 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
663
833
|
* @public
|
|
664
834
|
* @async
|
|
665
835
|
* @param {Array<FungibleTransferPayload>} transfers
|
|
666
|
-
* @param {?WriteParams
|
|
836
|
+
* @param {?WriteParams} [params]
|
|
667
837
|
* @returns {Promise<boolean>} - True if all disbursements were successful
|
|
668
838
|
*/
|
|
669
839
|
disburseBatch(transfers: FungibleTransferPayload[], params?: WriteParams<typeof vestingBudgetAbi, 'disburseBatch'>): Promise<boolean>;
|
|
@@ -673,54 +843,18 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
673
843
|
* @public
|
|
674
844
|
* @async
|
|
675
845
|
* @param {Array<FungibleTransferPayload>} transfers
|
|
676
|
-
* @param {?WriteParams
|
|
677
|
-
* @returns {Promise<boolean>} - True if all disbursements were successful
|
|
846
|
+
* @param {?WriteParams} [params]
|
|
847
|
+
* @returns {Promise<{ hash: `0x${string}`; result: boolean; }>} - True if all disbursements were successful
|
|
678
848
|
*/
|
|
679
849
|
disburseBatchRaw(transfers: FungibleTransferPayload[], params?: WriteParams<typeof vestingBudgetAbi, 'disburseBatch'>): Promise<{
|
|
680
850
|
hash: `0x${string}`;
|
|
681
851
|
result: boolean;
|
|
682
852
|
}>;
|
|
683
|
-
/**
|
|
684
|
-
* Set the authorized status of the given accounts
|
|
685
|
-
* The mechanism for managing authorization is left to the implementing contract
|
|
686
|
-
*
|
|
687
|
-
* @public
|
|
688
|
-
* @async
|
|
689
|
-
* @param {Address[]} addresses - The accounts to authorize or deauthorize
|
|
690
|
-
* @param {boolean[]} allowed - The authorization status for the given accounts
|
|
691
|
-
* @param {?WriteParams<typeof vestingBudgetAbi, 'setAuthorized'>} [params]
|
|
692
|
-
* @returns {Promise<void>}
|
|
693
|
-
*/
|
|
694
|
-
setAuthorized(addresses: Address[], allowed: boolean[], params?: WriteParams<typeof vestingBudgetAbi, 'setAuthorized'>): Promise<void>;
|
|
695
|
-
/**
|
|
696
|
-
* Set the authorized status of the given accounts
|
|
697
|
-
* The mechanism for managing authorization is left to the implementing contract
|
|
698
|
-
*
|
|
699
|
-
* @public
|
|
700
|
-
* @async
|
|
701
|
-
* @param {Address[]} addresses - The accounts to authorize or deauthorize
|
|
702
|
-
* @param {boolean[]} allowed - The authorization status for the given accounts
|
|
703
|
-
* @param {?WriteParams<typeof vestingBudgetAbi, 'setAuthorized'>} [params]
|
|
704
|
-
* @returns {Promise<void>}
|
|
705
|
-
*/
|
|
706
|
-
setAuthorizedRaw(addresses: Address[], allowed: boolean[], params?: WriteParams<typeof vestingBudgetAbi, 'setAuthorized'>): Promise<{
|
|
707
|
-
hash: `0x${string}`;
|
|
708
|
-
result: void;
|
|
709
|
-
}>;
|
|
710
|
-
/**
|
|
711
|
-
* Check if the given account is authorized to use the budget
|
|
712
|
-
*
|
|
713
|
-
* @public
|
|
714
|
-
* @param {Address} account
|
|
715
|
-
* @param {?ReadParams<typeof vestingBudgetAbi, 'isAuthorized'>} [params]
|
|
716
|
-
* @returns {Promise<boolean>} - True if the account is authorized
|
|
717
|
-
*/
|
|
718
|
-
isAuthorized(account: Address, params?: ReadParams<typeof vestingBudgetAbi, 'isAuthorized'>): Promise<boolean>;
|
|
719
853
|
/**
|
|
720
854
|
* Get the end time of the vesting schedule
|
|
721
855
|
*
|
|
722
856
|
* @public
|
|
723
|
-
* @param {?ReadParams
|
|
857
|
+
* @param {?ReadParams} [params]
|
|
724
858
|
* @returns {Promise<bigint>}
|
|
725
859
|
*/
|
|
726
860
|
end(params?: ReadParams<typeof vestingBudgetAbi, 'end'>): Promise<bigint>;
|
|
@@ -729,30 +863,30 @@ export declare class VestingBudget extends DeployableTarget<VestingBudgetPayload
|
|
|
729
863
|
* This is equal to the sum of the total current balance and the total distributed amount
|
|
730
864
|
*
|
|
731
865
|
* @public
|
|
732
|
-
* @param {Address} asset - The address of the asset (or the zero address for native assets)
|
|
733
|
-
* @param {?ReadParams
|
|
866
|
+
* @param {Address} [asset="0x0000000000000000000000000000000000000000"] - The address of the asset (or the zero address for native assets)
|
|
867
|
+
* @param {?ReadParams} [params]
|
|
734
868
|
* @returns {Promise<bigint>}
|
|
735
869
|
*/
|
|
736
|
-
total(asset
|
|
870
|
+
total(asset?: Address, params?: ReadParams<typeof vestingBudgetAbi, 'total'>): Promise<bigint>;
|
|
737
871
|
/**
|
|
738
872
|
* Get the amount of assets available for distribution from the budget as of the current block timestamp
|
|
739
873
|
* This is equal to the total vested amount minus any already distributed
|
|
740
874
|
*
|
|
741
875
|
* @public
|
|
742
|
-
* @param {Address} asset - The address of the asset (or the zero address for native assets)
|
|
743
|
-
* @param {?ReadParams
|
|
876
|
+
* @param {Address} [asset="0x0000000000000000000000000000000000000000"] - The address of the asset (or the zero address for native assets)
|
|
877
|
+
* @param {?ReadParams} [params]
|
|
744
878
|
* @returns {Promise<bigint>} - The amount of assets currently available for distribution
|
|
745
879
|
*/
|
|
746
|
-
available(asset
|
|
880
|
+
available(asset?: Address, params?: ReadParams<typeof vestingBudgetAbi, 'available'>): Promise<bigint>;
|
|
747
881
|
/**
|
|
748
882
|
* Get the amount of assets that have been distributed from the budget
|
|
749
883
|
*
|
|
750
884
|
* @public
|
|
751
|
-
* @param {Address} asset
|
|
752
|
-
* @param {?ReadParams
|
|
885
|
+
* @param {Address} [asset="0x0000000000000000000000000000000000000000"]
|
|
886
|
+
* @param {?ReadParams} [params]
|
|
753
887
|
* @returns {Promise<bigint>} - The amount of assets distributed
|
|
754
888
|
*/
|
|
755
|
-
distributed(asset
|
|
889
|
+
distributed(asset?: Address, params?: ReadParams<typeof vestingBudgetAbi, 'distributed'>): Promise<bigint>;
|
|
756
890
|
/**
|
|
757
891
|
* @inheritdoc
|
|
758
892
|
*
|