{
    "schemaVersion": "2.0.0",
    "contractName": "AssetProxyOwner",
    "compilerOutput": {
        "abi": [
            {
                "constant": true,
                "inputs": [{ "name": "", "type": "uint256" }],
                "name": "owners",
                "outputs": [{ "name": "", "type": "address" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [{ "name": "owner", "type": "address" }],
                "name": "removeOwner",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [{ "name": "transactionId", "type": "uint256" }],
                "name": "revokeConfirmation",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "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": false,
                "inputs": [{ "name": "transactionId", "type": "uint256" }],
                "name": "executeRemoveAuthorizedAddressAtIndex",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [],
                "name": "secondsTimeLocked",
                "outputs": [{ "name": "", "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": false,
                "inputs": [
                    { "name": "assetProxyContract", "type": "address" },
                    { "name": "isRegistered", "type": "bool" }
                ],
                "name": "registerAssetProxy",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [{ "name": "owner", "type": "address" }],
                "name": "addOwner",
                "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": false,
                "inputs": [{ "name": "_secondsTimeLocked", "type": "uint256" }],
                "name": "changeTimeLock",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "name": "", "type": "address" }],
                "name": "isAssetProxyRegistered",
                "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": "", "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": "getOwners",
                "outputs": [{ "name": "", "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"
            },
            {
                "constant": true,
                "inputs": [{ "name": "transactionId", "type": "uint256" }],
                "name": "getConfirmations",
                "outputs": [{ "name": "_confirmations", "type": "address[]" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [],
                "name": "transactionCount",
                "outputs": [{ "name": "", "type": "uint256" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [{ "name": "_required", "type": "uint256" }],
                "name": "changeRequirement",
                "outputs": [],
                "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": "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": true,
                "inputs": [{ "name": "", "type": "uint256" }],
                "name": "confirmationTimes",
                "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"
            },
            {
                "constant": false,
                "inputs": [{ "name": "owner", "type": "address" }, { "name": "newOwner", "type": "address" }],
                "name": "replaceOwner",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [{ "name": "transactionId", "type": "uint256" }],
                "name": "executeTransaction",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "inputs": [
                    { "name": "_owners", "type": "address[]" },
                    { "name": "_assetProxyContracts", "type": "address[]" },
                    { "name": "_required", "type": "uint256" },
                    { "name": "_secondsTimeLocked", "type": "uint256" }
                ],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "constructor"
            },
            { "payable": true, "stateMutability": "payable", "type": "fallback" },
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": false, "name": "assetProxyContract", "type": "address" },
                    { "indexed": false, "name": "isRegistered", "type": "bool" }
                ],
                "name": "AssetProxyRegistration",
                "type": "event"
            },
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": true, "name": "transactionId", "type": "uint256" },
                    { "indexed": false, "name": "confirmationTime", "type": "uint256" }
                ],
                "name": "ConfirmationTimeSet",
                "type": "event"
            },
            {
                "anonymous": false,
                "inputs": [{ "indexed": false, "name": "secondsTimeLocked", "type": "uint256" }],
                "name": "TimeLockChange",
                "type": "event"
            },
            {
                "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"
            }
        ],
        "devdoc": {
            "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." }
                },
                "changeTimeLock(uint256)": {
                    "details": "Changes the duration of the time lock for transactions.",
                    "params": {
                        "_secondsTimeLocked": "Duration needed after a transaction is confirmed and before it becomes executable, in seconds."
                    }
                },
                "confirmTransaction(uint256)": {
                    "details": "Allows an owner to confirm a transaction.",
                    "params": { "transactionId": "Transaction ID." }
                },
                "executeRemoveAuthorizedAddressAtIndex(uint256)": {
                    "details": "Allows execution of `removeAuthorizedAddressAtIndex` without time lock.",
                    "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."
                },
                "registerAssetProxy(address,bool)": {
                    "details": "Registers or deregisters an AssetProxy to be able to execute      `removeAuthorizedAddressAtIndex` without a timelock.",
                    "params": {
                        "assetProxyContract": "Address of AssetProxy contract.",
                        "isRegistered": "Status of approval for AssetProxy contract."
                    }
                },
                "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."
                }
            }
        },
        "evm": {
            "bytecode": {
                "object": "[encoded data, 18632 characters]"
            }
        }
    },
    "networks": {}
}
