{
  "_format": "hh-sol-artifact-1",
  "contractName": "SushiSwapSwapper",
  "sourceName": "contracts/swappers/SushiSwapSwapper.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IBentoBoxV1",
          "name": "bentoBox_",
          "type": "address"
        },
        {
          "internalType": "contract IUniswapV2Factory",
          "name": "factory_",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "pairCodeHash_",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "bentoBox",
      "outputs": [
        {
          "internalType": "contract IBentoBoxV1",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Factory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pairCodeHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "fromToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "toToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "shareToMin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "shareFrom",
          "type": "uint256"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "extraShare",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "shareReturned",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "fromToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "toToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "refundTo",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "shareFromSupplied",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "shareToExact",
          "type": "uint256"
        }
      ],
      "name": "swapExact",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "shareUsed",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "shareReturned",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e060405234801561001057600080fd5b5060405161108a38038061108a8339818101604052606081101561003357600080fd5b50805160208201516040909201516001600160601b0319606092831b81166080529290911b90911660a05260c05260805160601c60a05160601c60c051610fac6100de600039806101f6528061081a528061090c5250806101c6528061083e52806108db5250806102f8528061039052806104865280610513528061060952806106a2528061078152806107f652806109945280610ae55280610c035280610d015250610fac6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80634622be901461005c5780636b2ace87146100c15780639aab9248146100e5578063c45a0155146100ff578063e343fe1214610107575b600080fd5b6100a8600480360360c081101561007257600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135610149565b6040805192835260208301919091528051918290030190f35b6100c96107f4565b604080516001600160a01b039092168252519081900360200190f35b6100ed610818565b60408051918252519081900360200190f35b6100c961083c565b6100a8600480360360a081101561011d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610860565b6000806000806000896001600160a01b03168b6001600160a01b03161061017157898b610174565b8a8a5b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401527f0000000000000000000000000000000000000000000000000000000000000000861b9091166069830152607d8201527f0000000000000000000000000000000000000000000000000000000000000000609d808301919091528251808303909101815260bd820180845281519190940120630240bc6b60e21b9093529051919550600094508493506001600160a01b03861692630902f1ac9260c180840193829003018186803b15801561027857600080fd5b505afa15801561028c573d6000803e3d6000fd5b505050506040513d60608110156102a257600080fd5b50805160209182015160408051630acc462360e31b81526001600160a01b038f81166004830152602482018c90526001604483015291516dffffffffffffffffffffffffffff94851697509390921694506000937f0000000000000000000000000000000000000000000000000000000000000000909116926356623118926064808201939291829003018186803b15801561033d57600080fd5b505afa158015610351573d6000803e3d6000fd5b505050506040513d602081101561036757600080fd5b5051905060006001600160a01b03808e16908d1611156105045761038c828585610db8565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308e30888560006040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b03168152602001838152602001828152602001955050505050506040805180830381600087803b15801561042f57600080fd5b505af1158015610443573d6000803e3d6000fd5b505050506040513d604081101561045957600080fd5b50602001516040805163022c0d9f60e01b8152600060048201819052602482018690526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116604484015260806064840152608483018290529251939a509188169263022c0d9f9260c48084019391929182900301818387803b1580156104e757600080fd5b505af11580156104fb573d6000803e3d6000fd5b50505050610683565b61050f828486610db8565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308e30888560006040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b03168152602001838152602001828152602001955050505050506040805180830381600087803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b505050506040513d60408110156105dc57600080fd5b50602001516040805163022c0d9f60e01b8152600481018590526000602482018190526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116604484015260806064840152608483018290529251939a509188169263022c0d9f9260c48084019391929182900301818387803b15801561066a57600080fd5b505af115801561067e573d6000803e3d6000fd5b505050505b6040805162ae511b60e21b81526001600160a01b038e811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908e166044830152600060648301819052608483018c9052835191936302b9446c9360a4808201949293918390030190829087803b15801561070b57600080fd5b505af115801561071f573d6000803e3d6000fd5b505050506040513d604081101561073557600080fd5b5061074290508988610e06565b955085156107e45760408051633c6340f360e21b81526001600160a01b038f811660048301523060248301528c811660448301526064820189905291517f00000000000000000000000000000000000000000000000000000000000000009092169163f18d03cc9160848082019260009290919082900301818387803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b505050505b5050505050965096945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600080876001600160a01b0316896001600160a01b031610610886578789610889565b88885b604080516bffffffffffffffffffffffff19606085811b821660208085019190915285821b83166034850152845160288186030181526048850186528051908201206001600160f81b031960688601527f000000000000000000000000000000000000000000000000000000000000000090921b9092166069840152607d8301527f0000000000000000000000000000000000000000000000000000000000000000609d808401919091528351808403909101815260bd83018085528151919092012063097da6d360e41b9091526001600160a01b038e811660c18401523060e18401528181166101018401526000610121840181905261014184018c9052845196985094965090947f0000000000000000000000000000000000000000000000000000000000000000909116926397da6d3092610161808201939182900301818787803b1580156109da57600080fd5b505af11580156109ee573d6000803e3d6000fd5b505050506040513d6040811015610a0457600080fd5b505160408051630240bc6b60e21b8152905191925060009182916001600160a01b03861691630902f1ac91600480820192606092909190829003018186803b158015610a4f57600080fd5b505afa158015610a63573d6000803e3d6000fd5b505050506040513d6060811015610a7957600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060006001600160a01b03808f16908e161115610bcd57610aba848484610e64565b604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166064860152608060848601908152855160a48701819052979850908c169663022c0d9f96949589959394909390929160c4850191908083838b5b83811015610b61578181015183820152602001610b49565b50505050905090810190601f168015610b8e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610bb057600080fd5b505af1158015610bc4573d6000803e3d6000fd5b50505050610ce2565b610bd8848385610e64565b604080516000808252602082019283905263022c0d9f60e01b835260248201848152604483018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166064860152608060848601908152855160a48701819052979850908c169663022c0d9f9689969394929160c4850191908083838a5b83811015610c7a578181015183820152602001610c62565b50505050905090810190601f168015610ca75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610cc957600080fd5b505af1158015610cdd573d6000803e3d6000fd5b505050505b6040805162ae511b60e21b81526001600160a01b038f811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908f16604483015260648201849052600060848301819052835191936302b9446c9360a4808201949293918390030190829087803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b505050506040513d6040811015610d9457600080fd5b50602001519750610da5888c610e06565b9850505050505050509550959350505050565b600080610dd16103e8610dcb8688610eb2565b90610eb2565b90506000610de56103e5610dcb8689610e06565b9050610dfc6001828481610df557fe5b0490610f1e565b9695505050505050565b80820382811115610e5e576040805162461bcd60e51b815260206004820152601560248201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604482015290519081900360640190fd5b92915050565b600080610e73856103e5610eb2565b90506000610e818285610eb2565b90506000610e9b83610e95886103e8610eb2565b90610f1e565b9050808281610ea657fe5b04979650505050505050565b6000811580610ecd57505080820282828281610eca57fe5b04145b610e5e576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b81810181811015610e5e576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604482015290519081900360640190fdfea2646970667358221220bd3fe8889177a81ef7ae1a1cee3a9db23b00318992e11347d1894b117313c63664736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80634622be901461005c5780636b2ace87146100c15780639aab9248146100e5578063c45a0155146100ff578063e343fe1214610107575b600080fd5b6100a8600480360360c081101561007257600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135610149565b6040805192835260208301919091528051918290030190f35b6100c96107f4565b604080516001600160a01b039092168252519081900360200190f35b6100ed610818565b60408051918252519081900360200190f35b6100c961083c565b6100a8600480360360a081101561011d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610860565b6000806000806000896001600160a01b03168b6001600160a01b03161061017157898b610174565b8a8a5b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401527f0000000000000000000000000000000000000000000000000000000000000000861b9091166069830152607d8201527f0000000000000000000000000000000000000000000000000000000000000000609d808301919091528251808303909101815260bd820180845281519190940120630240bc6b60e21b9093529051919550600094508493506001600160a01b03861692630902f1ac9260c180840193829003018186803b15801561027857600080fd5b505afa15801561028c573d6000803e3d6000fd5b505050506040513d60608110156102a257600080fd5b50805160209182015160408051630acc462360e31b81526001600160a01b038f81166004830152602482018c90526001604483015291516dffffffffffffffffffffffffffff94851697509390921694506000937f0000000000000000000000000000000000000000000000000000000000000000909116926356623118926064808201939291829003018186803b15801561033d57600080fd5b505afa158015610351573d6000803e3d6000fd5b505050506040513d602081101561036757600080fd5b5051905060006001600160a01b03808e16908d1611156105045761038c828585610db8565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308e30888560006040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b03168152602001838152602001828152602001955050505050506040805180830381600087803b15801561042f57600080fd5b505af1158015610443573d6000803e3d6000fd5b505050506040513d604081101561045957600080fd5b50602001516040805163022c0d9f60e01b8152600060048201819052602482018690526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116604484015260806064840152608483018290529251939a509188169263022c0d9f9260c48084019391929182900301818387803b1580156104e757600080fd5b505af11580156104fb573d6000803e3d6000fd5b50505050610683565b61050f828486610db8565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308e30888560006040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b03168152602001838152602001828152602001955050505050506040805180830381600087803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b505050506040513d60408110156105dc57600080fd5b50602001516040805163022c0d9f60e01b8152600481018590526000602482018190526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116604484015260806064840152608483018290529251939a509188169263022c0d9f9260c48084019391929182900301818387803b15801561066a57600080fd5b505af115801561067e573d6000803e3d6000fd5b505050505b6040805162ae511b60e21b81526001600160a01b038e811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908e166044830152600060648301819052608483018c9052835191936302b9446c9360a4808201949293918390030190829087803b15801561070b57600080fd5b505af115801561071f573d6000803e3d6000fd5b505050506040513d604081101561073557600080fd5b5061074290508988610e06565b955085156107e45760408051633c6340f360e21b81526001600160a01b038f811660048301523060248301528c811660448301526064820189905291517f00000000000000000000000000000000000000000000000000000000000000009092169163f18d03cc9160848082019260009290919082900301818387803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b505050505b5050505050965096945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600080876001600160a01b0316896001600160a01b031610610886578789610889565b88885b604080516bffffffffffffffffffffffff19606085811b821660208085019190915285821b83166034850152845160288186030181526048850186528051908201206001600160f81b031960688601527f000000000000000000000000000000000000000000000000000000000000000090921b9092166069840152607d8301527f0000000000000000000000000000000000000000000000000000000000000000609d808401919091528351808403909101815260bd83018085528151919092012063097da6d360e41b9091526001600160a01b038e811660c18401523060e18401528181166101018401526000610121840181905261014184018c9052845196985094965090947f0000000000000000000000000000000000000000000000000000000000000000909116926397da6d3092610161808201939182900301818787803b1580156109da57600080fd5b505af11580156109ee573d6000803e3d6000fd5b505050506040513d6040811015610a0457600080fd5b505160408051630240bc6b60e21b8152905191925060009182916001600160a01b03861691630902f1ac91600480820192606092909190829003018186803b158015610a4f57600080fd5b505afa158015610a63573d6000803e3d6000fd5b505050506040513d6060811015610a7957600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060006001600160a01b03808f16908e161115610bcd57610aba848484610e64565b604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166064860152608060848601908152855160a48701819052979850908c169663022c0d9f96949589959394909390929160c4850191908083838b5b83811015610b61578181015183820152602001610b49565b50505050905090810190601f168015610b8e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610bb057600080fd5b505af1158015610bc4573d6000803e3d6000fd5b50505050610ce2565b610bd8848385610e64565b604080516000808252602082019283905263022c0d9f60e01b835260248201848152604483018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166064860152608060848601908152855160a48701819052979850908c169663022c0d9f9689969394929160c4850191908083838a5b83811015610c7a578181015183820152602001610c62565b50505050905090810190601f168015610ca75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610cc957600080fd5b505af1158015610cdd573d6000803e3d6000fd5b505050505b6040805162ae511b60e21b81526001600160a01b038f811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908f16604483015260648201849052600060848301819052835191936302b9446c9360a4808201949293918390030190829087803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b505050506040513d6040811015610d9457600080fd5b50602001519750610da5888c610e06565b9850505050505050509550959350505050565b600080610dd16103e8610dcb8688610eb2565b90610eb2565b90506000610de56103e5610dcb8689610e06565b9050610dfc6001828481610df557fe5b0490610f1e565b9695505050505050565b80820382811115610e5e576040805162461bcd60e51b815260206004820152601560248201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604482015290519081900360640190fd5b92915050565b600080610e73856103e5610eb2565b90506000610e818285610eb2565b90506000610e9b83610e95886103e8610eb2565b90610f1e565b9050808281610ea657fe5b04979650505050505050565b6000811580610ecd57505080820282828281610eca57fe5b04145b610e5e576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b81810181811015610e5e576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604482015290519081900360640190fdfea2646970667358221220bd3fe8889177a81ef7ae1a1cee3a9db23b00318992e11347d1894b117313c63664736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
