github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/exchange-scrapers/camelotv3/camelotv3.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 camelotv3
     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  // Camelotv3MetaData contains all meta data concerning the Camelotv3 contract.
    33  var Camelotv3MetaData = &bind.MetaData{
    34  	ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_poolDeployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_vaultAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"newDefaultCommunityFee\",\"type\":\"uint8\"}],\"name\":\"DefaultCommunityFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newFarmingAddress\",\"type\":\"address\"}],\"name\":\"FarmingAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"alpha1\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"alpha2\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"beta1\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"beta2\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"gamma1\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"gamma2\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"volumeBeta\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"volumeGamma\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"baseFee\",\"type\":\"uint16\"}],\"name\":\"FeeConfiguration\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"Owner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"Pool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newVaultAddress\",\"type\":\"address\"}],\"name\":\"VaultAddress\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"baseFeeConfiguration\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"alpha1\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"alpha2\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"beta1\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"beta2\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"gamma1\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"gamma2\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"volumeBeta\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"volumeGamma\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFee\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultCommunityFee\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"farmingAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"poolByPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"alpha1\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"alpha2\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"beta1\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"beta2\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"gamma1\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"gamma2\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"volumeBeta\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"volumeGamma\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFee\",\"type\":\"uint16\"}],\"name\":\"setBaseFeeConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newDefaultCommunityFee\",\"type\":\"uint8\"}],\"name\":\"setDefaultCommunityFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_farmingAddress\",\"type\":\"address\"}],\"name\":\"setFarmingAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vaultAddress\",\"type\":\"address\"}],\"name\":\"setVaultAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
    35  }
    36  
    37  // Camelotv3ABI is the input ABI used to generate the binding from.
    38  // Deprecated: Use Camelotv3MetaData.ABI instead.
    39  var Camelotv3ABI = Camelotv3MetaData.ABI
    40  
    41  // Camelotv3 is an auto generated Go binding around an Ethereum contract.
    42  type Camelotv3 struct {
    43  	Camelotv3Caller     // Read-only binding to the contract
    44  	Camelotv3Transactor // Write-only binding to the contract
    45  	Camelotv3Filterer   // Log filterer for contract events
    46  }
    47  
    48  // Camelotv3Caller is an auto generated read-only Go binding around an Ethereum contract.
    49  type Camelotv3Caller struct {
    50  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    51  }
    52  
    53  // Camelotv3Transactor is an auto generated write-only Go binding around an Ethereum contract.
    54  type Camelotv3Transactor struct {
    55  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    56  }
    57  
    58  // Camelotv3Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
    59  type Camelotv3Filterer struct {
    60  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    61  }
    62  
    63  // Camelotv3Session is an auto generated Go binding around an Ethereum contract,
    64  // with pre-set call and transact options.
    65  type Camelotv3Session struct {
    66  	Contract     *Camelotv3        // 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  // Camelotv3CallerSession is an auto generated read-only Go binding around an Ethereum contract,
    72  // with pre-set call options.
    73  type Camelotv3CallerSession struct {
    74  	Contract *Camelotv3Caller // Generic contract caller binding to set the session for
    75  	CallOpts bind.CallOpts    // Call options to use throughout this session
    76  }
    77  
    78  // Camelotv3TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    79  // with pre-set transact options.
    80  type Camelotv3TransactorSession struct {
    81  	Contract     *Camelotv3Transactor // Generic contract transactor binding to set the session for
    82  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
    83  }
    84  
    85  // Camelotv3Raw is an auto generated low-level Go binding around an Ethereum contract.
    86  type Camelotv3Raw struct {
    87  	Contract *Camelotv3 // Generic contract binding to access the raw methods on
    88  }
    89  
    90  // Camelotv3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    91  type Camelotv3CallerRaw struct {
    92  	Contract *Camelotv3Caller // Generic read-only contract binding to access the raw methods on
    93  }
    94  
    95  // Camelotv3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    96  type Camelotv3TransactorRaw struct {
    97  	Contract *Camelotv3Transactor // Generic write-only contract binding to access the raw methods on
    98  }
    99  
   100  // NewCamelotv3 creates a new instance of Camelotv3, bound to a specific deployed contract.
   101  func NewCamelotv3(address common.Address, backend bind.ContractBackend) (*Camelotv3, error) {
   102  	contract, err := bindCamelotv3(address, backend, backend, backend)
   103  	if err != nil {
   104  		return nil, err
   105  	}
   106  	return &Camelotv3{Camelotv3Caller: Camelotv3Caller{contract: contract}, Camelotv3Transactor: Camelotv3Transactor{contract: contract}, Camelotv3Filterer: Camelotv3Filterer{contract: contract}}, nil
   107  }
   108  
   109  // NewCamelotv3Caller creates a new read-only instance of Camelotv3, bound to a specific deployed contract.
   110  func NewCamelotv3Caller(address common.Address, caller bind.ContractCaller) (*Camelotv3Caller, error) {
   111  	contract, err := bindCamelotv3(address, caller, nil, nil)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	return &Camelotv3Caller{contract: contract}, nil
   116  }
   117  
   118  // NewCamelotv3Transactor creates a new write-only instance of Camelotv3, bound to a specific deployed contract.
   119  func NewCamelotv3Transactor(address common.Address, transactor bind.ContractTransactor) (*Camelotv3Transactor, error) {
   120  	contract, err := bindCamelotv3(address, nil, transactor, nil)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &Camelotv3Transactor{contract: contract}, nil
   125  }
   126  
   127  // NewCamelotv3Filterer creates a new log filterer instance of Camelotv3, bound to a specific deployed contract.
   128  func NewCamelotv3Filterer(address common.Address, filterer bind.ContractFilterer) (*Camelotv3Filterer, error) {
   129  	contract, err := bindCamelotv3(address, nil, nil, filterer)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return &Camelotv3Filterer{contract: contract}, nil
   134  }
   135  
   136  // bindCamelotv3 binds a generic wrapper to an already deployed contract.
   137  func bindCamelotv3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   138  	parsed, err := Camelotv3MetaData.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 (_Camelotv3 *Camelotv3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   150  	return _Camelotv3.Contract.Camelotv3Caller.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 (_Camelotv3 *Camelotv3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   156  	return _Camelotv3.Contract.Camelotv3Transactor.contract.Transfer(opts)
   157  }
   158  
   159  // Transact invokes the (paid) contract method with params as input values.
   160  func (_Camelotv3 *Camelotv3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   161  	return _Camelotv3.Contract.Camelotv3Transactor.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 (_Camelotv3 *Camelotv3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   169  	return _Camelotv3.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 (_Camelotv3 *Camelotv3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   175  	return _Camelotv3.Contract.contract.Transfer(opts)
   176  }
   177  
   178  // Transact invokes the (paid) contract method with params as input values.
   179  func (_Camelotv3 *Camelotv3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   180  	return _Camelotv3.Contract.contract.Transact(opts, method, params...)
   181  }
   182  
   183  // BaseFeeConfiguration is a free data retrieval call binding the contract method 0x9832853a.
   184  //
   185  // Solidity: function baseFeeConfiguration() view returns(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee)
   186  func (_Camelotv3 *Camelotv3Caller) BaseFeeConfiguration(opts *bind.CallOpts) (struct {
   187  	Alpha1      uint16
   188  	Alpha2      uint16
   189  	Beta1       uint32
   190  	Beta2       uint32
   191  	Gamma1      uint16
   192  	Gamma2      uint16
   193  	VolumeBeta  uint32
   194  	VolumeGamma uint16
   195  	BaseFee     uint16
   196  }, error) {
   197  	var out []interface{}
   198  	err := _Camelotv3.contract.Call(opts, &out, "baseFeeConfiguration")
   199  
   200  	outstruct := new(struct {
   201  		Alpha1      uint16
   202  		Alpha2      uint16
   203  		Beta1       uint32
   204  		Beta2       uint32
   205  		Gamma1      uint16
   206  		Gamma2      uint16
   207  		VolumeBeta  uint32
   208  		VolumeGamma uint16
   209  		BaseFee     uint16
   210  	})
   211  	if err != nil {
   212  		return *outstruct, err
   213  	}
   214  
   215  	outstruct.Alpha1 = *abi.ConvertType(out[0], new(uint16)).(*uint16)
   216  	outstruct.Alpha2 = *abi.ConvertType(out[1], new(uint16)).(*uint16)
   217  	outstruct.Beta1 = *abi.ConvertType(out[2], new(uint32)).(*uint32)
   218  	outstruct.Beta2 = *abi.ConvertType(out[3], new(uint32)).(*uint32)
   219  	outstruct.Gamma1 = *abi.ConvertType(out[4], new(uint16)).(*uint16)
   220  	outstruct.Gamma2 = *abi.ConvertType(out[5], new(uint16)).(*uint16)
   221  	outstruct.VolumeBeta = *abi.ConvertType(out[6], new(uint32)).(*uint32)
   222  	outstruct.VolumeGamma = *abi.ConvertType(out[7], new(uint16)).(*uint16)
   223  	outstruct.BaseFee = *abi.ConvertType(out[8], new(uint16)).(*uint16)
   224  
   225  	return *outstruct, err
   226  
   227  }
   228  
   229  // BaseFeeConfiguration is a free data retrieval call binding the contract method 0x9832853a.
   230  //
   231  // Solidity: function baseFeeConfiguration() view returns(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee)
   232  func (_Camelotv3 *Camelotv3Session) BaseFeeConfiguration() (struct {
   233  	Alpha1      uint16
   234  	Alpha2      uint16
   235  	Beta1       uint32
   236  	Beta2       uint32
   237  	Gamma1      uint16
   238  	Gamma2      uint16
   239  	VolumeBeta  uint32
   240  	VolumeGamma uint16
   241  	BaseFee     uint16
   242  }, error) {
   243  	return _Camelotv3.Contract.BaseFeeConfiguration(&_Camelotv3.CallOpts)
   244  }
   245  
   246  // BaseFeeConfiguration is a free data retrieval call binding the contract method 0x9832853a.
   247  //
   248  // Solidity: function baseFeeConfiguration() view returns(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee)
   249  func (_Camelotv3 *Camelotv3CallerSession) BaseFeeConfiguration() (struct {
   250  	Alpha1      uint16
   251  	Alpha2      uint16
   252  	Beta1       uint32
   253  	Beta2       uint32
   254  	Gamma1      uint16
   255  	Gamma2      uint16
   256  	VolumeBeta  uint32
   257  	VolumeGamma uint16
   258  	BaseFee     uint16
   259  }, error) {
   260  	return _Camelotv3.Contract.BaseFeeConfiguration(&_Camelotv3.CallOpts)
   261  }
   262  
   263  // DefaultCommunityFee is a free data retrieval call binding the contract method 0x2f8a39dd.
   264  //
   265  // Solidity: function defaultCommunityFee() view returns(uint8)
   266  func (_Camelotv3 *Camelotv3Caller) DefaultCommunityFee(opts *bind.CallOpts) (uint8, error) {
   267  	var out []interface{}
   268  	err := _Camelotv3.contract.Call(opts, &out, "defaultCommunityFee")
   269  
   270  	if err != nil {
   271  		return *new(uint8), err
   272  	}
   273  
   274  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
   275  
   276  	return out0, err
   277  
   278  }
   279  
   280  // DefaultCommunityFee is a free data retrieval call binding the contract method 0x2f8a39dd.
   281  //
   282  // Solidity: function defaultCommunityFee() view returns(uint8)
   283  func (_Camelotv3 *Camelotv3Session) DefaultCommunityFee() (uint8, error) {
   284  	return _Camelotv3.Contract.DefaultCommunityFee(&_Camelotv3.CallOpts)
   285  }
   286  
   287  // DefaultCommunityFee is a free data retrieval call binding the contract method 0x2f8a39dd.
   288  //
   289  // Solidity: function defaultCommunityFee() view returns(uint8)
   290  func (_Camelotv3 *Camelotv3CallerSession) DefaultCommunityFee() (uint8, error) {
   291  	return _Camelotv3.Contract.DefaultCommunityFee(&_Camelotv3.CallOpts)
   292  }
   293  
   294  // FarmingAddress is a free data retrieval call binding the contract method 0x8a2ade58.
   295  //
   296  // Solidity: function farmingAddress() view returns(address)
   297  func (_Camelotv3 *Camelotv3Caller) FarmingAddress(opts *bind.CallOpts) (common.Address, error) {
   298  	var out []interface{}
   299  	err := _Camelotv3.contract.Call(opts, &out, "farmingAddress")
   300  
   301  	if err != nil {
   302  		return *new(common.Address), err
   303  	}
   304  
   305  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   306  
   307  	return out0, err
   308  
   309  }
   310  
   311  // FarmingAddress is a free data retrieval call binding the contract method 0x8a2ade58.
   312  //
   313  // Solidity: function farmingAddress() view returns(address)
   314  func (_Camelotv3 *Camelotv3Session) FarmingAddress() (common.Address, error) {
   315  	return _Camelotv3.Contract.FarmingAddress(&_Camelotv3.CallOpts)
   316  }
   317  
   318  // FarmingAddress is a free data retrieval call binding the contract method 0x8a2ade58.
   319  //
   320  // Solidity: function farmingAddress() view returns(address)
   321  func (_Camelotv3 *Camelotv3CallerSession) FarmingAddress() (common.Address, error) {
   322  	return _Camelotv3.Contract.FarmingAddress(&_Camelotv3.CallOpts)
   323  }
   324  
   325  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   326  //
   327  // Solidity: function owner() view returns(address)
   328  func (_Camelotv3 *Camelotv3Caller) Owner(opts *bind.CallOpts) (common.Address, error) {
   329  	var out []interface{}
   330  	err := _Camelotv3.contract.Call(opts, &out, "owner")
   331  
   332  	if err != nil {
   333  		return *new(common.Address), err
   334  	}
   335  
   336  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   337  
   338  	return out0, err
   339  
   340  }
   341  
   342  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   343  //
   344  // Solidity: function owner() view returns(address)
   345  func (_Camelotv3 *Camelotv3Session) Owner() (common.Address, error) {
   346  	return _Camelotv3.Contract.Owner(&_Camelotv3.CallOpts)
   347  }
   348  
   349  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   350  //
   351  // Solidity: function owner() view returns(address)
   352  func (_Camelotv3 *Camelotv3CallerSession) Owner() (common.Address, error) {
   353  	return _Camelotv3.Contract.Owner(&_Camelotv3.CallOpts)
   354  }
   355  
   356  // PoolByPair is a free data retrieval call binding the contract method 0xd9a641e1.
   357  //
   358  // Solidity: function poolByPair(address , address ) view returns(address)
   359  func (_Camelotv3 *Camelotv3Caller) PoolByPair(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (common.Address, error) {
   360  	var out []interface{}
   361  	err := _Camelotv3.contract.Call(opts, &out, "poolByPair", arg0, arg1)
   362  
   363  	if err != nil {
   364  		return *new(common.Address), err
   365  	}
   366  
   367  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   368  
   369  	return out0, err
   370  
   371  }
   372  
   373  // PoolByPair is a free data retrieval call binding the contract method 0xd9a641e1.
   374  //
   375  // Solidity: function poolByPair(address , address ) view returns(address)
   376  func (_Camelotv3 *Camelotv3Session) PoolByPair(arg0 common.Address, arg1 common.Address) (common.Address, error) {
   377  	return _Camelotv3.Contract.PoolByPair(&_Camelotv3.CallOpts, arg0, arg1)
   378  }
   379  
   380  // PoolByPair is a free data retrieval call binding the contract method 0xd9a641e1.
   381  //
   382  // Solidity: function poolByPair(address , address ) view returns(address)
   383  func (_Camelotv3 *Camelotv3CallerSession) PoolByPair(arg0 common.Address, arg1 common.Address) (common.Address, error) {
   384  	return _Camelotv3.Contract.PoolByPair(&_Camelotv3.CallOpts, arg0, arg1)
   385  }
   386  
   387  // PoolDeployer is a free data retrieval call binding the contract method 0x3119049a.
   388  //
   389  // Solidity: function poolDeployer() view returns(address)
   390  func (_Camelotv3 *Camelotv3Caller) PoolDeployer(opts *bind.CallOpts) (common.Address, error) {
   391  	var out []interface{}
   392  	err := _Camelotv3.contract.Call(opts, &out, "poolDeployer")
   393  
   394  	if err != nil {
   395  		return *new(common.Address), err
   396  	}
   397  
   398  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   399  
   400  	return out0, err
   401  
   402  }
   403  
   404  // PoolDeployer is a free data retrieval call binding the contract method 0x3119049a.
   405  //
   406  // Solidity: function poolDeployer() view returns(address)
   407  func (_Camelotv3 *Camelotv3Session) PoolDeployer() (common.Address, error) {
   408  	return _Camelotv3.Contract.PoolDeployer(&_Camelotv3.CallOpts)
   409  }
   410  
   411  // PoolDeployer is a free data retrieval call binding the contract method 0x3119049a.
   412  //
   413  // Solidity: function poolDeployer() view returns(address)
   414  func (_Camelotv3 *Camelotv3CallerSession) PoolDeployer() (common.Address, error) {
   415  	return _Camelotv3.Contract.PoolDeployer(&_Camelotv3.CallOpts)
   416  }
   417  
   418  // VaultAddress is a free data retrieval call binding the contract method 0x430bf08a.
   419  //
   420  // Solidity: function vaultAddress() view returns(address)
   421  func (_Camelotv3 *Camelotv3Caller) VaultAddress(opts *bind.CallOpts) (common.Address, error) {
   422  	var out []interface{}
   423  	err := _Camelotv3.contract.Call(opts, &out, "vaultAddress")
   424  
   425  	if err != nil {
   426  		return *new(common.Address), err
   427  	}
   428  
   429  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   430  
   431  	return out0, err
   432  
   433  }
   434  
   435  // VaultAddress is a free data retrieval call binding the contract method 0x430bf08a.
   436  //
   437  // Solidity: function vaultAddress() view returns(address)
   438  func (_Camelotv3 *Camelotv3Session) VaultAddress() (common.Address, error) {
   439  	return _Camelotv3.Contract.VaultAddress(&_Camelotv3.CallOpts)
   440  }
   441  
   442  // VaultAddress is a free data retrieval call binding the contract method 0x430bf08a.
   443  //
   444  // Solidity: function vaultAddress() view returns(address)
   445  func (_Camelotv3 *Camelotv3CallerSession) VaultAddress() (common.Address, error) {
   446  	return _Camelotv3.Contract.VaultAddress(&_Camelotv3.CallOpts)
   447  }
   448  
   449  // CreatePool is a paid mutator transaction binding the contract method 0xe3433615.
   450  //
   451  // Solidity: function createPool(address tokenA, address tokenB) returns(address pool)
   452  func (_Camelotv3 *Camelotv3Transactor) CreatePool(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address) (*types.Transaction, error) {
   453  	return _Camelotv3.contract.Transact(opts, "createPool", tokenA, tokenB)
   454  }
   455  
   456  // CreatePool is a paid mutator transaction binding the contract method 0xe3433615.
   457  //
   458  // Solidity: function createPool(address tokenA, address tokenB) returns(address pool)
   459  func (_Camelotv3 *Camelotv3Session) CreatePool(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) {
   460  	return _Camelotv3.Contract.CreatePool(&_Camelotv3.TransactOpts, tokenA, tokenB)
   461  }
   462  
   463  // CreatePool is a paid mutator transaction binding the contract method 0xe3433615.
   464  //
   465  // Solidity: function createPool(address tokenA, address tokenB) returns(address pool)
   466  func (_Camelotv3 *Camelotv3TransactorSession) CreatePool(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) {
   467  	return _Camelotv3.Contract.CreatePool(&_Camelotv3.TransactOpts, tokenA, tokenB)
   468  }
   469  
   470  // SetBaseFeeConfiguration is a paid mutator transaction binding the contract method 0x5d6d7e93.
   471  //
   472  // Solidity: function setBaseFeeConfiguration(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee) returns()
   473  func (_Camelotv3 *Camelotv3Transactor) SetBaseFeeConfiguration(opts *bind.TransactOpts, alpha1 uint16, alpha2 uint16, beta1 uint32, beta2 uint32, gamma1 uint16, gamma2 uint16, volumeBeta uint32, volumeGamma uint16, baseFee uint16) (*types.Transaction, error) {
   474  	return _Camelotv3.contract.Transact(opts, "setBaseFeeConfiguration", alpha1, alpha2, beta1, beta2, gamma1, gamma2, volumeBeta, volumeGamma, baseFee)
   475  }
   476  
   477  // SetBaseFeeConfiguration is a paid mutator transaction binding the contract method 0x5d6d7e93.
   478  //
   479  // Solidity: function setBaseFeeConfiguration(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee) returns()
   480  func (_Camelotv3 *Camelotv3Session) SetBaseFeeConfiguration(alpha1 uint16, alpha2 uint16, beta1 uint32, beta2 uint32, gamma1 uint16, gamma2 uint16, volumeBeta uint32, volumeGamma uint16, baseFee uint16) (*types.Transaction, error) {
   481  	return _Camelotv3.Contract.SetBaseFeeConfiguration(&_Camelotv3.TransactOpts, alpha1, alpha2, beta1, beta2, gamma1, gamma2, volumeBeta, volumeGamma, baseFee)
   482  }
   483  
   484  // SetBaseFeeConfiguration is a paid mutator transaction binding the contract method 0x5d6d7e93.
   485  //
   486  // Solidity: function setBaseFeeConfiguration(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee) returns()
   487  func (_Camelotv3 *Camelotv3TransactorSession) SetBaseFeeConfiguration(alpha1 uint16, alpha2 uint16, beta1 uint32, beta2 uint32, gamma1 uint16, gamma2 uint16, volumeBeta uint32, volumeGamma uint16, baseFee uint16) (*types.Transaction, error) {
   488  	return _Camelotv3.Contract.SetBaseFeeConfiguration(&_Camelotv3.TransactOpts, alpha1, alpha2, beta1, beta2, gamma1, gamma2, volumeBeta, volumeGamma, baseFee)
   489  }
   490  
   491  // SetDefaultCommunityFee is a paid mutator transaction binding the contract method 0x371e3521.
   492  //
   493  // Solidity: function setDefaultCommunityFee(uint8 newDefaultCommunityFee) returns()
   494  func (_Camelotv3 *Camelotv3Transactor) SetDefaultCommunityFee(opts *bind.TransactOpts, newDefaultCommunityFee uint8) (*types.Transaction, error) {
   495  	return _Camelotv3.contract.Transact(opts, "setDefaultCommunityFee", newDefaultCommunityFee)
   496  }
   497  
   498  // SetDefaultCommunityFee is a paid mutator transaction binding the contract method 0x371e3521.
   499  //
   500  // Solidity: function setDefaultCommunityFee(uint8 newDefaultCommunityFee) returns()
   501  func (_Camelotv3 *Camelotv3Session) SetDefaultCommunityFee(newDefaultCommunityFee uint8) (*types.Transaction, error) {
   502  	return _Camelotv3.Contract.SetDefaultCommunityFee(&_Camelotv3.TransactOpts, newDefaultCommunityFee)
   503  }
   504  
   505  // SetDefaultCommunityFee is a paid mutator transaction binding the contract method 0x371e3521.
   506  //
   507  // Solidity: function setDefaultCommunityFee(uint8 newDefaultCommunityFee) returns()
   508  func (_Camelotv3 *Camelotv3TransactorSession) SetDefaultCommunityFee(newDefaultCommunityFee uint8) (*types.Transaction, error) {
   509  	return _Camelotv3.Contract.SetDefaultCommunityFee(&_Camelotv3.TransactOpts, newDefaultCommunityFee)
   510  }
   511  
   512  // SetFarmingAddress is a paid mutator transaction binding the contract method 0xb001f618.
   513  //
   514  // Solidity: function setFarmingAddress(address _farmingAddress) returns()
   515  func (_Camelotv3 *Camelotv3Transactor) SetFarmingAddress(opts *bind.TransactOpts, _farmingAddress common.Address) (*types.Transaction, error) {
   516  	return _Camelotv3.contract.Transact(opts, "setFarmingAddress", _farmingAddress)
   517  }
   518  
   519  // SetFarmingAddress is a paid mutator transaction binding the contract method 0xb001f618.
   520  //
   521  // Solidity: function setFarmingAddress(address _farmingAddress) returns()
   522  func (_Camelotv3 *Camelotv3Session) SetFarmingAddress(_farmingAddress common.Address) (*types.Transaction, error) {
   523  	return _Camelotv3.Contract.SetFarmingAddress(&_Camelotv3.TransactOpts, _farmingAddress)
   524  }
   525  
   526  // SetFarmingAddress is a paid mutator transaction binding the contract method 0xb001f618.
   527  //
   528  // Solidity: function setFarmingAddress(address _farmingAddress) returns()
   529  func (_Camelotv3 *Camelotv3TransactorSession) SetFarmingAddress(_farmingAddress common.Address) (*types.Transaction, error) {
   530  	return _Camelotv3.Contract.SetFarmingAddress(&_Camelotv3.TransactOpts, _farmingAddress)
   531  }
   532  
   533  // SetOwner is a paid mutator transaction binding the contract method 0x13af4035.
   534  //
   535  // Solidity: function setOwner(address _owner) returns()
   536  func (_Camelotv3 *Camelotv3Transactor) SetOwner(opts *bind.TransactOpts, _owner common.Address) (*types.Transaction, error) {
   537  	return _Camelotv3.contract.Transact(opts, "setOwner", _owner)
   538  }
   539  
   540  // SetOwner is a paid mutator transaction binding the contract method 0x13af4035.
   541  //
   542  // Solidity: function setOwner(address _owner) returns()
   543  func (_Camelotv3 *Camelotv3Session) SetOwner(_owner common.Address) (*types.Transaction, error) {
   544  	return _Camelotv3.Contract.SetOwner(&_Camelotv3.TransactOpts, _owner)
   545  }
   546  
   547  // SetOwner is a paid mutator transaction binding the contract method 0x13af4035.
   548  //
   549  // Solidity: function setOwner(address _owner) returns()
   550  func (_Camelotv3 *Camelotv3TransactorSession) SetOwner(_owner common.Address) (*types.Transaction, error) {
   551  	return _Camelotv3.Contract.SetOwner(&_Camelotv3.TransactOpts, _owner)
   552  }
   553  
   554  // SetVaultAddress is a paid mutator transaction binding the contract method 0x85535cc5.
   555  //
   556  // Solidity: function setVaultAddress(address _vaultAddress) returns()
   557  func (_Camelotv3 *Camelotv3Transactor) SetVaultAddress(opts *bind.TransactOpts, _vaultAddress common.Address) (*types.Transaction, error) {
   558  	return _Camelotv3.contract.Transact(opts, "setVaultAddress", _vaultAddress)
   559  }
   560  
   561  // SetVaultAddress is a paid mutator transaction binding the contract method 0x85535cc5.
   562  //
   563  // Solidity: function setVaultAddress(address _vaultAddress) returns()
   564  func (_Camelotv3 *Camelotv3Session) SetVaultAddress(_vaultAddress common.Address) (*types.Transaction, error) {
   565  	return _Camelotv3.Contract.SetVaultAddress(&_Camelotv3.TransactOpts, _vaultAddress)
   566  }
   567  
   568  // SetVaultAddress is a paid mutator transaction binding the contract method 0x85535cc5.
   569  //
   570  // Solidity: function setVaultAddress(address _vaultAddress) returns()
   571  func (_Camelotv3 *Camelotv3TransactorSession) SetVaultAddress(_vaultAddress common.Address) (*types.Transaction, error) {
   572  	return _Camelotv3.Contract.SetVaultAddress(&_Camelotv3.TransactOpts, _vaultAddress)
   573  }
   574  
   575  // Camelotv3DefaultCommunityFeeIterator is returned from FilterDefaultCommunityFee and is used to iterate over the raw logs and unpacked data for DefaultCommunityFee events raised by the Camelotv3 contract.
   576  type Camelotv3DefaultCommunityFeeIterator struct {
   577  	Event *Camelotv3DefaultCommunityFee // Event containing the contract specifics and raw log
   578  
   579  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   580  	event    string              // Event name to use for unpacking event data
   581  
   582  	logs chan types.Log        // Log channel receiving the found contract events
   583  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   584  	done bool                  // Whether the subscription completed delivering logs
   585  	fail error                 // Occurred error to stop iteration
   586  }
   587  
   588  // Next advances the iterator to the subsequent event, returning whether there
   589  // are any more events found. In case of a retrieval or parsing error, false is
   590  // returned and Error() can be queried for the exact failure.
   591  func (it *Camelotv3DefaultCommunityFeeIterator) Next() bool {
   592  	// If the iterator failed, stop iterating
   593  	if it.fail != nil {
   594  		return false
   595  	}
   596  	// If the iterator completed, deliver directly whatever's available
   597  	if it.done {
   598  		select {
   599  		case log := <-it.logs:
   600  			it.Event = new(Camelotv3DefaultCommunityFee)
   601  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   602  				it.fail = err
   603  				return false
   604  			}
   605  			it.Event.Raw = log
   606  			return true
   607  
   608  		default:
   609  			return false
   610  		}
   611  	}
   612  	// Iterator still in progress, wait for either a data or an error event
   613  	select {
   614  	case log := <-it.logs:
   615  		it.Event = new(Camelotv3DefaultCommunityFee)
   616  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   617  			it.fail = err
   618  			return false
   619  		}
   620  		it.Event.Raw = log
   621  		return true
   622  
   623  	case err := <-it.sub.Err():
   624  		it.done = true
   625  		it.fail = err
   626  		return it.Next()
   627  	}
   628  }
   629  
   630  // Error returns any retrieval or parsing error occurred during filtering.
   631  func (it *Camelotv3DefaultCommunityFeeIterator) Error() error {
   632  	return it.fail
   633  }
   634  
   635  // Close terminates the iteration process, releasing any pending underlying
   636  // resources.
   637  func (it *Camelotv3DefaultCommunityFeeIterator) Close() error {
   638  	it.sub.Unsubscribe()
   639  	return nil
   640  }
   641  
   642  // Camelotv3DefaultCommunityFee represents a DefaultCommunityFee event raised by the Camelotv3 contract.
   643  type Camelotv3DefaultCommunityFee struct {
   644  	NewDefaultCommunityFee uint8
   645  	Raw                    types.Log // Blockchain specific contextual infos
   646  }
   647  
   648  // FilterDefaultCommunityFee is a free log retrieval operation binding the contract event 0x88cb5103fd9d88d417e72dc496030c71c65d1500548a9e9530e7d812b6a35558.
   649  //
   650  // Solidity: event DefaultCommunityFee(uint8 newDefaultCommunityFee)
   651  func (_Camelotv3 *Camelotv3Filterer) FilterDefaultCommunityFee(opts *bind.FilterOpts) (*Camelotv3DefaultCommunityFeeIterator, error) {
   652  
   653  	logs, sub, err := _Camelotv3.contract.FilterLogs(opts, "DefaultCommunityFee")
   654  	if err != nil {
   655  		return nil, err
   656  	}
   657  	return &Camelotv3DefaultCommunityFeeIterator{contract: _Camelotv3.contract, event: "DefaultCommunityFee", logs: logs, sub: sub}, nil
   658  }
   659  
   660  // WatchDefaultCommunityFee is a free log subscription operation binding the contract event 0x88cb5103fd9d88d417e72dc496030c71c65d1500548a9e9530e7d812b6a35558.
   661  //
   662  // Solidity: event DefaultCommunityFee(uint8 newDefaultCommunityFee)
   663  func (_Camelotv3 *Camelotv3Filterer) WatchDefaultCommunityFee(opts *bind.WatchOpts, sink chan<- *Camelotv3DefaultCommunityFee) (event.Subscription, error) {
   664  
   665  	logs, sub, err := _Camelotv3.contract.WatchLogs(opts, "DefaultCommunityFee")
   666  	if err != nil {
   667  		return nil, err
   668  	}
   669  	return event.NewSubscription(func(quit <-chan struct{}) error {
   670  		defer sub.Unsubscribe()
   671  		for {
   672  			select {
   673  			case log := <-logs:
   674  				// New log arrived, parse the event and forward to the user
   675  				event := new(Camelotv3DefaultCommunityFee)
   676  				if err := _Camelotv3.contract.UnpackLog(event, "DefaultCommunityFee", log); err != nil {
   677  					return err
   678  				}
   679  				event.Raw = log
   680  
   681  				select {
   682  				case sink <- event:
   683  				case err := <-sub.Err():
   684  					return err
   685  				case <-quit:
   686  					return nil
   687  				}
   688  			case err := <-sub.Err():
   689  				return err
   690  			case <-quit:
   691  				return nil
   692  			}
   693  		}
   694  	}), nil
   695  }
   696  
   697  // ParseDefaultCommunityFee is a log parse operation binding the contract event 0x88cb5103fd9d88d417e72dc496030c71c65d1500548a9e9530e7d812b6a35558.
   698  //
   699  // Solidity: event DefaultCommunityFee(uint8 newDefaultCommunityFee)
   700  func (_Camelotv3 *Camelotv3Filterer) ParseDefaultCommunityFee(log types.Log) (*Camelotv3DefaultCommunityFee, error) {
   701  	event := new(Camelotv3DefaultCommunityFee)
   702  	if err := _Camelotv3.contract.UnpackLog(event, "DefaultCommunityFee", log); err != nil {
   703  		return nil, err
   704  	}
   705  	event.Raw = log
   706  	return event, nil
   707  }
   708  
   709  // Camelotv3FarmingAddressIterator is returned from FilterFarmingAddress and is used to iterate over the raw logs and unpacked data for FarmingAddress events raised by the Camelotv3 contract.
   710  type Camelotv3FarmingAddressIterator struct {
   711  	Event *Camelotv3FarmingAddress // Event containing the contract specifics and raw log
   712  
   713  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   714  	event    string              // Event name to use for unpacking event data
   715  
   716  	logs chan types.Log        // Log channel receiving the found contract events
   717  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   718  	done bool                  // Whether the subscription completed delivering logs
   719  	fail error                 // Occurred error to stop iteration
   720  }
   721  
   722  // Next advances the iterator to the subsequent event, returning whether there
   723  // are any more events found. In case of a retrieval or parsing error, false is
   724  // returned and Error() can be queried for the exact failure.
   725  func (it *Camelotv3FarmingAddressIterator) Next() bool {
   726  	// If the iterator failed, stop iterating
   727  	if it.fail != nil {
   728  		return false
   729  	}
   730  	// If the iterator completed, deliver directly whatever's available
   731  	if it.done {
   732  		select {
   733  		case log := <-it.logs:
   734  			it.Event = new(Camelotv3FarmingAddress)
   735  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   736  				it.fail = err
   737  				return false
   738  			}
   739  			it.Event.Raw = log
   740  			return true
   741  
   742  		default:
   743  			return false
   744  		}
   745  	}
   746  	// Iterator still in progress, wait for either a data or an error event
   747  	select {
   748  	case log := <-it.logs:
   749  		it.Event = new(Camelotv3FarmingAddress)
   750  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   751  			it.fail = err
   752  			return false
   753  		}
   754  		it.Event.Raw = log
   755  		return true
   756  
   757  	case err := <-it.sub.Err():
   758  		it.done = true
   759  		it.fail = err
   760  		return it.Next()
   761  	}
   762  }
   763  
   764  // Error returns any retrieval or parsing error occurred during filtering.
   765  func (it *Camelotv3FarmingAddressIterator) Error() error {
   766  	return it.fail
   767  }
   768  
   769  // Close terminates the iteration process, releasing any pending underlying
   770  // resources.
   771  func (it *Camelotv3FarmingAddressIterator) Close() error {
   772  	it.sub.Unsubscribe()
   773  	return nil
   774  }
   775  
   776  // Camelotv3FarmingAddress represents a FarmingAddress event raised by the Camelotv3 contract.
   777  type Camelotv3FarmingAddress struct {
   778  	NewFarmingAddress common.Address
   779  	Raw               types.Log // Blockchain specific contextual infos
   780  }
   781  
   782  // FilterFarmingAddress is a free log retrieval operation binding the contract event 0x56b9e8342f530796ceed0d5529abdcdeae6e4f2ac1dc456ceb73bbda898e0cd3.
   783  //
   784  // Solidity: event FarmingAddress(address indexed newFarmingAddress)
   785  func (_Camelotv3 *Camelotv3Filterer) FilterFarmingAddress(opts *bind.FilterOpts, newFarmingAddress []common.Address) (*Camelotv3FarmingAddressIterator, error) {
   786  
   787  	var newFarmingAddressRule []interface{}
   788  	for _, newFarmingAddressItem := range newFarmingAddress {
   789  		newFarmingAddressRule = append(newFarmingAddressRule, newFarmingAddressItem)
   790  	}
   791  
   792  	logs, sub, err := _Camelotv3.contract.FilterLogs(opts, "FarmingAddress", newFarmingAddressRule)
   793  	if err != nil {
   794  		return nil, err
   795  	}
   796  	return &Camelotv3FarmingAddressIterator{contract: _Camelotv3.contract, event: "FarmingAddress", logs: logs, sub: sub}, nil
   797  }
   798  
   799  // WatchFarmingAddress is a free log subscription operation binding the contract event 0x56b9e8342f530796ceed0d5529abdcdeae6e4f2ac1dc456ceb73bbda898e0cd3.
   800  //
   801  // Solidity: event FarmingAddress(address indexed newFarmingAddress)
   802  func (_Camelotv3 *Camelotv3Filterer) WatchFarmingAddress(opts *bind.WatchOpts, sink chan<- *Camelotv3FarmingAddress, newFarmingAddress []common.Address) (event.Subscription, error) {
   803  
   804  	var newFarmingAddressRule []interface{}
   805  	for _, newFarmingAddressItem := range newFarmingAddress {
   806  		newFarmingAddressRule = append(newFarmingAddressRule, newFarmingAddressItem)
   807  	}
   808  
   809  	logs, sub, err := _Camelotv3.contract.WatchLogs(opts, "FarmingAddress", newFarmingAddressRule)
   810  	if err != nil {
   811  		return nil, err
   812  	}
   813  	return event.NewSubscription(func(quit <-chan struct{}) error {
   814  		defer sub.Unsubscribe()
   815  		for {
   816  			select {
   817  			case log := <-logs:
   818  				// New log arrived, parse the event and forward to the user
   819  				event := new(Camelotv3FarmingAddress)
   820  				if err := _Camelotv3.contract.UnpackLog(event, "FarmingAddress", log); err != nil {
   821  					return err
   822  				}
   823  				event.Raw = log
   824  
   825  				select {
   826  				case sink <- event:
   827  				case err := <-sub.Err():
   828  					return err
   829  				case <-quit:
   830  					return nil
   831  				}
   832  			case err := <-sub.Err():
   833  				return err
   834  			case <-quit:
   835  				return nil
   836  			}
   837  		}
   838  	}), nil
   839  }
   840  
   841  // ParseFarmingAddress is a log parse operation binding the contract event 0x56b9e8342f530796ceed0d5529abdcdeae6e4f2ac1dc456ceb73bbda898e0cd3.
   842  //
   843  // Solidity: event FarmingAddress(address indexed newFarmingAddress)
   844  func (_Camelotv3 *Camelotv3Filterer) ParseFarmingAddress(log types.Log) (*Camelotv3FarmingAddress, error) {
   845  	event := new(Camelotv3FarmingAddress)
   846  	if err := _Camelotv3.contract.UnpackLog(event, "FarmingAddress", log); err != nil {
   847  		return nil, err
   848  	}
   849  	event.Raw = log
   850  	return event, nil
   851  }
   852  
   853  // Camelotv3FeeConfigurationIterator is returned from FilterFeeConfiguration and is used to iterate over the raw logs and unpacked data for FeeConfiguration events raised by the Camelotv3 contract.
   854  type Camelotv3FeeConfigurationIterator struct {
   855  	Event *Camelotv3FeeConfiguration // Event containing the contract specifics and raw log
   856  
   857  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   858  	event    string              // Event name to use for unpacking event data
   859  
   860  	logs chan types.Log        // Log channel receiving the found contract events
   861  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   862  	done bool                  // Whether the subscription completed delivering logs
   863  	fail error                 // Occurred error to stop iteration
   864  }
   865  
   866  // Next advances the iterator to the subsequent event, returning whether there
   867  // are any more events found. In case of a retrieval or parsing error, false is
   868  // returned and Error() can be queried for the exact failure.
   869  func (it *Camelotv3FeeConfigurationIterator) Next() bool {
   870  	// If the iterator failed, stop iterating
   871  	if it.fail != nil {
   872  		return false
   873  	}
   874  	// If the iterator completed, deliver directly whatever's available
   875  	if it.done {
   876  		select {
   877  		case log := <-it.logs:
   878  			it.Event = new(Camelotv3FeeConfiguration)
   879  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   880  				it.fail = err
   881  				return false
   882  			}
   883  			it.Event.Raw = log
   884  			return true
   885  
   886  		default:
   887  			return false
   888  		}
   889  	}
   890  	// Iterator still in progress, wait for either a data or an error event
   891  	select {
   892  	case log := <-it.logs:
   893  		it.Event = new(Camelotv3FeeConfiguration)
   894  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   895  			it.fail = err
   896  			return false
   897  		}
   898  		it.Event.Raw = log
   899  		return true
   900  
   901  	case err := <-it.sub.Err():
   902  		it.done = true
   903  		it.fail = err
   904  		return it.Next()
   905  	}
   906  }
   907  
   908  // Error returns any retrieval or parsing error occurred during filtering.
   909  func (it *Camelotv3FeeConfigurationIterator) Error() error {
   910  	return it.fail
   911  }
   912  
   913  // Close terminates the iteration process, releasing any pending underlying
   914  // resources.
   915  func (it *Camelotv3FeeConfigurationIterator) Close() error {
   916  	it.sub.Unsubscribe()
   917  	return nil
   918  }
   919  
   920  // Camelotv3FeeConfiguration represents a FeeConfiguration event raised by the Camelotv3 contract.
   921  type Camelotv3FeeConfiguration struct {
   922  	Alpha1      uint16
   923  	Alpha2      uint16
   924  	Beta1       uint32
   925  	Beta2       uint32
   926  	Gamma1      uint16
   927  	Gamma2      uint16
   928  	VolumeBeta  uint32
   929  	VolumeGamma uint16
   930  	BaseFee     uint16
   931  	Raw         types.Log // Blockchain specific contextual infos
   932  }
   933  
   934  // FilterFeeConfiguration is a free log retrieval operation binding the contract event 0x4035ab409f15e202f9f114632e1fb14a0552325955722be18503403e7f98730c.
   935  //
   936  // Solidity: event FeeConfiguration(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee)
   937  func (_Camelotv3 *Camelotv3Filterer) FilterFeeConfiguration(opts *bind.FilterOpts) (*Camelotv3FeeConfigurationIterator, error) {
   938  
   939  	logs, sub, err := _Camelotv3.contract.FilterLogs(opts, "FeeConfiguration")
   940  	if err != nil {
   941  		return nil, err
   942  	}
   943  	return &Camelotv3FeeConfigurationIterator{contract: _Camelotv3.contract, event: "FeeConfiguration", logs: logs, sub: sub}, nil
   944  }
   945  
   946  // WatchFeeConfiguration is a free log subscription operation binding the contract event 0x4035ab409f15e202f9f114632e1fb14a0552325955722be18503403e7f98730c.
   947  //
   948  // Solidity: event FeeConfiguration(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee)
   949  func (_Camelotv3 *Camelotv3Filterer) WatchFeeConfiguration(opts *bind.WatchOpts, sink chan<- *Camelotv3FeeConfiguration) (event.Subscription, error) {
   950  
   951  	logs, sub, err := _Camelotv3.contract.WatchLogs(opts, "FeeConfiguration")
   952  	if err != nil {
   953  		return nil, err
   954  	}
   955  	return event.NewSubscription(func(quit <-chan struct{}) error {
   956  		defer sub.Unsubscribe()
   957  		for {
   958  			select {
   959  			case log := <-logs:
   960  				// New log arrived, parse the event and forward to the user
   961  				event := new(Camelotv3FeeConfiguration)
   962  				if err := _Camelotv3.contract.UnpackLog(event, "FeeConfiguration", log); err != nil {
   963  					return err
   964  				}
   965  				event.Raw = log
   966  
   967  				select {
   968  				case sink <- event:
   969  				case err := <-sub.Err():
   970  					return err
   971  				case <-quit:
   972  					return nil
   973  				}
   974  			case err := <-sub.Err():
   975  				return err
   976  			case <-quit:
   977  				return nil
   978  			}
   979  		}
   980  	}), nil
   981  }
   982  
   983  // ParseFeeConfiguration is a log parse operation binding the contract event 0x4035ab409f15e202f9f114632e1fb14a0552325955722be18503403e7f98730c.
   984  //
   985  // Solidity: event FeeConfiguration(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee)
   986  func (_Camelotv3 *Camelotv3Filterer) ParseFeeConfiguration(log types.Log) (*Camelotv3FeeConfiguration, error) {
   987  	event := new(Camelotv3FeeConfiguration)
   988  	if err := _Camelotv3.contract.UnpackLog(event, "FeeConfiguration", log); err != nil {
   989  		return nil, err
   990  	}
   991  	event.Raw = log
   992  	return event, nil
   993  }
   994  
   995  // Camelotv3OwnerIterator is returned from FilterOwner and is used to iterate over the raw logs and unpacked data for Owner events raised by the Camelotv3 contract.
   996  type Camelotv3OwnerIterator struct {
   997  	Event *Camelotv3Owner // Event containing the contract specifics and raw log
   998  
   999  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1000  	event    string              // Event name to use for unpacking event data
  1001  
  1002  	logs chan types.Log        // Log channel receiving the found contract events
  1003  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1004  	done bool                  // Whether the subscription completed delivering logs
  1005  	fail error                 // Occurred error to stop iteration
  1006  }
  1007  
  1008  // Next advances the iterator to the subsequent event, returning whether there
  1009  // are any more events found. In case of a retrieval or parsing error, false is
  1010  // returned and Error() can be queried for the exact failure.
  1011  func (it *Camelotv3OwnerIterator) Next() bool {
  1012  	// If the iterator failed, stop iterating
  1013  	if it.fail != nil {
  1014  		return false
  1015  	}
  1016  	// If the iterator completed, deliver directly whatever's available
  1017  	if it.done {
  1018  		select {
  1019  		case log := <-it.logs:
  1020  			it.Event = new(Camelotv3Owner)
  1021  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1022  				it.fail = err
  1023  				return false
  1024  			}
  1025  			it.Event.Raw = log
  1026  			return true
  1027  
  1028  		default:
  1029  			return false
  1030  		}
  1031  	}
  1032  	// Iterator still in progress, wait for either a data or an error event
  1033  	select {
  1034  	case log := <-it.logs:
  1035  		it.Event = new(Camelotv3Owner)
  1036  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1037  			it.fail = err
  1038  			return false
  1039  		}
  1040  		it.Event.Raw = log
  1041  		return true
  1042  
  1043  	case err := <-it.sub.Err():
  1044  		it.done = true
  1045  		it.fail = err
  1046  		return it.Next()
  1047  	}
  1048  }
  1049  
  1050  // Error returns any retrieval or parsing error occurred during filtering.
  1051  func (it *Camelotv3OwnerIterator) Error() error {
  1052  	return it.fail
  1053  }
  1054  
  1055  // Close terminates the iteration process, releasing any pending underlying
  1056  // resources.
  1057  func (it *Camelotv3OwnerIterator) Close() error {
  1058  	it.sub.Unsubscribe()
  1059  	return nil
  1060  }
  1061  
  1062  // Camelotv3Owner represents a Owner event raised by the Camelotv3 contract.
  1063  type Camelotv3Owner struct {
  1064  	NewOwner common.Address
  1065  	Raw      types.Log // Blockchain specific contextual infos
  1066  }
  1067  
  1068  // FilterOwner is a free log retrieval operation binding the contract event 0xa5e220c2c27d986cc8efeafa8f34ba6ea6bf96a34e146b29b6bdd8587771b130.
  1069  //
  1070  // Solidity: event Owner(address indexed newOwner)
  1071  func (_Camelotv3 *Camelotv3Filterer) FilterOwner(opts *bind.FilterOpts, newOwner []common.Address) (*Camelotv3OwnerIterator, error) {
  1072  
  1073  	var newOwnerRule []interface{}
  1074  	for _, newOwnerItem := range newOwner {
  1075  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  1076  	}
  1077  
  1078  	logs, sub, err := _Camelotv3.contract.FilterLogs(opts, "Owner", newOwnerRule)
  1079  	if err != nil {
  1080  		return nil, err
  1081  	}
  1082  	return &Camelotv3OwnerIterator{contract: _Camelotv3.contract, event: "Owner", logs: logs, sub: sub}, nil
  1083  }
  1084  
  1085  // WatchOwner is a free log subscription operation binding the contract event 0xa5e220c2c27d986cc8efeafa8f34ba6ea6bf96a34e146b29b6bdd8587771b130.
  1086  //
  1087  // Solidity: event Owner(address indexed newOwner)
  1088  func (_Camelotv3 *Camelotv3Filterer) WatchOwner(opts *bind.WatchOpts, sink chan<- *Camelotv3Owner, newOwner []common.Address) (event.Subscription, error) {
  1089  
  1090  	var newOwnerRule []interface{}
  1091  	for _, newOwnerItem := range newOwner {
  1092  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  1093  	}
  1094  
  1095  	logs, sub, err := _Camelotv3.contract.WatchLogs(opts, "Owner", newOwnerRule)
  1096  	if err != nil {
  1097  		return nil, err
  1098  	}
  1099  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1100  		defer sub.Unsubscribe()
  1101  		for {
  1102  			select {
  1103  			case log := <-logs:
  1104  				// New log arrived, parse the event and forward to the user
  1105  				event := new(Camelotv3Owner)
  1106  				if err := _Camelotv3.contract.UnpackLog(event, "Owner", log); err != nil {
  1107  					return err
  1108  				}
  1109  				event.Raw = log
  1110  
  1111  				select {
  1112  				case sink <- event:
  1113  				case err := <-sub.Err():
  1114  					return err
  1115  				case <-quit:
  1116  					return nil
  1117  				}
  1118  			case err := <-sub.Err():
  1119  				return err
  1120  			case <-quit:
  1121  				return nil
  1122  			}
  1123  		}
  1124  	}), nil
  1125  }
  1126  
  1127  // ParseOwner is a log parse operation binding the contract event 0xa5e220c2c27d986cc8efeafa8f34ba6ea6bf96a34e146b29b6bdd8587771b130.
  1128  //
  1129  // Solidity: event Owner(address indexed newOwner)
  1130  func (_Camelotv3 *Camelotv3Filterer) ParseOwner(log types.Log) (*Camelotv3Owner, error) {
  1131  	event := new(Camelotv3Owner)
  1132  	if err := _Camelotv3.contract.UnpackLog(event, "Owner", log); err != nil {
  1133  		return nil, err
  1134  	}
  1135  	event.Raw = log
  1136  	return event, nil
  1137  }
  1138  
  1139  // Camelotv3PoolIterator is returned from FilterPool and is used to iterate over the raw logs and unpacked data for Pool events raised by the Camelotv3 contract.
  1140  type Camelotv3PoolIterator struct {
  1141  	Event *Camelotv3Pool // Event containing the contract specifics and raw log
  1142  
  1143  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1144  	event    string              // Event name to use for unpacking event data
  1145  
  1146  	logs chan types.Log        // Log channel receiving the found contract events
  1147  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1148  	done bool                  // Whether the subscription completed delivering logs
  1149  	fail error                 // Occurred error to stop iteration
  1150  }
  1151  
  1152  // Next advances the iterator to the subsequent event, returning whether there
  1153  // are any more events found. In case of a retrieval or parsing error, false is
  1154  // returned and Error() can be queried for the exact failure.
  1155  func (it *Camelotv3PoolIterator) Next() bool {
  1156  	// If the iterator failed, stop iterating
  1157  	if it.fail != nil {
  1158  		return false
  1159  	}
  1160  	// If the iterator completed, deliver directly whatever's available
  1161  	if it.done {
  1162  		select {
  1163  		case log := <-it.logs:
  1164  			it.Event = new(Camelotv3Pool)
  1165  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1166  				it.fail = err
  1167  				return false
  1168  			}
  1169  			it.Event.Raw = log
  1170  			return true
  1171  
  1172  		default:
  1173  			return false
  1174  		}
  1175  	}
  1176  	// Iterator still in progress, wait for either a data or an error event
  1177  	select {
  1178  	case log := <-it.logs:
  1179  		it.Event = new(Camelotv3Pool)
  1180  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1181  			it.fail = err
  1182  			return false
  1183  		}
  1184  		it.Event.Raw = log
  1185  		return true
  1186  
  1187  	case err := <-it.sub.Err():
  1188  		it.done = true
  1189  		it.fail = err
  1190  		return it.Next()
  1191  	}
  1192  }
  1193  
  1194  // Error returns any retrieval or parsing error occurred during filtering.
  1195  func (it *Camelotv3PoolIterator) Error() error {
  1196  	return it.fail
  1197  }
  1198  
  1199  // Close terminates the iteration process, releasing any pending underlying
  1200  // resources.
  1201  func (it *Camelotv3PoolIterator) Close() error {
  1202  	it.sub.Unsubscribe()
  1203  	return nil
  1204  }
  1205  
  1206  // Camelotv3Pool represents a Pool event raised by the Camelotv3 contract.
  1207  type Camelotv3Pool struct {
  1208  	Token0 common.Address
  1209  	Token1 common.Address
  1210  	Pool   common.Address
  1211  	Raw    types.Log // Blockchain specific contextual infos
  1212  }
  1213  
  1214  // FilterPool is a free log retrieval operation binding the contract event 0x91ccaa7a278130b65168c3a0c8d3bcae84cf5e43704342bd3ec0b59e59c036db.
  1215  //
  1216  // Solidity: event Pool(address indexed token0, address indexed token1, address pool)
  1217  func (_Camelotv3 *Camelotv3Filterer) FilterPool(opts *bind.FilterOpts, token0 []common.Address, token1 []common.Address) (*Camelotv3PoolIterator, error) {
  1218  
  1219  	var token0Rule []interface{}
  1220  	for _, token0Item := range token0 {
  1221  		token0Rule = append(token0Rule, token0Item)
  1222  	}
  1223  	var token1Rule []interface{}
  1224  	for _, token1Item := range token1 {
  1225  		token1Rule = append(token1Rule, token1Item)
  1226  	}
  1227  
  1228  	logs, sub, err := _Camelotv3.contract.FilterLogs(opts, "Pool", token0Rule, token1Rule)
  1229  	if err != nil {
  1230  		return nil, err
  1231  	}
  1232  	return &Camelotv3PoolIterator{contract: _Camelotv3.contract, event: "Pool", logs: logs, sub: sub}, nil
  1233  }
  1234  
  1235  // WatchPool is a free log subscription operation binding the contract event 0x91ccaa7a278130b65168c3a0c8d3bcae84cf5e43704342bd3ec0b59e59c036db.
  1236  //
  1237  // Solidity: event Pool(address indexed token0, address indexed token1, address pool)
  1238  func (_Camelotv3 *Camelotv3Filterer) WatchPool(opts *bind.WatchOpts, sink chan<- *Camelotv3Pool, token0 []common.Address, token1 []common.Address) (event.Subscription, error) {
  1239  
  1240  	var token0Rule []interface{}
  1241  	for _, token0Item := range token0 {
  1242  		token0Rule = append(token0Rule, token0Item)
  1243  	}
  1244  	var token1Rule []interface{}
  1245  	for _, token1Item := range token1 {
  1246  		token1Rule = append(token1Rule, token1Item)
  1247  	}
  1248  
  1249  	logs, sub, err := _Camelotv3.contract.WatchLogs(opts, "Pool", token0Rule, token1Rule)
  1250  	if err != nil {
  1251  		return nil, err
  1252  	}
  1253  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1254  		defer sub.Unsubscribe()
  1255  		for {
  1256  			select {
  1257  			case log := <-logs:
  1258  				// New log arrived, parse the event and forward to the user
  1259  				event := new(Camelotv3Pool)
  1260  				if err := _Camelotv3.contract.UnpackLog(event, "Pool", log); err != nil {
  1261  					return err
  1262  				}
  1263  				event.Raw = log
  1264  
  1265  				select {
  1266  				case sink <- event:
  1267  				case err := <-sub.Err():
  1268  					return err
  1269  				case <-quit:
  1270  					return nil
  1271  				}
  1272  			case err := <-sub.Err():
  1273  				return err
  1274  			case <-quit:
  1275  				return nil
  1276  			}
  1277  		}
  1278  	}), nil
  1279  }
  1280  
  1281  // ParsePool is a log parse operation binding the contract event 0x91ccaa7a278130b65168c3a0c8d3bcae84cf5e43704342bd3ec0b59e59c036db.
  1282  //
  1283  // Solidity: event Pool(address indexed token0, address indexed token1, address pool)
  1284  func (_Camelotv3 *Camelotv3Filterer) ParsePool(log types.Log) (*Camelotv3Pool, error) {
  1285  	event := new(Camelotv3Pool)
  1286  	if err := _Camelotv3.contract.UnpackLog(event, "Pool", log); err != nil {
  1287  		return nil, err
  1288  	}
  1289  	event.Raw = log
  1290  	return event, nil
  1291  }
  1292  
  1293  // Camelotv3VaultAddressIterator is returned from FilterVaultAddress and is used to iterate over the raw logs and unpacked data for VaultAddress events raised by the Camelotv3 contract.
  1294  type Camelotv3VaultAddressIterator struct {
  1295  	Event *Camelotv3VaultAddress // Event containing the contract specifics and raw log
  1296  
  1297  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1298  	event    string              // Event name to use for unpacking event data
  1299  
  1300  	logs chan types.Log        // Log channel receiving the found contract events
  1301  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1302  	done bool                  // Whether the subscription completed delivering logs
  1303  	fail error                 // Occurred error to stop iteration
  1304  }
  1305  
  1306  // Next advances the iterator to the subsequent event, returning whether there
  1307  // are any more events found. In case of a retrieval or parsing error, false is
  1308  // returned and Error() can be queried for the exact failure.
  1309  func (it *Camelotv3VaultAddressIterator) Next() bool {
  1310  	// If the iterator failed, stop iterating
  1311  	if it.fail != nil {
  1312  		return false
  1313  	}
  1314  	// If the iterator completed, deliver directly whatever's available
  1315  	if it.done {
  1316  		select {
  1317  		case log := <-it.logs:
  1318  			it.Event = new(Camelotv3VaultAddress)
  1319  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1320  				it.fail = err
  1321  				return false
  1322  			}
  1323  			it.Event.Raw = log
  1324  			return true
  1325  
  1326  		default:
  1327  			return false
  1328  		}
  1329  	}
  1330  	// Iterator still in progress, wait for either a data or an error event
  1331  	select {
  1332  	case log := <-it.logs:
  1333  		it.Event = new(Camelotv3VaultAddress)
  1334  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1335  			it.fail = err
  1336  			return false
  1337  		}
  1338  		it.Event.Raw = log
  1339  		return true
  1340  
  1341  	case err := <-it.sub.Err():
  1342  		it.done = true
  1343  		it.fail = err
  1344  		return it.Next()
  1345  	}
  1346  }
  1347  
  1348  // Error returns any retrieval or parsing error occurred during filtering.
  1349  func (it *Camelotv3VaultAddressIterator) Error() error {
  1350  	return it.fail
  1351  }
  1352  
  1353  // Close terminates the iteration process, releasing any pending underlying
  1354  // resources.
  1355  func (it *Camelotv3VaultAddressIterator) Close() error {
  1356  	it.sub.Unsubscribe()
  1357  	return nil
  1358  }
  1359  
  1360  // Camelotv3VaultAddress represents a VaultAddress event raised by the Camelotv3 contract.
  1361  type Camelotv3VaultAddress struct {
  1362  	NewVaultAddress common.Address
  1363  	Raw             types.Log // Blockchain specific contextual infos
  1364  }
  1365  
  1366  // FilterVaultAddress is a free log retrieval operation binding the contract event 0xb9c265ae4414f501736ec5d4961edc3309e4385eb2ff3feeecb30fb36621dd83.
  1367  //
  1368  // Solidity: event VaultAddress(address indexed newVaultAddress)
  1369  func (_Camelotv3 *Camelotv3Filterer) FilterVaultAddress(opts *bind.FilterOpts, newVaultAddress []common.Address) (*Camelotv3VaultAddressIterator, error) {
  1370  
  1371  	var newVaultAddressRule []interface{}
  1372  	for _, newVaultAddressItem := range newVaultAddress {
  1373  		newVaultAddressRule = append(newVaultAddressRule, newVaultAddressItem)
  1374  	}
  1375  
  1376  	logs, sub, err := _Camelotv3.contract.FilterLogs(opts, "VaultAddress", newVaultAddressRule)
  1377  	if err != nil {
  1378  		return nil, err
  1379  	}
  1380  	return &Camelotv3VaultAddressIterator{contract: _Camelotv3.contract, event: "VaultAddress", logs: logs, sub: sub}, nil
  1381  }
  1382  
  1383  // WatchVaultAddress is a free log subscription operation binding the contract event 0xb9c265ae4414f501736ec5d4961edc3309e4385eb2ff3feeecb30fb36621dd83.
  1384  //
  1385  // Solidity: event VaultAddress(address indexed newVaultAddress)
  1386  func (_Camelotv3 *Camelotv3Filterer) WatchVaultAddress(opts *bind.WatchOpts, sink chan<- *Camelotv3VaultAddress, newVaultAddress []common.Address) (event.Subscription, error) {
  1387  
  1388  	var newVaultAddressRule []interface{}
  1389  	for _, newVaultAddressItem := range newVaultAddress {
  1390  		newVaultAddressRule = append(newVaultAddressRule, newVaultAddressItem)
  1391  	}
  1392  
  1393  	logs, sub, err := _Camelotv3.contract.WatchLogs(opts, "VaultAddress", newVaultAddressRule)
  1394  	if err != nil {
  1395  		return nil, err
  1396  	}
  1397  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1398  		defer sub.Unsubscribe()
  1399  		for {
  1400  			select {
  1401  			case log := <-logs:
  1402  				// New log arrived, parse the event and forward to the user
  1403  				event := new(Camelotv3VaultAddress)
  1404  				if err := _Camelotv3.contract.UnpackLog(event, "VaultAddress", log); err != nil {
  1405  					return err
  1406  				}
  1407  				event.Raw = log
  1408  
  1409  				select {
  1410  				case sink <- event:
  1411  				case err := <-sub.Err():
  1412  					return err
  1413  				case <-quit:
  1414  					return nil
  1415  				}
  1416  			case err := <-sub.Err():
  1417  				return err
  1418  			case <-quit:
  1419  				return nil
  1420  			}
  1421  		}
  1422  	}), nil
  1423  }
  1424  
  1425  // ParseVaultAddress is a log parse operation binding the contract event 0xb9c265ae4414f501736ec5d4961edc3309e4385eb2ff3feeecb30fb36621dd83.
  1426  //
  1427  // Solidity: event VaultAddress(address indexed newVaultAddress)
  1428  func (_Camelotv3 *Camelotv3Filterer) ParseVaultAddress(log types.Log) (*Camelotv3VaultAddress, error) {
  1429  	event := new(Camelotv3VaultAddress)
  1430  	if err := _Camelotv3.contract.UnpackLog(event, "VaultAddress", log); err != nil {
  1431  		return nil, err
  1432  	}
  1433  	event.Raw = log
  1434  	return event, nil
  1435  }