UNPKG

@ensuro/swaplibrary

Version:

Solidity Library that implements swap using different plaforms with a homogeneneous interface

27 lines (25 loc) 32.1 kB
// This file was autogenerated by Hardhat, do not edit it. // prettier-ignore // tslint:disable // eslint-disable // biome-ignore format: see above export interface SwapLibrary$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "SwapLibrary"; readonly sourceName: "contracts/SwapLibrary.sol"; readonly abi: [{"inputs":[],"name":"AllowanceShouldGoBackToZero","type":"error"},{"inputs":[],"name":"AtLeastOneRoute","type":"error"},{"inputs":[],"name":"CurveRouterCantBeZero","type":"error"},{"inputs":[],"name":"InvalidLength","type":"error"},{"inputs":[],"name":"InvalidProtocol","type":"error"},{"inputs":[{"components":[{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"swapParams","type":"uint256[5][5]"},{"internalType":"address[5]","name":"pools","type":"address[5]"}],"internalType":"struct CurveRoutes.CurveRoute","name":"route","type":"tuple"}],"name":"InvalidRoute","type":"error"},{"inputs":[],"name":"MaxSlippageCannotBeZero","type":"error"},{"inputs":[{"internalType":"uint256","name":"received","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"ReceivedLessThanAcceptable","type":"error"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"RouteNotFound","type":"error"},{"inputs":[{"internalType":"uint256","name":"spent","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"}],"name":"SpentMoreThanAcceptable","type":"error"},{"inputs":[{"internalType":"uint8","name":"nSwaps","type":"uint8"}],"name":"TooManySwaps","type":"error"},{"inputs":[],"name":"UniswapFeeTierCannotBeZero","type":"error"},{"inputs":[],"name":"UniswapRouterCannotBeZero","type":"error"},{"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"SwapLibrary.SwapProtocol"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"swapConfig","type":"tuple"}],"name":"validate","outputs":[],"stateMutability":"pure","type":"function"}]; readonly bytecode: "0x611c93610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063581e517d1461004e578063775669151461007f578063b2fca32c1461009e575b5f5ffd5b818015610059575f5ffd5b5061006d610068366004611678565b6100b3565b60405190815260200160405180910390f35b81801561008a575f5ffd5b5061006d610099366004611678565b61012b565b6100b16100ac3660046116e7565b610190565b005b5f60016100c36020880188611735565b60028111156100d4576100d4611721565b036100ed576100e686868686866102d6565b9050610122565b60026100fc6020880188611735565b600281111561010d5761010d611721565b0361011f576100e6868686868661050e565b505f5b95945050505050565b5f600161013b6020880188611735565b600281111561014c5761014c611721565b0361015e576100e686868686866106c6565b600261016d6020880188611735565b600281111561017e5761017e611721565b0361011f576100e68686868686610908565b80602001355f036101b457604051633b3a5b4760e21b815260040160405180910390fd5b60016101c36020830183611735565b60028111156101d4576101d4611721565b0361024c575f6101e76040830183611753565b8101906101f4919061179d565b60208101519091506001600160a01b03166102225760405163e35d3f9360e01b815260040160405180910390fd5b805162ffffff165f036102485760405163c087296d60e01b815260040160405180910390fd5b5050565b600261025b6020830183611735565b600281111561026c5761026c611721565b036102bd576102ba6102816040830183611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610aee92505050565b50565b6040516301fc71f560e21b815260040160405180910390fd5b5f806102e56040880188611753565b8101906102f2919061179d565b90505f610306858960200135898988610d2c565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291925088169063095ea7b3906044016020604051808303815f875af115801561035a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663db3e2198836040518263ffffffff1660e01b815260040161041991906118a3565b6020604051808303815f875af1158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045991906118b2565b602085015160405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529192508a169063095ea7b3906044016020604051808303815f875af11580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061180f565b508281111561050157604051634641f9e160e01b815260048101829052602481018490526044015b60405180910390fd5b9998505050505050505050565b5f808061055e61052160408a018a611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b92508a9150610d8f9050565b915091505f610574868a602001358a8a89610d2c565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509089169063095ea7b3906044016020604051808303815f875af11580156105c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e8919061180f565b505f805b87158015906105fb5750600281105b15610648575f5f61060d87878c610ed5565b9150915061061b8a83610fdf565b610625908b6118dd565b995061063181856118f0565b93505050808061064090611903565b9150506105ec565b5060405163095ea7b360e01b81526001600160a01b0385811660048301525f60248301528a169063095ea7b3906044016020604051808303815f875af1158015610694573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b8919061180f565b509998505050505050505050565b5f806106d56040880188611753565b8101906106e2919061179d565b90505f6106f6858960200135898988610ff3565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201526024810188905291925088169063095ea7b3906044016020604051808303815f875af115801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663414bf389836040518263ffffffff1660e01b815260040161080991906118a3565b6020604051808303815f875af1158015610825573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084991906118b2565b6020850151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192508a169063dd62ed3e90604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf91906118b2565b156108dd57604051630511d53d60e41b815260040160405180910390fd5b8281101561050157604051634209aa3160e11b815260048101829052602481018490526044016104f8565b5f808061091b61052160408a018a611753565b915091505f610931868a602001358a8a89610ff3565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018990529192509089169063095ea7b3906044016020604051808303815f875af1158015610981573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061180f565b5081516020830151604080850151905163c872a3c560e01b81526001600160a01b0387169363c872a3c5936109e793919290918c9188919030906004016119bc565b6020604051808303815f875af1158015610a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2791906118b2565b604051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529195509089169063dd62ed3e90604401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9991906118b2565b15610ab757604051630511d53d60e41b815260040160405180910390fd5b80841015610ae257604051634209aa3160e11b815260048101859052602481018290526044016104f8565b50505095945050505050565b5f610af98282611026565b90506001600160a01b038116610b225760405163e368363760e01b815260040160405180910390fd5b5f610b38610b316014836118f0565b849061108a565b90508060ff165f03610b5d576040516301ec987f60e31b815260040160405180910390fd5b5f6001610b6b6014836118f0565b610b7591906118f0565b90505f5b8260ff16811015610d04575f5f610b9087856110e5565b915091505f5b8260ff16811015610c375781515f90610bb0836002611a12565b600b8110610bc057610bc0611a29565b60200201516001600160a01b03161480610c0f575081515f90610be4836002611a12565b610bef9060016118f0565b600b8110610bff57610bff611a29565b60200201516001600160a01b0316145b15610c2f5781604051635875b11160e01b81526004016104f89190611a3d565b600101610b96565b5080515f90610c47846002611aa1565b60ff16600b8110610c5a57610c5a611a29565b60200201516001600160a01b031603610c885780604051635875b11160e01b81526004016104f89190611a3d565b60058260ff1614158015610cc5575080515f90610ca4846113e0565b600b8110610cb457610cb4611a29565b60200201516001600160a01b031614155b15610ce55780604051635875b11160e01b81526004016104f89190611a3d565b610cee82611400565b610cf890856118f0565b93505050600101610b79565b5080845114610d265760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f610d368461145d565b610d7b610d4b87670de0b6b3a76400006118f0565b670de0b6b3a7640000610d7486670de0b6b3a7640000610d6a8a61145d565b610d74908e611a12565b91906114d4565b610d859190611ad1565b9695505050505050565b5f610d986115b2565b610da2855f611026565b91505f610dba610db36014836118f0565b879061108a565b90505f6001610dca6014836118f0565b610dd491906118f0565b90505f5b8260ff16811015610ea0575f610dee898461108a565b90506001600160a01b038816610e0f610e086001866118f0565b8b90611026565b6001600160a01b0316148015610e6657506001600160a01b038716610e5b610e3b60ff84166014611a12565b610e46906002611a12565b610e516001876118f0565b610e0891906118f0565b6001600160a01b0316145b15610e8257610e7589846110e5565b9550610ecd945050505050565b610e8b81611400565b610e9590846118f0565b925050600101610dd8565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044016104f8565b935093915050565b81516020830151604080850151905163c07b535360e01b81525f9384936001600160a01b0389169363c07b535393610f139392918991600401611af0565b602060405180830381865afa158015610f2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5291906118b2565b84516020860151604080880151905163c872a3c560e01b81529394506001600160a01b0389169363c872a3c593610f95939092909187915f9130906004016119bc565b6020604051808303815f875af1158015610fb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd591906118b2565b9150935093915050565b5f8282188284100282185b90505b92915050565b5f610ffd8361145d565b610d7b61101287670de0b6b3a76400006118dd565b8461101c8861145d565b610d74908b611a12565b5f6110328260146118f0565b8351101561107a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016104f8565b500160200151600160601b900490565b5f6110968260016118f0565b835110156110dc5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016104f8565b50016001015190565b5f6110ee6115b2565b6110f8848461108a565b915060058260ff16111561112457604051635b030b5960e11b815260ff831660048201526024016104f8565b5f5b61112f836113e0565b81101561118e57611160611144601483611a12565b61114f6001876118f0565b61115991906118f0565b8690611026565b825182600b811061117357611173611a29565b6001600160a01b039092166020929092020152600101611126565b50601461119a836113e0565b6111a49190611a12565b6111af9060016118f0565b6111b990846118f0565b92505f5b8260ff1681101561135c576111f26111d6600183611a12565b6111e1906005611a12565b6111eb90866118f0565b869061108a565b60ff168260200151826005811061120b5761120b611a29565b60200201515261123f61121f600183611a12565b61122a906005611a12565b61123490866118f0565b6111eb9060016118f0565b60ff168260200151826005811061125857611258611a29565b602002015160016020020152611292611272600183611a12565b61127d906005611a12565b61128790866118f0565b6111eb9060026118f0565b60ff16826020015182600581106112ab576112ab611a29565b6020020151604001526112e26112c2600183611a12565b6112cd906005611a12565b6112d790866118f0565b6111eb9060036118f0565b60ff16826020015182600581106112fb576112fb611a29565b602002015160600152611332611312600183611a12565b61131d906005611a12565b61132790866118f0565b6111eb9060046118f0565b60ff168260200151826005811061134b5761134b611a29565b6020020151608001526001016111bd565b5061136b600160ff8416611a12565b611376906005611a12565b61138090846118f0565b92505f5b8260ff168110156113d8576113a761139d601483611a12565b61115990866118f0565b826040015182600581106113bd576113bd611a29565b6001600160a01b039092166020929092020152600101611384565b509250929050565b5f6113ec826002611aa1565b6113f7906001611b22565b60ff1692915050565b5f61140f601460ff8416611a12565b600161141c846005611aa1565b60ff166114299190611a12565b6014611434856113e0565b61143e9190611a12565b6114499060016118f0565b61145391906118f0565b610fed91906118f0565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190611b3b565b6114c9906012611b5b565b610fed90600a611c4f565b5f5f5f6114e18686611585565b91509150815f03611505578381816114fb576114fb611abd565b049250505061157e565b81841161151c5761151c60038515026011186115a1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60405180606001604052806115c56115e4565b81526020016115d2611603565b81526020016115df611630565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61161a611630565b8152602001906001900390816116125790505090565b6040518060a001604052806005906020820280368337509192915050565b5f6060828403121561165e575f5ffd5b50919050565b6001600160a01b03811681146102ba575f5ffd5b5f5f5f5f5f60a0868803121561168c575f5ffd5b853567ffffffffffffffff8111156116a2575f5ffd5b6116ae8882890161164e565b95505060208601356116bf81611664565b935060408601356116cf81611664565b94979396509394606081013594506080013592915050565b5f602082840312156116f7575f5ffd5b813567ffffffffffffffff81111561170d575f5ffd5b6117198482850161164e565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611745575f5ffd5b81356003811061157e575f5ffd5b5f5f8335601e19843603018112611768575f5ffd5b83018035915067ffffffffffffffff821115611782575f5ffd5b602001915036819003821315611796575f5ffd5b9250929050565b5f60408284031280156117ae575f5ffd5b506040805190810167ffffffffffffffff811182821017156117de57634e487b7160e01b5f52604160045260245ffd5b604052823562ffffff811681146117f3575f5ffd5b8152602083013561180381611664565b60208201529392505050565b5f6020828403121561181f575f5ffd5b8151801515811461157e575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015191821690840152506080810151608083015260a081015160a083015260c081015160c083015260e081015161189e60e08401826001600160a01b03169052565b505050565b6101008101610fed828461182e565b5f602082840312156118c2575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fed57610fed6118c9565b80820180821115610fed57610fed6118c9565b5f60018201611914576119146118c9565b5060010190565b805f5b600b811015610d265781516001600160a01b031684526020938401939091019060010161191e565b805f5b6005811015610d265781515f85815b6005811015611977578351825260209384019390910190600101611958565b50505060a094909401935060209190910190600101611949565b805f5b6005811015610d265781516001600160a01b0316845260209384019390910190600101611994565b61058081016119cb828961191b565b6119d9610160830188611946565b85610480830152846104a08301526119f56104c0830185611991565b6001600160a01b0392909216610560919091015295945050505050565b8082028115828204841417610fed57610fed6118c9565b634e487b7160e01b5f52603260045260245ffd5b8151610520820190825f5b600b811015611a705782516001600160a01b0316825260209283019290910190600101611a48565b5050506020830151611a86610160840182611946565b506040830151611a9a610480840182611991565b5092915050565b60ff8181168382160290811690818114611a9a57611a9a6118c9565b634e487b7160e01b5f52601260045260245ffd5b5f82611aeb57634e487b7160e01b5f52601260045260245ffd5b500490565b6105408101611aff828761191b565b611b0d610160830186611946565b836104808301526101226104a0830184611991565b60ff8181168382160190811115610fed57610fed6118c9565b5f60208284031215611b4b575f5ffd5b815160ff8116811461157e575f5ffd5b60ff8281168282160390811115610fed57610fed6118c9565b6001815b6001841115610ecd57808504811115611b9357611b936118c9565b6001841615611ba157908102905b60019390931c928002611b78565b5f82611bbd57506001610fed565b81611bc957505f610fed565b8160018114611bdf5760028114611be957611c05565b6001915050610fed565b60ff841115611bfa57611bfa6118c9565b50506001821b610fed565b5060208310610133831016604e8410600b8410161715611c28575081810a610fed565b611c345f198484611b74565b805f1904821115611c4757611c476118c9565b029392505050565b5f610fea60ff841683611baf56fea2646970667358221220a229fce48c6180290b69722601e285d058e1b9965492ba5f706c142aaa26966064736f6c63430008230033"; readonly deployedBytecode: "0x730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063581e517d1461004e578063775669151461007f578063b2fca32c1461009e575b5f5ffd5b818015610059575f5ffd5b5061006d610068366004611678565b6100b3565b60405190815260200160405180910390f35b81801561008a575f5ffd5b5061006d610099366004611678565b61012b565b6100b16100ac3660046116e7565b610190565b005b5f60016100c36020880188611735565b60028111156100d4576100d4611721565b036100ed576100e686868686866102d6565b9050610122565b60026100fc6020880188611735565b600281111561010d5761010d611721565b0361011f576100e6868686868661050e565b505f5b95945050505050565b5f600161013b6020880188611735565b600281111561014c5761014c611721565b0361015e576100e686868686866106c6565b600261016d6020880188611735565b600281111561017e5761017e611721565b0361011f576100e68686868686610908565b80602001355f036101b457604051633b3a5b4760e21b815260040160405180910390fd5b60016101c36020830183611735565b60028111156101d4576101d4611721565b0361024c575f6101e76040830183611753565b8101906101f4919061179d565b60208101519091506001600160a01b03166102225760405163e35d3f9360e01b815260040160405180910390fd5b805162ffffff165f036102485760405163c087296d60e01b815260040160405180910390fd5b5050565b600261025b6020830183611735565b600281111561026c5761026c611721565b036102bd576102ba6102816040830183611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610aee92505050565b50565b6040516301fc71f560e21b815260040160405180910390fd5b5f806102e56040880188611753565b8101906102f2919061179d565b90505f610306858960200135898988610d2c565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291925088169063095ea7b3906044016020604051808303815f875af115801561035a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663db3e2198836040518263ffffffff1660e01b815260040161041991906118a3565b6020604051808303815f875af1158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045991906118b2565b602085015160405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529192508a169063095ea7b3906044016020604051808303815f875af11580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061180f565b508281111561050157604051634641f9e160e01b815260048101829052602481018490526044015b60405180910390fd5b9998505050505050505050565b5f808061055e61052160408a018a611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b92508a9150610d8f9050565b915091505f610574868a602001358a8a89610d2c565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509089169063095ea7b3906044016020604051808303815f875af11580156105c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e8919061180f565b505f805b87158015906105fb5750600281105b15610648575f5f61060d87878c610ed5565b9150915061061b8a83610fdf565b610625908b6118dd565b995061063181856118f0565b93505050808061064090611903565b9150506105ec565b5060405163095ea7b360e01b81526001600160a01b0385811660048301525f60248301528a169063095ea7b3906044016020604051808303815f875af1158015610694573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b8919061180f565b509998505050505050505050565b5f806106d56040880188611753565b8101906106e2919061179d565b90505f6106f6858960200135898988610ff3565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201526024810188905291925088169063095ea7b3906044016020604051808303815f875af115801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663414bf389836040518263ffffffff1660e01b815260040161080991906118a3565b6020604051808303815f875af1158015610825573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084991906118b2565b6020850151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192508a169063dd62ed3e90604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf91906118b2565b156108dd57604051630511d53d60e41b815260040160405180910390fd5b8281101561050157604051634209aa3160e11b815260048101829052602481018490526044016104f8565b5f808061091b61052160408a018a611753565b915091505f610931868a602001358a8a89610ff3565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018990529192509089169063095ea7b3906044016020604051808303815f875af1158015610981573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061180f565b5081516020830151604080850151905163c872a3c560e01b81526001600160a01b0387169363c872a3c5936109e793919290918c9188919030906004016119bc565b6020604051808303815f875af1158015610a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2791906118b2565b604051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529195509089169063dd62ed3e90604401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9991906118b2565b15610ab757604051630511d53d60e41b815260040160405180910390fd5b80841015610ae257604051634209aa3160e11b815260048101859052602481018290526044016104f8565b50505095945050505050565b5f610af98282611026565b90506001600160a01b038116610b225760405163e368363760e01b815260040160405180910390fd5b5f610b38610b316014836118f0565b849061108a565b90508060ff165f03610b5d576040516301ec987f60e31b815260040160405180910390fd5b5f6001610b6b6014836118f0565b610b7591906118f0565b90505f5b8260ff16811015610d04575f5f610b9087856110e5565b915091505f5b8260ff16811015610c375781515f90610bb0836002611a12565b600b8110610bc057610bc0611a29565b60200201516001600160a01b03161480610c0f575081515f90610be4836002611a12565b610bef9060016118f0565b600b8110610bff57610bff611a29565b60200201516001600160a01b0316145b15610c2f5781604051635875b11160e01b81526004016104f89190611a3d565b600101610b96565b5080515f90610c47846002611aa1565b60ff16600b8110610c5a57610c5a611a29565b60200201516001600160a01b031603610c885780604051635875b11160e01b81526004016104f89190611a3d565b60058260ff1614158015610cc5575080515f90610ca4846113e0565b600b8110610cb457610cb4611a29565b60200201516001600160a01b031614155b15610ce55780604051635875b11160e01b81526004016104f89190611a3d565b610cee82611400565b610cf890856118f0565b93505050600101610b79565b5080845114610d265760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f610d368461145d565b610d7b610d4b87670de0b6b3a76400006118f0565b670de0b6b3a7640000610d7486670de0b6b3a7640000610d6a8a61145d565b610d74908e611a12565b91906114d4565b610d859190611ad1565b9695505050505050565b5f610d986115b2565b610da2855f611026565b91505f610dba610db36014836118f0565b879061108a565b90505f6001610dca6014836118f0565b610dd491906118f0565b90505f5b8260ff16811015610ea0575f610dee898461108a565b90506001600160a01b038816610e0f610e086001866118f0565b8b90611026565b6001600160a01b0316148015610e6657506001600160a01b038716610e5b610e3b60ff84166014611a12565b610e46906002611a12565b610e516001876118f0565b610e0891906118f0565b6001600160a01b0316145b15610e8257610e7589846110e5565b9550610ecd945050505050565b610e8b81611400565b610e9590846118f0565b925050600101610dd8565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044016104f8565b935093915050565b81516020830151604080850151905163c07b535360e01b81525f9384936001600160a01b0389169363c07b535393610f139392918991600401611af0565b602060405180830381865afa158015610f2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5291906118b2565b84516020860151604080880151905163c872a3c560e01b81529394506001600160a01b0389169363c872a3c593610f95939092909187915f9130906004016119bc565b6020604051808303815f875af1158015610fb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd591906118b2565b9150935093915050565b5f8282188284100282185b90505b92915050565b5f610ffd8361145d565b610d7b61101287670de0b6b3a76400006118dd565b8461101c8861145d565b610d74908b611a12565b5f6110328260146118f0565b8351101561107a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016104f8565b500160200151600160601b900490565b5f6110968260016118f0565b835110156110dc5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016104f8565b50016001015190565b5f6110ee6115b2565b6110f8848461108a565b915060058260ff16111561112457604051635b030b5960e11b815260ff831660048201526024016104f8565b5f5b61112f836113e0565b81101561118e57611160611144601483611a12565b61114f6001876118f0565b61115991906118f0565b8690611026565b825182600b811061117357611173611a29565b6001600160a01b039092166020929092020152600101611126565b50601461119a836113e0565b6111a49190611a12565b6111af9060016118f0565b6111b990846118f0565b92505f5b8260ff1681101561135c576111f26111d6600183611a12565b6111e1906005611a12565b6111eb90866118f0565b869061108a565b60ff168260200151826005811061120b5761120b611a29565b60200201515261123f61121f600183611a12565b61122a906005611a12565b61123490866118f0565b6111eb9060016118f0565b60ff168260200151826005811061125857611258611a29565b602002015160016020020152611292611272600183611a12565b61127d906005611a12565b61128790866118f0565b6111eb9060026118f0565b60ff16826020015182600581106112ab576112ab611a29565b6020020151604001526112e26112c2600183611a12565b6112cd906005611a12565b6112d790866118f0565b6111eb9060036118f0565b60ff16826020015182600581106112fb576112fb611a29565b602002015160600152611332611312600183611a12565b61131d906005611a12565b61132790866118f0565b6111eb9060046118f0565b60ff168260200151826005811061134b5761134b611a29565b6020020151608001526001016111bd565b5061136b600160ff8416611a12565b611376906005611a12565b61138090846118f0565b92505f5b8260ff168110156113d8576113a761139d601483611a12565b61115990866118f0565b826040015182600581106113bd576113bd611a29565b6001600160a01b039092166020929092020152600101611384565b509250929050565b5f6113ec826002611aa1565b6113f7906001611b22565b60ff1692915050565b5f61140f601460ff8416611a12565b600161141c846005611aa1565b60ff166114299190611a12565b6014611434856113e0565b61143e9190611a12565b6114499060016118f0565b61145391906118f0565b610fed91906118f0565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190611b3b565b6114c9906012611b5b565b610fed90600a611c4f565b5f5f5f6114e18686611585565b91509150815f03611505578381816114fb576114fb611abd565b049250505061157e565b81841161151c5761151c60038515026011186115a1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60405180606001604052806115c56115e4565b81526020016115d2611603565b81526020016115df611630565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61161a611630565b8152602001906001900390816116125790505090565b6040518060a001604052806005906020820280368337509192915050565b5f6060828403121561165e575f5ffd5b50919050565b6001600160a01b03811681146102ba575f5ffd5b5f5f5f5f5f60a0868803121561168c575f5ffd5b853567ffffffffffffffff8111156116a2575f5ffd5b6116ae8882890161164e565b95505060208601356116bf81611664565b935060408601356116cf81611664565b94979396509394606081013594506080013592915050565b5f602082840312156116f7575f5ffd5b813567ffffffffffffffff81111561170d575f5ffd5b6117198482850161164e565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611745575f5ffd5b81356003811061157e575f5ffd5b5f5f8335601e19843603018112611768575f5ffd5b83018035915067ffffffffffffffff821115611782575f5ffd5b602001915036819003821315611796575f5ffd5b9250929050565b5f60408284031280156117ae575f5ffd5b506040805190810167ffffffffffffffff811182821017156117de57634e487b7160e01b5f52604160045260245ffd5b604052823562ffffff811681146117f3575f5ffd5b8152602083013561180381611664565b60208201529392505050565b5f6020828403121561181f575f5ffd5b8151801515811461157e575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015191821690840152506080810151608083015260a081015160a083015260c081015160c083015260e081015161189e60e08401826001600160a01b03169052565b505050565b6101008101610fed828461182e565b5f602082840312156118c2575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fed57610fed6118c9565b80820180821115610fed57610fed6118c9565b5f60018201611914576119146118c9565b5060010190565b805f5b600b811015610d265781516001600160a01b031684526020938401939091019060010161191e565b805f5b6005811015610d265781515f85815b6005811015611977578351825260209384019390910190600101611958565b50505060a094909401935060209190910190600101611949565b805f5b6005811015610d265781516001600160a01b0316845260209384019390910190600101611994565b61058081016119cb828961191b565b6119d9610160830188611946565b85610480830152846104a08301526119f56104c0830185611991565b6001600160a01b0392909216610560919091015295945050505050565b8082028115828204841417610fed57610fed6118c9565b634e487b7160e01b5f52603260045260245ffd5b8151610520820190825f5b600b811015611a705782516001600160a01b0316825260209283019290910190600101611a48565b5050506020830151611a86610160840182611946565b506040830151611a9a610480840182611991565b5092915050565b60ff8181168382160290811690818114611a9a57611a9a6118c9565b634e487b7160e01b5f52601260045260245ffd5b5f82611aeb57634e487b7160e01b5f52601260045260245ffd5b500490565b6105408101611aff828761191b565b611b0d610160830186611946565b836104808301526101226104a0830184611991565b60ff8181168382160190811115610fed57610fed6118c9565b5f60208284031215611b4b575f5ffd5b815160ff8116811461157e575f5ffd5b60ff8281168282160390811115610fed57610fed6118c9565b6001815b6001841115610ecd57808504811115611b9357611b936118c9565b6001841615611ba157908102905b60019390931c928002611b78565b5f82611bbd57506001610fed565b81611bc957505f610fed565b8160018114611bdf5760028114611be957611c05565b6001915050610fed565b60ff841115611bfa57611bfa6118c9565b50506001821b610fed565b5060208310610133831016604e8410600b8410161715611c28575081810a610fed565b611c345f198484611b74565b805f1904821115611c4757611c476118c9565b029392505050565b5f610fea60ff841683611baf56fea2646970667358221220a229fce48c6180290b69722601e285d058e1b9965492ba5f706c142aaa26966064736f6c63430008230033"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/SwapLibrary.sol"; readonly buildInfoId: "solc-0_8_35-3c6720e352a8805a57f3d5d8111ba91dcd52bec9"; }; import "hardhat/types/artifacts"; declare module "hardhat/types/artifacts" { interface ArtifactMap { ["SwapLibrary"]: SwapLibrary$Type; ["contracts/SwapLibrary.sol:SwapLibrary"]: SwapLibrary$Type; } }