// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; import "./ITemplateFactory.sol"; interface ITemplateDeployer { /** * @notice Emitted when a Template is deployed. * @param deployment The indexed address of the deployed template. * @param sender The address of the message sender. */ event TemplateDeployed(address indexed deployment, address indexed sender); /** * @notice Returns the template of the factory contract. */ function TEMPLATE() external view returns (bytes32); /** * @notice Returns the template version of the factory contract. */ function TEMPLATE_VERSION() external view returns (uint256); /** * @notice Returns the address of SOMA Core contract templateFactory. */ function FACTORY() external view returns (address); /** * @notice Returns the init hash of the Soma Swap Pair creation code. */ function INIT_CODE_HASH() external view returns (bytes32); /** * @notice Returns the address of a deployment at a specific index. * @param index the index of the deployment to query. */ function deployment(uint256 index) external view returns (address); /** * @notice The total number of deployments created. */ function totalDeployments() external view returns (uint256); /** * @notice Returns whether or not a contract was deployed by this contract. * @param target The address to return the deployed status of. * @return A boolean indicating whether `target` was deployed by the template factory. */ function deployed(address target) external view returns (bool); /** * @notice See {ITemplateFactory-deploymentInfo}. */ function deploymentInfo(address target) external view returns (ITemplateFactory.DeploymentInfo memory); }