{
  "_format": "hh-sol-artifact-1",
  "contractName": "JoeRouter",
  "sourceName": "contracts/__deprecated__/Vaults/JoeRouter.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "fromToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "toToken",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "protocolSwapAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nodeType",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "int128",
              "name": "_misc",
              "type": "int128"
            },
            {
              "internalType": "int128",
              "name": "_in",
              "type": "int128"
            },
            {
              "internalType": "int128",
              "name": "_out",
              "type": "int128"
            }
          ],
          "indexed": false,
          "internalType": "struct JoeRouter.Node[]",
          "name": "path",
          "type": "tuple[]"
        }
      ],
      "name": "RouteSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "startingTokenAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "endingTokenAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "minSwapAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actualOut",
          "type": "uint256"
        }
      ],
      "name": "Swap",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "aaveLendingPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "routes",
      "outputs": [
        {
          "internalType": "address",
          "name": "protocolSwapAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nodeType",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "tokenIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOut",
          "type": "address"
        },
        {
          "internalType": "int128",
          "name": "_misc",
          "type": "int128"
        },
        {
          "internalType": "int128",
          "name": "_in",
          "type": "int128"
        },
        {
          "internalType": "int128",
          "name": "_out",
          "type": "int128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_aaveLendingPool",
          "type": "address"
        }
      ],
      "name": "setAAVE",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_who",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "setApprovals",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_traderJoeRouter",
          "type": "address"
        }
      ],
      "name": "setJoeRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_fromToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_toToken",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "protocolSwapAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nodeType",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "int128",
              "name": "_misc",
              "type": "int128"
            },
            {
              "internalType": "int128",
              "name": "_in",
              "type": "int128"
            },
            {
              "internalType": "int128",
              "name": "_out",
              "type": "int128"
            }
          ],
          "internalType": "struct JoeRouter.Node[]",
          "name": "_path",
          "type": "tuple[]"
        }
      ],
      "name": "setRoute",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "traderJoeRouter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610a48806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806373aeea3611610076578063e32d5cf81161005b578063e32d5cf8146101a7578063e9d337b8146101ba578063f2fde38b146101cd57600080fd5b806373aeea36146101835780638da5cb5b1461019657600080fd5b80634c0f83c7116100a75780634c0f83c714610108578063600c557d1461011b578063715018a61461017b57600080fd5b8063026b49a7146100c35780632faff427146100d8575b600080fd5b6100d66100d1366004610649565b6101e0565b005b6065546100eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d6610116366004610649565b61020a565b61012e61012936600461066d565b610234565b604080516001600160a01b039889168152602081019790975294871694860194909452919094166060840152600f93840b6080840152830b60a083015290910b60c082015260e0016100ff565b6100d66102c4565b6100d66101913660046106ae565b6102d8565b6033546001600160a01b03166100eb565b6100d66101b536600461066d565b6103d9565b6066546100eb906001600160a01b031681565b6100d66101db366004610649565b610473565b6101e8610508565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b610212610508565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b6067602052826000526040600020602052816000526040600020818154811061025c57600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160a01b039485169850929650908316945090911691600f81810b92700100000000000000000000000000000000909204810b91900b87565b6102cc610508565b6102d66000610562565b565b6102e0610508565b6001600160a01b0380851660009081526067602090815260408083209387168352929052908120610310916105b4565b60005b81811015610395576001600160a01b03808616600090815260676020908152604080832093881683529290522083838381811061035257610352610743565b83546001810185556000948552602090942060e090910292909201926006029091019050610380828261077b565b5050808061038d906108c6565b915050610313565b507f01aa5c4f582e572c83ccd23ac58ee02c7e51aceb9d47d02987f31536b352992f848484846040516103cb94939291906108fd565b60405180910390a150505050565b6103e1610508565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d91906109f0565b50505050565b61047b610508565b6001600160a01b0381166104fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61050581610562565b50565b6033546001600160a01b031633146102d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f3565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b508054600082556006029060005260206000209081019061050591905b808211156106305780546001600160a01b031990811682556000600183018190556002830180548316905560038301805490921690915560048201556005810180546fffffffffffffffffffffffffffffffff191690556006016105d1565b5090565b6001600160a01b038116811461050557600080fd5b60006020828403121561065b57600080fd5b813561066681610634565b9392505050565b60008060006060848603121561068257600080fd5b833561068d81610634565b9250602084013561069d81610634565b929592945050506040919091013590565b600080600080606085870312156106c457600080fd5b84356106cf81610634565b935060208501356106df81610634565b9250604085013567ffffffffffffffff808211156106fc57600080fd5b818701915087601f83011261071057600080fd5b81358181111561071f57600080fd5b88602060e08302850101111561073457600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b80600f0b811461050557600080fd5b6000813561077581610759565b92915050565b813561078681610634565b81546001600160a01b0319166001600160a01b038216178255506020820135600182015560408201356107b881610634565b6002820180546001600160a01b0319166001600160a01b0383161790555060608201356107e481610634565b6003820180546001600160a01b0319166001600160a01b0383161790555060048101608083013561081481610759565b81546fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff82161782555060a083013561084e81610759565b81546fffffffffffffffffffffffffffffffff1660809190911b6fffffffffffffffffffffffffffffffff19161790556108c261088d60c08401610768565b600583016fffffffffffffffffffffffffffffffff19815416826fffffffffffffffffffffffffffffffff1681178255505050565b5050565b6000600182016108e657634e487b7160e01b600052601160045260246000fd5b5060010190565b80356108f881610759565b919050565b600060608083016001600160a01b03808916855260208189168187015260408481880152838885526080945084880190508960005b8a8110156109de57813561094581610634565b8616835281850135858401528382013561095e81610634565b8616838501528188013561097181610634565b8616838901526109828288016108ed565b61099088850182600f0b9052565b5060a061099e8184016108ed565b6109ac82860182600f0b9052565b505060c06109bb8184016108ed565b6109c982860182600f0b9052565b505060e0928301929190910190600101610932565b50909c9b505050505050505050505050565b600060208284031215610a0257600080fd5b8151801515811461066657600080fdfea2646970667358221220f2281c4a2128a46302235552d863797cbdb458332288a371144bd1bd2d597fdf64736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c806373aeea3611610076578063e32d5cf81161005b578063e32d5cf8146101a7578063e9d337b8146101ba578063f2fde38b146101cd57600080fd5b806373aeea36146101835780638da5cb5b1461019657600080fd5b80634c0f83c7116100a75780634c0f83c714610108578063600c557d1461011b578063715018a61461017b57600080fd5b8063026b49a7146100c35780632faff427146100d8575b600080fd5b6100d66100d1366004610649565b6101e0565b005b6065546100eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d6610116366004610649565b61020a565b61012e61012936600461066d565b610234565b604080516001600160a01b039889168152602081019790975294871694860194909452919094166060840152600f93840b6080840152830b60a083015290910b60c082015260e0016100ff565b6100d66102c4565b6100d66101913660046106ae565b6102d8565b6033546001600160a01b03166100eb565b6100d66101b536600461066d565b6103d9565b6066546100eb906001600160a01b031681565b6100d66101db366004610649565b610473565b6101e8610508565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b610212610508565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b6067602052826000526040600020602052816000526040600020818154811061025c57600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160a01b039485169850929650908316945090911691600f81810b92700100000000000000000000000000000000909204810b91900b87565b6102cc610508565b6102d66000610562565b565b6102e0610508565b6001600160a01b0380851660009081526067602090815260408083209387168352929052908120610310916105b4565b60005b81811015610395576001600160a01b03808616600090815260676020908152604080832093881683529290522083838381811061035257610352610743565b83546001810185556000948552602090942060e090910292909201926006029091019050610380828261077b565b5050808061038d906108c6565b915050610313565b507f01aa5c4f582e572c83ccd23ac58ee02c7e51aceb9d47d02987f31536b352992f848484846040516103cb94939291906108fd565b60405180910390a150505050565b6103e1610508565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d91906109f0565b50505050565b61047b610508565b6001600160a01b0381166104fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61050581610562565b50565b6033546001600160a01b031633146102d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f3565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b508054600082556006029060005260206000209081019061050591905b808211156106305780546001600160a01b031990811682556000600183018190556002830180548316905560038301805490921690915560048201556005810180546fffffffffffffffffffffffffffffffff191690556006016105d1565b5090565b6001600160a01b038116811461050557600080fd5b60006020828403121561065b57600080fd5b813561066681610634565b9392505050565b60008060006060848603121561068257600080fd5b833561068d81610634565b9250602084013561069d81610634565b929592945050506040919091013590565b600080600080606085870312156106c457600080fd5b84356106cf81610634565b935060208501356106df81610634565b9250604085013567ffffffffffffffff808211156106fc57600080fd5b818701915087601f83011261071057600080fd5b81358181111561071f57600080fd5b88602060e08302850101111561073457600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b80600f0b811461050557600080fd5b6000813561077581610759565b92915050565b813561078681610634565b81546001600160a01b0319166001600160a01b038216178255506020820135600182015560408201356107b881610634565b6002820180546001600160a01b0319166001600160a01b0383161790555060608201356107e481610634565b6003820180546001600160a01b0319166001600160a01b0383161790555060048101608083013561081481610759565b81546fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff82161782555060a083013561084e81610759565b81546fffffffffffffffffffffffffffffffff1660809190911b6fffffffffffffffffffffffffffffffff19161790556108c261088d60c08401610768565b600583016fffffffffffffffffffffffffffffffff19815416826fffffffffffffffffffffffffffffffff1681178255505050565b5050565b6000600182016108e657634e487b7160e01b600052601160045260246000fd5b5060010190565b80356108f881610759565b919050565b600060608083016001600160a01b03808916855260208189168187015260408481880152838885526080945084880190508960005b8a8110156109de57813561094581610634565b8616835281850135858401528382013561095e81610634565b8616838501528188013561097181610634565b8616838901526109828288016108ed565b61099088850182600f0b9052565b5060a061099e8184016108ed565b6109ac82860182600f0b9052565b505060c06109bb8184016108ed565b6109c982860182600f0b9052565b505060e0928301929190910190600101610932565b50909c9b505050505050505050505050565b600060208284031215610a0257600080fd5b8151801515811461066657600080fdfea2646970667358221220f2281c4a2128a46302235552d863797cbdb458332288a371144bd1bd2d597fdf64736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
