{
    "contractName": "GenericTraderProxyV1",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_chainId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_expiry",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_eventEmitterRegistry",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_dolomiteMargin",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "DOLOMITE_MARGIN",
            "outputs": [
                {
                    "internalType": "contract IDolomiteMargin",
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "EVENT_EMITTER_REGISTRY",
            "outputs": [
                {
                    "internalType": "contract IEventEmitterRegistry",
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "EXPIRY",
            "outputs": [
                {
                    "internalType": "contract IExpiry",
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "chainId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "internalType": "contract IDolomiteMargin",
                    "name": "_dolomiteMargin",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_marketId",
                    "type": "uint256"
                }
            ],
            "name": "isIsolationModeMarket",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_eventEmitterRegistry",
                    "type": "address"
                }
            ],
            "name": "ownerSetEventEmitterRegistry",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_tradeAccountNumber",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_marketIdsPath",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256",
                    "name": "_inputAmountWei",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_minOutputAmountWei",
                    "type": "uint256"
                },
                {
                    "components": [
                        {
                            "internalType": "enum IGenericTraderProxyBase.TraderType",
                            "name": "traderType",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerAccountIndex",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "trader",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "tradeData",
                            "type": "bytes"
                        }
                    ],
                    "internalType": "struct IGenericTraderProxyBase.TraderParam[]",
                    "name": "_tradersPath",
                    "type": "tuple[]"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "owner",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "number",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct Account.Info[]",
                    "name": "_makerAccounts",
                    "type": "tuple[]"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "deadline",
                            "type": "uint256"
                        },
                        {
                            "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
                            "name": "balanceCheckFlag",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum IGenericTraderProxyV1.EventEmissionType",
                            "name": "eventType",
                            "type": "uint8"
                        }
                    ],
                    "internalType": "struct IGenericTraderProxyV1.UserConfig",
                    "name": "_userConfig",
                    "type": "tuple"
                }
            ],
            "name": "swapExactInputForOutput",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_tradeAccountNumber",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_marketIdsPath",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256",
                    "name": "_inputAmountWei",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_minOutputAmountWei",
                    "type": "uint256"
                },
                {
                    "components": [
                        {
                            "internalType": "enum IGenericTraderProxyBase.TraderType",
                            "name": "traderType",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint256",
                            "name": "makerAccountIndex",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "trader",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "tradeData",
                            "type": "bytes"
                        }
                    ],
                    "internalType": "struct IGenericTraderProxyBase.TraderParam[]",
                    "name": "_tradersPath",
                    "type": "tuple[]"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "owner",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "number",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct Account.Info[]",
                    "name": "_makerAccounts",
                    "type": "tuple[]"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "fromAccountNumber",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "toAccountNumber",
                            "type": "uint256"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "uint256",
                                    "name": "marketId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amountWei",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct IGenericTraderProxyV1.TransferAmount[]",
                            "name": "transferAmounts",
                            "type": "tuple[]"
                        }
                    ],
                    "internalType": "struct IGenericTraderProxyV1.TransferCollateralParam",
                    "name": "_transferCollateralParams",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "marketId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint32",
                            "name": "expiryTimeDelta",
                            "type": "uint32"
                        }
                    ],
                    "internalType": "struct IGenericTraderProxyV1.ExpiryParam",
                    "name": "_expiryParams",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "deadline",
                            "type": "uint256"
                        },
                        {
                            "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
                            "name": "balanceCheckFlag",
                            "type": "uint8"
                        },
                        {
                            "internalType": "enum IGenericTraderProxyV1.EventEmissionType",
                            "name": "eventType",
                            "type": "uint8"
                        }
                    ],
                    "internalType": "struct IGenericTraderProxyV1.UserConfig",
                    "name": "_userConfig",
                    "type": "tuple"
                }
            ],
            "name": "swapExactInputForOutputAndModifyPosition",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "networks": {
        "1": {
            "links": {
                "GenericTraderProxyV1Lib": "0x79A26AC69533Cd29544a8c0C53363e2D9392e2D0"
            },
            "address": "0xb50BcDFC914e0AfB484Dee621F49010862Fb928d",
            "transactionHash": "0xc387cd4c2fafc7f49a6e2e26e29948c175c038bb7da0d664fbd2c1381d2765bc"
        },
        "196": {
            "links": {
                "GenericTraderProxyV1Lib": "0x76C23dcCd11b48e7202e11263Ad0ab4da0E729Cc"
            },
            "address": "0xBF3179aD5339dCb6BD741Bc08c3011FAda586075",
            "transactionHash": "0x61741b6f7d0557daebad93e405001a7c73d8de110078dff564587be15f4a3c23"
        },
        "1101": {
            "links": {
                "GenericTraderProxyV1Lib": "0xE9892894E6c7d0947ABb8CD3dDC84c42E9222883"
            },
            "address": "0x88a6d8E6fFdb145A8719d43E6FD48F3383745866",
            "transactionHash": "0xc1949efc580437b98b78e7e9365c2f7195b23c07c1a7b6b57e239b1d08d3d522"
        },
        "3637": {
            "links": {
                "GenericTraderProxyV1Lib": "0x79A26AC69533Cd29544a8c0C53363e2D9392e2D0"
            },
            "address": "0xb50BcDFC914e0AfB484Dee621F49010862Fb928d",
            "transactionHash": "0x2dde50667b3bb1dcb2150e9d31da458eb2cfa1146dbdbb726024e86c9c60f309"
        },
        "5000": {
            "links": {
                "GenericTraderProxyV1Lib": "0x6727fe07ff5dCE46F34D20FB1f9D62EDDA73cFdc"
            },
            "address": "0xd432C30de38b5d6F30257a353ED853503ed2edab",
            "transactionHash": "0xe0aa3f7707fd910cfc76324807dfa753e160820bb9d0dca6a16fb48e0031d35b"
        },
        "5330": {
            "links": {
                "GenericTraderProxyV1Lib": "0x79A26AC69533Cd29544a8c0C53363e2D9392e2D0"
            },
            "address": "0xb50BcDFC914e0AfB484Dee621F49010862Fb928d",
            "transactionHash": "0x81ddc05f22f531775d6646b530dbc6a4ed40fd42b235f1bb3719dc16c3ec1ff4"
        },
        "8453": {
            "links": {
                "GenericTraderProxyV1Lib": "0x79A26AC69533Cd29544a8c0C53363e2D9392e2D0"
            },
            "address": "0xb50BcDFC914e0AfB484Dee621F49010862Fb928d",
            "transactionHash": "0x8f40aaeb5b4a6b52b18a0b95c29061c0e35e62c7c3383c508c3fb11067231cd3"
        },
        "42161": {
            "links": {
                "GenericTraderProxyV1Lib": "0x5477F499F1273a89041527e7a1e76184D857dF68"
            },
            "address": "0x26cB28C95C964b75fE6E118E267e6f17908a7F7C",
            "transactionHash": "0x599e7fd2b214e6abe019e2fb8b81a44e491b760edaa120aa70e3a8600341f827"
        },
        "57073": {
            "links": {
                "GenericTraderProxyV1Lib": "0x79A26AC69533Cd29544a8c0C53363e2D9392e2D0"
            },
            "address": "0xb50BcDFC914e0AfB484Dee621F49010862Fb928d",
            "transactionHash": "0x954b3703be1c4252466eeabf59f6666dcaa4ff3e6d760ba0bf79954db22fb115"
        },
        "80094": {
            "links": {
                "GenericTraderProxyV1Lib": "0x79A26AC69533Cd29544a8c0C53363e2D9392e2D0"
            },
            "address": "0xb50BcDFC914e0AfB484Dee621F49010862Fb928d",
            "transactionHash": "0x44b4d1db0629cb134316a1a7448f4b275236d0038deeb192146372ad48b21474"
        }
    }
}
