// SPDX-License-Identifier: GPL-3.0 // Docgen-SOLC: 0.8.15 pragma solidity ^0.8.15; import { VaultInitParams, VaultFees } from "./IVault.sol"; import { VaultMetadata } from "./IVaultRegistry.sol"; import { IDeploymentController } from "./IDeploymentController.sol"; import { IERC4626, IERC20 } from "./IERC4626.sol"; struct DeploymentArgs { /// @Notice templateId bytes32 id; /// @Notice encoded init params bytes data; } interface IVaultController { function deployVault( VaultInitParams memory vaultData, DeploymentArgs memory adapterData, DeploymentArgs memory strategyData, address staking, bytes memory rewardsData, VaultMetadata memory metadata, uint256 initialDeposit ) external returns (address); function deployAdapter( IERC20 asset, DeploymentArgs memory adapterData, DeploymentArgs memory strategyData, uint256 initialDeposit ) external returns (address); function deployStaking(IERC20 asset) external returns (address); function proposeVaultAdapters(address[] memory vaults, IERC4626[] memory newAdapter) external; function changeVaultAdapters(address[] memory vaults) external; function proposeVaultFees(address[] memory vaults, VaultFees[] memory newFees) external; function changeVaultFees(address[] memory vaults) external; function registerVaults(address[] memory vaults, VaultMetadata[] memory metadata) external; function addClones(address[] memory clones) external; function toggleEndorsements(address[] memory targets) external; function toggleRejections(address[] memory targets) external; function addStakingRewardsTokens(address[] memory vaults, bytes[] memory rewardsTokenData) external; function changeStakingRewardsSpeeds( address[] memory vaults, IERC20[] memory rewardTokens, uint160[] memory rewardsSpeeds ) external; function fundStakingRewards( address[] memory vaults, IERC20[] memory rewardTokens, uint256[] memory amounts ) external; function setEscrowTokenFees(IERC20[] memory tokens, uint256[] memory fees) external; function addTemplateCategories(bytes32[] memory templateCategories) external; function toggleTemplateEndorsements(bytes32[] memory templateCategories, bytes32[] memory templateIds) external; function pauseAdapters(address[] calldata vaults) external; function pauseVaults(address[] calldata vaults) external; function unpauseAdapters(address[] calldata vaults) external; function unpauseVaults(address[] calldata vaults) external; function nominateNewAdminProxyOwner(address newOwner) external; function acceptAdminProxyOwnership() external; function setPerformanceFee(uint256 newFee) external; function setAdapterPerformanceFees(address[] calldata adapters) external; function performanceFee() external view returns (uint256); function setHarvestCooldown(uint256 newCooldown) external; function setAdapterHarvestCooldowns(address[] calldata adapters) external; function harvestCooldown() external view returns (uint256); function setDeploymentController(IDeploymentController _deploymentController) external; function setActiveTemplateId(bytes32 templateCategory, bytes32 templateId) external; function activeTemplateId(bytes32 templateCategory) external view returns (bytes32); }