// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; // Pulled from https://github.com/gelatodigital/automate/blob/v2.1.0/contracts/integrations/Types.sol enum Module { RESOLVER, TIME, PROXY, SINGLE_EXEC } struct ModuleData { Module[] modules; bytes[] args; } interface IAutomate { function createTask( address execAddress, bytes calldata execDataOrSelector, ModuleData calldata moduleData, address feeToken ) external returns (bytes32 taskId); function cancelTask(bytes32 taskId) external; function getFeeDetails() external view returns (uint256, address); function gelato() external view returns (address payable); function taskTreasury() external view returns (ITaskTreasuryUpgradable); } interface ITaskTreasuryUpgradable { function depositFunds( address receiver, address token, uint256 amount ) external payable; function withdrawFunds( address payable receiver, address token, uint256 amount ) external; } interface IOpsProxyFactory { function getProxyOf(address account) external view returns (address, bool); }