{
    "contractName": "ElementixExchange",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "contract ProxyRegistry",
                    "name": "registryAddress",
                    "type": "address"
                },
                {
                    "internalType": "contract TokenTransferProxy",
                    "name": "tokenTransferProxyAddress",
                    "type": "address"
                },
                {
                    "internalType": "contract ERC20",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "protocolFeeAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "hash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "exchange",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "maker",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "taker",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "makerRelayerFee",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "takerRelayerFee",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "makerProtocolFee",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "takerProtocolFee",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "feeRecipient",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "enum DataType.FeeMethod",
                    "name": "feeMethod",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "enum SaleKindInterface.Side",
                    "name": "side",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "enum SaleKindInterface.SaleKind",
                    "name": "saleKind",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                }
            ],
            "name": "OrderApprovedPartOne",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "hash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "enum DataType.HowToCall",
                    "name": "howToCall",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "dataToCall",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "replacementPattern",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "staticTarget",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "staticExtradata",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "paymentToken",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "basePrice",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "extra",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "listingTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "expirationTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "salt",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "orderbookInclusionDesired",
                    "type": "bool"
                }
            ],
            "name": "OrderApprovedPartTwo",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "hash",
                    "type": "bytes32"
                }
            ],
            "name": "OrderCancelled",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "buyHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "sellHash",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "maker",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "taker",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "price",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "metadata",
                    "type": "bytes32"
                }
            ],
            "name": "OrdersMatched",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "INVERSE_BASIS_POINT",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "exchange",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "maker",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "taker",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "feeRecipient",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.FeeMethod",
                            "name": "feeMethod",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.Side",
                            "name": "side",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.SaleKind",
                            "name": "saleKind",
                            "type": "uint8"
                        },
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.HowToCall",
                            "name": "howToCall",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes",
                            "name": "dataToCall",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes",
                            "name": "replacementPattern",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "staticTarget",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "staticExtradata",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "paymentToken",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "basePrice",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "extra",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "listingTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "expirationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "salt",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct DataType.Order",
                    "name": "order",
                    "type": "tuple"
                },
                {
                    "internalType": "bool",
                    "name": "orderbookInclusionDesired",
                    "type": "bool"
                }
            ],
            "name": "approveOrder",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "name": "approvedOrders",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "exchange",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "maker",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "taker",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "feeRecipient",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.FeeMethod",
                            "name": "feeMethod",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.Side",
                            "name": "side",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.SaleKind",
                            "name": "saleKind",
                            "type": "uint8"
                        },
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.HowToCall",
                            "name": "howToCall",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes",
                            "name": "dataToCall",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes",
                            "name": "replacementPattern",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "staticTarget",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "staticExtradata",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "paymentToken",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "basePrice",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "extra",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "listingTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "expirationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "salt",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct DataType.Order",
                    "name": "order",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "uint8",
                            "name": "v",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "r",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "s",
                            "type": "bytes32"
                        }
                    ],
                    "internalType": "struct DataType.Sig",
                    "name": "sig",
                    "type": "tuple"
                }
            ],
            "name": "cancelOrder",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "name": "cancelledOrFinalized",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMinimumMakerProtocolFee",
                    "type": "uint256"
                }
            ],
            "name": "changeMinimumMakerProtocolFee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMinimumTakerProtocolFee",
                    "type": "uint256"
                }
            ],
            "name": "changeMinimumTakerProtocolFee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newProtocolFeeRecipient",
                    "type": "address"
                }
            ],
            "name": "changeProtocolFeeRecipient",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "exchangeToken",
            "outputs": [
                {
                    "internalType": "contract ERC20",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "minimumMakerProtocolFee",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "minimumTakerProtocolFee",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "exchange",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "maker",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "taker",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "feeRecipient",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.FeeMethod",
                            "name": "feeMethod",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.Side",
                            "name": "side",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.SaleKind",
                            "name": "saleKind",
                            "type": "uint8"
                        },
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.HowToCall",
                            "name": "howToCall",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes",
                            "name": "dataToCall",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes",
                            "name": "replacementPattern",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "staticTarget",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "staticExtradata",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "paymentToken",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "basePrice",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "extra",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "listingTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "expirationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "salt",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct DataType.Order",
                    "name": "buy",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "uint8",
                            "name": "v",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "r",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "s",
                            "type": "bytes32"
                        }
                    ],
                    "internalType": "struct DataType.Sig",
                    "name": "buySig",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "exchange",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "maker",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "taker",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "feeRecipient",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.FeeMethod",
                            "name": "feeMethod",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.Side",
                            "name": "side",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.SaleKind",
                            "name": "saleKind",
                            "type": "uint8"
                        },
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.HowToCall",
                            "name": "howToCall",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes",
                            "name": "dataToCall",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes",
                            "name": "replacementPattern",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "staticTarget",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "staticExtradata",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "paymentToken",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "basePrice",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "extra",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "listingTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "expirationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "salt",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct DataType.Order",
                    "name": "sell",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "uint8",
                            "name": "v",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "r",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "s",
                            "type": "bytes32"
                        }
                    ],
                    "internalType": "struct DataType.Sig",
                    "name": "sellSig",
                    "type": "tuple"
                },
                {
                    "internalType": "bytes32",
                    "name": "metadata",
                    "type": "bytes32"
                }
            ],
            "name": "orderMatch",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "protocolFeeRecipient",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "registry",
            "outputs": [
                {
                    "internalType": "contract ProxyRegistry",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "tokenTransferProxy",
            "outputs": [
                {
                    "internalType": "contract TokenTransferProxy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "hash",
                    "type": "bytes32"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "exchange",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "maker",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "taker",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerRelayerFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "takerProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "feeRecipient",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.FeeMethod",
                            "name": "feeMethod",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.Side",
                            "name": "side",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum SaleKindInterface.SaleKind",
                            "name": "saleKind",
                            "type": "uint8"
                        },
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        },
                        {
                            "internalType": "enum DataType.HowToCall",
                            "name": "howToCall",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes",
                            "name": "dataToCall",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes",
                            "name": "replacementPattern",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "staticTarget",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "staticExtradata",
                            "type": "bytes"
                        },
                        {
                            "internalType": "address",
                            "name": "paymentToken",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "basePrice",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "extra",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "listingTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "expirationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "salt",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct DataType.Order",
                    "name": "order",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "uint8",
                            "name": "v",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "r",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "s",
                            "type": "bytes32"
                        }
                    ],
                    "internalType": "struct DataType.Sig",
                    "name": "sig",
                    "type": "tuple"
                }
            ],
            "name": "validateOrder",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "version",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        }
    ]
}
