{
    "contractName": "MultiSigWallet",
    "abi": [
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "owners",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "isOwner",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "confirmations",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "transactions",
            "outputs": [
                {
                    "name": "destination",
                    "type": "address"
                },
                {
                    "name": "value",
                    "type": "uint256"
                },
                {
                    "name": "data",
                    "type": "bytes"
                },
                {
                    "name": "executed",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "transactionCount",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "MAX_OWNER_COUNT",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "required",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "name": "_owners",
                    "type": "address[]"
                },
                {
                    "name": "_required",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "payable": true,
            "stateMutability": "payable",
            "type": "fallback"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "sender",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "Confirmation",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "sender",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "Revocation",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "Submission",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "Execution",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "ExecutionFailure",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "sender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Deposit",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "OwnerAddition",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "OwnerRemoval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "required",
                    "type": "uint256"
                }
            ],
            "name": "RequirementChange",
            "type": "event"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "addOwner",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "removeOwner",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "owner",
                    "type": "address"
                },
                {
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "replaceOwner",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "_required",
                    "type": "uint256"
                }
            ],
            "name": "changeRequirement",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "destination",
                    "type": "address"
                },
                {
                    "name": "value",
                    "type": "uint256"
                },
                {
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "submitTransaction",
            "outputs": [
                {
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "confirmTransaction",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "revokeConfirmation",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "executeTransaction",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "isConfirmed",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "getConfirmationCount",
            "outputs": [
                {
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "pending",
                    "type": "bool"
                },
                {
                    "name": "executed",
                    "type": "bool"
                }
            ],
            "name": "getTransactionCount",
            "outputs": [
                {
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "getOwners",
            "outputs": [
                {
                    "name": "",
                    "type": "address[]"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "transactionId",
                    "type": "uint256"
                }
            ],
            "name": "getConfirmations",
            "outputs": [
                {
                    "name": "_confirmations",
                    "type": "address[]"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "from",
                    "type": "uint256"
                },
                {
                    "name": "to",
                    "type": "uint256"
                },
                {
                    "name": "pending",
                    "type": "bool"
                },
                {
                    "name": "executed",
                    "type": "bool"
                }
            ],
            "name": "getTransactionIds",
            "outputs": [
                {
                    "name": "_transactionIds",
                    "type": "uint256[]"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "devdoc": {
        "author": "Stefan George - <stefan.george@consensys.net>",
        "methods": {
            "addOwner(address)": {
                "details": "Allows to add a new owner. Transaction has to be sent by wallet.",
                "params": {
                    "owner": "Address of new owner."
                }
            },
            "changeRequirement(uint256)": {
                "details": "Allows to change the number of required confirmations. Transaction has to be sent by wallet.",
                "params": {
                    "_required": "Number of required confirmations."
                }
            },
            "confirmTransaction(uint256)": {
                "details": "Allows an owner to confirm a transaction.",
                "params": {
                    "transactionId": "Transaction ID."
                }
            },
            "executeTransaction(uint256)": {
                "details": "Allows anyone to execute a confirmed transaction.",
                "params": {
                    "transactionId": "Transaction ID."
                }
            },
            "getConfirmationCount(uint256)": {
                "details": "Returns number of confirmations of a transaction.",
                "params": {
                    "transactionId": "Transaction ID."
                },
                "return": "Number of confirmations."
            },
            "getConfirmations(uint256)": {
                "details": "Returns array with owner addresses, which confirmed transaction.",
                "params": {
                    "transactionId": "Transaction ID."
                },
                "return": "Returns array of owner addresses."
            },
            "getOwners()": {
                "details": "Returns list of owners.",
                "return": "List of owner addresses."
            },
            "getTransactionCount(bool,bool)": {
                "details": "Returns total number of transactions after filers are applied.",
                "params": {
                    "executed": "Include executed transactions.",
                    "pending": "Include pending transactions."
                },
                "return": "Total number of transactions after filters are applied."
            },
            "getTransactionIds(uint256,uint256,bool,bool)": {
                "details": "Returns list of transaction IDs in defined range.",
                "params": {
                    "executed": "Include executed transactions.",
                    "from": "Index start position of transaction array.",
                    "pending": "Include pending transactions.",
                    "to": "Index end position of transaction array."
                },
                "return": "Returns array of transaction IDs."
            },
            "isConfirmed(uint256)": {
                "details": "Returns the confirmation status of a transaction.",
                "params": {
                    "transactionId": "Transaction ID."
                },
                "return": "Confirmation status."
            },
            "removeOwner(address)": {
                "details": "Allows to remove an owner. Transaction has to be sent by wallet.",
                "params": {
                    "owner": "Address of owner."
                }
            },
            "replaceOwner(address,address)": {
                "details": "Allows to replace an owner with a new owner. Transaction has to be sent by wallet.",
                "params": {
                    "newOwner": "Address of new owner.",
                    "owner": "Address of owner to be replaced."
                }
            },
            "revokeConfirmation(uint256)": {
                "details": "Allows an owner to revoke a confirmation for a transaction.",
                "params": {
                    "transactionId": "Transaction ID."
                }
            },
            "submitTransaction(address,uint256,bytes)": {
                "details": "Allows an owner to submit and confirm a transaction.",
                "params": {
                    "data": "Transaction data payload.",
                    "destination": "Transaction target address.",
                    "value": "Transaction ether value."
                },
                "return": "Returns transaction ID."
            }
        },
        "title": "Multisignature wallet - Allows multiple parties to agree on transactions before execution."
    },
    "userdoc": {
        "methods": {}
    }
}