{
  "_format": "hh-sol-artifact-1",
  "contractName": "SushiSwapSwapperV1",
  "sourceName": "contracts/flat/SushiSwapSwapperFlat.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": "0x60c060405234801561001057600080fd5b506040516110243803806110248339818101604052606081101561003357600080fd5b50805160208201516040909201516001600160601b0319606092831b81166080529290911b90911660a05260005560805160601c60a05160601c610f596100cb600039806101ca528061080852806108a95250806102e05280610378528061046e52806104fb52806105f1528061068a528061076952806107de52806109435280610a925280610bb05280610cae5250610f596000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80634622be901461005c5780636b2ace87146100c15780639aab9248146100e5578063c45a0155146100ff578063e343fe1214610107575b600080fd5b6100a8600480360360c081101561007257600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135610149565b6040805192835260208301919091528051918290030190f35b6100c96107dc565b604080516001600160a01b039092168252519081900360200190f35b6100ed610800565b60408051918252519081900360200190f35b6100c9610806565b6100a8600480360360a081101561011d57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013561082a565b6000806000806000896001600160a01b03168b6001600160a01b03161061017157898b610174565b8a8a5b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b8116603483015282516028818403018152604883018452805190850120600080546001600160f81b031960688601527f0000000000000000000000000000000000000000000000000000000000000000881b9093166069850152607d840191909152609d808401929092528351808403909201825260bd830180855282519290950191909120630240bc6b60e21b90945291519296509094508493506001600160a01b03861692630902f1ac9260c180840193829003018186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d606081101561028a57600080fd5b50805160209182015160408051630acc462360e31b81526001600160a01b038f81166004830152602482018c90526001604483015291516dffffffffffffffffffffffffffff94851697509390921694506000937f0000000000000000000000000000000000000000000000000000000000000000909116926356623118926064808201939291829003018186803b15801561032557600080fd5b505afa158015610339573d6000803e3d6000fd5b505050506040513d602081101561034f57600080fd5b5051905060006001600160a01b03808e16908d1611156104ec57610374828585610d65565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308e30888560006040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b03168152602001838152602001828152602001955050505050506040805180830381600087803b15801561041757600080fd5b505af115801561042b573d6000803e3d6000fd5b505050506040513d604081101561044157600080fd5b50602001516040805163022c0d9f60e01b8152600060048201819052602482018690526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116604484015260806064840152608483018290529251939a509188169263022c0d9f9260c48084019391929182900301818387803b1580156104cf57600080fd5b505af11580156104e3573d6000803e3d6000fd5b5050505061066b565b6104f7828486610d65565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308e30888560006040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b03168152602001838152602001828152602001955050505050506040805180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b505050506040513d60408110156105c457600080fd5b50602001516040805163022c0d9f60e01b8152600481018590526000602482018190526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116604484015260806064840152608483018290529251939a509188169263022c0d9f9260c48084019391929182900301818387803b15801561065257600080fd5b505af1158015610666573d6000803e3d6000fd5b505050505b6040805162ae511b60e21b81526001600160a01b038e811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908e166044830152600060648301819052608483018c9052835191936302b9446c9360a4808201949293918390030190829087803b1580156106f357600080fd5b505af1158015610707573d6000803e3d6000fd5b505050506040513d604081101561071d57600080fd5b5061072a90508988610db3565b955085156107cc5760408051633c6340f360e21b81526001600160a01b038f811660048301523060248301528c811660448301526064820189905291517f00000000000000000000000000000000000000000000000000000000000000009092169163f18d03cc9160848082019260009290919082900301818387803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050505b5050505050965096945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600080876001600160a01b0316896001600160a01b031610610850578789610853565b88885b604080516bffffffffffffffffffffffff19606085811b821660208085019190915285821b8316603485015284516028818603018152604885018652805190820120600080546001600160f81b031960688801527f000000000000000000000000000000000000000000000000000000000000000090941b9094166069860152607d850152609d808501929092528451808503909201825260bd84018086528251929091019190912063097da6d360e41b9091526001600160a01b038f811660c18501523060e1850152818116610101850152610121840183905261014184018c905284519698509496509490937f000000000000000000000000000000000000000000000000000000000000000016926397da6d3092610161808201939182900301818787803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050506040513d60408110156109b157600080fd5b505160408051630240bc6b60e21b8152905191925060009182916001600160a01b03861691630902f1ac91600480820192606092909190829003018186803b1580156109fc57600080fd5b505afa158015610a10573d6000803e3d6000fd5b505050506040513d6060811015610a2657600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060006001600160a01b03808f16908e161115610b7a57610a67848484610e11565b604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166064860152608060848601908152855160a48701819052979850908c169663022c0d9f96949589959394909390929160c4850191908083838b5b83811015610b0e578181015183820152602001610af6565b50505050905090810190601f168015610b3b5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b50505050610c8f565b610b85848385610e11565b604080516000808252602082019283905263022c0d9f60e01b835260248201848152604483018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166064860152608060848601908152855160a48701819052979850908c169663022c0d9f9689969394929160c4850191908083838a5b83811015610c27578181015183820152602001610c0f565b50505050905090810190601f168015610c545780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610c7657600080fd5b505af1158015610c8a573d6000803e3d6000fd5b505050505b6040805162ae511b60e21b81526001600160a01b038f811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908f16604483015260648201849052600060848301819052835191936302b9446c9360a4808201949293918390030190829087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050506040513d6040811015610d4157600080fd5b50602001519750610d52888c610db3565b9850505050505050509550959350505050565b600080610d7e6103e8610d788688610e5f565b90610e5f565b90506000610d926103e5610d788689610db3565b9050610da96001828481610da257fe5b0490610ecb565b9695505050505050565b80820382811115610e0b576040805162461bcd60e51b815260206004820152601560248201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604482015290519081900360640190fd5b92915050565b600080610e20856103e5610e5f565b90506000610e2e8285610e5f565b90506000610e4883610e42886103e8610e5f565b90610ecb565b9050808281610e5357fe5b04979650505050505050565b6000811580610e7a57505080820282828281610e7757fe5b04145b610e0b576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b81810181811015610e0b576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604482015290519081900360640190fdfea2646970667358221220b0821ad68e3c1366868c70647d159c133d710b42d14e32c1ac281849614395bd64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80634622be901461005c5780636b2ace87146100c15780639aab9248146100e5578063c45a0155146100ff578063e343fe1214610107575b600080fd5b6100a8600480360360c081101561007257600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135610149565b6040805192835260208301919091528051918290030190f35b6100c96107dc565b604080516001600160a01b039092168252519081900360200190f35b6100ed610800565b60408051918252519081900360200190f35b6100c9610806565b6100a8600480360360a081101561011d57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013561082a565b6000806000806000896001600160a01b03168b6001600160a01b03161061017157898b610174565b8a8a5b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b8116603483015282516028818403018152604883018452805190850120600080546001600160f81b031960688601527f0000000000000000000000000000000000000000000000000000000000000000881b9093166069850152607d840191909152609d808401929092528351808403909201825260bd830180855282519290950191909120630240bc6b60e21b90945291519296509094508493506001600160a01b03861692630902f1ac9260c180840193829003018186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d606081101561028a57600080fd5b50805160209182015160408051630acc462360e31b81526001600160a01b038f81166004830152602482018c90526001604483015291516dffffffffffffffffffffffffffff94851697509390921694506000937f0000000000000000000000000000000000000000000000000000000000000000909116926356623118926064808201939291829003018186803b15801561032557600080fd5b505afa158015610339573d6000803e3d6000fd5b505050506040513d602081101561034f57600080fd5b5051905060006001600160a01b03808e16908d1611156104ec57610374828585610d65565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308e30888560006040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b03168152602001838152602001828152602001955050505050506040805180830381600087803b15801561041757600080fd5b505af115801561042b573d6000803e3d6000fd5b505050506040513d604081101561044157600080fd5b50602001516040805163022c0d9f60e01b8152600060048201819052602482018690526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116604484015260806064840152608483018290529251939a509188169263022c0d9f9260c48084019391929182900301818387803b1580156104cf57600080fd5b505af11580156104e3573d6000803e3d6000fd5b5050505061066b565b6104f7828486610d65565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308e30888560006040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b03168152602001838152602001828152602001955050505050506040805180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b505050506040513d60408110156105c457600080fd5b50602001516040805163022c0d9f60e01b8152600481018590526000602482018190526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116604484015260806064840152608483018290529251939a509188169263022c0d9f9260c48084019391929182900301818387803b15801561065257600080fd5b505af1158015610666573d6000803e3d6000fd5b505050505b6040805162ae511b60e21b81526001600160a01b038e811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908e166044830152600060648301819052608483018c9052835191936302b9446c9360a4808201949293918390030190829087803b1580156106f357600080fd5b505af1158015610707573d6000803e3d6000fd5b505050506040513d604081101561071d57600080fd5b5061072a90508988610db3565b955085156107cc5760408051633c6340f360e21b81526001600160a01b038f811660048301523060248301528c811660448301526064820189905291517f00000000000000000000000000000000000000000000000000000000000000009092169163f18d03cc9160848082019260009290919082900301818387803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050505b5050505050965096945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600080876001600160a01b0316896001600160a01b031610610850578789610853565b88885b604080516bffffffffffffffffffffffff19606085811b821660208085019190915285821b8316603485015284516028818603018152604885018652805190820120600080546001600160f81b031960688801527f000000000000000000000000000000000000000000000000000000000000000090941b9094166069860152607d850152609d808501929092528451808503909201825260bd84018086528251929091019190912063097da6d360e41b9091526001600160a01b038f811660c18501523060e1850152818116610101850152610121840183905261014184018c905284519698509496509490937f000000000000000000000000000000000000000000000000000000000000000016926397da6d3092610161808201939182900301818787803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050506040513d60408110156109b157600080fd5b505160408051630240bc6b60e21b8152905191925060009182916001600160a01b03861691630902f1ac91600480820192606092909190829003018186803b1580156109fc57600080fd5b505afa158015610a10573d6000803e3d6000fd5b505050506040513d6060811015610a2657600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060006001600160a01b03808f16908e161115610b7a57610a67848484610e11565b604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166064860152608060848601908152855160a48701819052979850908c169663022c0d9f96949589959394909390929160c4850191908083838b5b83811015610b0e578181015183820152602001610af6565b50505050905090810190601f168015610b3b5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b50505050610c8f565b610b85848385610e11565b604080516000808252602082019283905263022c0d9f60e01b835260248201848152604483018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166064860152608060848601908152855160a48701819052979850908c169663022c0d9f9689969394929160c4850191908083838a5b83811015610c27578181015183820152602001610c0f565b50505050905090810190601f168015610c545780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610c7657600080fd5b505af1158015610c8a573d6000803e3d6000fd5b505050505b6040805162ae511b60e21b81526001600160a01b038f811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908f16604483015260648201849052600060848301819052835191936302b9446c9360a4808201949293918390030190829087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050506040513d6040811015610d4157600080fd5b50602001519750610d52888c610db3565b9850505050505050509550959350505050565b600080610d7e6103e8610d788688610e5f565b90610e5f565b90506000610d926103e5610d788689610db3565b9050610da96001828481610da257fe5b0490610ecb565b9695505050505050565b80820382811115610e0b576040805162461bcd60e51b815260206004820152601560248201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604482015290519081900360640190fd5b92915050565b600080610e20856103e5610e5f565b90506000610e2e8285610e5f565b90506000610e4883610e42886103e8610e5f565b90610ecb565b9050808281610e5357fe5b04979650505050505050565b6000811580610e7a57505080820282828281610e7757fe5b04145b610e0b576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b81810181811015610e0b576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604482015290519081900360640190fdfea2646970667358221220b0821ad68e3c1366868c70647d159c133d710b42d14e32c1ac281849614395bd64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
