[
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "string", "name": "", "internalType": "string" }],
        "name": "NAME",
        "inputs": [],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "string", "name": "", "internalType": "string" }],
        "name": "VERSION",
        "inputs": [],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "addOwnerWithThreshold",
        "inputs": [
            { "type": "address", "name": "owner", "internalType": "address" },
            { "type": "uint256", "name": "_threshold", "internalType": "uint256" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "approveHash",
        "inputs": [{ "type": "bytes32", "name": "hashToApprove", "internalType": "bytes32" }],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }],
        "name": "approvedHashes",
        "inputs": [
            { "type": "address", "name": "", "internalType": "address" },
            { "type": "bytes32", "name": "", "internalType": "bytes32" }
        ],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "changeMasterCopy",
        "inputs": [{ "type": "address", "name": "_masterCopy", "internalType": "address" }],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "changeThreshold",
        "inputs": [{ "type": "uint256", "name": "_threshold", "internalType": "uint256" }],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "disableModule",
        "inputs": [
            { "type": "address", "name": "prevModule", "internalType": "contract Module" },
            { "type": "address", "name": "module", "internalType": "contract Module" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "bytes32", "name": "", "internalType": "bytes32" }],
        "name": "domainSeparator",
        "inputs": [],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "enableModule",
        "inputs": [{ "type": "address", "name": "module", "internalType": "contract Module" }],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "bytes", "name": "", "internalType": "bytes" }],
        "name": "encodeTransactionData",
        "inputs": [
            { "type": "address", "name": "to", "internalType": "address" },
            { "type": "uint256", "name": "value", "internalType": "uint256" },
            { "type": "bytes", "name": "data", "internalType": "bytes" },
            { "type": "uint8", "name": "operation", "internalType": "enum Enum.Operation" },
            { "type": "uint256", "name": "safeTxGas", "internalType": "uint256" },
            { "type": "uint256", "name": "baseGas", "internalType": "uint256" },
            { "type": "uint256", "name": "gasPrice", "internalType": "uint256" },
            { "type": "address", "name": "gasToken", "internalType": "address" },
            { "type": "address", "name": "refundReceiver", "internalType": "address" },
            { "type": "uint256", "name": "_nonce", "internalType": "uint256" }
        ],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "payable",
        "payable": true,
        "outputs": [{ "type": "bool", "name": "success", "internalType": "bool" }],
        "name": "execTransaction",
        "inputs": [
            { "type": "address", "name": "to", "internalType": "address" },
            { "type": "uint256", "name": "value", "internalType": "uint256" },
            { "type": "bytes", "name": "data", "internalType": "bytes" },
            { "type": "uint8", "name": "operation", "internalType": "enum Enum.Operation" },
            { "type": "uint256", "name": "safeTxGas", "internalType": "uint256" },
            { "type": "uint256", "name": "baseGas", "internalType": "uint256" },
            { "type": "uint256", "name": "gasPrice", "internalType": "uint256" },
            { "type": "address", "name": "gasToken", "internalType": "address" },
            { "type": "address", "name": "refundReceiver", "internalType": "address payable" },
            { "type": "bytes", "name": "signatures", "internalType": "bytes" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [{ "type": "bool", "name": "success", "internalType": "bool" }],
        "name": "execTransactionFromModule",
        "inputs": [
            { "type": "address", "name": "to", "internalType": "address" },
            { "type": "uint256", "name": "value", "internalType": "uint256" },
            { "type": "bytes", "name": "data", "internalType": "bytes" },
            { "type": "uint8", "name": "operation", "internalType": "enum Enum.Operation" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [
            { "type": "bool", "name": "success", "internalType": "bool" },
            { "type": "bytes", "name": "returnData", "internalType": "bytes" }
        ],
        "name": "execTransactionFromModuleReturnData",
        "inputs": [
            { "type": "address", "name": "to", "internalType": "address" },
            { "type": "uint256", "name": "value", "internalType": "uint256" },
            { "type": "bytes", "name": "data", "internalType": "bytes" },
            { "type": "uint8", "name": "operation", "internalType": "enum Enum.Operation" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "bytes32", "name": "", "internalType": "bytes32" }],
        "name": "getMessageHash",
        "inputs": [{ "type": "bytes", "name": "message", "internalType": "bytes" }],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "address[]", "name": "", "internalType": "address[]" }],
        "name": "getModules",
        "inputs": [],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [
            { "type": "address[]", "name": "array", "internalType": "address[]" },
            { "type": "address", "name": "next", "internalType": "address" }
        ],
        "name": "getModulesPaginated",
        "inputs": [
            { "type": "address", "name": "start", "internalType": "address" },
            { "type": "uint256", "name": "pageSize", "internalType": "uint256" }
        ],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "address[]", "name": "", "internalType": "address[]" }],
        "name": "getOwners",
        "inputs": [],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }],
        "name": "getThreshold",
        "inputs": [],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "bytes32", "name": "", "internalType": "bytes32" }],
        "name": "getTransactionHash",
        "inputs": [
            { "type": "address", "name": "to", "internalType": "address" },
            { "type": "uint256", "name": "value", "internalType": "uint256" },
            { "type": "bytes", "name": "data", "internalType": "bytes" },
            { "type": "uint8", "name": "operation", "internalType": "enum Enum.Operation" },
            { "type": "uint256", "name": "safeTxGas", "internalType": "uint256" },
            { "type": "uint256", "name": "baseGas", "internalType": "uint256" },
            { "type": "uint256", "name": "gasPrice", "internalType": "uint256" },
            { "type": "address", "name": "gasToken", "internalType": "address" },
            { "type": "address", "name": "refundReceiver", "internalType": "address" },
            { "type": "uint256", "name": "_nonce", "internalType": "uint256" }
        ],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }],
        "name": "isModuleEnabled",
        "inputs": [{ "type": "address", "name": "module", "internalType": "contract Module" }],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }],
        "name": "isOwner",
        "inputs": [{ "type": "address", "name": "owner", "internalType": "address" }],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [{ "type": "bytes4", "name": "", "internalType": "bytes4" }],
        "name": "isValidSignature",
        "inputs": [
            { "type": "bytes", "name": "_data", "internalType": "bytes" },
            { "type": "bytes", "name": "_signature", "internalType": "bytes" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }],
        "name": "nonce",
        "inputs": [],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "removeOwner",
        "inputs": [
            { "type": "address", "name": "prevOwner", "internalType": "address" },
            { "type": "address", "name": "owner", "internalType": "address" },
            { "type": "uint256", "name": "_threshold", "internalType": "uint256" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }],
        "name": "requiredTxGas",
        "inputs": [
            { "type": "address", "name": "to", "internalType": "address" },
            { "type": "uint256", "name": "value", "internalType": "uint256" },
            { "type": "bytes", "name": "data", "internalType": "bytes" },
            { "type": "uint8", "name": "operation", "internalType": "enum Enum.Operation" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "setFallbackHandler",
        "inputs": [{ "type": "address", "name": "handler", "internalType": "address" }],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "setup",
        "inputs": [
            { "type": "address[]", "name": "_owners", "internalType": "address[]" },
            { "type": "uint256", "name": "_threshold", "internalType": "uint256" },
            { "type": "address", "name": "to", "internalType": "address" },
            { "type": "bytes", "name": "data", "internalType": "bytes" },
            { "type": "address", "name": "fallbackHandler", "internalType": "address" },
            { "type": "address", "name": "paymentToken", "internalType": "address" },
            { "type": "uint256", "name": "payment", "internalType": "uint256" },
            { "type": "address", "name": "paymentReceiver", "internalType": "address payable" }
        ],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "signMessage",
        "inputs": [{ "type": "bytes", "name": "_data", "internalType": "bytes" }],
        "constant": false
    },
    {
        "type": "function",
        "stateMutability": "view",
        "payable": false,
        "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }],
        "name": "signedMessages",
        "inputs": [{ "type": "bytes32", "name": "", "internalType": "bytes32" }],
        "constant": true
    },
    {
        "type": "function",
        "stateMutability": "nonpayable",
        "payable": false,
        "outputs": [],
        "name": "swapOwner",
        "inputs": [
            { "type": "address", "name": "prevOwner", "internalType": "address" },
            { "type": "address", "name": "oldOwner", "internalType": "address" },
            { "type": "address", "name": "newOwner", "internalType": "address" }
        ],
        "constant": false
    }
]
