{
    "schemaVersion": "2.0.0",
    "contractName": "DutchAuction",
    "compilerOutput": {
        "abi": [
            {
                "constant": false,
                "inputs": [
                    {
                        "components": [
                            { "name": "makerAddress", "type": "address" },
                            { "name": "takerAddress", "type": "address" },
                            { "name": "feeRecipientAddress", "type": "address" },
                            { "name": "senderAddress", "type": "address" },
                            { "name": "makerAssetAmount", "type": "uint256" },
                            { "name": "takerAssetAmount", "type": "uint256" },
                            { "name": "makerFee", "type": "uint256" },
                            { "name": "takerFee", "type": "uint256" },
                            { "name": "expirationTimeSeconds", "type": "uint256" },
                            { "name": "salt", "type": "uint256" },
                            { "name": "makerAssetData", "type": "bytes" },
                            { "name": "takerAssetData", "type": "bytes" }
                        ],
                        "name": "order",
                        "type": "tuple"
                    }
                ],
                "name": "getAuctionDetails",
                "outputs": [
                    {
                        "components": [
                            { "name": "beginTimeSeconds", "type": "uint256" },
                            { "name": "endTimeSeconds", "type": "uint256" },
                            { "name": "beginAmount", "type": "uint256" },
                            { "name": "endAmount", "type": "uint256" },
                            { "name": "currentAmount", "type": "uint256" },
                            { "name": "currentTimeSeconds", "type": "uint256" }
                        ],
                        "name": "auctionDetails",
                        "type": "tuple"
                    }
                ],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    {
                        "components": [
                            { "name": "makerAddress", "type": "address" },
                            { "name": "takerAddress", "type": "address" },
                            { "name": "feeRecipientAddress", "type": "address" },
                            { "name": "senderAddress", "type": "address" },
                            { "name": "makerAssetAmount", "type": "uint256" },
                            { "name": "takerAssetAmount", "type": "uint256" },
                            { "name": "makerFee", "type": "uint256" },
                            { "name": "takerFee", "type": "uint256" },
                            { "name": "expirationTimeSeconds", "type": "uint256" },
                            { "name": "salt", "type": "uint256" },
                            { "name": "makerAssetData", "type": "bytes" },
                            { "name": "takerAssetData", "type": "bytes" }
                        ],
                        "name": "buyOrder",
                        "type": "tuple"
                    },
                    {
                        "components": [
                            { "name": "makerAddress", "type": "address" },
                            { "name": "takerAddress", "type": "address" },
                            { "name": "feeRecipientAddress", "type": "address" },
                            { "name": "senderAddress", "type": "address" },
                            { "name": "makerAssetAmount", "type": "uint256" },
                            { "name": "takerAssetAmount", "type": "uint256" },
                            { "name": "makerFee", "type": "uint256" },
                            { "name": "takerFee", "type": "uint256" },
                            { "name": "expirationTimeSeconds", "type": "uint256" },
                            { "name": "salt", "type": "uint256" },
                            { "name": "makerAssetData", "type": "bytes" },
                            { "name": "takerAssetData", "type": "bytes" }
                        ],
                        "name": "sellOrder",
                        "type": "tuple"
                    },
                    { "name": "buySignature", "type": "bytes" },
                    { "name": "sellSignature", "type": "bytes" }
                ],
                "name": "matchOrders",
                "outputs": [
                    {
                        "components": [
                            {
                                "components": [
                                    { "name": "makerAssetFilledAmount", "type": "uint256" },
                                    { "name": "takerAssetFilledAmount", "type": "uint256" },
                                    { "name": "makerFeePaid", "type": "uint256" },
                                    { "name": "takerFeePaid", "type": "uint256" }
                                ],
                                "name": "left",
                                "type": "tuple"
                            },
                            {
                                "components": [
                                    { "name": "makerAssetFilledAmount", "type": "uint256" },
                                    { "name": "takerAssetFilledAmount", "type": "uint256" },
                                    { "name": "makerFeePaid", "type": "uint256" },
                                    { "name": "takerFeePaid", "type": "uint256" }
                                ],
                                "name": "right",
                                "type": "tuple"
                            },
                            { "name": "leftMakerAssetSpreadAmount", "type": "uint256" }
                        ],
                        "name": "matchedFillResults",
                        "type": "tuple"
                    }
                ],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "inputs": [{ "name": "_exchange", "type": "address" }],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "constructor"
            }
        ],
        "devdoc": {
            "methods": {
                "getAuctionDetails((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": {
                    "details": "Calculates the Auction Details for the given order",
                    "params": { "order": "The sell order" },
                    "return": "AuctionDetails"
                },
                "matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)": {
                    "details": "Matches the buy and sell orders at an amount given the following: the current block time, the auction      start time and the auction begin amount. The sell order is a an order at the lowest amount      at the end of the auction. Excess from the match is transferred to the seller.      Over time the price moves from beginAmount to endAmount given the current block.timestamp.      sellOrder.expiryTimeSeconds is the end time of the auction.      sellOrder.takerAssetAmount is the end amount of the auction (lowest possible amount).      sellOrder.makerAssetData is the ABI encoded Asset Proxy data with the following data appended      buyOrder.makerAssetData is the buyers bid on the auction, must meet the amount for the current block timestamp      (uint256 beginTimeSeconds, uint256 beginAmount).      This function reverts in the following scenarios:         * Auction has not started (auctionDetails.currentTimeSeconds < auctionDetails.beginTimeSeconds)         * Auction has expired (auctionDetails.endTimeSeconds < auctionDetails.currentTimeSeconds)         * Amount is invalid: Buy order amount is too low (buyOrder.makerAssetAmount < auctionDetails.currentAmount)         * Amount is invalid: Invalid begin amount (auctionDetails.beginAmount > auctionDetails.endAmount)         * Any failure in the 0x Match Orders",
                    "params": {
                        "buyOrder": "The Buyer's order. This order is for the current expected price of the auction.",
                        "buySignature": "Proof that order was created by the buyer.",
                        "sellOrder": "The Seller's order. This order is for the lowest amount (at the end of the auction).",
                        "sellSignature": "Proof that order was created by the seller."
                    },
                    "return": "matchedFillResults amounts filled and fees paid by maker and taker of matched orders."
                }
            }
        },
        "evm": {
            "bytecode": {
                "object": "[encoded data, 9894 characters]"
            }
        }
    },
    "networks": {}
}
