github.com/status-im/status-go@v1.1.0/contracts/uniswapV3/uniswapv3pool.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package uniswapv3
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	ethereum "github.com/ethereum/go-ethereum"
    12  	"github.com/ethereum/go-ethereum/accounts/abi"
    13  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    14  	"github.com/ethereum/go-ethereum/common"
    15  	"github.com/ethereum/go-ethereum/core/types"
    16  	"github.com/ethereum/go-ethereum/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = ethereum.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  	_ = abi.ConvertType
    30  )
    31  
    32  // Uniswapv3MetaData contains all meta data concerning the Uniswapv3 contract.
    33  var Uniswapv3MetaData = &bind.MetaData{
    34  	ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
    35  }
    36  
    37  // Uniswapv3ABI is the input ABI used to generate the binding from.
    38  // Deprecated: Use Uniswapv3MetaData.ABI instead.
    39  var Uniswapv3ABI = Uniswapv3MetaData.ABI
    40  
    41  // Uniswapv3 is an auto generated Go binding around an Ethereum contract.
    42  type Uniswapv3 struct {
    43  	Uniswapv3Caller     // Read-only binding to the contract
    44  	Uniswapv3Transactor // Write-only binding to the contract
    45  	Uniswapv3Filterer   // Log filterer for contract events
    46  }
    47  
    48  // Uniswapv3Caller is an auto generated read-only Go binding around an Ethereum contract.
    49  type Uniswapv3Caller struct {
    50  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    51  }
    52  
    53  // Uniswapv3Transactor is an auto generated write-only Go binding around an Ethereum contract.
    54  type Uniswapv3Transactor struct {
    55  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    56  }
    57  
    58  // Uniswapv3Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
    59  type Uniswapv3Filterer struct {
    60  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    61  }
    62  
    63  // Uniswapv3Session is an auto generated Go binding around an Ethereum contract,
    64  // with pre-set call and transact options.
    65  type Uniswapv3Session struct {
    66  	Contract     *Uniswapv3        // Generic contract binding to set the session for
    67  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    68  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    69  }
    70  
    71  // Uniswapv3CallerSession is an auto generated read-only Go binding around an Ethereum contract,
    72  // with pre-set call options.
    73  type Uniswapv3CallerSession struct {
    74  	Contract *Uniswapv3Caller // Generic contract caller binding to set the session for
    75  	CallOpts bind.CallOpts    // Call options to use throughout this session
    76  }
    77  
    78  // Uniswapv3TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    79  // with pre-set transact options.
    80  type Uniswapv3TransactorSession struct {
    81  	Contract     *Uniswapv3Transactor // Generic contract transactor binding to set the session for
    82  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
    83  }
    84  
    85  // Uniswapv3Raw is an auto generated low-level Go binding around an Ethereum contract.
    86  type Uniswapv3Raw struct {
    87  	Contract *Uniswapv3 // Generic contract binding to access the raw methods on
    88  }
    89  
    90  // Uniswapv3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    91  type Uniswapv3CallerRaw struct {
    92  	Contract *Uniswapv3Caller // Generic read-only contract binding to access the raw methods on
    93  }
    94  
    95  // Uniswapv3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    96  type Uniswapv3TransactorRaw struct {
    97  	Contract *Uniswapv3Transactor // Generic write-only contract binding to access the raw methods on
    98  }
    99  
   100  // NewUniswapv3 creates a new instance of Uniswapv3, bound to a specific deployed contract.
   101  func NewUniswapv3(address common.Address, backend bind.ContractBackend) (*Uniswapv3, error) {
   102  	contract, err := bindUniswapv3(address, backend, backend, backend)
   103  	if err != nil {
   104  		return nil, err
   105  	}
   106  	return &Uniswapv3{Uniswapv3Caller: Uniswapv3Caller{contract: contract}, Uniswapv3Transactor: Uniswapv3Transactor{contract: contract}, Uniswapv3Filterer: Uniswapv3Filterer{contract: contract}}, nil
   107  }
   108  
   109  // NewUniswapv3Caller creates a new read-only instance of Uniswapv3, bound to a specific deployed contract.
   110  func NewUniswapv3Caller(address common.Address, caller bind.ContractCaller) (*Uniswapv3Caller, error) {
   111  	contract, err := bindUniswapv3(address, caller, nil, nil)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	return &Uniswapv3Caller{contract: contract}, nil
   116  }
   117  
   118  // NewUniswapv3Transactor creates a new write-only instance of Uniswapv3, bound to a specific deployed contract.
   119  func NewUniswapv3Transactor(address common.Address, transactor bind.ContractTransactor) (*Uniswapv3Transactor, error) {
   120  	contract, err := bindUniswapv3(address, nil, transactor, nil)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &Uniswapv3Transactor{contract: contract}, nil
   125  }
   126  
   127  // NewUniswapv3Filterer creates a new log filterer instance of Uniswapv3, bound to a specific deployed contract.
   128  func NewUniswapv3Filterer(address common.Address, filterer bind.ContractFilterer) (*Uniswapv3Filterer, error) {
   129  	contract, err := bindUniswapv3(address, nil, nil, filterer)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return &Uniswapv3Filterer{contract: contract}, nil
   134  }
   135  
   136  // bindUniswapv3 binds a generic wrapper to an already deployed contract.
   137  func bindUniswapv3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   138  	parsed, err := Uniswapv3MetaData.GetAbi()
   139  	if err != nil {
   140  		return nil, err
   141  	}
   142  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   143  }
   144  
   145  // Call invokes the (constant) contract method with params as input values and
   146  // sets the output to result. The result type might be a single field for simple
   147  // returns, a slice of interfaces for anonymous returns and a struct for named
   148  // returns.
   149  func (_Uniswapv3 *Uniswapv3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   150  	return _Uniswapv3.Contract.Uniswapv3Caller.contract.Call(opts, result, method, params...)
   151  }
   152  
   153  // Transfer initiates a plain transaction to move funds to the contract, calling
   154  // its default method if one is available.
   155  func (_Uniswapv3 *Uniswapv3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   156  	return _Uniswapv3.Contract.Uniswapv3Transactor.contract.Transfer(opts)
   157  }
   158  
   159  // Transact invokes the (paid) contract method with params as input values.
   160  func (_Uniswapv3 *Uniswapv3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   161  	return _Uniswapv3.Contract.Uniswapv3Transactor.contract.Transact(opts, method, params...)
   162  }
   163  
   164  // Call invokes the (constant) contract method with params as input values and
   165  // sets the output to result. The result type might be a single field for simple
   166  // returns, a slice of interfaces for anonymous returns and a struct for named
   167  // returns.
   168  func (_Uniswapv3 *Uniswapv3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   169  	return _Uniswapv3.Contract.contract.Call(opts, result, method, params...)
   170  }
   171  
   172  // Transfer initiates a plain transaction to move funds to the contract, calling
   173  // its default method if one is available.
   174  func (_Uniswapv3 *Uniswapv3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   175  	return _Uniswapv3.Contract.contract.Transfer(opts)
   176  }
   177  
   178  // Transact invokes the (paid) contract method with params as input values.
   179  func (_Uniswapv3 *Uniswapv3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   180  	return _Uniswapv3.Contract.contract.Transact(opts, method, params...)
   181  }
   182  
   183  // Factory is a free data retrieval call binding the contract method 0xc45a0155.
   184  //
   185  // Solidity: function factory() view returns(address)
   186  func (_Uniswapv3 *Uniswapv3Caller) Factory(opts *bind.CallOpts) (common.Address, error) {
   187  	var out []interface{}
   188  	err := _Uniswapv3.contract.Call(opts, &out, "factory")
   189  
   190  	if err != nil {
   191  		return *new(common.Address), err
   192  	}
   193  
   194  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   195  
   196  	return out0, err
   197  
   198  }
   199  
   200  // Factory is a free data retrieval call binding the contract method 0xc45a0155.
   201  //
   202  // Solidity: function factory() view returns(address)
   203  func (_Uniswapv3 *Uniswapv3Session) Factory() (common.Address, error) {
   204  	return _Uniswapv3.Contract.Factory(&_Uniswapv3.CallOpts)
   205  }
   206  
   207  // Factory is a free data retrieval call binding the contract method 0xc45a0155.
   208  //
   209  // Solidity: function factory() view returns(address)
   210  func (_Uniswapv3 *Uniswapv3CallerSession) Factory() (common.Address, error) {
   211  	return _Uniswapv3.Contract.Factory(&_Uniswapv3.CallOpts)
   212  }
   213  
   214  // Fee is a free data retrieval call binding the contract method 0xddca3f43.
   215  //
   216  // Solidity: function fee() view returns(uint24)
   217  func (_Uniswapv3 *Uniswapv3Caller) Fee(opts *bind.CallOpts) (*big.Int, error) {
   218  	var out []interface{}
   219  	err := _Uniswapv3.contract.Call(opts, &out, "fee")
   220  
   221  	if err != nil {
   222  		return *new(*big.Int), err
   223  	}
   224  
   225  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   226  
   227  	return out0, err
   228  
   229  }
   230  
   231  // Fee is a free data retrieval call binding the contract method 0xddca3f43.
   232  //
   233  // Solidity: function fee() view returns(uint24)
   234  func (_Uniswapv3 *Uniswapv3Session) Fee() (*big.Int, error) {
   235  	return _Uniswapv3.Contract.Fee(&_Uniswapv3.CallOpts)
   236  }
   237  
   238  // Fee is a free data retrieval call binding the contract method 0xddca3f43.
   239  //
   240  // Solidity: function fee() view returns(uint24)
   241  func (_Uniswapv3 *Uniswapv3CallerSession) Fee() (*big.Int, error) {
   242  	return _Uniswapv3.Contract.Fee(&_Uniswapv3.CallOpts)
   243  }
   244  
   245  // FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399.
   246  //
   247  // Solidity: function feeGrowthGlobal0X128() view returns(uint256)
   248  func (_Uniswapv3 *Uniswapv3Caller) FeeGrowthGlobal0X128(opts *bind.CallOpts) (*big.Int, error) {
   249  	var out []interface{}
   250  	err := _Uniswapv3.contract.Call(opts, &out, "feeGrowthGlobal0X128")
   251  
   252  	if err != nil {
   253  		return *new(*big.Int), err
   254  	}
   255  
   256  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   257  
   258  	return out0, err
   259  
   260  }
   261  
   262  // FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399.
   263  //
   264  // Solidity: function feeGrowthGlobal0X128() view returns(uint256)
   265  func (_Uniswapv3 *Uniswapv3Session) FeeGrowthGlobal0X128() (*big.Int, error) {
   266  	return _Uniswapv3.Contract.FeeGrowthGlobal0X128(&_Uniswapv3.CallOpts)
   267  }
   268  
   269  // FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399.
   270  //
   271  // Solidity: function feeGrowthGlobal0X128() view returns(uint256)
   272  func (_Uniswapv3 *Uniswapv3CallerSession) FeeGrowthGlobal0X128() (*big.Int, error) {
   273  	return _Uniswapv3.Contract.FeeGrowthGlobal0X128(&_Uniswapv3.CallOpts)
   274  }
   275  
   276  // FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319.
   277  //
   278  // Solidity: function feeGrowthGlobal1X128() view returns(uint256)
   279  func (_Uniswapv3 *Uniswapv3Caller) FeeGrowthGlobal1X128(opts *bind.CallOpts) (*big.Int, error) {
   280  	var out []interface{}
   281  	err := _Uniswapv3.contract.Call(opts, &out, "feeGrowthGlobal1X128")
   282  
   283  	if err != nil {
   284  		return *new(*big.Int), err
   285  	}
   286  
   287  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   288  
   289  	return out0, err
   290  
   291  }
   292  
   293  // FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319.
   294  //
   295  // Solidity: function feeGrowthGlobal1X128() view returns(uint256)
   296  func (_Uniswapv3 *Uniswapv3Session) FeeGrowthGlobal1X128() (*big.Int, error) {
   297  	return _Uniswapv3.Contract.FeeGrowthGlobal1X128(&_Uniswapv3.CallOpts)
   298  }
   299  
   300  // FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319.
   301  //
   302  // Solidity: function feeGrowthGlobal1X128() view returns(uint256)
   303  func (_Uniswapv3 *Uniswapv3CallerSession) FeeGrowthGlobal1X128() (*big.Int, error) {
   304  	return _Uniswapv3.Contract.FeeGrowthGlobal1X128(&_Uniswapv3.CallOpts)
   305  }
   306  
   307  // Liquidity is a free data retrieval call binding the contract method 0x1a686502.
   308  //
   309  // Solidity: function liquidity() view returns(uint128)
   310  func (_Uniswapv3 *Uniswapv3Caller) Liquidity(opts *bind.CallOpts) (*big.Int, error) {
   311  	var out []interface{}
   312  	err := _Uniswapv3.contract.Call(opts, &out, "liquidity")
   313  
   314  	if err != nil {
   315  		return *new(*big.Int), err
   316  	}
   317  
   318  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   319  
   320  	return out0, err
   321  
   322  }
   323  
   324  // Liquidity is a free data retrieval call binding the contract method 0x1a686502.
   325  //
   326  // Solidity: function liquidity() view returns(uint128)
   327  func (_Uniswapv3 *Uniswapv3Session) Liquidity() (*big.Int, error) {
   328  	return _Uniswapv3.Contract.Liquidity(&_Uniswapv3.CallOpts)
   329  }
   330  
   331  // Liquidity is a free data retrieval call binding the contract method 0x1a686502.
   332  //
   333  // Solidity: function liquidity() view returns(uint128)
   334  func (_Uniswapv3 *Uniswapv3CallerSession) Liquidity() (*big.Int, error) {
   335  	return _Uniswapv3.Contract.Liquidity(&_Uniswapv3.CallOpts)
   336  }
   337  
   338  // MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a.
   339  //
   340  // Solidity: function maxLiquidityPerTick() view returns(uint128)
   341  func (_Uniswapv3 *Uniswapv3Caller) MaxLiquidityPerTick(opts *bind.CallOpts) (*big.Int, error) {
   342  	var out []interface{}
   343  	err := _Uniswapv3.contract.Call(opts, &out, "maxLiquidityPerTick")
   344  
   345  	if err != nil {
   346  		return *new(*big.Int), err
   347  	}
   348  
   349  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   350  
   351  	return out0, err
   352  
   353  }
   354  
   355  // MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a.
   356  //
   357  // Solidity: function maxLiquidityPerTick() view returns(uint128)
   358  func (_Uniswapv3 *Uniswapv3Session) MaxLiquidityPerTick() (*big.Int, error) {
   359  	return _Uniswapv3.Contract.MaxLiquidityPerTick(&_Uniswapv3.CallOpts)
   360  }
   361  
   362  // MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a.
   363  //
   364  // Solidity: function maxLiquidityPerTick() view returns(uint128)
   365  func (_Uniswapv3 *Uniswapv3CallerSession) MaxLiquidityPerTick() (*big.Int, error) {
   366  	return _Uniswapv3.Contract.MaxLiquidityPerTick(&_Uniswapv3.CallOpts)
   367  }
   368  
   369  // Observations is a free data retrieval call binding the contract method 0x252c09d7.
   370  //
   371  // Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized)
   372  func (_Uniswapv3 *Uniswapv3Caller) Observations(opts *bind.CallOpts, index *big.Int) (struct {
   373  	BlockTimestamp                    uint32
   374  	TickCumulative                    *big.Int
   375  	SecondsPerLiquidityCumulativeX128 *big.Int
   376  	Initialized                       bool
   377  }, error) {
   378  	var out []interface{}
   379  	err := _Uniswapv3.contract.Call(opts, &out, "observations", index)
   380  
   381  	outstruct := new(struct {
   382  		BlockTimestamp                    uint32
   383  		TickCumulative                    *big.Int
   384  		SecondsPerLiquidityCumulativeX128 *big.Int
   385  		Initialized                       bool
   386  	})
   387  	if err != nil {
   388  		return *outstruct, err
   389  	}
   390  
   391  	outstruct.BlockTimestamp = *abi.ConvertType(out[0], new(uint32)).(*uint32)
   392  	outstruct.TickCumulative = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   393  	outstruct.SecondsPerLiquidityCumulativeX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   394  	outstruct.Initialized = *abi.ConvertType(out[3], new(bool)).(*bool)
   395  
   396  	return *outstruct, err
   397  
   398  }
   399  
   400  // Observations is a free data retrieval call binding the contract method 0x252c09d7.
   401  //
   402  // Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized)
   403  func (_Uniswapv3 *Uniswapv3Session) Observations(index *big.Int) (struct {
   404  	BlockTimestamp                    uint32
   405  	TickCumulative                    *big.Int
   406  	SecondsPerLiquidityCumulativeX128 *big.Int
   407  	Initialized                       bool
   408  }, error) {
   409  	return _Uniswapv3.Contract.Observations(&_Uniswapv3.CallOpts, index)
   410  }
   411  
   412  // Observations is a free data retrieval call binding the contract method 0x252c09d7.
   413  //
   414  // Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized)
   415  func (_Uniswapv3 *Uniswapv3CallerSession) Observations(index *big.Int) (struct {
   416  	BlockTimestamp                    uint32
   417  	TickCumulative                    *big.Int
   418  	SecondsPerLiquidityCumulativeX128 *big.Int
   419  	Initialized                       bool
   420  }, error) {
   421  	return _Uniswapv3.Contract.Observations(&_Uniswapv3.CallOpts, index)
   422  }
   423  
   424  // Observe is a free data retrieval call binding the contract method 0x883bdbfd.
   425  //
   426  // Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)
   427  func (_Uniswapv3 *Uniswapv3Caller) Observe(opts *bind.CallOpts, secondsAgos []uint32) (struct {
   428  	TickCumulatives                    []*big.Int
   429  	SecondsPerLiquidityCumulativeX128s []*big.Int
   430  }, error) {
   431  	var out []interface{}
   432  	err := _Uniswapv3.contract.Call(opts, &out, "observe", secondsAgos)
   433  
   434  	outstruct := new(struct {
   435  		TickCumulatives                    []*big.Int
   436  		SecondsPerLiquidityCumulativeX128s []*big.Int
   437  	})
   438  	if err != nil {
   439  		return *outstruct, err
   440  	}
   441  
   442  	outstruct.TickCumulatives = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
   443  	outstruct.SecondsPerLiquidityCumulativeX128s = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
   444  
   445  	return *outstruct, err
   446  
   447  }
   448  
   449  // Observe is a free data retrieval call binding the contract method 0x883bdbfd.
   450  //
   451  // Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)
   452  func (_Uniswapv3 *Uniswapv3Session) Observe(secondsAgos []uint32) (struct {
   453  	TickCumulatives                    []*big.Int
   454  	SecondsPerLiquidityCumulativeX128s []*big.Int
   455  }, error) {
   456  	return _Uniswapv3.Contract.Observe(&_Uniswapv3.CallOpts, secondsAgos)
   457  }
   458  
   459  // Observe is a free data retrieval call binding the contract method 0x883bdbfd.
   460  //
   461  // Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)
   462  func (_Uniswapv3 *Uniswapv3CallerSession) Observe(secondsAgos []uint32) (struct {
   463  	TickCumulatives                    []*big.Int
   464  	SecondsPerLiquidityCumulativeX128s []*big.Int
   465  }, error) {
   466  	return _Uniswapv3.Contract.Observe(&_Uniswapv3.CallOpts, secondsAgos)
   467  }
   468  
   469  // Positions is a free data retrieval call binding the contract method 0x514ea4bf.
   470  //
   471  // Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
   472  func (_Uniswapv3 *Uniswapv3Caller) Positions(opts *bind.CallOpts, key [32]byte) (struct {
   473  	Liquidity                *big.Int
   474  	FeeGrowthInside0LastX128 *big.Int
   475  	FeeGrowthInside1LastX128 *big.Int
   476  	TokensOwed0              *big.Int
   477  	TokensOwed1              *big.Int
   478  }, error) {
   479  	var out []interface{}
   480  	err := _Uniswapv3.contract.Call(opts, &out, "positions", key)
   481  
   482  	outstruct := new(struct {
   483  		Liquidity                *big.Int
   484  		FeeGrowthInside0LastX128 *big.Int
   485  		FeeGrowthInside1LastX128 *big.Int
   486  		TokensOwed0              *big.Int
   487  		TokensOwed1              *big.Int
   488  	})
   489  	if err != nil {
   490  		return *outstruct, err
   491  	}
   492  
   493  	outstruct.Liquidity = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   494  	outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   495  	outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   496  	outstruct.TokensOwed0 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   497  	outstruct.TokensOwed1 = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int)
   498  
   499  	return *outstruct, err
   500  
   501  }
   502  
   503  // Positions is a free data retrieval call binding the contract method 0x514ea4bf.
   504  //
   505  // Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
   506  func (_Uniswapv3 *Uniswapv3Session) Positions(key [32]byte) (struct {
   507  	Liquidity                *big.Int
   508  	FeeGrowthInside0LastX128 *big.Int
   509  	FeeGrowthInside1LastX128 *big.Int
   510  	TokensOwed0              *big.Int
   511  	TokensOwed1              *big.Int
   512  }, error) {
   513  	return _Uniswapv3.Contract.Positions(&_Uniswapv3.CallOpts, key)
   514  }
   515  
   516  // Positions is a free data retrieval call binding the contract method 0x514ea4bf.
   517  //
   518  // Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
   519  func (_Uniswapv3 *Uniswapv3CallerSession) Positions(key [32]byte) (struct {
   520  	Liquidity                *big.Int
   521  	FeeGrowthInside0LastX128 *big.Int
   522  	FeeGrowthInside1LastX128 *big.Int
   523  	TokensOwed0              *big.Int
   524  	TokensOwed1              *big.Int
   525  }, error) {
   526  	return _Uniswapv3.Contract.Positions(&_Uniswapv3.CallOpts, key)
   527  }
   528  
   529  // ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b.
   530  //
   531  // Solidity: function protocolFees() view returns(uint128 token0, uint128 token1)
   532  func (_Uniswapv3 *Uniswapv3Caller) ProtocolFees(opts *bind.CallOpts) (struct {
   533  	Token0 *big.Int
   534  	Token1 *big.Int
   535  }, error) {
   536  	var out []interface{}
   537  	err := _Uniswapv3.contract.Call(opts, &out, "protocolFees")
   538  
   539  	outstruct := new(struct {
   540  		Token0 *big.Int
   541  		Token1 *big.Int
   542  	})
   543  	if err != nil {
   544  		return *outstruct, err
   545  	}
   546  
   547  	outstruct.Token0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   548  	outstruct.Token1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   549  
   550  	return *outstruct, err
   551  
   552  }
   553  
   554  // ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b.
   555  //
   556  // Solidity: function protocolFees() view returns(uint128 token0, uint128 token1)
   557  func (_Uniswapv3 *Uniswapv3Session) ProtocolFees() (struct {
   558  	Token0 *big.Int
   559  	Token1 *big.Int
   560  }, error) {
   561  	return _Uniswapv3.Contract.ProtocolFees(&_Uniswapv3.CallOpts)
   562  }
   563  
   564  // ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b.
   565  //
   566  // Solidity: function protocolFees() view returns(uint128 token0, uint128 token1)
   567  func (_Uniswapv3 *Uniswapv3CallerSession) ProtocolFees() (struct {
   568  	Token0 *big.Int
   569  	Token1 *big.Int
   570  }, error) {
   571  	return _Uniswapv3.Contract.ProtocolFees(&_Uniswapv3.CallOpts)
   572  }
   573  
   574  // Slot0 is a free data retrieval call binding the contract method 0x3850c7bd.
   575  //
   576  // Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)
   577  func (_Uniswapv3 *Uniswapv3Caller) Slot0(opts *bind.CallOpts) (struct {
   578  	SqrtPriceX96               *big.Int
   579  	Tick                       *big.Int
   580  	ObservationIndex           uint16
   581  	ObservationCardinality     uint16
   582  	ObservationCardinalityNext uint16
   583  	FeeProtocol                uint8
   584  	Unlocked                   bool
   585  }, error) {
   586  	var out []interface{}
   587  	err := _Uniswapv3.contract.Call(opts, &out, "slot0")
   588  
   589  	outstruct := new(struct {
   590  		SqrtPriceX96               *big.Int
   591  		Tick                       *big.Int
   592  		ObservationIndex           uint16
   593  		ObservationCardinality     uint16
   594  		ObservationCardinalityNext uint16
   595  		FeeProtocol                uint8
   596  		Unlocked                   bool
   597  	})
   598  	if err != nil {
   599  		return *outstruct, err
   600  	}
   601  
   602  	outstruct.SqrtPriceX96 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   603  	outstruct.Tick = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   604  	outstruct.ObservationIndex = *abi.ConvertType(out[2], new(uint16)).(*uint16)
   605  	outstruct.ObservationCardinality = *abi.ConvertType(out[3], new(uint16)).(*uint16)
   606  	outstruct.ObservationCardinalityNext = *abi.ConvertType(out[4], new(uint16)).(*uint16)
   607  	outstruct.FeeProtocol = *abi.ConvertType(out[5], new(uint8)).(*uint8)
   608  	outstruct.Unlocked = *abi.ConvertType(out[6], new(bool)).(*bool)
   609  
   610  	return *outstruct, err
   611  
   612  }
   613  
   614  // Slot0 is a free data retrieval call binding the contract method 0x3850c7bd.
   615  //
   616  // Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)
   617  func (_Uniswapv3 *Uniswapv3Session) Slot0() (struct {
   618  	SqrtPriceX96               *big.Int
   619  	Tick                       *big.Int
   620  	ObservationIndex           uint16
   621  	ObservationCardinality     uint16
   622  	ObservationCardinalityNext uint16
   623  	FeeProtocol                uint8
   624  	Unlocked                   bool
   625  }, error) {
   626  	return _Uniswapv3.Contract.Slot0(&_Uniswapv3.CallOpts)
   627  }
   628  
   629  // Slot0 is a free data retrieval call binding the contract method 0x3850c7bd.
   630  //
   631  // Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)
   632  func (_Uniswapv3 *Uniswapv3CallerSession) Slot0() (struct {
   633  	SqrtPriceX96               *big.Int
   634  	Tick                       *big.Int
   635  	ObservationIndex           uint16
   636  	ObservationCardinality     uint16
   637  	ObservationCardinalityNext uint16
   638  	FeeProtocol                uint8
   639  	Unlocked                   bool
   640  }, error) {
   641  	return _Uniswapv3.Contract.Slot0(&_Uniswapv3.CallOpts)
   642  }
   643  
   644  // SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2.
   645  //
   646  // Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside)
   647  func (_Uniswapv3 *Uniswapv3Caller) SnapshotCumulativesInside(opts *bind.CallOpts, tickLower *big.Int, tickUpper *big.Int) (struct {
   648  	TickCumulativeInside          *big.Int
   649  	SecondsPerLiquidityInsideX128 *big.Int
   650  	SecondsInside                 uint32
   651  }, error) {
   652  	var out []interface{}
   653  	err := _Uniswapv3.contract.Call(opts, &out, "snapshotCumulativesInside", tickLower, tickUpper)
   654  
   655  	outstruct := new(struct {
   656  		TickCumulativeInside          *big.Int
   657  		SecondsPerLiquidityInsideX128 *big.Int
   658  		SecondsInside                 uint32
   659  	})
   660  	if err != nil {
   661  		return *outstruct, err
   662  	}
   663  
   664  	outstruct.TickCumulativeInside = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   665  	outstruct.SecondsPerLiquidityInsideX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   666  	outstruct.SecondsInside = *abi.ConvertType(out[2], new(uint32)).(*uint32)
   667  
   668  	return *outstruct, err
   669  
   670  }
   671  
   672  // SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2.
   673  //
   674  // Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside)
   675  func (_Uniswapv3 *Uniswapv3Session) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct {
   676  	TickCumulativeInside          *big.Int
   677  	SecondsPerLiquidityInsideX128 *big.Int
   678  	SecondsInside                 uint32
   679  }, error) {
   680  	return _Uniswapv3.Contract.SnapshotCumulativesInside(&_Uniswapv3.CallOpts, tickLower, tickUpper)
   681  }
   682  
   683  // SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2.
   684  //
   685  // Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside)
   686  func (_Uniswapv3 *Uniswapv3CallerSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct {
   687  	TickCumulativeInside          *big.Int
   688  	SecondsPerLiquidityInsideX128 *big.Int
   689  	SecondsInside                 uint32
   690  }, error) {
   691  	return _Uniswapv3.Contract.SnapshotCumulativesInside(&_Uniswapv3.CallOpts, tickLower, tickUpper)
   692  }
   693  
   694  // TickBitmap is a free data retrieval call binding the contract method 0x5339c296.
   695  //
   696  // Solidity: function tickBitmap(int16 wordPosition) view returns(uint256)
   697  func (_Uniswapv3 *Uniswapv3Caller) TickBitmap(opts *bind.CallOpts, wordPosition int16) (*big.Int, error) {
   698  	var out []interface{}
   699  	err := _Uniswapv3.contract.Call(opts, &out, "tickBitmap", wordPosition)
   700  
   701  	if err != nil {
   702  		return *new(*big.Int), err
   703  	}
   704  
   705  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   706  
   707  	return out0, err
   708  
   709  }
   710  
   711  // TickBitmap is a free data retrieval call binding the contract method 0x5339c296.
   712  //
   713  // Solidity: function tickBitmap(int16 wordPosition) view returns(uint256)
   714  func (_Uniswapv3 *Uniswapv3Session) TickBitmap(wordPosition int16) (*big.Int, error) {
   715  	return _Uniswapv3.Contract.TickBitmap(&_Uniswapv3.CallOpts, wordPosition)
   716  }
   717  
   718  // TickBitmap is a free data retrieval call binding the contract method 0x5339c296.
   719  //
   720  // Solidity: function tickBitmap(int16 wordPosition) view returns(uint256)
   721  func (_Uniswapv3 *Uniswapv3CallerSession) TickBitmap(wordPosition int16) (*big.Int, error) {
   722  	return _Uniswapv3.Contract.TickBitmap(&_Uniswapv3.CallOpts, wordPosition)
   723  }
   724  
   725  // TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c.
   726  //
   727  // Solidity: function tickSpacing() view returns(int24)
   728  func (_Uniswapv3 *Uniswapv3Caller) TickSpacing(opts *bind.CallOpts) (*big.Int, error) {
   729  	var out []interface{}
   730  	err := _Uniswapv3.contract.Call(opts, &out, "tickSpacing")
   731  
   732  	if err != nil {
   733  		return *new(*big.Int), err
   734  	}
   735  
   736  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   737  
   738  	return out0, err
   739  
   740  }
   741  
   742  // TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c.
   743  //
   744  // Solidity: function tickSpacing() view returns(int24)
   745  func (_Uniswapv3 *Uniswapv3Session) TickSpacing() (*big.Int, error) {
   746  	return _Uniswapv3.Contract.TickSpacing(&_Uniswapv3.CallOpts)
   747  }
   748  
   749  // TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c.
   750  //
   751  // Solidity: function tickSpacing() view returns(int24)
   752  func (_Uniswapv3 *Uniswapv3CallerSession) TickSpacing() (*big.Int, error) {
   753  	return _Uniswapv3.Contract.TickSpacing(&_Uniswapv3.CallOpts)
   754  }
   755  
   756  // Ticks is a free data retrieval call binding the contract method 0xf30dba93.
   757  //
   758  // Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized)
   759  func (_Uniswapv3 *Uniswapv3Caller) Ticks(opts *bind.CallOpts, tick *big.Int) (struct {
   760  	LiquidityGross                 *big.Int
   761  	LiquidityNet                   *big.Int
   762  	FeeGrowthOutside0X128          *big.Int
   763  	FeeGrowthOutside1X128          *big.Int
   764  	TickCumulativeOutside          *big.Int
   765  	SecondsPerLiquidityOutsideX128 *big.Int
   766  	SecondsOutside                 uint32
   767  	Initialized                    bool
   768  }, error) {
   769  	var out []interface{}
   770  	err := _Uniswapv3.contract.Call(opts, &out, "ticks", tick)
   771  
   772  	outstruct := new(struct {
   773  		LiquidityGross                 *big.Int
   774  		LiquidityNet                   *big.Int
   775  		FeeGrowthOutside0X128          *big.Int
   776  		FeeGrowthOutside1X128          *big.Int
   777  		TickCumulativeOutside          *big.Int
   778  		SecondsPerLiquidityOutsideX128 *big.Int
   779  		SecondsOutside                 uint32
   780  		Initialized                    bool
   781  	})
   782  	if err != nil {
   783  		return *outstruct, err
   784  	}
   785  
   786  	outstruct.LiquidityGross = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   787  	outstruct.LiquidityNet = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   788  	outstruct.FeeGrowthOutside0X128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   789  	outstruct.FeeGrowthOutside1X128 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   790  	outstruct.TickCumulativeOutside = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int)
   791  	outstruct.SecondsPerLiquidityOutsideX128 = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
   792  	outstruct.SecondsOutside = *abi.ConvertType(out[6], new(uint32)).(*uint32)
   793  	outstruct.Initialized = *abi.ConvertType(out[7], new(bool)).(*bool)
   794  
   795  	return *outstruct, err
   796  
   797  }
   798  
   799  // Ticks is a free data retrieval call binding the contract method 0xf30dba93.
   800  //
   801  // Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized)
   802  func (_Uniswapv3 *Uniswapv3Session) Ticks(tick *big.Int) (struct {
   803  	LiquidityGross                 *big.Int
   804  	LiquidityNet                   *big.Int
   805  	FeeGrowthOutside0X128          *big.Int
   806  	FeeGrowthOutside1X128          *big.Int
   807  	TickCumulativeOutside          *big.Int
   808  	SecondsPerLiquidityOutsideX128 *big.Int
   809  	SecondsOutside                 uint32
   810  	Initialized                    bool
   811  }, error) {
   812  	return _Uniswapv3.Contract.Ticks(&_Uniswapv3.CallOpts, tick)
   813  }
   814  
   815  // Ticks is a free data retrieval call binding the contract method 0xf30dba93.
   816  //
   817  // Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized)
   818  func (_Uniswapv3 *Uniswapv3CallerSession) Ticks(tick *big.Int) (struct {
   819  	LiquidityGross                 *big.Int
   820  	LiquidityNet                   *big.Int
   821  	FeeGrowthOutside0X128          *big.Int
   822  	FeeGrowthOutside1X128          *big.Int
   823  	TickCumulativeOutside          *big.Int
   824  	SecondsPerLiquidityOutsideX128 *big.Int
   825  	SecondsOutside                 uint32
   826  	Initialized                    bool
   827  }, error) {
   828  	return _Uniswapv3.Contract.Ticks(&_Uniswapv3.CallOpts, tick)
   829  }
   830  
   831  // Token0 is a free data retrieval call binding the contract method 0x0dfe1681.
   832  //
   833  // Solidity: function token0() view returns(address)
   834  func (_Uniswapv3 *Uniswapv3Caller) Token0(opts *bind.CallOpts) (common.Address, error) {
   835  	var out []interface{}
   836  	err := _Uniswapv3.contract.Call(opts, &out, "token0")
   837  
   838  	if err != nil {
   839  		return *new(common.Address), err
   840  	}
   841  
   842  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   843  
   844  	return out0, err
   845  
   846  }
   847  
   848  // Token0 is a free data retrieval call binding the contract method 0x0dfe1681.
   849  //
   850  // Solidity: function token0() view returns(address)
   851  func (_Uniswapv3 *Uniswapv3Session) Token0() (common.Address, error) {
   852  	return _Uniswapv3.Contract.Token0(&_Uniswapv3.CallOpts)
   853  }
   854  
   855  // Token0 is a free data retrieval call binding the contract method 0x0dfe1681.
   856  //
   857  // Solidity: function token0() view returns(address)
   858  func (_Uniswapv3 *Uniswapv3CallerSession) Token0() (common.Address, error) {
   859  	return _Uniswapv3.Contract.Token0(&_Uniswapv3.CallOpts)
   860  }
   861  
   862  // Token1 is a free data retrieval call binding the contract method 0xd21220a7.
   863  //
   864  // Solidity: function token1() view returns(address)
   865  func (_Uniswapv3 *Uniswapv3Caller) Token1(opts *bind.CallOpts) (common.Address, error) {
   866  	var out []interface{}
   867  	err := _Uniswapv3.contract.Call(opts, &out, "token1")
   868  
   869  	if err != nil {
   870  		return *new(common.Address), err
   871  	}
   872  
   873  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   874  
   875  	return out0, err
   876  
   877  }
   878  
   879  // Token1 is a free data retrieval call binding the contract method 0xd21220a7.
   880  //
   881  // Solidity: function token1() view returns(address)
   882  func (_Uniswapv3 *Uniswapv3Session) Token1() (common.Address, error) {
   883  	return _Uniswapv3.Contract.Token1(&_Uniswapv3.CallOpts)
   884  }
   885  
   886  // Token1 is a free data retrieval call binding the contract method 0xd21220a7.
   887  //
   888  // Solidity: function token1() view returns(address)
   889  func (_Uniswapv3 *Uniswapv3CallerSession) Token1() (common.Address, error) {
   890  	return _Uniswapv3.Contract.Token1(&_Uniswapv3.CallOpts)
   891  }
   892  
   893  // Burn is a paid mutator transaction binding the contract method 0xa34123a7.
   894  //
   895  // Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1)
   896  func (_Uniswapv3 *Uniswapv3Transactor) Burn(opts *bind.TransactOpts, tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) {
   897  	return _Uniswapv3.contract.Transact(opts, "burn", tickLower, tickUpper, amount)
   898  }
   899  
   900  // Burn is a paid mutator transaction binding the contract method 0xa34123a7.
   901  //
   902  // Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1)
   903  func (_Uniswapv3 *Uniswapv3Session) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) {
   904  	return _Uniswapv3.Contract.Burn(&_Uniswapv3.TransactOpts, tickLower, tickUpper, amount)
   905  }
   906  
   907  // Burn is a paid mutator transaction binding the contract method 0xa34123a7.
   908  //
   909  // Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1)
   910  func (_Uniswapv3 *Uniswapv3TransactorSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) {
   911  	return _Uniswapv3.Contract.Burn(&_Uniswapv3.TransactOpts, tickLower, tickUpper, amount)
   912  }
   913  
   914  // Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8.
   915  //
   916  // Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1)
   917  func (_Uniswapv3 *Uniswapv3Transactor) Collect(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) {
   918  	return _Uniswapv3.contract.Transact(opts, "collect", recipient, tickLower, tickUpper, amount0Requested, amount1Requested)
   919  }
   920  
   921  // Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8.
   922  //
   923  // Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1)
   924  func (_Uniswapv3 *Uniswapv3Session) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) {
   925  	return _Uniswapv3.Contract.Collect(&_Uniswapv3.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested)
   926  }
   927  
   928  // Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8.
   929  //
   930  // Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1)
   931  func (_Uniswapv3 *Uniswapv3TransactorSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) {
   932  	return _Uniswapv3.Contract.Collect(&_Uniswapv3.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested)
   933  }
   934  
   935  // CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729.
   936  //
   937  // Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1)
   938  func (_Uniswapv3 *Uniswapv3Transactor) CollectProtocol(opts *bind.TransactOpts, recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) {
   939  	return _Uniswapv3.contract.Transact(opts, "collectProtocol", recipient, amount0Requested, amount1Requested)
   940  }
   941  
   942  // CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729.
   943  //
   944  // Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1)
   945  func (_Uniswapv3 *Uniswapv3Session) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) {
   946  	return _Uniswapv3.Contract.CollectProtocol(&_Uniswapv3.TransactOpts, recipient, amount0Requested, amount1Requested)
   947  }
   948  
   949  // CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729.
   950  //
   951  // Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1)
   952  func (_Uniswapv3 *Uniswapv3TransactorSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) {
   953  	return _Uniswapv3.Contract.CollectProtocol(&_Uniswapv3.TransactOpts, recipient, amount0Requested, amount1Requested)
   954  }
   955  
   956  // Flash is a paid mutator transaction binding the contract method 0x490e6cbc.
   957  //
   958  // Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns()
   959  func (_Uniswapv3 *Uniswapv3Transactor) Flash(opts *bind.TransactOpts, recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) {
   960  	return _Uniswapv3.contract.Transact(opts, "flash", recipient, amount0, amount1, data)
   961  }
   962  
   963  // Flash is a paid mutator transaction binding the contract method 0x490e6cbc.
   964  //
   965  // Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns()
   966  func (_Uniswapv3 *Uniswapv3Session) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) {
   967  	return _Uniswapv3.Contract.Flash(&_Uniswapv3.TransactOpts, recipient, amount0, amount1, data)
   968  }
   969  
   970  // Flash is a paid mutator transaction binding the contract method 0x490e6cbc.
   971  //
   972  // Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns()
   973  func (_Uniswapv3 *Uniswapv3TransactorSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) {
   974  	return _Uniswapv3.Contract.Flash(&_Uniswapv3.TransactOpts, recipient, amount0, amount1, data)
   975  }
   976  
   977  // IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67.
   978  //
   979  // Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns()
   980  func (_Uniswapv3 *Uniswapv3Transactor) IncreaseObservationCardinalityNext(opts *bind.TransactOpts, observationCardinalityNext uint16) (*types.Transaction, error) {
   981  	return _Uniswapv3.contract.Transact(opts, "increaseObservationCardinalityNext", observationCardinalityNext)
   982  }
   983  
   984  // IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67.
   985  //
   986  // Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns()
   987  func (_Uniswapv3 *Uniswapv3Session) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) {
   988  	return _Uniswapv3.Contract.IncreaseObservationCardinalityNext(&_Uniswapv3.TransactOpts, observationCardinalityNext)
   989  }
   990  
   991  // IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67.
   992  //
   993  // Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns()
   994  func (_Uniswapv3 *Uniswapv3TransactorSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) {
   995  	return _Uniswapv3.Contract.IncreaseObservationCardinalityNext(&_Uniswapv3.TransactOpts, observationCardinalityNext)
   996  }
   997  
   998  // Initialize is a paid mutator transaction binding the contract method 0xf637731d.
   999  //
  1000  // Solidity: function initialize(uint160 sqrtPriceX96) returns()
  1001  func (_Uniswapv3 *Uniswapv3Transactor) Initialize(opts *bind.TransactOpts, sqrtPriceX96 *big.Int) (*types.Transaction, error) {
  1002  	return _Uniswapv3.contract.Transact(opts, "initialize", sqrtPriceX96)
  1003  }
  1004  
  1005  // Initialize is a paid mutator transaction binding the contract method 0xf637731d.
  1006  //
  1007  // Solidity: function initialize(uint160 sqrtPriceX96) returns()
  1008  func (_Uniswapv3 *Uniswapv3Session) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) {
  1009  	return _Uniswapv3.Contract.Initialize(&_Uniswapv3.TransactOpts, sqrtPriceX96)
  1010  }
  1011  
  1012  // Initialize is a paid mutator transaction binding the contract method 0xf637731d.
  1013  //
  1014  // Solidity: function initialize(uint160 sqrtPriceX96) returns()
  1015  func (_Uniswapv3 *Uniswapv3TransactorSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) {
  1016  	return _Uniswapv3.Contract.Initialize(&_Uniswapv3.TransactOpts, sqrtPriceX96)
  1017  }
  1018  
  1019  // Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d.
  1020  //
  1021  // Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1)
  1022  func (_Uniswapv3 *Uniswapv3Transactor) Mint(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) {
  1023  	return _Uniswapv3.contract.Transact(opts, "mint", recipient, tickLower, tickUpper, amount, data)
  1024  }
  1025  
  1026  // Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d.
  1027  //
  1028  // Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1)
  1029  func (_Uniswapv3 *Uniswapv3Session) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) {
  1030  	return _Uniswapv3.Contract.Mint(&_Uniswapv3.TransactOpts, recipient, tickLower, tickUpper, amount, data)
  1031  }
  1032  
  1033  // Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d.
  1034  //
  1035  // Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1)
  1036  func (_Uniswapv3 *Uniswapv3TransactorSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) {
  1037  	return _Uniswapv3.Contract.Mint(&_Uniswapv3.TransactOpts, recipient, tickLower, tickUpper, amount, data)
  1038  }
  1039  
  1040  // SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1.
  1041  //
  1042  // Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns()
  1043  func (_Uniswapv3 *Uniswapv3Transactor) SetFeeProtocol(opts *bind.TransactOpts, feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) {
  1044  	return _Uniswapv3.contract.Transact(opts, "setFeeProtocol", feeProtocol0, feeProtocol1)
  1045  }
  1046  
  1047  // SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1.
  1048  //
  1049  // Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns()
  1050  func (_Uniswapv3 *Uniswapv3Session) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) {
  1051  	return _Uniswapv3.Contract.SetFeeProtocol(&_Uniswapv3.TransactOpts, feeProtocol0, feeProtocol1)
  1052  }
  1053  
  1054  // SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1.
  1055  //
  1056  // Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns()
  1057  func (_Uniswapv3 *Uniswapv3TransactorSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) {
  1058  	return _Uniswapv3.Contract.SetFeeProtocol(&_Uniswapv3.TransactOpts, feeProtocol0, feeProtocol1)
  1059  }
  1060  
  1061  // Swap is a paid mutator transaction binding the contract method 0x128acb08.
  1062  //
  1063  // Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1)
  1064  func (_Uniswapv3 *Uniswapv3Transactor) Swap(opts *bind.TransactOpts, recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) {
  1065  	return _Uniswapv3.contract.Transact(opts, "swap", recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data)
  1066  }
  1067  
  1068  // Swap is a paid mutator transaction binding the contract method 0x128acb08.
  1069  //
  1070  // Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1)
  1071  func (_Uniswapv3 *Uniswapv3Session) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) {
  1072  	return _Uniswapv3.Contract.Swap(&_Uniswapv3.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data)
  1073  }
  1074  
  1075  // Swap is a paid mutator transaction binding the contract method 0x128acb08.
  1076  //
  1077  // Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1)
  1078  func (_Uniswapv3 *Uniswapv3TransactorSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) {
  1079  	return _Uniswapv3.Contract.Swap(&_Uniswapv3.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data)
  1080  }
  1081  
  1082  // Uniswapv3BurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the Uniswapv3 contract.
  1083  type Uniswapv3BurnIterator struct {
  1084  	Event *Uniswapv3Burn // Event containing the contract specifics and raw log
  1085  
  1086  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1087  	event    string              // Event name to use for unpacking event data
  1088  
  1089  	logs chan types.Log        // Log channel receiving the found contract events
  1090  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1091  	done bool                  // Whether the subscription completed delivering logs
  1092  	fail error                 // Occurred error to stop iteration
  1093  }
  1094  
  1095  // Next advances the iterator to the subsequent event, returning whether there
  1096  // are any more events found. In case of a retrieval or parsing error, false is
  1097  // returned and Error() can be queried for the exact failure.
  1098  func (it *Uniswapv3BurnIterator) Next() bool {
  1099  	// If the iterator failed, stop iterating
  1100  	if it.fail != nil {
  1101  		return false
  1102  	}
  1103  	// If the iterator completed, deliver directly whatever's available
  1104  	if it.done {
  1105  		select {
  1106  		case log := <-it.logs:
  1107  			it.Event = new(Uniswapv3Burn)
  1108  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1109  				it.fail = err
  1110  				return false
  1111  			}
  1112  			it.Event.Raw = log
  1113  			return true
  1114  
  1115  		default:
  1116  			return false
  1117  		}
  1118  	}
  1119  	// Iterator still in progress, wait for either a data or an error event
  1120  	select {
  1121  	case log := <-it.logs:
  1122  		it.Event = new(Uniswapv3Burn)
  1123  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1124  			it.fail = err
  1125  			return false
  1126  		}
  1127  		it.Event.Raw = log
  1128  		return true
  1129  
  1130  	case err := <-it.sub.Err():
  1131  		it.done = true
  1132  		it.fail = err
  1133  		return it.Next()
  1134  	}
  1135  }
  1136  
  1137  // Error returns any retrieval or parsing error occurred during filtering.
  1138  func (it *Uniswapv3BurnIterator) Error() error {
  1139  	return it.fail
  1140  }
  1141  
  1142  // Close terminates the iteration process, releasing any pending underlying
  1143  // resources.
  1144  func (it *Uniswapv3BurnIterator) Close() error {
  1145  	it.sub.Unsubscribe()
  1146  	return nil
  1147  }
  1148  
  1149  // Uniswapv3Burn represents a Burn event raised by the Uniswapv3 contract.
  1150  type Uniswapv3Burn struct {
  1151  	Owner     common.Address
  1152  	TickLower *big.Int
  1153  	TickUpper *big.Int
  1154  	Amount    *big.Int
  1155  	Amount0   *big.Int
  1156  	Amount1   *big.Int
  1157  	Raw       types.Log // Blockchain specific contextual infos
  1158  }
  1159  
  1160  // FilterBurn is a free log retrieval operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c.
  1161  //
  1162  // Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1)
  1163  func (_Uniswapv3 *Uniswapv3Filterer) FilterBurn(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*Uniswapv3BurnIterator, error) {
  1164  
  1165  	var ownerRule []interface{}
  1166  	for _, ownerItem := range owner {
  1167  		ownerRule = append(ownerRule, ownerItem)
  1168  	}
  1169  	var tickLowerRule []interface{}
  1170  	for _, tickLowerItem := range tickLower {
  1171  		tickLowerRule = append(tickLowerRule, tickLowerItem)
  1172  	}
  1173  	var tickUpperRule []interface{}
  1174  	for _, tickUpperItem := range tickUpper {
  1175  		tickUpperRule = append(tickUpperRule, tickUpperItem)
  1176  	}
  1177  
  1178  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule)
  1179  	if err != nil {
  1180  		return nil, err
  1181  	}
  1182  	return &Uniswapv3BurnIterator{contract: _Uniswapv3.contract, event: "Burn", logs: logs, sub: sub}, nil
  1183  }
  1184  
  1185  // WatchBurn is a free log subscription operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c.
  1186  //
  1187  // Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1)
  1188  func (_Uniswapv3 *Uniswapv3Filterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *Uniswapv3Burn, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) {
  1189  
  1190  	var ownerRule []interface{}
  1191  	for _, ownerItem := range owner {
  1192  		ownerRule = append(ownerRule, ownerItem)
  1193  	}
  1194  	var tickLowerRule []interface{}
  1195  	for _, tickLowerItem := range tickLower {
  1196  		tickLowerRule = append(tickLowerRule, tickLowerItem)
  1197  	}
  1198  	var tickUpperRule []interface{}
  1199  	for _, tickUpperItem := range tickUpper {
  1200  		tickUpperRule = append(tickUpperRule, tickUpperItem)
  1201  	}
  1202  
  1203  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule)
  1204  	if err != nil {
  1205  		return nil, err
  1206  	}
  1207  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1208  		defer sub.Unsubscribe()
  1209  		for {
  1210  			select {
  1211  			case log := <-logs:
  1212  				// New log arrived, parse the event and forward to the user
  1213  				event := new(Uniswapv3Burn)
  1214  				if err := _Uniswapv3.contract.UnpackLog(event, "Burn", log); err != nil {
  1215  					return err
  1216  				}
  1217  				event.Raw = log
  1218  
  1219  				select {
  1220  				case sink <- event:
  1221  				case err := <-sub.Err():
  1222  					return err
  1223  				case <-quit:
  1224  					return nil
  1225  				}
  1226  			case err := <-sub.Err():
  1227  				return err
  1228  			case <-quit:
  1229  				return nil
  1230  			}
  1231  		}
  1232  	}), nil
  1233  }
  1234  
  1235  // ParseBurn is a log parse operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c.
  1236  //
  1237  // Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1)
  1238  func (_Uniswapv3 *Uniswapv3Filterer) ParseBurn(log types.Log) (*Uniswapv3Burn, error) {
  1239  	event := new(Uniswapv3Burn)
  1240  	if err := _Uniswapv3.contract.UnpackLog(event, "Burn", log); err != nil {
  1241  		return nil, err
  1242  	}
  1243  	event.Raw = log
  1244  	return event, nil
  1245  }
  1246  
  1247  // Uniswapv3CollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the Uniswapv3 contract.
  1248  type Uniswapv3CollectIterator struct {
  1249  	Event *Uniswapv3Collect // Event containing the contract specifics and raw log
  1250  
  1251  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1252  	event    string              // Event name to use for unpacking event data
  1253  
  1254  	logs chan types.Log        // Log channel receiving the found contract events
  1255  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1256  	done bool                  // Whether the subscription completed delivering logs
  1257  	fail error                 // Occurred error to stop iteration
  1258  }
  1259  
  1260  // Next advances the iterator to the subsequent event, returning whether there
  1261  // are any more events found. In case of a retrieval or parsing error, false is
  1262  // returned and Error() can be queried for the exact failure.
  1263  func (it *Uniswapv3CollectIterator) Next() bool {
  1264  	// If the iterator failed, stop iterating
  1265  	if it.fail != nil {
  1266  		return false
  1267  	}
  1268  	// If the iterator completed, deliver directly whatever's available
  1269  	if it.done {
  1270  		select {
  1271  		case log := <-it.logs:
  1272  			it.Event = new(Uniswapv3Collect)
  1273  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1274  				it.fail = err
  1275  				return false
  1276  			}
  1277  			it.Event.Raw = log
  1278  			return true
  1279  
  1280  		default:
  1281  			return false
  1282  		}
  1283  	}
  1284  	// Iterator still in progress, wait for either a data or an error event
  1285  	select {
  1286  	case log := <-it.logs:
  1287  		it.Event = new(Uniswapv3Collect)
  1288  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1289  			it.fail = err
  1290  			return false
  1291  		}
  1292  		it.Event.Raw = log
  1293  		return true
  1294  
  1295  	case err := <-it.sub.Err():
  1296  		it.done = true
  1297  		it.fail = err
  1298  		return it.Next()
  1299  	}
  1300  }
  1301  
  1302  // Error returns any retrieval or parsing error occurred during filtering.
  1303  func (it *Uniswapv3CollectIterator) Error() error {
  1304  	return it.fail
  1305  }
  1306  
  1307  // Close terminates the iteration process, releasing any pending underlying
  1308  // resources.
  1309  func (it *Uniswapv3CollectIterator) Close() error {
  1310  	it.sub.Unsubscribe()
  1311  	return nil
  1312  }
  1313  
  1314  // Uniswapv3Collect represents a Collect event raised by the Uniswapv3 contract.
  1315  type Uniswapv3Collect struct {
  1316  	Owner     common.Address
  1317  	Recipient common.Address
  1318  	TickLower *big.Int
  1319  	TickUpper *big.Int
  1320  	Amount0   *big.Int
  1321  	Amount1   *big.Int
  1322  	Raw       types.Log // Blockchain specific contextual infos
  1323  }
  1324  
  1325  // FilterCollect is a free log retrieval operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0.
  1326  //
  1327  // Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1)
  1328  func (_Uniswapv3 *Uniswapv3Filterer) FilterCollect(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*Uniswapv3CollectIterator, error) {
  1329  
  1330  	var ownerRule []interface{}
  1331  	for _, ownerItem := range owner {
  1332  		ownerRule = append(ownerRule, ownerItem)
  1333  	}
  1334  
  1335  	var tickLowerRule []interface{}
  1336  	for _, tickLowerItem := range tickLower {
  1337  		tickLowerRule = append(tickLowerRule, tickLowerItem)
  1338  	}
  1339  	var tickUpperRule []interface{}
  1340  	for _, tickUpperItem := range tickUpper {
  1341  		tickUpperRule = append(tickUpperRule, tickUpperItem)
  1342  	}
  1343  
  1344  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule)
  1345  	if err != nil {
  1346  		return nil, err
  1347  	}
  1348  	return &Uniswapv3CollectIterator{contract: _Uniswapv3.contract, event: "Collect", logs: logs, sub: sub}, nil
  1349  }
  1350  
  1351  // WatchCollect is a free log subscription operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0.
  1352  //
  1353  // Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1)
  1354  func (_Uniswapv3 *Uniswapv3Filterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *Uniswapv3Collect, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) {
  1355  
  1356  	var ownerRule []interface{}
  1357  	for _, ownerItem := range owner {
  1358  		ownerRule = append(ownerRule, ownerItem)
  1359  	}
  1360  
  1361  	var tickLowerRule []interface{}
  1362  	for _, tickLowerItem := range tickLower {
  1363  		tickLowerRule = append(tickLowerRule, tickLowerItem)
  1364  	}
  1365  	var tickUpperRule []interface{}
  1366  	for _, tickUpperItem := range tickUpper {
  1367  		tickUpperRule = append(tickUpperRule, tickUpperItem)
  1368  	}
  1369  
  1370  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule)
  1371  	if err != nil {
  1372  		return nil, err
  1373  	}
  1374  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1375  		defer sub.Unsubscribe()
  1376  		for {
  1377  			select {
  1378  			case log := <-logs:
  1379  				// New log arrived, parse the event and forward to the user
  1380  				event := new(Uniswapv3Collect)
  1381  				if err := _Uniswapv3.contract.UnpackLog(event, "Collect", log); err != nil {
  1382  					return err
  1383  				}
  1384  				event.Raw = log
  1385  
  1386  				select {
  1387  				case sink <- event:
  1388  				case err := <-sub.Err():
  1389  					return err
  1390  				case <-quit:
  1391  					return nil
  1392  				}
  1393  			case err := <-sub.Err():
  1394  				return err
  1395  			case <-quit:
  1396  				return nil
  1397  			}
  1398  		}
  1399  	}), nil
  1400  }
  1401  
  1402  // ParseCollect is a log parse operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0.
  1403  //
  1404  // Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1)
  1405  func (_Uniswapv3 *Uniswapv3Filterer) ParseCollect(log types.Log) (*Uniswapv3Collect, error) {
  1406  	event := new(Uniswapv3Collect)
  1407  	if err := _Uniswapv3.contract.UnpackLog(event, "Collect", log); err != nil {
  1408  		return nil, err
  1409  	}
  1410  	event.Raw = log
  1411  	return event, nil
  1412  }
  1413  
  1414  // Uniswapv3CollectProtocolIterator is returned from FilterCollectProtocol and is used to iterate over the raw logs and unpacked data for CollectProtocol events raised by the Uniswapv3 contract.
  1415  type Uniswapv3CollectProtocolIterator struct {
  1416  	Event *Uniswapv3CollectProtocol // Event containing the contract specifics and raw log
  1417  
  1418  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1419  	event    string              // Event name to use for unpacking event data
  1420  
  1421  	logs chan types.Log        // Log channel receiving the found contract events
  1422  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1423  	done bool                  // Whether the subscription completed delivering logs
  1424  	fail error                 // Occurred error to stop iteration
  1425  }
  1426  
  1427  // Next advances the iterator to the subsequent event, returning whether there
  1428  // are any more events found. In case of a retrieval or parsing error, false is
  1429  // returned and Error() can be queried for the exact failure.
  1430  func (it *Uniswapv3CollectProtocolIterator) Next() bool {
  1431  	// If the iterator failed, stop iterating
  1432  	if it.fail != nil {
  1433  		return false
  1434  	}
  1435  	// If the iterator completed, deliver directly whatever's available
  1436  	if it.done {
  1437  		select {
  1438  		case log := <-it.logs:
  1439  			it.Event = new(Uniswapv3CollectProtocol)
  1440  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1441  				it.fail = err
  1442  				return false
  1443  			}
  1444  			it.Event.Raw = log
  1445  			return true
  1446  
  1447  		default:
  1448  			return false
  1449  		}
  1450  	}
  1451  	// Iterator still in progress, wait for either a data or an error event
  1452  	select {
  1453  	case log := <-it.logs:
  1454  		it.Event = new(Uniswapv3CollectProtocol)
  1455  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1456  			it.fail = err
  1457  			return false
  1458  		}
  1459  		it.Event.Raw = log
  1460  		return true
  1461  
  1462  	case err := <-it.sub.Err():
  1463  		it.done = true
  1464  		it.fail = err
  1465  		return it.Next()
  1466  	}
  1467  }
  1468  
  1469  // Error returns any retrieval or parsing error occurred during filtering.
  1470  func (it *Uniswapv3CollectProtocolIterator) Error() error {
  1471  	return it.fail
  1472  }
  1473  
  1474  // Close terminates the iteration process, releasing any pending underlying
  1475  // resources.
  1476  func (it *Uniswapv3CollectProtocolIterator) Close() error {
  1477  	it.sub.Unsubscribe()
  1478  	return nil
  1479  }
  1480  
  1481  // Uniswapv3CollectProtocol represents a CollectProtocol event raised by the Uniswapv3 contract.
  1482  type Uniswapv3CollectProtocol struct {
  1483  	Sender    common.Address
  1484  	Recipient common.Address
  1485  	Amount0   *big.Int
  1486  	Amount1   *big.Int
  1487  	Raw       types.Log // Blockchain specific contextual infos
  1488  }
  1489  
  1490  // FilterCollectProtocol is a free log retrieval operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151.
  1491  //
  1492  // Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1)
  1493  func (_Uniswapv3 *Uniswapv3Filterer) FilterCollectProtocol(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*Uniswapv3CollectProtocolIterator, error) {
  1494  
  1495  	var senderRule []interface{}
  1496  	for _, senderItem := range sender {
  1497  		senderRule = append(senderRule, senderItem)
  1498  	}
  1499  	var recipientRule []interface{}
  1500  	for _, recipientItem := range recipient {
  1501  		recipientRule = append(recipientRule, recipientItem)
  1502  	}
  1503  
  1504  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "CollectProtocol", senderRule, recipientRule)
  1505  	if err != nil {
  1506  		return nil, err
  1507  	}
  1508  	return &Uniswapv3CollectProtocolIterator{contract: _Uniswapv3.contract, event: "CollectProtocol", logs: logs, sub: sub}, nil
  1509  }
  1510  
  1511  // WatchCollectProtocol is a free log subscription operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151.
  1512  //
  1513  // Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1)
  1514  func (_Uniswapv3 *Uniswapv3Filterer) WatchCollectProtocol(opts *bind.WatchOpts, sink chan<- *Uniswapv3CollectProtocol, sender []common.Address, recipient []common.Address) (event.Subscription, error) {
  1515  
  1516  	var senderRule []interface{}
  1517  	for _, senderItem := range sender {
  1518  		senderRule = append(senderRule, senderItem)
  1519  	}
  1520  	var recipientRule []interface{}
  1521  	for _, recipientItem := range recipient {
  1522  		recipientRule = append(recipientRule, recipientItem)
  1523  	}
  1524  
  1525  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "CollectProtocol", senderRule, recipientRule)
  1526  	if err != nil {
  1527  		return nil, err
  1528  	}
  1529  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1530  		defer sub.Unsubscribe()
  1531  		for {
  1532  			select {
  1533  			case log := <-logs:
  1534  				// New log arrived, parse the event and forward to the user
  1535  				event := new(Uniswapv3CollectProtocol)
  1536  				if err := _Uniswapv3.contract.UnpackLog(event, "CollectProtocol", log); err != nil {
  1537  					return err
  1538  				}
  1539  				event.Raw = log
  1540  
  1541  				select {
  1542  				case sink <- event:
  1543  				case err := <-sub.Err():
  1544  					return err
  1545  				case <-quit:
  1546  					return nil
  1547  				}
  1548  			case err := <-sub.Err():
  1549  				return err
  1550  			case <-quit:
  1551  				return nil
  1552  			}
  1553  		}
  1554  	}), nil
  1555  }
  1556  
  1557  // ParseCollectProtocol is a log parse operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151.
  1558  //
  1559  // Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1)
  1560  func (_Uniswapv3 *Uniswapv3Filterer) ParseCollectProtocol(log types.Log) (*Uniswapv3CollectProtocol, error) {
  1561  	event := new(Uniswapv3CollectProtocol)
  1562  	if err := _Uniswapv3.contract.UnpackLog(event, "CollectProtocol", log); err != nil {
  1563  		return nil, err
  1564  	}
  1565  	event.Raw = log
  1566  	return event, nil
  1567  }
  1568  
  1569  // Uniswapv3FlashIterator is returned from FilterFlash and is used to iterate over the raw logs and unpacked data for Flash events raised by the Uniswapv3 contract.
  1570  type Uniswapv3FlashIterator struct {
  1571  	Event *Uniswapv3Flash // Event containing the contract specifics and raw log
  1572  
  1573  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1574  	event    string              // Event name to use for unpacking event data
  1575  
  1576  	logs chan types.Log        // Log channel receiving the found contract events
  1577  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1578  	done bool                  // Whether the subscription completed delivering logs
  1579  	fail error                 // Occurred error to stop iteration
  1580  }
  1581  
  1582  // Next advances the iterator to the subsequent event, returning whether there
  1583  // are any more events found. In case of a retrieval or parsing error, false is
  1584  // returned and Error() can be queried for the exact failure.
  1585  func (it *Uniswapv3FlashIterator) Next() bool {
  1586  	// If the iterator failed, stop iterating
  1587  	if it.fail != nil {
  1588  		return false
  1589  	}
  1590  	// If the iterator completed, deliver directly whatever's available
  1591  	if it.done {
  1592  		select {
  1593  		case log := <-it.logs:
  1594  			it.Event = new(Uniswapv3Flash)
  1595  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1596  				it.fail = err
  1597  				return false
  1598  			}
  1599  			it.Event.Raw = log
  1600  			return true
  1601  
  1602  		default:
  1603  			return false
  1604  		}
  1605  	}
  1606  	// Iterator still in progress, wait for either a data or an error event
  1607  	select {
  1608  	case log := <-it.logs:
  1609  		it.Event = new(Uniswapv3Flash)
  1610  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1611  			it.fail = err
  1612  			return false
  1613  		}
  1614  		it.Event.Raw = log
  1615  		return true
  1616  
  1617  	case err := <-it.sub.Err():
  1618  		it.done = true
  1619  		it.fail = err
  1620  		return it.Next()
  1621  	}
  1622  }
  1623  
  1624  // Error returns any retrieval or parsing error occurred during filtering.
  1625  func (it *Uniswapv3FlashIterator) Error() error {
  1626  	return it.fail
  1627  }
  1628  
  1629  // Close terminates the iteration process, releasing any pending underlying
  1630  // resources.
  1631  func (it *Uniswapv3FlashIterator) Close() error {
  1632  	it.sub.Unsubscribe()
  1633  	return nil
  1634  }
  1635  
  1636  // Uniswapv3Flash represents a Flash event raised by the Uniswapv3 contract.
  1637  type Uniswapv3Flash struct {
  1638  	Sender    common.Address
  1639  	Recipient common.Address
  1640  	Amount0   *big.Int
  1641  	Amount1   *big.Int
  1642  	Paid0     *big.Int
  1643  	Paid1     *big.Int
  1644  	Raw       types.Log // Blockchain specific contextual infos
  1645  }
  1646  
  1647  // FilterFlash is a free log retrieval operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633.
  1648  //
  1649  // Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1)
  1650  func (_Uniswapv3 *Uniswapv3Filterer) FilterFlash(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*Uniswapv3FlashIterator, error) {
  1651  
  1652  	var senderRule []interface{}
  1653  	for _, senderItem := range sender {
  1654  		senderRule = append(senderRule, senderItem)
  1655  	}
  1656  	var recipientRule []interface{}
  1657  	for _, recipientItem := range recipient {
  1658  		recipientRule = append(recipientRule, recipientItem)
  1659  	}
  1660  
  1661  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "Flash", senderRule, recipientRule)
  1662  	if err != nil {
  1663  		return nil, err
  1664  	}
  1665  	return &Uniswapv3FlashIterator{contract: _Uniswapv3.contract, event: "Flash", logs: logs, sub: sub}, nil
  1666  }
  1667  
  1668  // WatchFlash is a free log subscription operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633.
  1669  //
  1670  // Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1)
  1671  func (_Uniswapv3 *Uniswapv3Filterer) WatchFlash(opts *bind.WatchOpts, sink chan<- *Uniswapv3Flash, sender []common.Address, recipient []common.Address) (event.Subscription, error) {
  1672  
  1673  	var senderRule []interface{}
  1674  	for _, senderItem := range sender {
  1675  		senderRule = append(senderRule, senderItem)
  1676  	}
  1677  	var recipientRule []interface{}
  1678  	for _, recipientItem := range recipient {
  1679  		recipientRule = append(recipientRule, recipientItem)
  1680  	}
  1681  
  1682  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "Flash", senderRule, recipientRule)
  1683  	if err != nil {
  1684  		return nil, err
  1685  	}
  1686  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1687  		defer sub.Unsubscribe()
  1688  		for {
  1689  			select {
  1690  			case log := <-logs:
  1691  				// New log arrived, parse the event and forward to the user
  1692  				event := new(Uniswapv3Flash)
  1693  				if err := _Uniswapv3.contract.UnpackLog(event, "Flash", log); err != nil {
  1694  					return err
  1695  				}
  1696  				event.Raw = log
  1697  
  1698  				select {
  1699  				case sink <- event:
  1700  				case err := <-sub.Err():
  1701  					return err
  1702  				case <-quit:
  1703  					return nil
  1704  				}
  1705  			case err := <-sub.Err():
  1706  				return err
  1707  			case <-quit:
  1708  				return nil
  1709  			}
  1710  		}
  1711  	}), nil
  1712  }
  1713  
  1714  // ParseFlash is a log parse operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633.
  1715  //
  1716  // Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1)
  1717  func (_Uniswapv3 *Uniswapv3Filterer) ParseFlash(log types.Log) (*Uniswapv3Flash, error) {
  1718  	event := new(Uniswapv3Flash)
  1719  	if err := _Uniswapv3.contract.UnpackLog(event, "Flash", log); err != nil {
  1720  		return nil, err
  1721  	}
  1722  	event.Raw = log
  1723  	return event, nil
  1724  }
  1725  
  1726  // Uniswapv3IncreaseObservationCardinalityNextIterator is returned from FilterIncreaseObservationCardinalityNext and is used to iterate over the raw logs and unpacked data for IncreaseObservationCardinalityNext events raised by the Uniswapv3 contract.
  1727  type Uniswapv3IncreaseObservationCardinalityNextIterator struct {
  1728  	Event *Uniswapv3IncreaseObservationCardinalityNext // Event containing the contract specifics and raw log
  1729  
  1730  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1731  	event    string              // Event name to use for unpacking event data
  1732  
  1733  	logs chan types.Log        // Log channel receiving the found contract events
  1734  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1735  	done bool                  // Whether the subscription completed delivering logs
  1736  	fail error                 // Occurred error to stop iteration
  1737  }
  1738  
  1739  // Next advances the iterator to the subsequent event, returning whether there
  1740  // are any more events found. In case of a retrieval or parsing error, false is
  1741  // returned and Error() can be queried for the exact failure.
  1742  func (it *Uniswapv3IncreaseObservationCardinalityNextIterator) Next() bool {
  1743  	// If the iterator failed, stop iterating
  1744  	if it.fail != nil {
  1745  		return false
  1746  	}
  1747  	// If the iterator completed, deliver directly whatever's available
  1748  	if it.done {
  1749  		select {
  1750  		case log := <-it.logs:
  1751  			it.Event = new(Uniswapv3IncreaseObservationCardinalityNext)
  1752  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1753  				it.fail = err
  1754  				return false
  1755  			}
  1756  			it.Event.Raw = log
  1757  			return true
  1758  
  1759  		default:
  1760  			return false
  1761  		}
  1762  	}
  1763  	// Iterator still in progress, wait for either a data or an error event
  1764  	select {
  1765  	case log := <-it.logs:
  1766  		it.Event = new(Uniswapv3IncreaseObservationCardinalityNext)
  1767  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1768  			it.fail = err
  1769  			return false
  1770  		}
  1771  		it.Event.Raw = log
  1772  		return true
  1773  
  1774  	case err := <-it.sub.Err():
  1775  		it.done = true
  1776  		it.fail = err
  1777  		return it.Next()
  1778  	}
  1779  }
  1780  
  1781  // Error returns any retrieval or parsing error occurred during filtering.
  1782  func (it *Uniswapv3IncreaseObservationCardinalityNextIterator) Error() error {
  1783  	return it.fail
  1784  }
  1785  
  1786  // Close terminates the iteration process, releasing any pending underlying
  1787  // resources.
  1788  func (it *Uniswapv3IncreaseObservationCardinalityNextIterator) Close() error {
  1789  	it.sub.Unsubscribe()
  1790  	return nil
  1791  }
  1792  
  1793  // Uniswapv3IncreaseObservationCardinalityNext represents a IncreaseObservationCardinalityNext event raised by the Uniswapv3 contract.
  1794  type Uniswapv3IncreaseObservationCardinalityNext struct {
  1795  	ObservationCardinalityNextOld uint16
  1796  	ObservationCardinalityNextNew uint16
  1797  	Raw                           types.Log // Blockchain specific contextual infos
  1798  }
  1799  
  1800  // FilterIncreaseObservationCardinalityNext is a free log retrieval operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a.
  1801  //
  1802  // Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew)
  1803  func (_Uniswapv3 *Uniswapv3Filterer) FilterIncreaseObservationCardinalityNext(opts *bind.FilterOpts) (*Uniswapv3IncreaseObservationCardinalityNextIterator, error) {
  1804  
  1805  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "IncreaseObservationCardinalityNext")
  1806  	if err != nil {
  1807  		return nil, err
  1808  	}
  1809  	return &Uniswapv3IncreaseObservationCardinalityNextIterator{contract: _Uniswapv3.contract, event: "IncreaseObservationCardinalityNext", logs: logs, sub: sub}, nil
  1810  }
  1811  
  1812  // WatchIncreaseObservationCardinalityNext is a free log subscription operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a.
  1813  //
  1814  // Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew)
  1815  func (_Uniswapv3 *Uniswapv3Filterer) WatchIncreaseObservationCardinalityNext(opts *bind.WatchOpts, sink chan<- *Uniswapv3IncreaseObservationCardinalityNext) (event.Subscription, error) {
  1816  
  1817  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "IncreaseObservationCardinalityNext")
  1818  	if err != nil {
  1819  		return nil, err
  1820  	}
  1821  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1822  		defer sub.Unsubscribe()
  1823  		for {
  1824  			select {
  1825  			case log := <-logs:
  1826  				// New log arrived, parse the event and forward to the user
  1827  				event := new(Uniswapv3IncreaseObservationCardinalityNext)
  1828  				if err := _Uniswapv3.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil {
  1829  					return err
  1830  				}
  1831  				event.Raw = log
  1832  
  1833  				select {
  1834  				case sink <- event:
  1835  				case err := <-sub.Err():
  1836  					return err
  1837  				case <-quit:
  1838  					return nil
  1839  				}
  1840  			case err := <-sub.Err():
  1841  				return err
  1842  			case <-quit:
  1843  				return nil
  1844  			}
  1845  		}
  1846  	}), nil
  1847  }
  1848  
  1849  // ParseIncreaseObservationCardinalityNext is a log parse operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a.
  1850  //
  1851  // Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew)
  1852  func (_Uniswapv3 *Uniswapv3Filterer) ParseIncreaseObservationCardinalityNext(log types.Log) (*Uniswapv3IncreaseObservationCardinalityNext, error) {
  1853  	event := new(Uniswapv3IncreaseObservationCardinalityNext)
  1854  	if err := _Uniswapv3.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil {
  1855  		return nil, err
  1856  	}
  1857  	event.Raw = log
  1858  	return event, nil
  1859  }
  1860  
  1861  // Uniswapv3InitializeIterator is returned from FilterInitialize and is used to iterate over the raw logs and unpacked data for Initialize events raised by the Uniswapv3 contract.
  1862  type Uniswapv3InitializeIterator struct {
  1863  	Event *Uniswapv3Initialize // Event containing the contract specifics and raw log
  1864  
  1865  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1866  	event    string              // Event name to use for unpacking event data
  1867  
  1868  	logs chan types.Log        // Log channel receiving the found contract events
  1869  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1870  	done bool                  // Whether the subscription completed delivering logs
  1871  	fail error                 // Occurred error to stop iteration
  1872  }
  1873  
  1874  // Next advances the iterator to the subsequent event, returning whether there
  1875  // are any more events found. In case of a retrieval or parsing error, false is
  1876  // returned and Error() can be queried for the exact failure.
  1877  func (it *Uniswapv3InitializeIterator) Next() bool {
  1878  	// If the iterator failed, stop iterating
  1879  	if it.fail != nil {
  1880  		return false
  1881  	}
  1882  	// If the iterator completed, deliver directly whatever's available
  1883  	if it.done {
  1884  		select {
  1885  		case log := <-it.logs:
  1886  			it.Event = new(Uniswapv3Initialize)
  1887  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1888  				it.fail = err
  1889  				return false
  1890  			}
  1891  			it.Event.Raw = log
  1892  			return true
  1893  
  1894  		default:
  1895  			return false
  1896  		}
  1897  	}
  1898  	// Iterator still in progress, wait for either a data or an error event
  1899  	select {
  1900  	case log := <-it.logs:
  1901  		it.Event = new(Uniswapv3Initialize)
  1902  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1903  			it.fail = err
  1904  			return false
  1905  		}
  1906  		it.Event.Raw = log
  1907  		return true
  1908  
  1909  	case err := <-it.sub.Err():
  1910  		it.done = true
  1911  		it.fail = err
  1912  		return it.Next()
  1913  	}
  1914  }
  1915  
  1916  // Error returns any retrieval or parsing error occurred during filtering.
  1917  func (it *Uniswapv3InitializeIterator) Error() error {
  1918  	return it.fail
  1919  }
  1920  
  1921  // Close terminates the iteration process, releasing any pending underlying
  1922  // resources.
  1923  func (it *Uniswapv3InitializeIterator) Close() error {
  1924  	it.sub.Unsubscribe()
  1925  	return nil
  1926  }
  1927  
  1928  // Uniswapv3Initialize represents a Initialize event raised by the Uniswapv3 contract.
  1929  type Uniswapv3Initialize struct {
  1930  	SqrtPriceX96 *big.Int
  1931  	Tick         *big.Int
  1932  	Raw          types.Log // Blockchain specific contextual infos
  1933  }
  1934  
  1935  // FilterInitialize is a free log retrieval operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95.
  1936  //
  1937  // Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick)
  1938  func (_Uniswapv3 *Uniswapv3Filterer) FilterInitialize(opts *bind.FilterOpts) (*Uniswapv3InitializeIterator, error) {
  1939  
  1940  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "Initialize")
  1941  	if err != nil {
  1942  		return nil, err
  1943  	}
  1944  	return &Uniswapv3InitializeIterator{contract: _Uniswapv3.contract, event: "Initialize", logs: logs, sub: sub}, nil
  1945  }
  1946  
  1947  // WatchInitialize is a free log subscription operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95.
  1948  //
  1949  // Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick)
  1950  func (_Uniswapv3 *Uniswapv3Filterer) WatchInitialize(opts *bind.WatchOpts, sink chan<- *Uniswapv3Initialize) (event.Subscription, error) {
  1951  
  1952  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "Initialize")
  1953  	if err != nil {
  1954  		return nil, err
  1955  	}
  1956  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1957  		defer sub.Unsubscribe()
  1958  		for {
  1959  			select {
  1960  			case log := <-logs:
  1961  				// New log arrived, parse the event and forward to the user
  1962  				event := new(Uniswapv3Initialize)
  1963  				if err := _Uniswapv3.contract.UnpackLog(event, "Initialize", log); err != nil {
  1964  					return err
  1965  				}
  1966  				event.Raw = log
  1967  
  1968  				select {
  1969  				case sink <- event:
  1970  				case err := <-sub.Err():
  1971  					return err
  1972  				case <-quit:
  1973  					return nil
  1974  				}
  1975  			case err := <-sub.Err():
  1976  				return err
  1977  			case <-quit:
  1978  				return nil
  1979  			}
  1980  		}
  1981  	}), nil
  1982  }
  1983  
  1984  // ParseInitialize is a log parse operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95.
  1985  //
  1986  // Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick)
  1987  func (_Uniswapv3 *Uniswapv3Filterer) ParseInitialize(log types.Log) (*Uniswapv3Initialize, error) {
  1988  	event := new(Uniswapv3Initialize)
  1989  	if err := _Uniswapv3.contract.UnpackLog(event, "Initialize", log); err != nil {
  1990  		return nil, err
  1991  	}
  1992  	event.Raw = log
  1993  	return event, nil
  1994  }
  1995  
  1996  // Uniswapv3MintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the Uniswapv3 contract.
  1997  type Uniswapv3MintIterator struct {
  1998  	Event *Uniswapv3Mint // Event containing the contract specifics and raw log
  1999  
  2000  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2001  	event    string              // Event name to use for unpacking event data
  2002  
  2003  	logs chan types.Log        // Log channel receiving the found contract events
  2004  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2005  	done bool                  // Whether the subscription completed delivering logs
  2006  	fail error                 // Occurred error to stop iteration
  2007  }
  2008  
  2009  // Next advances the iterator to the subsequent event, returning whether there
  2010  // are any more events found. In case of a retrieval or parsing error, false is
  2011  // returned and Error() can be queried for the exact failure.
  2012  func (it *Uniswapv3MintIterator) Next() bool {
  2013  	// If the iterator failed, stop iterating
  2014  	if it.fail != nil {
  2015  		return false
  2016  	}
  2017  	// If the iterator completed, deliver directly whatever's available
  2018  	if it.done {
  2019  		select {
  2020  		case log := <-it.logs:
  2021  			it.Event = new(Uniswapv3Mint)
  2022  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2023  				it.fail = err
  2024  				return false
  2025  			}
  2026  			it.Event.Raw = log
  2027  			return true
  2028  
  2029  		default:
  2030  			return false
  2031  		}
  2032  	}
  2033  	// Iterator still in progress, wait for either a data or an error event
  2034  	select {
  2035  	case log := <-it.logs:
  2036  		it.Event = new(Uniswapv3Mint)
  2037  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2038  			it.fail = err
  2039  			return false
  2040  		}
  2041  		it.Event.Raw = log
  2042  		return true
  2043  
  2044  	case err := <-it.sub.Err():
  2045  		it.done = true
  2046  		it.fail = err
  2047  		return it.Next()
  2048  	}
  2049  }
  2050  
  2051  // Error returns any retrieval or parsing error occurred during filtering.
  2052  func (it *Uniswapv3MintIterator) Error() error {
  2053  	return it.fail
  2054  }
  2055  
  2056  // Close terminates the iteration process, releasing any pending underlying
  2057  // resources.
  2058  func (it *Uniswapv3MintIterator) Close() error {
  2059  	it.sub.Unsubscribe()
  2060  	return nil
  2061  }
  2062  
  2063  // Uniswapv3Mint represents a Mint event raised by the Uniswapv3 contract.
  2064  type Uniswapv3Mint struct {
  2065  	Sender    common.Address
  2066  	Owner     common.Address
  2067  	TickLower *big.Int
  2068  	TickUpper *big.Int
  2069  	Amount    *big.Int
  2070  	Amount0   *big.Int
  2071  	Amount1   *big.Int
  2072  	Raw       types.Log // Blockchain specific contextual infos
  2073  }
  2074  
  2075  // FilterMint is a free log retrieval operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde.
  2076  //
  2077  // Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1)
  2078  func (_Uniswapv3 *Uniswapv3Filterer) FilterMint(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*Uniswapv3MintIterator, error) {
  2079  
  2080  	var ownerRule []interface{}
  2081  	for _, ownerItem := range owner {
  2082  		ownerRule = append(ownerRule, ownerItem)
  2083  	}
  2084  	var tickLowerRule []interface{}
  2085  	for _, tickLowerItem := range tickLower {
  2086  		tickLowerRule = append(tickLowerRule, tickLowerItem)
  2087  	}
  2088  	var tickUpperRule []interface{}
  2089  	for _, tickUpperItem := range tickUpper {
  2090  		tickUpperRule = append(tickUpperRule, tickUpperItem)
  2091  	}
  2092  
  2093  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule)
  2094  	if err != nil {
  2095  		return nil, err
  2096  	}
  2097  	return &Uniswapv3MintIterator{contract: _Uniswapv3.contract, event: "Mint", logs: logs, sub: sub}, nil
  2098  }
  2099  
  2100  // WatchMint is a free log subscription operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde.
  2101  //
  2102  // Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1)
  2103  func (_Uniswapv3 *Uniswapv3Filterer) WatchMint(opts *bind.WatchOpts, sink chan<- *Uniswapv3Mint, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) {
  2104  
  2105  	var ownerRule []interface{}
  2106  	for _, ownerItem := range owner {
  2107  		ownerRule = append(ownerRule, ownerItem)
  2108  	}
  2109  	var tickLowerRule []interface{}
  2110  	for _, tickLowerItem := range tickLower {
  2111  		tickLowerRule = append(tickLowerRule, tickLowerItem)
  2112  	}
  2113  	var tickUpperRule []interface{}
  2114  	for _, tickUpperItem := range tickUpper {
  2115  		tickUpperRule = append(tickUpperRule, tickUpperItem)
  2116  	}
  2117  
  2118  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule)
  2119  	if err != nil {
  2120  		return nil, err
  2121  	}
  2122  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2123  		defer sub.Unsubscribe()
  2124  		for {
  2125  			select {
  2126  			case log := <-logs:
  2127  				// New log arrived, parse the event and forward to the user
  2128  				event := new(Uniswapv3Mint)
  2129  				if err := _Uniswapv3.contract.UnpackLog(event, "Mint", log); err != nil {
  2130  					return err
  2131  				}
  2132  				event.Raw = log
  2133  
  2134  				select {
  2135  				case sink <- event:
  2136  				case err := <-sub.Err():
  2137  					return err
  2138  				case <-quit:
  2139  					return nil
  2140  				}
  2141  			case err := <-sub.Err():
  2142  				return err
  2143  			case <-quit:
  2144  				return nil
  2145  			}
  2146  		}
  2147  	}), nil
  2148  }
  2149  
  2150  // ParseMint is a log parse operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde.
  2151  //
  2152  // Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1)
  2153  func (_Uniswapv3 *Uniswapv3Filterer) ParseMint(log types.Log) (*Uniswapv3Mint, error) {
  2154  	event := new(Uniswapv3Mint)
  2155  	if err := _Uniswapv3.contract.UnpackLog(event, "Mint", log); err != nil {
  2156  		return nil, err
  2157  	}
  2158  	event.Raw = log
  2159  	return event, nil
  2160  }
  2161  
  2162  // Uniswapv3SetFeeProtocolIterator is returned from FilterSetFeeProtocol and is used to iterate over the raw logs and unpacked data for SetFeeProtocol events raised by the Uniswapv3 contract.
  2163  type Uniswapv3SetFeeProtocolIterator struct {
  2164  	Event *Uniswapv3SetFeeProtocol // Event containing the contract specifics and raw log
  2165  
  2166  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2167  	event    string              // Event name to use for unpacking event data
  2168  
  2169  	logs chan types.Log        // Log channel receiving the found contract events
  2170  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2171  	done bool                  // Whether the subscription completed delivering logs
  2172  	fail error                 // Occurred error to stop iteration
  2173  }
  2174  
  2175  // Next advances the iterator to the subsequent event, returning whether there
  2176  // are any more events found. In case of a retrieval or parsing error, false is
  2177  // returned and Error() can be queried for the exact failure.
  2178  func (it *Uniswapv3SetFeeProtocolIterator) Next() bool {
  2179  	// If the iterator failed, stop iterating
  2180  	if it.fail != nil {
  2181  		return false
  2182  	}
  2183  	// If the iterator completed, deliver directly whatever's available
  2184  	if it.done {
  2185  		select {
  2186  		case log := <-it.logs:
  2187  			it.Event = new(Uniswapv3SetFeeProtocol)
  2188  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2189  				it.fail = err
  2190  				return false
  2191  			}
  2192  			it.Event.Raw = log
  2193  			return true
  2194  
  2195  		default:
  2196  			return false
  2197  		}
  2198  	}
  2199  	// Iterator still in progress, wait for either a data or an error event
  2200  	select {
  2201  	case log := <-it.logs:
  2202  		it.Event = new(Uniswapv3SetFeeProtocol)
  2203  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2204  			it.fail = err
  2205  			return false
  2206  		}
  2207  		it.Event.Raw = log
  2208  		return true
  2209  
  2210  	case err := <-it.sub.Err():
  2211  		it.done = true
  2212  		it.fail = err
  2213  		return it.Next()
  2214  	}
  2215  }
  2216  
  2217  // Error returns any retrieval or parsing error occurred during filtering.
  2218  func (it *Uniswapv3SetFeeProtocolIterator) Error() error {
  2219  	return it.fail
  2220  }
  2221  
  2222  // Close terminates the iteration process, releasing any pending underlying
  2223  // resources.
  2224  func (it *Uniswapv3SetFeeProtocolIterator) Close() error {
  2225  	it.sub.Unsubscribe()
  2226  	return nil
  2227  }
  2228  
  2229  // Uniswapv3SetFeeProtocol represents a SetFeeProtocol event raised by the Uniswapv3 contract.
  2230  type Uniswapv3SetFeeProtocol struct {
  2231  	FeeProtocol0Old uint8
  2232  	FeeProtocol1Old uint8
  2233  	FeeProtocol0New uint8
  2234  	FeeProtocol1New uint8
  2235  	Raw             types.Log // Blockchain specific contextual infos
  2236  }
  2237  
  2238  // FilterSetFeeProtocol is a free log retrieval operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133.
  2239  //
  2240  // Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New)
  2241  func (_Uniswapv3 *Uniswapv3Filterer) FilterSetFeeProtocol(opts *bind.FilterOpts) (*Uniswapv3SetFeeProtocolIterator, error) {
  2242  
  2243  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "SetFeeProtocol")
  2244  	if err != nil {
  2245  		return nil, err
  2246  	}
  2247  	return &Uniswapv3SetFeeProtocolIterator{contract: _Uniswapv3.contract, event: "SetFeeProtocol", logs: logs, sub: sub}, nil
  2248  }
  2249  
  2250  // WatchSetFeeProtocol is a free log subscription operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133.
  2251  //
  2252  // Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New)
  2253  func (_Uniswapv3 *Uniswapv3Filterer) WatchSetFeeProtocol(opts *bind.WatchOpts, sink chan<- *Uniswapv3SetFeeProtocol) (event.Subscription, error) {
  2254  
  2255  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "SetFeeProtocol")
  2256  	if err != nil {
  2257  		return nil, err
  2258  	}
  2259  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2260  		defer sub.Unsubscribe()
  2261  		for {
  2262  			select {
  2263  			case log := <-logs:
  2264  				// New log arrived, parse the event and forward to the user
  2265  				event := new(Uniswapv3SetFeeProtocol)
  2266  				if err := _Uniswapv3.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil {
  2267  					return err
  2268  				}
  2269  				event.Raw = log
  2270  
  2271  				select {
  2272  				case sink <- event:
  2273  				case err := <-sub.Err():
  2274  					return err
  2275  				case <-quit:
  2276  					return nil
  2277  				}
  2278  			case err := <-sub.Err():
  2279  				return err
  2280  			case <-quit:
  2281  				return nil
  2282  			}
  2283  		}
  2284  	}), nil
  2285  }
  2286  
  2287  // ParseSetFeeProtocol is a log parse operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133.
  2288  //
  2289  // Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New)
  2290  func (_Uniswapv3 *Uniswapv3Filterer) ParseSetFeeProtocol(log types.Log) (*Uniswapv3SetFeeProtocol, error) {
  2291  	event := new(Uniswapv3SetFeeProtocol)
  2292  	if err := _Uniswapv3.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil {
  2293  		return nil, err
  2294  	}
  2295  	event.Raw = log
  2296  	return event, nil
  2297  }
  2298  
  2299  // Uniswapv3SwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the Uniswapv3 contract.
  2300  type Uniswapv3SwapIterator struct {
  2301  	Event *Uniswapv3Swap // Event containing the contract specifics and raw log
  2302  
  2303  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2304  	event    string              // Event name to use for unpacking event data
  2305  
  2306  	logs chan types.Log        // Log channel receiving the found contract events
  2307  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2308  	done bool                  // Whether the subscription completed delivering logs
  2309  	fail error                 // Occurred error to stop iteration
  2310  }
  2311  
  2312  // Next advances the iterator to the subsequent event, returning whether there
  2313  // are any more events found. In case of a retrieval or parsing error, false is
  2314  // returned and Error() can be queried for the exact failure.
  2315  func (it *Uniswapv3SwapIterator) Next() bool {
  2316  	// If the iterator failed, stop iterating
  2317  	if it.fail != nil {
  2318  		return false
  2319  	}
  2320  	// If the iterator completed, deliver directly whatever's available
  2321  	if it.done {
  2322  		select {
  2323  		case log := <-it.logs:
  2324  			it.Event = new(Uniswapv3Swap)
  2325  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2326  				it.fail = err
  2327  				return false
  2328  			}
  2329  			it.Event.Raw = log
  2330  			return true
  2331  
  2332  		default:
  2333  			return false
  2334  		}
  2335  	}
  2336  	// Iterator still in progress, wait for either a data or an error event
  2337  	select {
  2338  	case log := <-it.logs:
  2339  		it.Event = new(Uniswapv3Swap)
  2340  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2341  			it.fail = err
  2342  			return false
  2343  		}
  2344  		it.Event.Raw = log
  2345  		return true
  2346  
  2347  	case err := <-it.sub.Err():
  2348  		it.done = true
  2349  		it.fail = err
  2350  		return it.Next()
  2351  	}
  2352  }
  2353  
  2354  // Error returns any retrieval or parsing error occurred during filtering.
  2355  func (it *Uniswapv3SwapIterator) Error() error {
  2356  	return it.fail
  2357  }
  2358  
  2359  // Close terminates the iteration process, releasing any pending underlying
  2360  // resources.
  2361  func (it *Uniswapv3SwapIterator) Close() error {
  2362  	it.sub.Unsubscribe()
  2363  	return nil
  2364  }
  2365  
  2366  // Uniswapv3Swap represents a Swap event raised by the Uniswapv3 contract.
  2367  type Uniswapv3Swap struct {
  2368  	Sender       common.Address
  2369  	Recipient    common.Address
  2370  	Amount0      *big.Int
  2371  	Amount1      *big.Int
  2372  	SqrtPriceX96 *big.Int
  2373  	Liquidity    *big.Int
  2374  	Tick         *big.Int
  2375  	Raw          types.Log // Blockchain specific contextual infos
  2376  }
  2377  
  2378  // FilterSwap is a free log retrieval operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67.
  2379  //
  2380  // Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick)
  2381  func (_Uniswapv3 *Uniswapv3Filterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*Uniswapv3SwapIterator, error) {
  2382  
  2383  	var senderRule []interface{}
  2384  	for _, senderItem := range sender {
  2385  		senderRule = append(senderRule, senderItem)
  2386  	}
  2387  	var recipientRule []interface{}
  2388  	for _, recipientItem := range recipient {
  2389  		recipientRule = append(recipientRule, recipientItem)
  2390  	}
  2391  
  2392  	logs, sub, err := _Uniswapv3.contract.FilterLogs(opts, "Swap", senderRule, recipientRule)
  2393  	if err != nil {
  2394  		return nil, err
  2395  	}
  2396  	return &Uniswapv3SwapIterator{contract: _Uniswapv3.contract, event: "Swap", logs: logs, sub: sub}, nil
  2397  }
  2398  
  2399  // WatchSwap is a free log subscription operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67.
  2400  //
  2401  // Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick)
  2402  func (_Uniswapv3 *Uniswapv3Filterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *Uniswapv3Swap, sender []common.Address, recipient []common.Address) (event.Subscription, error) {
  2403  
  2404  	var senderRule []interface{}
  2405  	for _, senderItem := range sender {
  2406  		senderRule = append(senderRule, senderItem)
  2407  	}
  2408  	var recipientRule []interface{}
  2409  	for _, recipientItem := range recipient {
  2410  		recipientRule = append(recipientRule, recipientItem)
  2411  	}
  2412  
  2413  	logs, sub, err := _Uniswapv3.contract.WatchLogs(opts, "Swap", senderRule, recipientRule)
  2414  	if err != nil {
  2415  		return nil, err
  2416  	}
  2417  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2418  		defer sub.Unsubscribe()
  2419  		for {
  2420  			select {
  2421  			case log := <-logs:
  2422  				// New log arrived, parse the event and forward to the user
  2423  				event := new(Uniswapv3Swap)
  2424  				if err := _Uniswapv3.contract.UnpackLog(event, "Swap", log); err != nil {
  2425  					return err
  2426  				}
  2427  				event.Raw = log
  2428  
  2429  				select {
  2430  				case sink <- event:
  2431  				case err := <-sub.Err():
  2432  					return err
  2433  				case <-quit:
  2434  					return nil
  2435  				}
  2436  			case err := <-sub.Err():
  2437  				return err
  2438  			case <-quit:
  2439  				return nil
  2440  			}
  2441  		}
  2442  	}), nil
  2443  }
  2444  
  2445  // ParseSwap is a log parse operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67.
  2446  //
  2447  // Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick)
  2448  func (_Uniswapv3 *Uniswapv3Filterer) ParseSwap(log types.Log) (*Uniswapv3Swap, error) {
  2449  	event := new(Uniswapv3Swap)
  2450  	if err := _Uniswapv3.contract.UnpackLog(event, "Swap", log); err != nil {
  2451  		return nil, err
  2452  	}
  2453  	event.Raw = log
  2454  	return event, nil
  2455  }