{
  "_format": "hh-sol-artifact-1",
  "contractName": "ModuleManager",
  "sourceName": "contracts/base/ModuleManager.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "DisabledModule",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "EnabledModule",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "ExecutionFromModuleFailure",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "ExecutionFromModuleSuccess",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "prevModule",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "disableModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "enableModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum Types.Operation",
          "name": "operation",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "execTransactionFromModule",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum Types.Operation",
          "name": "operation",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "execTransactionFromModuleReturnData",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "start",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "pageSize",
          "type": "uint256"
        }
      ],
      "name": "getModulePagenated",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "array",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "next",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "isModuleEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506109fa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631b0dcbcb146100675780632a3c1871146100915780632d9ad53d146100b4578063610b5925146100c757806386111a1e146100dc578063e009cfde146100fd575b600080fd5b61007a6100753660046107f3565b610110565b60405161008892919061092a565b60405180910390f35b6100a461009f3660046107f3565b6101b4565b6040519015158152602001610088565b6100a46100c2366004610777565b610298565b6100da6100d5366004610777565b6102d3565b005b6100ef6100ea3660046107ca565b610441565b6040516100889291906108cd565b6100da61010b366004610798565b610556565b600060603360011480159061013c5750336000908152602081905260409020546001600160a01b031615155b6101825760405162461bcd60e51b81526020600482015260126024820152716e6f7420616c6c6f776564206d6f64756c6560701b60448201526064015b60405180910390fd5b61018e868686866101b4565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b6000336001148015906101de5750336000908152602081905260409020546001600160a01b031615155b61021f5760405162461bcd60e51b81526020600482015260126024820152716e6f7420616c6c6f776564206d6f64756c6560701b6044820152606401610179565b61022c858585855a6106c0565b905080156102645760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a2610290565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b60006001600160a01b0382166001148015906102cd57506001600160a01b038281166000908152602081905260409020541615155b92915050565b6102db610715565b6001600160a01b038116158015906102fc57506001600160a01b0381163014155b801561031257506001600160a01b038116600114155b6103575760405162461bcd60e51b8152602060048201526016602482015275696e76616c6964206d6f64756c65206164647265737360501b6044820152606401610179565b6001600160a01b03818116600090815260208190526040902054166103b35760405162461bcd60e51b8152602060048201526012602482015271647570206d6f64756c65206164647265737360701b6044820152606401610179565b6001600160a01b038116600081815260208181526040808320805460016001600160a01b0319918216811790925593527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d8054909316841790925590519182527fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f8440910160405180910390a150565b606060008267ffffffffffffffff81111561046c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610495578160200160208202803683370190505b506001600160a01b0380861660009081526020819052604081205492945091165b6001600160a01b038116158015906104d857506001600160a01b038116600114155b80156104e357508482105b15610548578084838151811061050957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152918116600090815291829052604090912054168161054081610987565b9250506104b6565b908352919491935090915050565b61055e610715565b6001600160a01b0381161580159061057f57506001600160a01b0381163014155b801561059557506001600160a01b038116600114155b6105da5760405162461bcd60e51b8152602060048201526016602482015275696e76616c6964206d6f64756c65206164647265737360501b6044820152606401610179565b6001600160a01b038281166000908152602081905260409020548116908216146106465760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420636f72726573706f6e6420746f20746865206d6f64756c65000000006044820152606401610179565b6001600160a01b03818116600081815260208181526040808320805488871685528285208054919097166001600160a01b03199182161790965592849052825490941690915591519081527faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace4054276910160405180910390a15050565b6000808660018111156106e357634e487b7160e01b600052602160045260246000fd5b14156106fd57600080845160208601878987f1905061070c565b6000808451602086018886f490505b95945050505050565b3330146107595760405162461bcd60e51b81526020600482015260126024820152711c995c5d5a5c9959081cd95b198818d85b1b60721b6044820152606401610179565b565b80356001600160a01b038116811461077257600080fd5b919050565b600060208284031215610788578081fd5b6107918261075b565b9392505050565b600080604083850312156107aa578081fd5b6107b38361075b565b91506107c16020840161075b565b90509250929050565b600080604083850312156107dc578182fd5b6107e58361075b565b946020939093013593505050565b60008060008060808587031215610808578182fd5b843560028110610816578283fd5b93506108246020860161075b565b925060408501359150606085013567ffffffffffffffff80821115610847578283fd5b818701915087601f83011261085a578283fd5b81358181111561086c5761086c6109ae565b604051601f8201601f19908116603f01168101908382118183101715610894576108946109ae565b816040528281528a60208487010111156108ac578586fd5b82602086016020830137918201602001949094529598949750929550505050565b604080825283519082018190526000906020906060840190828701845b8281101561090f5781516001600160a01b0316845292840192908401906001016108ea565b5050506001600160a01b039490941692019190915250919050565b8215158152600060206040818401528351806040850152825b8181101561095f57858101830151858201606001528201610943565b818111156109705783606083870101525b50601f01601f191692909201606001949350505050565b60006000198214156109a757634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220a74657ec4743e816a4aeac4a2b7064572e2adab2d211460476ad825678fddda064736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80631b0dcbcb146100675780632a3c1871146100915780632d9ad53d146100b4578063610b5925146100c757806386111a1e146100dc578063e009cfde146100fd575b600080fd5b61007a6100753660046107f3565b610110565b60405161008892919061092a565b60405180910390f35b6100a461009f3660046107f3565b6101b4565b6040519015158152602001610088565b6100a46100c2366004610777565b610298565b6100da6100d5366004610777565b6102d3565b005b6100ef6100ea3660046107ca565b610441565b6040516100889291906108cd565b6100da61010b366004610798565b610556565b600060603360011480159061013c5750336000908152602081905260409020546001600160a01b031615155b6101825760405162461bcd60e51b81526020600482015260126024820152716e6f7420616c6c6f776564206d6f64756c6560701b60448201526064015b60405180910390fd5b61018e868686866101b4565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b6000336001148015906101de5750336000908152602081905260409020546001600160a01b031615155b61021f5760405162461bcd60e51b81526020600482015260126024820152716e6f7420616c6c6f776564206d6f64756c6560701b6044820152606401610179565b61022c858585855a6106c0565b905080156102645760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a2610290565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b60006001600160a01b0382166001148015906102cd57506001600160a01b038281166000908152602081905260409020541615155b92915050565b6102db610715565b6001600160a01b038116158015906102fc57506001600160a01b0381163014155b801561031257506001600160a01b038116600114155b6103575760405162461bcd60e51b8152602060048201526016602482015275696e76616c6964206d6f64756c65206164647265737360501b6044820152606401610179565b6001600160a01b03818116600090815260208190526040902054166103b35760405162461bcd60e51b8152602060048201526012602482015271647570206d6f64756c65206164647265737360701b6044820152606401610179565b6001600160a01b038116600081815260208181526040808320805460016001600160a01b0319918216811790925593527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d8054909316841790925590519182527fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f8440910160405180910390a150565b606060008267ffffffffffffffff81111561046c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610495578160200160208202803683370190505b506001600160a01b0380861660009081526020819052604081205492945091165b6001600160a01b038116158015906104d857506001600160a01b038116600114155b80156104e357508482105b15610548578084838151811061050957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152918116600090815291829052604090912054168161054081610987565b9250506104b6565b908352919491935090915050565b61055e610715565b6001600160a01b0381161580159061057f57506001600160a01b0381163014155b801561059557506001600160a01b038116600114155b6105da5760405162461bcd60e51b8152602060048201526016602482015275696e76616c6964206d6f64756c65206164647265737360501b6044820152606401610179565b6001600160a01b038281166000908152602081905260409020548116908216146106465760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420636f72726573706f6e6420746f20746865206d6f64756c65000000006044820152606401610179565b6001600160a01b03818116600081815260208181526040808320805488871685528285208054919097166001600160a01b03199182161790965592849052825490941690915591519081527faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace4054276910160405180910390a15050565b6000808660018111156106e357634e487b7160e01b600052602160045260246000fd5b14156106fd57600080845160208601878987f1905061070c565b6000808451602086018886f490505b95945050505050565b3330146107595760405162461bcd60e51b81526020600482015260126024820152711c995c5d5a5c9959081cd95b198818d85b1b60721b6044820152606401610179565b565b80356001600160a01b038116811461077257600080fd5b919050565b600060208284031215610788578081fd5b6107918261075b565b9392505050565b600080604083850312156107aa578081fd5b6107b38361075b565b91506107c16020840161075b565b90509250929050565b600080604083850312156107dc578182fd5b6107e58361075b565b946020939093013593505050565b60008060008060808587031215610808578182fd5b843560028110610816578283fd5b93506108246020860161075b565b925060408501359150606085013567ffffffffffffffff80821115610847578283fd5b818701915087601f83011261085a578283fd5b81358181111561086c5761086c6109ae565b604051601f8201601f19908116603f01168101908382118183101715610894576108946109ae565b816040528281528a60208487010111156108ac578586fd5b82602086016020830137918201602001949094529598949750929550505050565b604080825283519082018190526000906020906060840190828701845b8281101561090f5781516001600160a01b0316845292840192908401906001016108ea565b5050506001600160a01b039490941692019190915250919050565b8215158152600060206040818401528351806040850152825b8181101561095f57858101830151858201606001528201610943565b818111156109705783606083870101525b50601f01601f191692909201606001949350505050565b60006000198214156109a757634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220a74657ec4743e816a4aeac4a2b7064572e2adab2d211460476ad825678fddda064736f6c63430008040033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
