{
  "_format": "hh-sol-artifact-1",
  "contractName": "SwapExecutor",
  "sourceName": "contracts/swap/SwapExecutor.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "extRouter",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "extCalldata",
              "type": "bytes"
            }
          ],
          "internalType": "struct SwapData",
          "name": "$",
          "type": "tuple"
        }
      ],
      "name": "swap",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6080604052348015600e575f5ffd5b506108528061001c5f395ff3fe608060405260043610610020575f3560e01c8063c3a7e1ce1461002b575f5ffd5b3661002757005b5f5ffd5b61003e6100393660046106ac565b610040565b005b610052815f01513383602001516100bb565b610063815f0151826060015161012c565b6080810151815161009e91906001600160a01b031615610083575f610089565b82602001515b60608401516001600160a01b031691906101cb565b5060408101516100b790836100b28261026d565b61027e565b5050565b6001600160a01b0383166101115780341461010c5760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064015b60405180910390fd5b505050565b801561010c5761010c6001600160a01b038416833084610356565b6001600160a01b03821661013e575050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301525f19919084169063dd62ed3e90604401602060405180830381865afa15801561018c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b091906107c2565b10156100b7576100b76001600160a01b038316825f196103bd565b6060814710156101f75760405163cf47918160e01b815247600482015260248101839052604401610103565b5f5f856001600160a01b0316848660405161021291906107d9565b5f6040518083038185875af1925050503d805f811461024c576040519150601f19603f3d011682016040523d82523d5f602084013e610251565b606091505b509150915061026186838361044d565b925050505b9392505050565b5f61027830836104a0565b92915050565b80158061029357506001600160a01b03821630145b1561029d57505050565b6001600160a01b038316610342575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146102f4576040519150601f19603f3d011682016040523d82523d5f602084013e6102f9565b606091505b505090508061033c5760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b6044820152606401610103565b50505050565b61010c6001600160a01b038416838361052a565b6040516001600160a01b03848116602483015283811660448301526064820183905261033c9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610550565b5f836001600160a01b031663095ea7b384846040516024016103e09291906107ef565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050905061041984826105b3565b61033c5761044384856001600160a01b031663095ea7b3865f60405160240161038b9291906107ef565b61033c8482610550565b6060826104625761045d826105fc565b610266565b815115801561047957506001600160a01b0384163b155b156104995783604051639996b31560e01b81526004016101039190610808565b5080610266565b5f6001600160a01b0382161561051b576040516370a0823160e01b81526001600160a01b038316906370a08231906104dc908690600401610808565b602060405180830381865afa1580156104f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045d91906107c2565b50506001600160a01b03163190565b61010c83846001600160a01b031663a9059cbb858560405160240161038b9291906107ef565b5f5f60205f8451602086015f885af18061056f576040513d5f823e3d81fd5b50505f513d91508115610586578060011415610593565b6001600160a01b0384163b155b1561033c5783604051635274afe760e01b81526004016101039190610808565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156105f2575081156105e457806001146105f2565b5f866001600160a01b03163b115b9695505050505050565b80511561060c5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b038116811461063b575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b038111828210171561067657610676610640565b60405290565b604051601f8201601f191681016001600160401b03811182821017156106a4576106a4610640565b604052919050565b5f5f604083850312156106bd575f5ffd5b6106c683610625565b915060208301356001600160401b038111156106e0575f5ffd5b830160a081860312156106f1575f5ffd5b6106f9610654565b61070282610625565b81526020820135602082015261071a60408301610625565b604082015261072b60608301610625565b606082015260808201356001600160401b03811115610748575f5ffd5b80830192505085601f83011261075c575f5ffd5b81356001600160401b0381111561077557610775610640565b610788601f8201601f191660200161067c565b81815287602083860101111561079c575f5ffd5b816020850160208301375f60208383010152806080840152505080925050509250929050565b5f602082840312156107d2575f5ffd5b5051919050565b5f82518060208501845e5f920191825250919050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039190911681526020019056fea26469706673582212201e66a3162da5e9fcff1bc09191ca1fb8bc8818d2f138417356a70d10eed7059c64736f6c634300081c0033",
  "deployedBytecode": "0x608060405260043610610020575f3560e01c8063c3a7e1ce1461002b575f5ffd5b3661002757005b5f5ffd5b61003e6100393660046106ac565b610040565b005b610052815f01513383602001516100bb565b610063815f0151826060015161012c565b6080810151815161009e91906001600160a01b031615610083575f610089565b82602001515b60608401516001600160a01b031691906101cb565b5060408101516100b790836100b28261026d565b61027e565b5050565b6001600160a01b0383166101115780341461010c5760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064015b60405180910390fd5b505050565b801561010c5761010c6001600160a01b038416833084610356565b6001600160a01b03821661013e575050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301525f19919084169063dd62ed3e90604401602060405180830381865afa15801561018c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b091906107c2565b10156100b7576100b76001600160a01b038316825f196103bd565b6060814710156101f75760405163cf47918160e01b815247600482015260248101839052604401610103565b5f5f856001600160a01b0316848660405161021291906107d9565b5f6040518083038185875af1925050503d805f811461024c576040519150601f19603f3d011682016040523d82523d5f602084013e610251565b606091505b509150915061026186838361044d565b925050505b9392505050565b5f61027830836104a0565b92915050565b80158061029357506001600160a01b03821630145b1561029d57505050565b6001600160a01b038316610342575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146102f4576040519150601f19603f3d011682016040523d82523d5f602084013e6102f9565b606091505b505090508061033c5760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b6044820152606401610103565b50505050565b61010c6001600160a01b038416838361052a565b6040516001600160a01b03848116602483015283811660448301526064820183905261033c9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610550565b5f836001600160a01b031663095ea7b384846040516024016103e09291906107ef565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050905061041984826105b3565b61033c5761044384856001600160a01b031663095ea7b3865f60405160240161038b9291906107ef565b61033c8482610550565b6060826104625761045d826105fc565b610266565b815115801561047957506001600160a01b0384163b155b156104995783604051639996b31560e01b81526004016101039190610808565b5080610266565b5f6001600160a01b0382161561051b576040516370a0823160e01b81526001600160a01b038316906370a08231906104dc908690600401610808565b602060405180830381865afa1580156104f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045d91906107c2565b50506001600160a01b03163190565b61010c83846001600160a01b031663a9059cbb858560405160240161038b9291906107ef565b5f5f60205f8451602086015f885af18061056f576040513d5f823e3d81fd5b50505f513d91508115610586578060011415610593565b6001600160a01b0384163b155b1561033c5783604051635274afe760e01b81526004016101039190610808565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156105f2575081156105e457806001146105f2565b5f866001600160a01b03163b115b9695505050505050565b80511561060c5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b038116811461063b575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b038111828210171561067657610676610640565b60405290565b604051601f8201601f191681016001600160401b03811182821017156106a4576106a4610640565b604052919050565b5f5f604083850312156106bd575f5ffd5b6106c683610625565b915060208301356001600160401b038111156106e0575f5ffd5b830160a081860312156106f1575f5ffd5b6106f9610654565b61070282610625565b81526020820135602082015261071a60408301610625565b604082015261072b60608301610625565b606082015260808201356001600160401b03811115610748575f5ffd5b80830192505085601f83011261075c575f5ffd5b81356001600160401b0381111561077557610775610640565b610788601f8201601f191660200161067c565b81815287602083860101111561079c575f5ffd5b816020850160208301375f60208383010152806080840152505080925050509250929050565b5f602082840312156107d2575f5ffd5b5051919050565b5f82518060208501845e5f920191825250919050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039190911681526020019056fea26469706673582212201e66a3162da5e9fcff1bc09191ca1fb8bc8818d2f138417356a70d10eed7059c64736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
