{
  "5": {
    "goerli": {
      "name": "goerli",
      "chainId": "5",
      "contracts": {
        "ConstantProductPoolFactory": {
          "address": "0x1026cbed7b7E851426b959BC69dcC1bf5876512d",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endIndex",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "HybridPoolFactory": {
          "address": "0xa19b3b22f29E23e4c04678C94CFC3e8f202137d8",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endIndex",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "IndexPoolFactory": {
          "address": "0xb65Be5C721B6d6734825BA31526365b6697d9B71",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endIndex",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "MasterDeployer": {
          "address": "0x1E2d3ba40F973135f397fF7f2Ec0d1cC835E8b73",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_barFee",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_barFeeTo",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_bento",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                }
              ],
              "name": "AddToWhitelist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "barFee",
                  "type": "uint256"
                }
              ],
              "name": "BarFeeUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "DeployPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                }
              ],
              "name": "RemoveFromWhitelist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwnerClaim",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                }
              ],
              "name": "addToWhitelist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                }
              ],
              "name": "removeFromWhitelist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_barFee",
                  "type": "uint256"
                }
              ],
              "name": "setBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                }
              ],
              "name": "transferOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "whitelistedFactories",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "TridentRouter": {
          "address": "0xB6E90eBe44De40aEb0b987adC2D7d9dd0EC918d7",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "_bento",
                  "type": "address"
                },
                {
                  "internalType": "contract MasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_wETH",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "native",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ITridentRouter.TokenInput[]",
                  "name": "tokenInput",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidityLazy",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "minWithdrawals",
                  "type": "tuple[]"
                }
              ],
              "name": "burnLiquidity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "minWithdrawal",
                  "type": "uint256"
                }
              ],
              "name": "burnLiquiditySingle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "tokenIn",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bool",
                          "name": "native",
                          "type": "bool"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.InitialPath[]",
                      "name": "initialPath",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "tokenIn",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "balancePercentage",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.PercentagePath[]",
                      "name": "percentagePath",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "to",
                          "type": "address"
                        },
                        {
                          "internalType": "bool",
                          "name": "unwrapBento",
                          "type": "bool"
                        },
                        {
                          "internalType": "uint256",
                          "name": "minAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Output[]",
                      "name": "output",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ComplexPathParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "complexPath",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Path[]",
                      "name": "path",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInput",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOutMinimum",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.Path[]",
                  "name": "path",
                  "type": "tuple[]"
                }
              ],
              "name": "exactInputLazy",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputSingleParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputSingleParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputSingleWithNativeToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Path[]",
                      "name": "path",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputWithNativeToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract MasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "refundETH",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "sweepBentoBoxToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "sweepNativeToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentMintCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentSwapCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountMinimum",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "unwrapWETH",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ]
        }
      }
    }
  },
  "42": {
    "kovan": {
      "name": "kovan",
      "chainId": "42",
      "contracts": {
        "ConstantProductPoolFactory": {
          "address": "0xde87A91358FE9C2506290cA21E81438Cd9543d58",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "HybridPoolFactory": {
          "address": "0xfF9289baade50Da77975b603103d056B88DB8E01",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "IndexPoolFactory": {
          "address": "0x4225bFBf2eEd292273344987bBE6ef9937009cCb",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "MasterDeployer": {
          "address": "0xdCFaae69E67E4bA73d5A890Fcae097eB3C615e96",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_barFee",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_barFeeTo",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_bento",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                }
              ],
              "name": "AddToWhitelist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "barFee",
                  "type": "uint256"
                }
              ],
              "name": "BarFeeUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "DeployPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                }
              ],
              "name": "RemoveFromWhitelist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwnerClaim",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                }
              ],
              "name": "addToWhitelist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                }
              ],
              "name": "removeFromWhitelist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_barFee",
                  "type": "uint256"
                }
              ],
              "name": "setBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                }
              ],
              "name": "transferOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "whitelistedFactories",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "TridentRouter": {
          "address": "0x70e9D5279AFbf898FB507C6FfF8Dd92618e892DB",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "bento",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "masterDeployer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "wETH",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "PermitFailed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "native",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ITridentRouter.TokenInput[]",
                  "name": "tokenInput",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidityLazy",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "approveMasterContract",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "minWithdrawals",
                  "type": "tuple[]"
                }
              ],
              "name": "burnLiquidity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "minWithdrawal",
                  "type": "uint256"
                }
              ],
              "name": "burnLiquiditySingle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "tokenIn",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bool",
                          "name": "native",
                          "type": "bool"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.InitialPath[]",
                      "name": "initialPath",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "tokenIn",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "balancePercentage",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.PercentagePath[]",
                      "name": "percentagePath",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "to",
                          "type": "address"
                        },
                        {
                          "internalType": "bool",
                          "name": "unwrapBento",
                          "type": "bool"
                        },
                        {
                          "internalType": "uint256",
                          "name": "minAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Output[]",
                      "name": "output",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ComplexPathParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "complexPath",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Path[]",
                      "name": "path",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInput",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOutMinimum",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.Path[]",
                  "name": "path",
                  "type": "tuple[]"
                }
              ],
              "name": "exactInputLazy",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputSingleParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputSingleParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputSingleWithNativeToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Path[]",
                      "name": "path",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputWithNativeToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "refundETH",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "sweepBentoBoxToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "sweepNativeToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentMintCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentSwapCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountMinimum",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "unwrapWETH",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ]
        },
        "TridentSushiRollCP": {
          "address": "0x72a1799A36d187D273DD70D95DE0056a76af7778",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "_bentoBox",
                  "type": "address"
                },
                {
                  "internalType": "contract IPoolFactory",
                  "name": "_poolFactory",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "MinimumOutput",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PermitFailed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IUniswapV2Minimal",
                  "name": "pair",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "swapFee",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "twapSupport",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "minReceived",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ]
        }
      }
    }
  },
  "137": {
    "polygon": {
      "name": "polygon",
      "chainId": "137",
      "contracts": {
        "ConstantProductPoolFactory": {
          "address": "0xE9C8cd8269890Af1aF5F3d7B11e795b17Fd3A603",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "HybridPoolFactory": {
          "address": "0xBDFeb8280abAADd23d2aC8837c01B97Ca1b5E143",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "IndexPoolFactory": {
          "address": "0xDBe2Eab6280910f4BD0b1B134D85fF73176478E8",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "MasterDeployer": {
          "address": "0xCba01Cd644d1fCF152971Cc7A8f4E7eabebFF04E",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_barFee",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_barFeeTo",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_bento",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                }
              ],
              "name": "AddToWhitelist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "barFee",
                  "type": "uint256"
                }
              ],
              "name": "BarFeeUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "DeployPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                }
              ],
              "name": "RemoveFromWhitelist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwnerClaim",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                }
              ],
              "name": "addToWhitelist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                }
              ],
              "name": "removeFromWhitelist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_barFee",
                  "type": "uint256"
                }
              ],
              "name": "setBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                }
              ],
              "name": "transferOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "whitelistedFactories",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ]
        },
        "TridentRouter": {
          "address": "0x2cf56E9FA0D2bFf2d12e0793a1b7245dDC06b714",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "bento",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "masterDeployer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "wETH",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "PermitFailed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "native",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ITridentRouter.TokenInput[]",
                  "name": "tokenInput",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidityLazy",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "approveMasterContract",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "minWithdrawals",
                  "type": "tuple[]"
                }
              ],
              "name": "burnLiquidity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "minWithdrawal",
                  "type": "uint256"
                }
              ],
              "name": "burnLiquiditySingle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "tokenIn",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bool",
                          "name": "native",
                          "type": "bool"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.InitialPath[]",
                      "name": "initialPath",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "tokenIn",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "balancePercentage",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.PercentagePath[]",
                      "name": "percentagePath",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "to",
                          "type": "address"
                        },
                        {
                          "internalType": "bool",
                          "name": "unwrapBento",
                          "type": "bool"
                        },
                        {
                          "internalType": "uint256",
                          "name": "minAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Output[]",
                      "name": "output",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ComplexPathParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "complexPath",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Path[]",
                      "name": "path",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInput",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOutMinimum",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.Path[]",
                  "name": "path",
                  "type": "tuple[]"
                }
              ],
              "name": "exactInputLazy",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputSingleParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputSingleParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputSingleWithNativeToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Path[]",
                      "name": "path",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputWithNativeToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "refundETH",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "sweepBentoBoxToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "sweepNativeToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentMintCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentSwapCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountMinimum",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "unwrapWETH",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ]
        },
        "TridentSushiRollCP": {
          "address": "0xFdD3B86128d4168cfB536931C7e31E2cF4Fc004A",
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "_bentoBox",
                  "type": "address"
                },
                {
                  "internalType": "contract IPoolFactory",
                  "name": "_poolFactory",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "MinimumOutput",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PermitFailed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IUniswapV2Minimal",
                  "name": "pair",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "swapFee",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "twapSupport",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "minReceived",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ]
        }
      }
    }
  },
  "31337": {
    "hardhat": {
      "name": "hardhat",
      "chainId": "31337",
      "contracts": {}
    }
  }
}