github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/exchange-scrapers/camelotv3/camelotv3pair/camelotv3pair.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 camelotv3pair
     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  // Camelotv3pairMetaData contains all meta data concerning the Camelotv3pair contract.
    33  var Camelotv3pairMetaData = &bind.MetaData{
    34  	ABI: "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"DrainWrongToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"token0FeePercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"token1FeePercent\",\"type\":\"uint16\"}],\"name\":\"FeePercentUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SetPairTypeImmutable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"prevStableSwap\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"stableSwap\",\"type\":\"bool\"}],\"name\":\"SetStableSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Skim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"FEE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_FEE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"drainWrongToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint16\",\"name\":\"_token0FeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_token1FeePercent\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pairTypeImmutable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"precisionMultiplier0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"precisionMultiplier1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newToken0FeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"newToken1FeePercent\",\"type\":\"uint16\"}],\"name\":\"setFeePercent\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"setPairTypeImmutable\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"stable\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"expectedReserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"expectedReserve1\",\"type\":\"uint112\"}],\"name\":\"setStableSwap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stableSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token0FeePercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token1FeePercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
    35  }
    36  
    37  // Camelotv3pairABI is the input ABI used to generate the binding from.
    38  // Deprecated: Use Camelotv3pairMetaData.ABI instead.
    39  var Camelotv3pairABI = Camelotv3pairMetaData.ABI
    40  
    41  // Camelotv3pair is an auto generated Go binding around an Ethereum contract.
    42  type Camelotv3pair struct {
    43  	Camelotv3pairCaller     // Read-only binding to the contract
    44  	Camelotv3pairTransactor // Write-only binding to the contract
    45  	Camelotv3pairFilterer   // Log filterer for contract events
    46  }
    47  
    48  // Camelotv3pairCaller is an auto generated read-only Go binding around an Ethereum contract.
    49  type Camelotv3pairCaller struct {
    50  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    51  }
    52  
    53  // Camelotv3pairTransactor is an auto generated write-only Go binding around an Ethereum contract.
    54  type Camelotv3pairTransactor struct {
    55  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    56  }
    57  
    58  // Camelotv3pairFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    59  type Camelotv3pairFilterer struct {
    60  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    61  }
    62  
    63  // Camelotv3pairSession is an auto generated Go binding around an Ethereum contract,
    64  // with pre-set call and transact options.
    65  type Camelotv3pairSession struct {
    66  	Contract     *Camelotv3pair    // 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  // Camelotv3pairCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    72  // with pre-set call options.
    73  type Camelotv3pairCallerSession struct {
    74  	Contract *Camelotv3pairCaller // Generic contract caller binding to set the session for
    75  	CallOpts bind.CallOpts        // Call options to use throughout this session
    76  }
    77  
    78  // Camelotv3pairTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    79  // with pre-set transact options.
    80  type Camelotv3pairTransactorSession struct {
    81  	Contract     *Camelotv3pairTransactor // Generic contract transactor binding to set the session for
    82  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
    83  }
    84  
    85  // Camelotv3pairRaw is an auto generated low-level Go binding around an Ethereum contract.
    86  type Camelotv3pairRaw struct {
    87  	Contract *Camelotv3pair // Generic contract binding to access the raw methods on
    88  }
    89  
    90  // Camelotv3pairCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    91  type Camelotv3pairCallerRaw struct {
    92  	Contract *Camelotv3pairCaller // Generic read-only contract binding to access the raw methods on
    93  }
    94  
    95  // Camelotv3pairTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    96  type Camelotv3pairTransactorRaw struct {
    97  	Contract *Camelotv3pairTransactor // Generic write-only contract binding to access the raw methods on
    98  }
    99  
   100  // NewCamelotv3pair creates a new instance of Camelotv3pair, bound to a specific deployed contract.
   101  func NewCamelotv3pair(address common.Address, backend bind.ContractBackend) (*Camelotv3pair, error) {
   102  	contract, err := bindCamelotv3pair(address, backend, backend, backend)
   103  	if err != nil {
   104  		return nil, err
   105  	}
   106  	return &Camelotv3pair{Camelotv3pairCaller: Camelotv3pairCaller{contract: contract}, Camelotv3pairTransactor: Camelotv3pairTransactor{contract: contract}, Camelotv3pairFilterer: Camelotv3pairFilterer{contract: contract}}, nil
   107  }
   108  
   109  // NewCamelotv3pairCaller creates a new read-only instance of Camelotv3pair, bound to a specific deployed contract.
   110  func NewCamelotv3pairCaller(address common.Address, caller bind.ContractCaller) (*Camelotv3pairCaller, error) {
   111  	contract, err := bindCamelotv3pair(address, caller, nil, nil)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	return &Camelotv3pairCaller{contract: contract}, nil
   116  }
   117  
   118  // NewCamelotv3pairTransactor creates a new write-only instance of Camelotv3pair, bound to a specific deployed contract.
   119  func NewCamelotv3pairTransactor(address common.Address, transactor bind.ContractTransactor) (*Camelotv3pairTransactor, error) {
   120  	contract, err := bindCamelotv3pair(address, nil, transactor, nil)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &Camelotv3pairTransactor{contract: contract}, nil
   125  }
   126  
   127  // NewCamelotv3pairFilterer creates a new log filterer instance of Camelotv3pair, bound to a specific deployed contract.
   128  func NewCamelotv3pairFilterer(address common.Address, filterer bind.ContractFilterer) (*Camelotv3pairFilterer, error) {
   129  	contract, err := bindCamelotv3pair(address, nil, nil, filterer)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return &Camelotv3pairFilterer{contract: contract}, nil
   134  }
   135  
   136  // bindCamelotv3pair binds a generic wrapper to an already deployed contract.
   137  func bindCamelotv3pair(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   138  	parsed, err := Camelotv3pairMetaData.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 (_Camelotv3pair *Camelotv3pairRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   150  	return _Camelotv3pair.Contract.Camelotv3pairCaller.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 (_Camelotv3pair *Camelotv3pairRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   156  	return _Camelotv3pair.Contract.Camelotv3pairTransactor.contract.Transfer(opts)
   157  }
   158  
   159  // Transact invokes the (paid) contract method with params as input values.
   160  func (_Camelotv3pair *Camelotv3pairRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   161  	return _Camelotv3pair.Contract.Camelotv3pairTransactor.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 (_Camelotv3pair *Camelotv3pairCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   169  	return _Camelotv3pair.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 (_Camelotv3pair *Camelotv3pairTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   175  	return _Camelotv3pair.Contract.contract.Transfer(opts)
   176  }
   177  
   178  // Transact invokes the (paid) contract method with params as input values.
   179  func (_Camelotv3pair *Camelotv3pairTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   180  	return _Camelotv3pair.Contract.contract.Transact(opts, method, params...)
   181  }
   182  
   183  // DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515.
   184  //
   185  // Solidity: function DOMAIN_SEPARATOR() view returns(bytes32)
   186  func (_Camelotv3pair *Camelotv3pairCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) {
   187  	var out []interface{}
   188  	err := _Camelotv3pair.contract.Call(opts, &out, "DOMAIN_SEPARATOR")
   189  
   190  	if err != nil {
   191  		return *new([32]byte), err
   192  	}
   193  
   194  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
   195  
   196  	return out0, err
   197  
   198  }
   199  
   200  // DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515.
   201  //
   202  // Solidity: function DOMAIN_SEPARATOR() view returns(bytes32)
   203  func (_Camelotv3pair *Camelotv3pairSession) DOMAINSEPARATOR() ([32]byte, error) {
   204  	return _Camelotv3pair.Contract.DOMAINSEPARATOR(&_Camelotv3pair.CallOpts)
   205  }
   206  
   207  // DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515.
   208  //
   209  // Solidity: function DOMAIN_SEPARATOR() view returns(bytes32)
   210  func (_Camelotv3pair *Camelotv3pairCallerSession) DOMAINSEPARATOR() ([32]byte, error) {
   211  	return _Camelotv3pair.Contract.DOMAINSEPARATOR(&_Camelotv3pair.CallOpts)
   212  }
   213  
   214  // FEEDENOMINATOR is a free data retrieval call binding the contract method 0xd73792a9.
   215  //
   216  // Solidity: function FEE_DENOMINATOR() view returns(uint256)
   217  func (_Camelotv3pair *Camelotv3pairCaller) FEEDENOMINATOR(opts *bind.CallOpts) (*big.Int, error) {
   218  	var out []interface{}
   219  	err := _Camelotv3pair.contract.Call(opts, &out, "FEE_DENOMINATOR")
   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  // FEEDENOMINATOR is a free data retrieval call binding the contract method 0xd73792a9.
   232  //
   233  // Solidity: function FEE_DENOMINATOR() view returns(uint256)
   234  func (_Camelotv3pair *Camelotv3pairSession) FEEDENOMINATOR() (*big.Int, error) {
   235  	return _Camelotv3pair.Contract.FEEDENOMINATOR(&_Camelotv3pair.CallOpts)
   236  }
   237  
   238  // FEEDENOMINATOR is a free data retrieval call binding the contract method 0xd73792a9.
   239  //
   240  // Solidity: function FEE_DENOMINATOR() view returns(uint256)
   241  func (_Camelotv3pair *Camelotv3pairCallerSession) FEEDENOMINATOR() (*big.Int, error) {
   242  	return _Camelotv3pair.Contract.FEEDENOMINATOR(&_Camelotv3pair.CallOpts)
   243  }
   244  
   245  // MAXFEEPERCENT is a free data retrieval call binding the contract method 0x67d81740.
   246  //
   247  // Solidity: function MAX_FEE_PERCENT() view returns(uint256)
   248  func (_Camelotv3pair *Camelotv3pairCaller) MAXFEEPERCENT(opts *bind.CallOpts) (*big.Int, error) {
   249  	var out []interface{}
   250  	err := _Camelotv3pair.contract.Call(opts, &out, "MAX_FEE_PERCENT")
   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  // MAXFEEPERCENT is a free data retrieval call binding the contract method 0x67d81740.
   263  //
   264  // Solidity: function MAX_FEE_PERCENT() view returns(uint256)
   265  func (_Camelotv3pair *Camelotv3pairSession) MAXFEEPERCENT() (*big.Int, error) {
   266  	return _Camelotv3pair.Contract.MAXFEEPERCENT(&_Camelotv3pair.CallOpts)
   267  }
   268  
   269  // MAXFEEPERCENT is a free data retrieval call binding the contract method 0x67d81740.
   270  //
   271  // Solidity: function MAX_FEE_PERCENT() view returns(uint256)
   272  func (_Camelotv3pair *Camelotv3pairCallerSession) MAXFEEPERCENT() (*big.Int, error) {
   273  	return _Camelotv3pair.Contract.MAXFEEPERCENT(&_Camelotv3pair.CallOpts)
   274  }
   275  
   276  // MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56.
   277  //
   278  // Solidity: function MINIMUM_LIQUIDITY() view returns(uint256)
   279  func (_Camelotv3pair *Camelotv3pairCaller) MINIMUMLIQUIDITY(opts *bind.CallOpts) (*big.Int, error) {
   280  	var out []interface{}
   281  	err := _Camelotv3pair.contract.Call(opts, &out, "MINIMUM_LIQUIDITY")
   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  // MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56.
   294  //
   295  // Solidity: function MINIMUM_LIQUIDITY() view returns(uint256)
   296  func (_Camelotv3pair *Camelotv3pairSession) MINIMUMLIQUIDITY() (*big.Int, error) {
   297  	return _Camelotv3pair.Contract.MINIMUMLIQUIDITY(&_Camelotv3pair.CallOpts)
   298  }
   299  
   300  // MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56.
   301  //
   302  // Solidity: function MINIMUM_LIQUIDITY() view returns(uint256)
   303  func (_Camelotv3pair *Camelotv3pairCallerSession) MINIMUMLIQUIDITY() (*big.Int, error) {
   304  	return _Camelotv3pair.Contract.MINIMUMLIQUIDITY(&_Camelotv3pair.CallOpts)
   305  }
   306  
   307  // PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f.
   308  //
   309  // Solidity: function PERMIT_TYPEHASH() view returns(bytes32)
   310  func (_Camelotv3pair *Camelotv3pairCaller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
   311  	var out []interface{}
   312  	err := _Camelotv3pair.contract.Call(opts, &out, "PERMIT_TYPEHASH")
   313  
   314  	if err != nil {
   315  		return *new([32]byte), err
   316  	}
   317  
   318  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
   319  
   320  	return out0, err
   321  
   322  }
   323  
   324  // PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f.
   325  //
   326  // Solidity: function PERMIT_TYPEHASH() view returns(bytes32)
   327  func (_Camelotv3pair *Camelotv3pairSession) PERMITTYPEHASH() ([32]byte, error) {
   328  	return _Camelotv3pair.Contract.PERMITTYPEHASH(&_Camelotv3pair.CallOpts)
   329  }
   330  
   331  // PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f.
   332  //
   333  // Solidity: function PERMIT_TYPEHASH() view returns(bytes32)
   334  func (_Camelotv3pair *Camelotv3pairCallerSession) PERMITTYPEHASH() ([32]byte, error) {
   335  	return _Camelotv3pair.Contract.PERMITTYPEHASH(&_Camelotv3pair.CallOpts)
   336  }
   337  
   338  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   339  //
   340  // Solidity: function allowance(address , address ) view returns(uint256)
   341  func (_Camelotv3pair *Camelotv3pairCaller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) {
   342  	var out []interface{}
   343  	err := _Camelotv3pair.contract.Call(opts, &out, "allowance", arg0, arg1)
   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  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   356  //
   357  // Solidity: function allowance(address , address ) view returns(uint256)
   358  func (_Camelotv3pair *Camelotv3pairSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
   359  	return _Camelotv3pair.Contract.Allowance(&_Camelotv3pair.CallOpts, arg0, arg1)
   360  }
   361  
   362  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   363  //
   364  // Solidity: function allowance(address , address ) view returns(uint256)
   365  func (_Camelotv3pair *Camelotv3pairCallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
   366  	return _Camelotv3pair.Contract.Allowance(&_Camelotv3pair.CallOpts, arg0, arg1)
   367  }
   368  
   369  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   370  //
   371  // Solidity: function balanceOf(address ) view returns(uint256)
   372  func (_Camelotv3pair *Camelotv3pairCaller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   373  	var out []interface{}
   374  	err := _Camelotv3pair.contract.Call(opts, &out, "balanceOf", arg0)
   375  
   376  	if err != nil {
   377  		return *new(*big.Int), err
   378  	}
   379  
   380  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   381  
   382  	return out0, err
   383  
   384  }
   385  
   386  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   387  //
   388  // Solidity: function balanceOf(address ) view returns(uint256)
   389  func (_Camelotv3pair *Camelotv3pairSession) BalanceOf(arg0 common.Address) (*big.Int, error) {
   390  	return _Camelotv3pair.Contract.BalanceOf(&_Camelotv3pair.CallOpts, arg0)
   391  }
   392  
   393  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   394  //
   395  // Solidity: function balanceOf(address ) view returns(uint256)
   396  func (_Camelotv3pair *Camelotv3pairCallerSession) BalanceOf(arg0 common.Address) (*big.Int, error) {
   397  	return _Camelotv3pair.Contract.BalanceOf(&_Camelotv3pair.CallOpts, arg0)
   398  }
   399  
   400  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
   401  //
   402  // Solidity: function decimals() view returns(uint8)
   403  func (_Camelotv3pair *Camelotv3pairCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
   404  	var out []interface{}
   405  	err := _Camelotv3pair.contract.Call(opts, &out, "decimals")
   406  
   407  	if err != nil {
   408  		return *new(uint8), err
   409  	}
   410  
   411  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
   412  
   413  	return out0, err
   414  
   415  }
   416  
   417  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
   418  //
   419  // Solidity: function decimals() view returns(uint8)
   420  func (_Camelotv3pair *Camelotv3pairSession) Decimals() (uint8, error) {
   421  	return _Camelotv3pair.Contract.Decimals(&_Camelotv3pair.CallOpts)
   422  }
   423  
   424  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
   425  //
   426  // Solidity: function decimals() view returns(uint8)
   427  func (_Camelotv3pair *Camelotv3pairCallerSession) Decimals() (uint8, error) {
   428  	return _Camelotv3pair.Contract.Decimals(&_Camelotv3pair.CallOpts)
   429  }
   430  
   431  // Factory is a free data retrieval call binding the contract method 0xc45a0155.
   432  //
   433  // Solidity: function factory() view returns(address)
   434  func (_Camelotv3pair *Camelotv3pairCaller) Factory(opts *bind.CallOpts) (common.Address, error) {
   435  	var out []interface{}
   436  	err := _Camelotv3pair.contract.Call(opts, &out, "factory")
   437  
   438  	if err != nil {
   439  		return *new(common.Address), err
   440  	}
   441  
   442  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   443  
   444  	return out0, err
   445  
   446  }
   447  
   448  // Factory is a free data retrieval call binding the contract method 0xc45a0155.
   449  //
   450  // Solidity: function factory() view returns(address)
   451  func (_Camelotv3pair *Camelotv3pairSession) Factory() (common.Address, error) {
   452  	return _Camelotv3pair.Contract.Factory(&_Camelotv3pair.CallOpts)
   453  }
   454  
   455  // Factory is a free data retrieval call binding the contract method 0xc45a0155.
   456  //
   457  // Solidity: function factory() view returns(address)
   458  func (_Camelotv3pair *Camelotv3pairCallerSession) Factory() (common.Address, error) {
   459  	return _Camelotv3pair.Contract.Factory(&_Camelotv3pair.CallOpts)
   460  }
   461  
   462  // GetAmountOut is a free data retrieval call binding the contract method 0xf140a35a.
   463  //
   464  // Solidity: function getAmountOut(uint256 amountIn, address tokenIn) view returns(uint256)
   465  func (_Camelotv3pair *Camelotv3pairCaller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, tokenIn common.Address) (*big.Int, error) {
   466  	var out []interface{}
   467  	err := _Camelotv3pair.contract.Call(opts, &out, "getAmountOut", amountIn, tokenIn)
   468  
   469  	if err != nil {
   470  		return *new(*big.Int), err
   471  	}
   472  
   473  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   474  
   475  	return out0, err
   476  
   477  }
   478  
   479  // GetAmountOut is a free data retrieval call binding the contract method 0xf140a35a.
   480  //
   481  // Solidity: function getAmountOut(uint256 amountIn, address tokenIn) view returns(uint256)
   482  func (_Camelotv3pair *Camelotv3pairSession) GetAmountOut(amountIn *big.Int, tokenIn common.Address) (*big.Int, error) {
   483  	return _Camelotv3pair.Contract.GetAmountOut(&_Camelotv3pair.CallOpts, amountIn, tokenIn)
   484  }
   485  
   486  // GetAmountOut is a free data retrieval call binding the contract method 0xf140a35a.
   487  //
   488  // Solidity: function getAmountOut(uint256 amountIn, address tokenIn) view returns(uint256)
   489  func (_Camelotv3pair *Camelotv3pairCallerSession) GetAmountOut(amountIn *big.Int, tokenIn common.Address) (*big.Int, error) {
   490  	return _Camelotv3pair.Contract.GetAmountOut(&_Camelotv3pair.CallOpts, amountIn, tokenIn)
   491  }
   492  
   493  // GetReserves is a free data retrieval call binding the contract method 0x0902f1ac.
   494  //
   495  // Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint16 _token0FeePercent, uint16 _token1FeePercent)
   496  func (_Camelotv3pair *Camelotv3pairCaller) GetReserves(opts *bind.CallOpts) (struct {
   497  	Reserve0         *big.Int
   498  	Reserve1         *big.Int
   499  	Token0FeePercent uint16
   500  	Token1FeePercent uint16
   501  }, error) {
   502  	var out []interface{}
   503  	err := _Camelotv3pair.contract.Call(opts, &out, "getReserves")
   504  
   505  	outstruct := new(struct {
   506  		Reserve0         *big.Int
   507  		Reserve1         *big.Int
   508  		Token0FeePercent uint16
   509  		Token1FeePercent uint16
   510  	})
   511  	if err != nil {
   512  		return *outstruct, err
   513  	}
   514  
   515  	outstruct.Reserve0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   516  	outstruct.Reserve1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   517  	outstruct.Token0FeePercent = *abi.ConvertType(out[2], new(uint16)).(*uint16)
   518  	outstruct.Token1FeePercent = *abi.ConvertType(out[3], new(uint16)).(*uint16)
   519  
   520  	return *outstruct, err
   521  
   522  }
   523  
   524  // GetReserves is a free data retrieval call binding the contract method 0x0902f1ac.
   525  //
   526  // Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint16 _token0FeePercent, uint16 _token1FeePercent)
   527  func (_Camelotv3pair *Camelotv3pairSession) GetReserves() (struct {
   528  	Reserve0         *big.Int
   529  	Reserve1         *big.Int
   530  	Token0FeePercent uint16
   531  	Token1FeePercent uint16
   532  }, error) {
   533  	return _Camelotv3pair.Contract.GetReserves(&_Camelotv3pair.CallOpts)
   534  }
   535  
   536  // GetReserves is a free data retrieval call binding the contract method 0x0902f1ac.
   537  //
   538  // Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint16 _token0FeePercent, uint16 _token1FeePercent)
   539  func (_Camelotv3pair *Camelotv3pairCallerSession) GetReserves() (struct {
   540  	Reserve0         *big.Int
   541  	Reserve1         *big.Int
   542  	Token0FeePercent uint16
   543  	Token1FeePercent uint16
   544  }, error) {
   545  	return _Camelotv3pair.Contract.GetReserves(&_Camelotv3pair.CallOpts)
   546  }
   547  
   548  // Initialized is a free data retrieval call binding the contract method 0x158ef93e.
   549  //
   550  // Solidity: function initialized() view returns(bool)
   551  func (_Camelotv3pair *Camelotv3pairCaller) Initialized(opts *bind.CallOpts) (bool, error) {
   552  	var out []interface{}
   553  	err := _Camelotv3pair.contract.Call(opts, &out, "initialized")
   554  
   555  	if err != nil {
   556  		return *new(bool), err
   557  	}
   558  
   559  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   560  
   561  	return out0, err
   562  
   563  }
   564  
   565  // Initialized is a free data retrieval call binding the contract method 0x158ef93e.
   566  //
   567  // Solidity: function initialized() view returns(bool)
   568  func (_Camelotv3pair *Camelotv3pairSession) Initialized() (bool, error) {
   569  	return _Camelotv3pair.Contract.Initialized(&_Camelotv3pair.CallOpts)
   570  }
   571  
   572  // Initialized is a free data retrieval call binding the contract method 0x158ef93e.
   573  //
   574  // Solidity: function initialized() view returns(bool)
   575  func (_Camelotv3pair *Camelotv3pairCallerSession) Initialized() (bool, error) {
   576  	return _Camelotv3pair.Contract.Initialized(&_Camelotv3pair.CallOpts)
   577  }
   578  
   579  // KLast is a free data retrieval call binding the contract method 0x7464fc3d.
   580  //
   581  // Solidity: function kLast() view returns(uint256)
   582  func (_Camelotv3pair *Camelotv3pairCaller) KLast(opts *bind.CallOpts) (*big.Int, error) {
   583  	var out []interface{}
   584  	err := _Camelotv3pair.contract.Call(opts, &out, "kLast")
   585  
   586  	if err != nil {
   587  		return *new(*big.Int), err
   588  	}
   589  
   590  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   591  
   592  	return out0, err
   593  
   594  }
   595  
   596  // KLast is a free data retrieval call binding the contract method 0x7464fc3d.
   597  //
   598  // Solidity: function kLast() view returns(uint256)
   599  func (_Camelotv3pair *Camelotv3pairSession) KLast() (*big.Int, error) {
   600  	return _Camelotv3pair.Contract.KLast(&_Camelotv3pair.CallOpts)
   601  }
   602  
   603  // KLast is a free data retrieval call binding the contract method 0x7464fc3d.
   604  //
   605  // Solidity: function kLast() view returns(uint256)
   606  func (_Camelotv3pair *Camelotv3pairCallerSession) KLast() (*big.Int, error) {
   607  	return _Camelotv3pair.Contract.KLast(&_Camelotv3pair.CallOpts)
   608  }
   609  
   610  // Name is a free data retrieval call binding the contract method 0x06fdde03.
   611  //
   612  // Solidity: function name() view returns(string)
   613  func (_Camelotv3pair *Camelotv3pairCaller) Name(opts *bind.CallOpts) (string, error) {
   614  	var out []interface{}
   615  	err := _Camelotv3pair.contract.Call(opts, &out, "name")
   616  
   617  	if err != nil {
   618  		return *new(string), err
   619  	}
   620  
   621  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   622  
   623  	return out0, err
   624  
   625  }
   626  
   627  // Name is a free data retrieval call binding the contract method 0x06fdde03.
   628  //
   629  // Solidity: function name() view returns(string)
   630  func (_Camelotv3pair *Camelotv3pairSession) Name() (string, error) {
   631  	return _Camelotv3pair.Contract.Name(&_Camelotv3pair.CallOpts)
   632  }
   633  
   634  // Name is a free data retrieval call binding the contract method 0x06fdde03.
   635  //
   636  // Solidity: function name() view returns(string)
   637  func (_Camelotv3pair *Camelotv3pairCallerSession) Name() (string, error) {
   638  	return _Camelotv3pair.Contract.Name(&_Camelotv3pair.CallOpts)
   639  }
   640  
   641  // Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
   642  //
   643  // Solidity: function nonces(address ) view returns(uint256)
   644  func (_Camelotv3pair *Camelotv3pairCaller) Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   645  	var out []interface{}
   646  	err := _Camelotv3pair.contract.Call(opts, &out, "nonces", arg0)
   647  
   648  	if err != nil {
   649  		return *new(*big.Int), err
   650  	}
   651  
   652  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   653  
   654  	return out0, err
   655  
   656  }
   657  
   658  // Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
   659  //
   660  // Solidity: function nonces(address ) view returns(uint256)
   661  func (_Camelotv3pair *Camelotv3pairSession) Nonces(arg0 common.Address) (*big.Int, error) {
   662  	return _Camelotv3pair.Contract.Nonces(&_Camelotv3pair.CallOpts, arg0)
   663  }
   664  
   665  // Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
   666  //
   667  // Solidity: function nonces(address ) view returns(uint256)
   668  func (_Camelotv3pair *Camelotv3pairCallerSession) Nonces(arg0 common.Address) (*big.Int, error) {
   669  	return _Camelotv3pair.Contract.Nonces(&_Camelotv3pair.CallOpts, arg0)
   670  }
   671  
   672  // PairTypeImmutable is a free data retrieval call binding the contract method 0xb6200b07.
   673  //
   674  // Solidity: function pairTypeImmutable() view returns(bool)
   675  func (_Camelotv3pair *Camelotv3pairCaller) PairTypeImmutable(opts *bind.CallOpts) (bool, error) {
   676  	var out []interface{}
   677  	err := _Camelotv3pair.contract.Call(opts, &out, "pairTypeImmutable")
   678  
   679  	if err != nil {
   680  		return *new(bool), err
   681  	}
   682  
   683  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   684  
   685  	return out0, err
   686  
   687  }
   688  
   689  // PairTypeImmutable is a free data retrieval call binding the contract method 0xb6200b07.
   690  //
   691  // Solidity: function pairTypeImmutable() view returns(bool)
   692  func (_Camelotv3pair *Camelotv3pairSession) PairTypeImmutable() (bool, error) {
   693  	return _Camelotv3pair.Contract.PairTypeImmutable(&_Camelotv3pair.CallOpts)
   694  }
   695  
   696  // PairTypeImmutable is a free data retrieval call binding the contract method 0xb6200b07.
   697  //
   698  // Solidity: function pairTypeImmutable() view returns(bool)
   699  func (_Camelotv3pair *Camelotv3pairCallerSession) PairTypeImmutable() (bool, error) {
   700  	return _Camelotv3pair.Contract.PairTypeImmutable(&_Camelotv3pair.CallOpts)
   701  }
   702  
   703  // PrecisionMultiplier0 is a free data retrieval call binding the contract method 0x3b9f1dc0.
   704  //
   705  // Solidity: function precisionMultiplier0() view returns(uint256)
   706  func (_Camelotv3pair *Camelotv3pairCaller) PrecisionMultiplier0(opts *bind.CallOpts) (*big.Int, error) {
   707  	var out []interface{}
   708  	err := _Camelotv3pair.contract.Call(opts, &out, "precisionMultiplier0")
   709  
   710  	if err != nil {
   711  		return *new(*big.Int), err
   712  	}
   713  
   714  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   715  
   716  	return out0, err
   717  
   718  }
   719  
   720  // PrecisionMultiplier0 is a free data retrieval call binding the contract method 0x3b9f1dc0.
   721  //
   722  // Solidity: function precisionMultiplier0() view returns(uint256)
   723  func (_Camelotv3pair *Camelotv3pairSession) PrecisionMultiplier0() (*big.Int, error) {
   724  	return _Camelotv3pair.Contract.PrecisionMultiplier0(&_Camelotv3pair.CallOpts)
   725  }
   726  
   727  // PrecisionMultiplier0 is a free data retrieval call binding the contract method 0x3b9f1dc0.
   728  //
   729  // Solidity: function precisionMultiplier0() view returns(uint256)
   730  func (_Camelotv3pair *Camelotv3pairCallerSession) PrecisionMultiplier0() (*big.Int, error) {
   731  	return _Camelotv3pair.Contract.PrecisionMultiplier0(&_Camelotv3pair.CallOpts)
   732  }
   733  
   734  // PrecisionMultiplier1 is a free data retrieval call binding the contract method 0x288e5d02.
   735  //
   736  // Solidity: function precisionMultiplier1() view returns(uint256)
   737  func (_Camelotv3pair *Camelotv3pairCaller) PrecisionMultiplier1(opts *bind.CallOpts) (*big.Int, error) {
   738  	var out []interface{}
   739  	err := _Camelotv3pair.contract.Call(opts, &out, "precisionMultiplier1")
   740  
   741  	if err != nil {
   742  		return *new(*big.Int), err
   743  	}
   744  
   745  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   746  
   747  	return out0, err
   748  
   749  }
   750  
   751  // PrecisionMultiplier1 is a free data retrieval call binding the contract method 0x288e5d02.
   752  //
   753  // Solidity: function precisionMultiplier1() view returns(uint256)
   754  func (_Camelotv3pair *Camelotv3pairSession) PrecisionMultiplier1() (*big.Int, error) {
   755  	return _Camelotv3pair.Contract.PrecisionMultiplier1(&_Camelotv3pair.CallOpts)
   756  }
   757  
   758  // PrecisionMultiplier1 is a free data retrieval call binding the contract method 0x288e5d02.
   759  //
   760  // Solidity: function precisionMultiplier1() view returns(uint256)
   761  func (_Camelotv3pair *Camelotv3pairCallerSession) PrecisionMultiplier1() (*big.Int, error) {
   762  	return _Camelotv3pair.Contract.PrecisionMultiplier1(&_Camelotv3pair.CallOpts)
   763  }
   764  
   765  // StableSwap is a free data retrieval call binding the contract method 0x9e548b7f.
   766  //
   767  // Solidity: function stableSwap() view returns(bool)
   768  func (_Camelotv3pair *Camelotv3pairCaller) StableSwap(opts *bind.CallOpts) (bool, error) {
   769  	var out []interface{}
   770  	err := _Camelotv3pair.contract.Call(opts, &out, "stableSwap")
   771  
   772  	if err != nil {
   773  		return *new(bool), err
   774  	}
   775  
   776  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   777  
   778  	return out0, err
   779  
   780  }
   781  
   782  // StableSwap is a free data retrieval call binding the contract method 0x9e548b7f.
   783  //
   784  // Solidity: function stableSwap() view returns(bool)
   785  func (_Camelotv3pair *Camelotv3pairSession) StableSwap() (bool, error) {
   786  	return _Camelotv3pair.Contract.StableSwap(&_Camelotv3pair.CallOpts)
   787  }
   788  
   789  // StableSwap is a free data retrieval call binding the contract method 0x9e548b7f.
   790  //
   791  // Solidity: function stableSwap() view returns(bool)
   792  func (_Camelotv3pair *Camelotv3pairCallerSession) StableSwap() (bool, error) {
   793  	return _Camelotv3pair.Contract.StableSwap(&_Camelotv3pair.CallOpts)
   794  }
   795  
   796  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
   797  //
   798  // Solidity: function symbol() view returns(string)
   799  func (_Camelotv3pair *Camelotv3pairCaller) Symbol(opts *bind.CallOpts) (string, error) {
   800  	var out []interface{}
   801  	err := _Camelotv3pair.contract.Call(opts, &out, "symbol")
   802  
   803  	if err != nil {
   804  		return *new(string), err
   805  	}
   806  
   807  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   808  
   809  	return out0, err
   810  
   811  }
   812  
   813  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
   814  //
   815  // Solidity: function symbol() view returns(string)
   816  func (_Camelotv3pair *Camelotv3pairSession) Symbol() (string, error) {
   817  	return _Camelotv3pair.Contract.Symbol(&_Camelotv3pair.CallOpts)
   818  }
   819  
   820  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
   821  //
   822  // Solidity: function symbol() view returns(string)
   823  func (_Camelotv3pair *Camelotv3pairCallerSession) Symbol() (string, error) {
   824  	return _Camelotv3pair.Contract.Symbol(&_Camelotv3pair.CallOpts)
   825  }
   826  
   827  // Token0 is a free data retrieval call binding the contract method 0x0dfe1681.
   828  //
   829  // Solidity: function token0() view returns(address)
   830  func (_Camelotv3pair *Camelotv3pairCaller) Token0(opts *bind.CallOpts) (common.Address, error) {
   831  	var out []interface{}
   832  	err := _Camelotv3pair.contract.Call(opts, &out, "token0")
   833  
   834  	if err != nil {
   835  		return *new(common.Address), err
   836  	}
   837  
   838  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   839  
   840  	return out0, err
   841  
   842  }
   843  
   844  // Token0 is a free data retrieval call binding the contract method 0x0dfe1681.
   845  //
   846  // Solidity: function token0() view returns(address)
   847  func (_Camelotv3pair *Camelotv3pairSession) Token0() (common.Address, error) {
   848  	return _Camelotv3pair.Contract.Token0(&_Camelotv3pair.CallOpts)
   849  }
   850  
   851  // Token0 is a free data retrieval call binding the contract method 0x0dfe1681.
   852  //
   853  // Solidity: function token0() view returns(address)
   854  func (_Camelotv3pair *Camelotv3pairCallerSession) Token0() (common.Address, error) {
   855  	return _Camelotv3pair.Contract.Token0(&_Camelotv3pair.CallOpts)
   856  }
   857  
   858  // Token0FeePercent is a free data retrieval call binding the contract method 0x62ecec03.
   859  //
   860  // Solidity: function token0FeePercent() view returns(uint16)
   861  func (_Camelotv3pair *Camelotv3pairCaller) Token0FeePercent(opts *bind.CallOpts) (uint16, error) {
   862  	var out []interface{}
   863  	err := _Camelotv3pair.contract.Call(opts, &out, "token0FeePercent")
   864  
   865  	if err != nil {
   866  		return *new(uint16), err
   867  	}
   868  
   869  	out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16)
   870  
   871  	return out0, err
   872  
   873  }
   874  
   875  // Token0FeePercent is a free data retrieval call binding the contract method 0x62ecec03.
   876  //
   877  // Solidity: function token0FeePercent() view returns(uint16)
   878  func (_Camelotv3pair *Camelotv3pairSession) Token0FeePercent() (uint16, error) {
   879  	return _Camelotv3pair.Contract.Token0FeePercent(&_Camelotv3pair.CallOpts)
   880  }
   881  
   882  // Token0FeePercent is a free data retrieval call binding the contract method 0x62ecec03.
   883  //
   884  // Solidity: function token0FeePercent() view returns(uint16)
   885  func (_Camelotv3pair *Camelotv3pairCallerSession) Token0FeePercent() (uint16, error) {
   886  	return _Camelotv3pair.Contract.Token0FeePercent(&_Camelotv3pair.CallOpts)
   887  }
   888  
   889  // Token1 is a free data retrieval call binding the contract method 0xd21220a7.
   890  //
   891  // Solidity: function token1() view returns(address)
   892  func (_Camelotv3pair *Camelotv3pairCaller) Token1(opts *bind.CallOpts) (common.Address, error) {
   893  	var out []interface{}
   894  	err := _Camelotv3pair.contract.Call(opts, &out, "token1")
   895  
   896  	if err != nil {
   897  		return *new(common.Address), err
   898  	}
   899  
   900  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   901  
   902  	return out0, err
   903  
   904  }
   905  
   906  // Token1 is a free data retrieval call binding the contract method 0xd21220a7.
   907  //
   908  // Solidity: function token1() view returns(address)
   909  func (_Camelotv3pair *Camelotv3pairSession) Token1() (common.Address, error) {
   910  	return _Camelotv3pair.Contract.Token1(&_Camelotv3pair.CallOpts)
   911  }
   912  
   913  // Token1 is a free data retrieval call binding the contract method 0xd21220a7.
   914  //
   915  // Solidity: function token1() view returns(address)
   916  func (_Camelotv3pair *Camelotv3pairCallerSession) Token1() (common.Address, error) {
   917  	return _Camelotv3pair.Contract.Token1(&_Camelotv3pair.CallOpts)
   918  }
   919  
   920  // Token1FeePercent is a free data retrieval call binding the contract method 0x2fcd1692.
   921  //
   922  // Solidity: function token1FeePercent() view returns(uint16)
   923  func (_Camelotv3pair *Camelotv3pairCaller) Token1FeePercent(opts *bind.CallOpts) (uint16, error) {
   924  	var out []interface{}
   925  	err := _Camelotv3pair.contract.Call(opts, &out, "token1FeePercent")
   926  
   927  	if err != nil {
   928  		return *new(uint16), err
   929  	}
   930  
   931  	out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16)
   932  
   933  	return out0, err
   934  
   935  }
   936  
   937  // Token1FeePercent is a free data retrieval call binding the contract method 0x2fcd1692.
   938  //
   939  // Solidity: function token1FeePercent() view returns(uint16)
   940  func (_Camelotv3pair *Camelotv3pairSession) Token1FeePercent() (uint16, error) {
   941  	return _Camelotv3pair.Contract.Token1FeePercent(&_Camelotv3pair.CallOpts)
   942  }
   943  
   944  // Token1FeePercent is a free data retrieval call binding the contract method 0x2fcd1692.
   945  //
   946  // Solidity: function token1FeePercent() view returns(uint16)
   947  func (_Camelotv3pair *Camelotv3pairCallerSession) Token1FeePercent() (uint16, error) {
   948  	return _Camelotv3pair.Contract.Token1FeePercent(&_Camelotv3pair.CallOpts)
   949  }
   950  
   951  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   952  //
   953  // Solidity: function totalSupply() view returns(uint256)
   954  func (_Camelotv3pair *Camelotv3pairCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
   955  	var out []interface{}
   956  	err := _Camelotv3pair.contract.Call(opts, &out, "totalSupply")
   957  
   958  	if err != nil {
   959  		return *new(*big.Int), err
   960  	}
   961  
   962  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   963  
   964  	return out0, err
   965  
   966  }
   967  
   968  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   969  //
   970  // Solidity: function totalSupply() view returns(uint256)
   971  func (_Camelotv3pair *Camelotv3pairSession) TotalSupply() (*big.Int, error) {
   972  	return _Camelotv3pair.Contract.TotalSupply(&_Camelotv3pair.CallOpts)
   973  }
   974  
   975  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   976  //
   977  // Solidity: function totalSupply() view returns(uint256)
   978  func (_Camelotv3pair *Camelotv3pairCallerSession) TotalSupply() (*big.Int, error) {
   979  	return _Camelotv3pair.Contract.TotalSupply(&_Camelotv3pair.CallOpts)
   980  }
   981  
   982  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   983  //
   984  // Solidity: function approve(address spender, uint256 value) returns(bool)
   985  func (_Camelotv3pair *Camelotv3pairTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
   986  	return _Camelotv3pair.contract.Transact(opts, "approve", spender, value)
   987  }
   988  
   989  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   990  //
   991  // Solidity: function approve(address spender, uint256 value) returns(bool)
   992  func (_Camelotv3pair *Camelotv3pairSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
   993  	return _Camelotv3pair.Contract.Approve(&_Camelotv3pair.TransactOpts, spender, value)
   994  }
   995  
   996  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   997  //
   998  // Solidity: function approve(address spender, uint256 value) returns(bool)
   999  func (_Camelotv3pair *Camelotv3pairTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  1000  	return _Camelotv3pair.Contract.Approve(&_Camelotv3pair.TransactOpts, spender, value)
  1001  }
  1002  
  1003  // Burn is a paid mutator transaction binding the contract method 0x89afcb44.
  1004  //
  1005  // Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1)
  1006  func (_Camelotv3pair *Camelotv3pairTransactor) Burn(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) {
  1007  	return _Camelotv3pair.contract.Transact(opts, "burn", to)
  1008  }
  1009  
  1010  // Burn is a paid mutator transaction binding the contract method 0x89afcb44.
  1011  //
  1012  // Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1)
  1013  func (_Camelotv3pair *Camelotv3pairSession) Burn(to common.Address) (*types.Transaction, error) {
  1014  	return _Camelotv3pair.Contract.Burn(&_Camelotv3pair.TransactOpts, to)
  1015  }
  1016  
  1017  // Burn is a paid mutator transaction binding the contract method 0x89afcb44.
  1018  //
  1019  // Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1)
  1020  func (_Camelotv3pair *Camelotv3pairTransactorSession) Burn(to common.Address) (*types.Transaction, error) {
  1021  	return _Camelotv3pair.Contract.Burn(&_Camelotv3pair.TransactOpts, to)
  1022  }
  1023  
  1024  // DrainWrongToken is a paid mutator transaction binding the contract method 0xf39ac11f.
  1025  //
  1026  // Solidity: function drainWrongToken(address token, address to) returns()
  1027  func (_Camelotv3pair *Camelotv3pairTransactor) DrainWrongToken(opts *bind.TransactOpts, token common.Address, to common.Address) (*types.Transaction, error) {
  1028  	return _Camelotv3pair.contract.Transact(opts, "drainWrongToken", token, to)
  1029  }
  1030  
  1031  // DrainWrongToken is a paid mutator transaction binding the contract method 0xf39ac11f.
  1032  //
  1033  // Solidity: function drainWrongToken(address token, address to) returns()
  1034  func (_Camelotv3pair *Camelotv3pairSession) DrainWrongToken(token common.Address, to common.Address) (*types.Transaction, error) {
  1035  	return _Camelotv3pair.Contract.DrainWrongToken(&_Camelotv3pair.TransactOpts, token, to)
  1036  }
  1037  
  1038  // DrainWrongToken is a paid mutator transaction binding the contract method 0xf39ac11f.
  1039  //
  1040  // Solidity: function drainWrongToken(address token, address to) returns()
  1041  func (_Camelotv3pair *Camelotv3pairTransactorSession) DrainWrongToken(token common.Address, to common.Address) (*types.Transaction, error) {
  1042  	return _Camelotv3pair.Contract.DrainWrongToken(&_Camelotv3pair.TransactOpts, token, to)
  1043  }
  1044  
  1045  // Initialize is a paid mutator transaction binding the contract method 0x485cc955.
  1046  //
  1047  // Solidity: function initialize(address _token0, address _token1) returns()
  1048  func (_Camelotv3pair *Camelotv3pairTransactor) Initialize(opts *bind.TransactOpts, _token0 common.Address, _token1 common.Address) (*types.Transaction, error) {
  1049  	return _Camelotv3pair.contract.Transact(opts, "initialize", _token0, _token1)
  1050  }
  1051  
  1052  // Initialize is a paid mutator transaction binding the contract method 0x485cc955.
  1053  //
  1054  // Solidity: function initialize(address _token0, address _token1) returns()
  1055  func (_Camelotv3pair *Camelotv3pairSession) Initialize(_token0 common.Address, _token1 common.Address) (*types.Transaction, error) {
  1056  	return _Camelotv3pair.Contract.Initialize(&_Camelotv3pair.TransactOpts, _token0, _token1)
  1057  }
  1058  
  1059  // Initialize is a paid mutator transaction binding the contract method 0x485cc955.
  1060  //
  1061  // Solidity: function initialize(address _token0, address _token1) returns()
  1062  func (_Camelotv3pair *Camelotv3pairTransactorSession) Initialize(_token0 common.Address, _token1 common.Address) (*types.Transaction, error) {
  1063  	return _Camelotv3pair.Contract.Initialize(&_Camelotv3pair.TransactOpts, _token0, _token1)
  1064  }
  1065  
  1066  // Mint is a paid mutator transaction binding the contract method 0x6a627842.
  1067  //
  1068  // Solidity: function mint(address to) returns(uint256 liquidity)
  1069  func (_Camelotv3pair *Camelotv3pairTransactor) Mint(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) {
  1070  	return _Camelotv3pair.contract.Transact(opts, "mint", to)
  1071  }
  1072  
  1073  // Mint is a paid mutator transaction binding the contract method 0x6a627842.
  1074  //
  1075  // Solidity: function mint(address to) returns(uint256 liquidity)
  1076  func (_Camelotv3pair *Camelotv3pairSession) Mint(to common.Address) (*types.Transaction, error) {
  1077  	return _Camelotv3pair.Contract.Mint(&_Camelotv3pair.TransactOpts, to)
  1078  }
  1079  
  1080  // Mint is a paid mutator transaction binding the contract method 0x6a627842.
  1081  //
  1082  // Solidity: function mint(address to) returns(uint256 liquidity)
  1083  func (_Camelotv3pair *Camelotv3pairTransactorSession) Mint(to common.Address) (*types.Transaction, error) {
  1084  	return _Camelotv3pair.Contract.Mint(&_Camelotv3pair.TransactOpts, to)
  1085  }
  1086  
  1087  // Permit is a paid mutator transaction binding the contract method 0xd505accf.
  1088  //
  1089  // Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns()
  1090  func (_Camelotv3pair *Camelotv3pairTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) {
  1091  	return _Camelotv3pair.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s)
  1092  }
  1093  
  1094  // Permit is a paid mutator transaction binding the contract method 0xd505accf.
  1095  //
  1096  // Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns()
  1097  func (_Camelotv3pair *Camelotv3pairSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) {
  1098  	return _Camelotv3pair.Contract.Permit(&_Camelotv3pair.TransactOpts, owner, spender, value, deadline, v, r, s)
  1099  }
  1100  
  1101  // Permit is a paid mutator transaction binding the contract method 0xd505accf.
  1102  //
  1103  // Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns()
  1104  func (_Camelotv3pair *Camelotv3pairTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) {
  1105  	return _Camelotv3pair.Contract.Permit(&_Camelotv3pair.TransactOpts, owner, spender, value, deadline, v, r, s)
  1106  }
  1107  
  1108  // SetFeePercent is a paid mutator transaction binding the contract method 0x48e5d260.
  1109  //
  1110  // Solidity: function setFeePercent(uint16 newToken0FeePercent, uint16 newToken1FeePercent) returns()
  1111  func (_Camelotv3pair *Camelotv3pairTransactor) SetFeePercent(opts *bind.TransactOpts, newToken0FeePercent uint16, newToken1FeePercent uint16) (*types.Transaction, error) {
  1112  	return _Camelotv3pair.contract.Transact(opts, "setFeePercent", newToken0FeePercent, newToken1FeePercent)
  1113  }
  1114  
  1115  // SetFeePercent is a paid mutator transaction binding the contract method 0x48e5d260.
  1116  //
  1117  // Solidity: function setFeePercent(uint16 newToken0FeePercent, uint16 newToken1FeePercent) returns()
  1118  func (_Camelotv3pair *Camelotv3pairSession) SetFeePercent(newToken0FeePercent uint16, newToken1FeePercent uint16) (*types.Transaction, error) {
  1119  	return _Camelotv3pair.Contract.SetFeePercent(&_Camelotv3pair.TransactOpts, newToken0FeePercent, newToken1FeePercent)
  1120  }
  1121  
  1122  // SetFeePercent is a paid mutator transaction binding the contract method 0x48e5d260.
  1123  //
  1124  // Solidity: function setFeePercent(uint16 newToken0FeePercent, uint16 newToken1FeePercent) returns()
  1125  func (_Camelotv3pair *Camelotv3pairTransactorSession) SetFeePercent(newToken0FeePercent uint16, newToken1FeePercent uint16) (*types.Transaction, error) {
  1126  	return _Camelotv3pair.Contract.SetFeePercent(&_Camelotv3pair.TransactOpts, newToken0FeePercent, newToken1FeePercent)
  1127  }
  1128  
  1129  // SetPairTypeImmutable is a paid mutator transaction binding the contract method 0x3ba17077.
  1130  //
  1131  // Solidity: function setPairTypeImmutable() returns()
  1132  func (_Camelotv3pair *Camelotv3pairTransactor) SetPairTypeImmutable(opts *bind.TransactOpts) (*types.Transaction, error) {
  1133  	return _Camelotv3pair.contract.Transact(opts, "setPairTypeImmutable")
  1134  }
  1135  
  1136  // SetPairTypeImmutable is a paid mutator transaction binding the contract method 0x3ba17077.
  1137  //
  1138  // Solidity: function setPairTypeImmutable() returns()
  1139  func (_Camelotv3pair *Camelotv3pairSession) SetPairTypeImmutable() (*types.Transaction, error) {
  1140  	return _Camelotv3pair.Contract.SetPairTypeImmutable(&_Camelotv3pair.TransactOpts)
  1141  }
  1142  
  1143  // SetPairTypeImmutable is a paid mutator transaction binding the contract method 0x3ba17077.
  1144  //
  1145  // Solidity: function setPairTypeImmutable() returns()
  1146  func (_Camelotv3pair *Camelotv3pairTransactorSession) SetPairTypeImmutable() (*types.Transaction, error) {
  1147  	return _Camelotv3pair.Contract.SetPairTypeImmutable(&_Camelotv3pair.TransactOpts)
  1148  }
  1149  
  1150  // SetStableSwap is a paid mutator transaction binding the contract method 0x3029e5d4.
  1151  //
  1152  // Solidity: function setStableSwap(bool stable, uint112 expectedReserve0, uint112 expectedReserve1) returns()
  1153  func (_Camelotv3pair *Camelotv3pairTransactor) SetStableSwap(opts *bind.TransactOpts, stable bool, expectedReserve0 *big.Int, expectedReserve1 *big.Int) (*types.Transaction, error) {
  1154  	return _Camelotv3pair.contract.Transact(opts, "setStableSwap", stable, expectedReserve0, expectedReserve1)
  1155  }
  1156  
  1157  // SetStableSwap is a paid mutator transaction binding the contract method 0x3029e5d4.
  1158  //
  1159  // Solidity: function setStableSwap(bool stable, uint112 expectedReserve0, uint112 expectedReserve1) returns()
  1160  func (_Camelotv3pair *Camelotv3pairSession) SetStableSwap(stable bool, expectedReserve0 *big.Int, expectedReserve1 *big.Int) (*types.Transaction, error) {
  1161  	return _Camelotv3pair.Contract.SetStableSwap(&_Camelotv3pair.TransactOpts, stable, expectedReserve0, expectedReserve1)
  1162  }
  1163  
  1164  // SetStableSwap is a paid mutator transaction binding the contract method 0x3029e5d4.
  1165  //
  1166  // Solidity: function setStableSwap(bool stable, uint112 expectedReserve0, uint112 expectedReserve1) returns()
  1167  func (_Camelotv3pair *Camelotv3pairTransactorSession) SetStableSwap(stable bool, expectedReserve0 *big.Int, expectedReserve1 *big.Int) (*types.Transaction, error) {
  1168  	return _Camelotv3pair.Contract.SetStableSwap(&_Camelotv3pair.TransactOpts, stable, expectedReserve0, expectedReserve1)
  1169  }
  1170  
  1171  // Skim is a paid mutator transaction binding the contract method 0xbc25cf77.
  1172  //
  1173  // Solidity: function skim(address to) returns()
  1174  func (_Camelotv3pair *Camelotv3pairTransactor) Skim(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) {
  1175  	return _Camelotv3pair.contract.Transact(opts, "skim", to)
  1176  }
  1177  
  1178  // Skim is a paid mutator transaction binding the contract method 0xbc25cf77.
  1179  //
  1180  // Solidity: function skim(address to) returns()
  1181  func (_Camelotv3pair *Camelotv3pairSession) Skim(to common.Address) (*types.Transaction, error) {
  1182  	return _Camelotv3pair.Contract.Skim(&_Camelotv3pair.TransactOpts, to)
  1183  }
  1184  
  1185  // Skim is a paid mutator transaction binding the contract method 0xbc25cf77.
  1186  //
  1187  // Solidity: function skim(address to) returns()
  1188  func (_Camelotv3pair *Camelotv3pairTransactorSession) Skim(to common.Address) (*types.Transaction, error) {
  1189  	return _Camelotv3pair.Contract.Skim(&_Camelotv3pair.TransactOpts, to)
  1190  }
  1191  
  1192  // Swap is a paid mutator transaction binding the contract method 0x022c0d9f.
  1193  //
  1194  // Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns()
  1195  func (_Camelotv3pair *Camelotv3pairTransactor) Swap(opts *bind.TransactOpts, amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) {
  1196  	return _Camelotv3pair.contract.Transact(opts, "swap", amount0Out, amount1Out, to, data)
  1197  }
  1198  
  1199  // Swap is a paid mutator transaction binding the contract method 0x022c0d9f.
  1200  //
  1201  // Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns()
  1202  func (_Camelotv3pair *Camelotv3pairSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) {
  1203  	return _Camelotv3pair.Contract.Swap(&_Camelotv3pair.TransactOpts, amount0Out, amount1Out, to, data)
  1204  }
  1205  
  1206  // Swap is a paid mutator transaction binding the contract method 0x022c0d9f.
  1207  //
  1208  // Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns()
  1209  func (_Camelotv3pair *Camelotv3pairTransactorSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) {
  1210  	return _Camelotv3pair.Contract.Swap(&_Camelotv3pair.TransactOpts, amount0Out, amount1Out, to, data)
  1211  }
  1212  
  1213  // Swap0 is a paid mutator transaction binding the contract method 0x6e1fdd7f.
  1214  //
  1215  // Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data, address referrer) returns()
  1216  func (_Camelotv3pair *Camelotv3pairTransactor) Swap0(opts *bind.TransactOpts, amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte, referrer common.Address) (*types.Transaction, error) {
  1217  	return _Camelotv3pair.contract.Transact(opts, "swap0", amount0Out, amount1Out, to, data, referrer)
  1218  }
  1219  
  1220  // Swap0 is a paid mutator transaction binding the contract method 0x6e1fdd7f.
  1221  //
  1222  // Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data, address referrer) returns()
  1223  func (_Camelotv3pair *Camelotv3pairSession) Swap0(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte, referrer common.Address) (*types.Transaction, error) {
  1224  	return _Camelotv3pair.Contract.Swap0(&_Camelotv3pair.TransactOpts, amount0Out, amount1Out, to, data, referrer)
  1225  }
  1226  
  1227  // Swap0 is a paid mutator transaction binding the contract method 0x6e1fdd7f.
  1228  //
  1229  // Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data, address referrer) returns()
  1230  func (_Camelotv3pair *Camelotv3pairTransactorSession) Swap0(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte, referrer common.Address) (*types.Transaction, error) {
  1231  	return _Camelotv3pair.Contract.Swap0(&_Camelotv3pair.TransactOpts, amount0Out, amount1Out, to, data, referrer)
  1232  }
  1233  
  1234  // Sync is a paid mutator transaction binding the contract method 0xfff6cae9.
  1235  //
  1236  // Solidity: function sync() returns()
  1237  func (_Camelotv3pair *Camelotv3pairTransactor) Sync(opts *bind.TransactOpts) (*types.Transaction, error) {
  1238  	return _Camelotv3pair.contract.Transact(opts, "sync")
  1239  }
  1240  
  1241  // Sync is a paid mutator transaction binding the contract method 0xfff6cae9.
  1242  //
  1243  // Solidity: function sync() returns()
  1244  func (_Camelotv3pair *Camelotv3pairSession) Sync() (*types.Transaction, error) {
  1245  	return _Camelotv3pair.Contract.Sync(&_Camelotv3pair.TransactOpts)
  1246  }
  1247  
  1248  // Sync is a paid mutator transaction binding the contract method 0xfff6cae9.
  1249  //
  1250  // Solidity: function sync() returns()
  1251  func (_Camelotv3pair *Camelotv3pairTransactorSession) Sync() (*types.Transaction, error) {
  1252  	return _Camelotv3pair.Contract.Sync(&_Camelotv3pair.TransactOpts)
  1253  }
  1254  
  1255  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1256  //
  1257  // Solidity: function transfer(address to, uint256 value) returns(bool)
  1258  func (_Camelotv3pair *Camelotv3pairTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) {
  1259  	return _Camelotv3pair.contract.Transact(opts, "transfer", to, value)
  1260  }
  1261  
  1262  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1263  //
  1264  // Solidity: function transfer(address to, uint256 value) returns(bool)
  1265  func (_Camelotv3pair *Camelotv3pairSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) {
  1266  	return _Camelotv3pair.Contract.Transfer(&_Camelotv3pair.TransactOpts, to, value)
  1267  }
  1268  
  1269  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1270  //
  1271  // Solidity: function transfer(address to, uint256 value) returns(bool)
  1272  func (_Camelotv3pair *Camelotv3pairTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) {
  1273  	return _Camelotv3pair.Contract.Transfer(&_Camelotv3pair.TransactOpts, to, value)
  1274  }
  1275  
  1276  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1277  //
  1278  // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool)
  1279  func (_Camelotv3pair *Camelotv3pairTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) {
  1280  	return _Camelotv3pair.contract.Transact(opts, "transferFrom", from, to, value)
  1281  }
  1282  
  1283  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1284  //
  1285  // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool)
  1286  func (_Camelotv3pair *Camelotv3pairSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) {
  1287  	return _Camelotv3pair.Contract.TransferFrom(&_Camelotv3pair.TransactOpts, from, to, value)
  1288  }
  1289  
  1290  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1291  //
  1292  // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool)
  1293  func (_Camelotv3pair *Camelotv3pairTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) {
  1294  	return _Camelotv3pair.Contract.TransferFrom(&_Camelotv3pair.TransactOpts, from, to, value)
  1295  }
  1296  
  1297  // Camelotv3pairApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the Camelotv3pair contract.
  1298  type Camelotv3pairApprovalIterator struct {
  1299  	Event *Camelotv3pairApproval // Event containing the contract specifics and raw log
  1300  
  1301  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1302  	event    string              // Event name to use for unpacking event data
  1303  
  1304  	logs chan types.Log        // Log channel receiving the found contract events
  1305  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1306  	done bool                  // Whether the subscription completed delivering logs
  1307  	fail error                 // Occurred error to stop iteration
  1308  }
  1309  
  1310  // Next advances the iterator to the subsequent event, returning whether there
  1311  // are any more events found. In case of a retrieval or parsing error, false is
  1312  // returned and Error() can be queried for the exact failure.
  1313  func (it *Camelotv3pairApprovalIterator) Next() bool {
  1314  	// If the iterator failed, stop iterating
  1315  	if it.fail != nil {
  1316  		return false
  1317  	}
  1318  	// If the iterator completed, deliver directly whatever's available
  1319  	if it.done {
  1320  		select {
  1321  		case log := <-it.logs:
  1322  			it.Event = new(Camelotv3pairApproval)
  1323  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1324  				it.fail = err
  1325  				return false
  1326  			}
  1327  			it.Event.Raw = log
  1328  			return true
  1329  
  1330  		default:
  1331  			return false
  1332  		}
  1333  	}
  1334  	// Iterator still in progress, wait for either a data or an error event
  1335  	select {
  1336  	case log := <-it.logs:
  1337  		it.Event = new(Camelotv3pairApproval)
  1338  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1339  			it.fail = err
  1340  			return false
  1341  		}
  1342  		it.Event.Raw = log
  1343  		return true
  1344  
  1345  	case err := <-it.sub.Err():
  1346  		it.done = true
  1347  		it.fail = err
  1348  		return it.Next()
  1349  	}
  1350  }
  1351  
  1352  // Error returns any retrieval or parsing error occurred during filtering.
  1353  func (it *Camelotv3pairApprovalIterator) Error() error {
  1354  	return it.fail
  1355  }
  1356  
  1357  // Close terminates the iteration process, releasing any pending underlying
  1358  // resources.
  1359  func (it *Camelotv3pairApprovalIterator) Close() error {
  1360  	it.sub.Unsubscribe()
  1361  	return nil
  1362  }
  1363  
  1364  // Camelotv3pairApproval represents a Approval event raised by the Camelotv3pair contract.
  1365  type Camelotv3pairApproval struct {
  1366  	Owner   common.Address
  1367  	Spender common.Address
  1368  	Value   *big.Int
  1369  	Raw     types.Log // Blockchain specific contextual infos
  1370  }
  1371  
  1372  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1373  //
  1374  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1375  func (_Camelotv3pair *Camelotv3pairFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*Camelotv3pairApprovalIterator, error) {
  1376  
  1377  	var ownerRule []interface{}
  1378  	for _, ownerItem := range owner {
  1379  		ownerRule = append(ownerRule, ownerItem)
  1380  	}
  1381  	var spenderRule []interface{}
  1382  	for _, spenderItem := range spender {
  1383  		spenderRule = append(spenderRule, spenderItem)
  1384  	}
  1385  
  1386  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  1387  	if err != nil {
  1388  		return nil, err
  1389  	}
  1390  	return &Camelotv3pairApprovalIterator{contract: _Camelotv3pair.contract, event: "Approval", logs: logs, sub: sub}, nil
  1391  }
  1392  
  1393  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1394  //
  1395  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1396  func (_Camelotv3pair *Camelotv3pairFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *Camelotv3pairApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  1397  
  1398  	var ownerRule []interface{}
  1399  	for _, ownerItem := range owner {
  1400  		ownerRule = append(ownerRule, ownerItem)
  1401  	}
  1402  	var spenderRule []interface{}
  1403  	for _, spenderItem := range spender {
  1404  		spenderRule = append(spenderRule, spenderItem)
  1405  	}
  1406  
  1407  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  1408  	if err != nil {
  1409  		return nil, err
  1410  	}
  1411  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1412  		defer sub.Unsubscribe()
  1413  		for {
  1414  			select {
  1415  			case log := <-logs:
  1416  				// New log arrived, parse the event and forward to the user
  1417  				event := new(Camelotv3pairApproval)
  1418  				if err := _Camelotv3pair.contract.UnpackLog(event, "Approval", log); err != nil {
  1419  					return err
  1420  				}
  1421  				event.Raw = log
  1422  
  1423  				select {
  1424  				case sink <- event:
  1425  				case err := <-sub.Err():
  1426  					return err
  1427  				case <-quit:
  1428  					return nil
  1429  				}
  1430  			case err := <-sub.Err():
  1431  				return err
  1432  			case <-quit:
  1433  				return nil
  1434  			}
  1435  		}
  1436  	}), nil
  1437  }
  1438  
  1439  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1440  //
  1441  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1442  func (_Camelotv3pair *Camelotv3pairFilterer) ParseApproval(log types.Log) (*Camelotv3pairApproval, error) {
  1443  	event := new(Camelotv3pairApproval)
  1444  	if err := _Camelotv3pair.contract.UnpackLog(event, "Approval", log); err != nil {
  1445  		return nil, err
  1446  	}
  1447  	event.Raw = log
  1448  	return event, nil
  1449  }
  1450  
  1451  // Camelotv3pairBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the Camelotv3pair contract.
  1452  type Camelotv3pairBurnIterator struct {
  1453  	Event *Camelotv3pairBurn // Event containing the contract specifics and raw log
  1454  
  1455  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1456  	event    string              // Event name to use for unpacking event data
  1457  
  1458  	logs chan types.Log        // Log channel receiving the found contract events
  1459  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1460  	done bool                  // Whether the subscription completed delivering logs
  1461  	fail error                 // Occurred error to stop iteration
  1462  }
  1463  
  1464  // Next advances the iterator to the subsequent event, returning whether there
  1465  // are any more events found. In case of a retrieval or parsing error, false is
  1466  // returned and Error() can be queried for the exact failure.
  1467  func (it *Camelotv3pairBurnIterator) Next() bool {
  1468  	// If the iterator failed, stop iterating
  1469  	if it.fail != nil {
  1470  		return false
  1471  	}
  1472  	// If the iterator completed, deliver directly whatever's available
  1473  	if it.done {
  1474  		select {
  1475  		case log := <-it.logs:
  1476  			it.Event = new(Camelotv3pairBurn)
  1477  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1478  				it.fail = err
  1479  				return false
  1480  			}
  1481  			it.Event.Raw = log
  1482  			return true
  1483  
  1484  		default:
  1485  			return false
  1486  		}
  1487  	}
  1488  	// Iterator still in progress, wait for either a data or an error event
  1489  	select {
  1490  	case log := <-it.logs:
  1491  		it.Event = new(Camelotv3pairBurn)
  1492  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1493  			it.fail = err
  1494  			return false
  1495  		}
  1496  		it.Event.Raw = log
  1497  		return true
  1498  
  1499  	case err := <-it.sub.Err():
  1500  		it.done = true
  1501  		it.fail = err
  1502  		return it.Next()
  1503  	}
  1504  }
  1505  
  1506  // Error returns any retrieval or parsing error occurred during filtering.
  1507  func (it *Camelotv3pairBurnIterator) Error() error {
  1508  	return it.fail
  1509  }
  1510  
  1511  // Close terminates the iteration process, releasing any pending underlying
  1512  // resources.
  1513  func (it *Camelotv3pairBurnIterator) Close() error {
  1514  	it.sub.Unsubscribe()
  1515  	return nil
  1516  }
  1517  
  1518  // Camelotv3pairBurn represents a Burn event raised by the Camelotv3pair contract.
  1519  type Camelotv3pairBurn struct {
  1520  	Sender  common.Address
  1521  	Amount0 *big.Int
  1522  	Amount1 *big.Int
  1523  	To      common.Address
  1524  	Raw     types.Log // Blockchain specific contextual infos
  1525  }
  1526  
  1527  // FilterBurn is a free log retrieval operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496.
  1528  //
  1529  // Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to)
  1530  func (_Camelotv3pair *Camelotv3pairFilterer) FilterBurn(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*Camelotv3pairBurnIterator, error) {
  1531  
  1532  	var senderRule []interface{}
  1533  	for _, senderItem := range sender {
  1534  		senderRule = append(senderRule, senderItem)
  1535  	}
  1536  
  1537  	var toRule []interface{}
  1538  	for _, toItem := range to {
  1539  		toRule = append(toRule, toItem)
  1540  	}
  1541  
  1542  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "Burn", senderRule, toRule)
  1543  	if err != nil {
  1544  		return nil, err
  1545  	}
  1546  	return &Camelotv3pairBurnIterator{contract: _Camelotv3pair.contract, event: "Burn", logs: logs, sub: sub}, nil
  1547  }
  1548  
  1549  // WatchBurn is a free log subscription operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496.
  1550  //
  1551  // Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to)
  1552  func (_Camelotv3pair *Camelotv3pairFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *Camelotv3pairBurn, sender []common.Address, to []common.Address) (event.Subscription, error) {
  1553  
  1554  	var senderRule []interface{}
  1555  	for _, senderItem := range sender {
  1556  		senderRule = append(senderRule, senderItem)
  1557  	}
  1558  
  1559  	var toRule []interface{}
  1560  	for _, toItem := range to {
  1561  		toRule = append(toRule, toItem)
  1562  	}
  1563  
  1564  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "Burn", senderRule, toRule)
  1565  	if err != nil {
  1566  		return nil, err
  1567  	}
  1568  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1569  		defer sub.Unsubscribe()
  1570  		for {
  1571  			select {
  1572  			case log := <-logs:
  1573  				// New log arrived, parse the event and forward to the user
  1574  				event := new(Camelotv3pairBurn)
  1575  				if err := _Camelotv3pair.contract.UnpackLog(event, "Burn", log); err != nil {
  1576  					return err
  1577  				}
  1578  				event.Raw = log
  1579  
  1580  				select {
  1581  				case sink <- event:
  1582  				case err := <-sub.Err():
  1583  					return err
  1584  				case <-quit:
  1585  					return nil
  1586  				}
  1587  			case err := <-sub.Err():
  1588  				return err
  1589  			case <-quit:
  1590  				return nil
  1591  			}
  1592  		}
  1593  	}), nil
  1594  }
  1595  
  1596  // ParseBurn is a log parse operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496.
  1597  //
  1598  // Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to)
  1599  func (_Camelotv3pair *Camelotv3pairFilterer) ParseBurn(log types.Log) (*Camelotv3pairBurn, error) {
  1600  	event := new(Camelotv3pairBurn)
  1601  	if err := _Camelotv3pair.contract.UnpackLog(event, "Burn", log); err != nil {
  1602  		return nil, err
  1603  	}
  1604  	event.Raw = log
  1605  	return event, nil
  1606  }
  1607  
  1608  // Camelotv3pairDrainWrongTokenIterator is returned from FilterDrainWrongToken and is used to iterate over the raw logs and unpacked data for DrainWrongToken events raised by the Camelotv3pair contract.
  1609  type Camelotv3pairDrainWrongTokenIterator struct {
  1610  	Event *Camelotv3pairDrainWrongToken // Event containing the contract specifics and raw log
  1611  
  1612  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1613  	event    string              // Event name to use for unpacking event data
  1614  
  1615  	logs chan types.Log        // Log channel receiving the found contract events
  1616  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1617  	done bool                  // Whether the subscription completed delivering logs
  1618  	fail error                 // Occurred error to stop iteration
  1619  }
  1620  
  1621  // Next advances the iterator to the subsequent event, returning whether there
  1622  // are any more events found. In case of a retrieval or parsing error, false is
  1623  // returned and Error() can be queried for the exact failure.
  1624  func (it *Camelotv3pairDrainWrongTokenIterator) Next() bool {
  1625  	// If the iterator failed, stop iterating
  1626  	if it.fail != nil {
  1627  		return false
  1628  	}
  1629  	// If the iterator completed, deliver directly whatever's available
  1630  	if it.done {
  1631  		select {
  1632  		case log := <-it.logs:
  1633  			it.Event = new(Camelotv3pairDrainWrongToken)
  1634  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1635  				it.fail = err
  1636  				return false
  1637  			}
  1638  			it.Event.Raw = log
  1639  			return true
  1640  
  1641  		default:
  1642  			return false
  1643  		}
  1644  	}
  1645  	// Iterator still in progress, wait for either a data or an error event
  1646  	select {
  1647  	case log := <-it.logs:
  1648  		it.Event = new(Camelotv3pairDrainWrongToken)
  1649  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1650  			it.fail = err
  1651  			return false
  1652  		}
  1653  		it.Event.Raw = log
  1654  		return true
  1655  
  1656  	case err := <-it.sub.Err():
  1657  		it.done = true
  1658  		it.fail = err
  1659  		return it.Next()
  1660  	}
  1661  }
  1662  
  1663  // Error returns any retrieval or parsing error occurred during filtering.
  1664  func (it *Camelotv3pairDrainWrongTokenIterator) Error() error {
  1665  	return it.fail
  1666  }
  1667  
  1668  // Close terminates the iteration process, releasing any pending underlying
  1669  // resources.
  1670  func (it *Camelotv3pairDrainWrongTokenIterator) Close() error {
  1671  	it.sub.Unsubscribe()
  1672  	return nil
  1673  }
  1674  
  1675  // Camelotv3pairDrainWrongToken represents a DrainWrongToken event raised by the Camelotv3pair contract.
  1676  type Camelotv3pairDrainWrongToken struct {
  1677  	Token common.Address
  1678  	To    common.Address
  1679  	Raw   types.Log // Blockchain specific contextual infos
  1680  }
  1681  
  1682  // FilterDrainWrongToken is a free log retrieval operation binding the contract event 0x368a9dc863ecb94b5ba32a682e26295b10d9c2666fad7d785ebdf262c3c52413.
  1683  //
  1684  // Solidity: event DrainWrongToken(address indexed token, address to)
  1685  func (_Camelotv3pair *Camelotv3pairFilterer) FilterDrainWrongToken(opts *bind.FilterOpts, token []common.Address) (*Camelotv3pairDrainWrongTokenIterator, error) {
  1686  
  1687  	var tokenRule []interface{}
  1688  	for _, tokenItem := range token {
  1689  		tokenRule = append(tokenRule, tokenItem)
  1690  	}
  1691  
  1692  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "DrainWrongToken", tokenRule)
  1693  	if err != nil {
  1694  		return nil, err
  1695  	}
  1696  	return &Camelotv3pairDrainWrongTokenIterator{contract: _Camelotv3pair.contract, event: "DrainWrongToken", logs: logs, sub: sub}, nil
  1697  }
  1698  
  1699  // WatchDrainWrongToken is a free log subscription operation binding the contract event 0x368a9dc863ecb94b5ba32a682e26295b10d9c2666fad7d785ebdf262c3c52413.
  1700  //
  1701  // Solidity: event DrainWrongToken(address indexed token, address to)
  1702  func (_Camelotv3pair *Camelotv3pairFilterer) WatchDrainWrongToken(opts *bind.WatchOpts, sink chan<- *Camelotv3pairDrainWrongToken, token []common.Address) (event.Subscription, error) {
  1703  
  1704  	var tokenRule []interface{}
  1705  	for _, tokenItem := range token {
  1706  		tokenRule = append(tokenRule, tokenItem)
  1707  	}
  1708  
  1709  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "DrainWrongToken", tokenRule)
  1710  	if err != nil {
  1711  		return nil, err
  1712  	}
  1713  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1714  		defer sub.Unsubscribe()
  1715  		for {
  1716  			select {
  1717  			case log := <-logs:
  1718  				// New log arrived, parse the event and forward to the user
  1719  				event := new(Camelotv3pairDrainWrongToken)
  1720  				if err := _Camelotv3pair.contract.UnpackLog(event, "DrainWrongToken", log); err != nil {
  1721  					return err
  1722  				}
  1723  				event.Raw = log
  1724  
  1725  				select {
  1726  				case sink <- event:
  1727  				case err := <-sub.Err():
  1728  					return err
  1729  				case <-quit:
  1730  					return nil
  1731  				}
  1732  			case err := <-sub.Err():
  1733  				return err
  1734  			case <-quit:
  1735  				return nil
  1736  			}
  1737  		}
  1738  	}), nil
  1739  }
  1740  
  1741  // ParseDrainWrongToken is a log parse operation binding the contract event 0x368a9dc863ecb94b5ba32a682e26295b10d9c2666fad7d785ebdf262c3c52413.
  1742  //
  1743  // Solidity: event DrainWrongToken(address indexed token, address to)
  1744  func (_Camelotv3pair *Camelotv3pairFilterer) ParseDrainWrongToken(log types.Log) (*Camelotv3pairDrainWrongToken, error) {
  1745  	event := new(Camelotv3pairDrainWrongToken)
  1746  	if err := _Camelotv3pair.contract.UnpackLog(event, "DrainWrongToken", log); err != nil {
  1747  		return nil, err
  1748  	}
  1749  	event.Raw = log
  1750  	return event, nil
  1751  }
  1752  
  1753  // Camelotv3pairFeePercentUpdatedIterator is returned from FilterFeePercentUpdated and is used to iterate over the raw logs and unpacked data for FeePercentUpdated events raised by the Camelotv3pair contract.
  1754  type Camelotv3pairFeePercentUpdatedIterator struct {
  1755  	Event *Camelotv3pairFeePercentUpdated // Event containing the contract specifics and raw log
  1756  
  1757  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1758  	event    string              // Event name to use for unpacking event data
  1759  
  1760  	logs chan types.Log        // Log channel receiving the found contract events
  1761  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1762  	done bool                  // Whether the subscription completed delivering logs
  1763  	fail error                 // Occurred error to stop iteration
  1764  }
  1765  
  1766  // Next advances the iterator to the subsequent event, returning whether there
  1767  // are any more events found. In case of a retrieval or parsing error, false is
  1768  // returned and Error() can be queried for the exact failure.
  1769  func (it *Camelotv3pairFeePercentUpdatedIterator) Next() bool {
  1770  	// If the iterator failed, stop iterating
  1771  	if it.fail != nil {
  1772  		return false
  1773  	}
  1774  	// If the iterator completed, deliver directly whatever's available
  1775  	if it.done {
  1776  		select {
  1777  		case log := <-it.logs:
  1778  			it.Event = new(Camelotv3pairFeePercentUpdated)
  1779  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1780  				it.fail = err
  1781  				return false
  1782  			}
  1783  			it.Event.Raw = log
  1784  			return true
  1785  
  1786  		default:
  1787  			return false
  1788  		}
  1789  	}
  1790  	// Iterator still in progress, wait for either a data or an error event
  1791  	select {
  1792  	case log := <-it.logs:
  1793  		it.Event = new(Camelotv3pairFeePercentUpdated)
  1794  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1795  			it.fail = err
  1796  			return false
  1797  		}
  1798  		it.Event.Raw = log
  1799  		return true
  1800  
  1801  	case err := <-it.sub.Err():
  1802  		it.done = true
  1803  		it.fail = err
  1804  		return it.Next()
  1805  	}
  1806  }
  1807  
  1808  // Error returns any retrieval or parsing error occurred during filtering.
  1809  func (it *Camelotv3pairFeePercentUpdatedIterator) Error() error {
  1810  	return it.fail
  1811  }
  1812  
  1813  // Close terminates the iteration process, releasing any pending underlying
  1814  // resources.
  1815  func (it *Camelotv3pairFeePercentUpdatedIterator) Close() error {
  1816  	it.sub.Unsubscribe()
  1817  	return nil
  1818  }
  1819  
  1820  // Camelotv3pairFeePercentUpdated represents a FeePercentUpdated event raised by the Camelotv3pair contract.
  1821  type Camelotv3pairFeePercentUpdated struct {
  1822  	Token0FeePercent uint16
  1823  	Token1FeePercent uint16
  1824  	Raw              types.Log // Blockchain specific contextual infos
  1825  }
  1826  
  1827  // FilterFeePercentUpdated is a free log retrieval operation binding the contract event 0xa4877b8ecb5a00ba277e4bceeeb187a669e7113649774dfbea05c259ce27f17b.
  1828  //
  1829  // Solidity: event FeePercentUpdated(uint16 token0FeePercent, uint16 token1FeePercent)
  1830  func (_Camelotv3pair *Camelotv3pairFilterer) FilterFeePercentUpdated(opts *bind.FilterOpts) (*Camelotv3pairFeePercentUpdatedIterator, error) {
  1831  
  1832  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "FeePercentUpdated")
  1833  	if err != nil {
  1834  		return nil, err
  1835  	}
  1836  	return &Camelotv3pairFeePercentUpdatedIterator{contract: _Camelotv3pair.contract, event: "FeePercentUpdated", logs: logs, sub: sub}, nil
  1837  }
  1838  
  1839  // WatchFeePercentUpdated is a free log subscription operation binding the contract event 0xa4877b8ecb5a00ba277e4bceeeb187a669e7113649774dfbea05c259ce27f17b.
  1840  //
  1841  // Solidity: event FeePercentUpdated(uint16 token0FeePercent, uint16 token1FeePercent)
  1842  func (_Camelotv3pair *Camelotv3pairFilterer) WatchFeePercentUpdated(opts *bind.WatchOpts, sink chan<- *Camelotv3pairFeePercentUpdated) (event.Subscription, error) {
  1843  
  1844  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "FeePercentUpdated")
  1845  	if err != nil {
  1846  		return nil, err
  1847  	}
  1848  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1849  		defer sub.Unsubscribe()
  1850  		for {
  1851  			select {
  1852  			case log := <-logs:
  1853  				// New log arrived, parse the event and forward to the user
  1854  				event := new(Camelotv3pairFeePercentUpdated)
  1855  				if err := _Camelotv3pair.contract.UnpackLog(event, "FeePercentUpdated", log); err != nil {
  1856  					return err
  1857  				}
  1858  				event.Raw = log
  1859  
  1860  				select {
  1861  				case sink <- event:
  1862  				case err := <-sub.Err():
  1863  					return err
  1864  				case <-quit:
  1865  					return nil
  1866  				}
  1867  			case err := <-sub.Err():
  1868  				return err
  1869  			case <-quit:
  1870  				return nil
  1871  			}
  1872  		}
  1873  	}), nil
  1874  }
  1875  
  1876  // ParseFeePercentUpdated is a log parse operation binding the contract event 0xa4877b8ecb5a00ba277e4bceeeb187a669e7113649774dfbea05c259ce27f17b.
  1877  //
  1878  // Solidity: event FeePercentUpdated(uint16 token0FeePercent, uint16 token1FeePercent)
  1879  func (_Camelotv3pair *Camelotv3pairFilterer) ParseFeePercentUpdated(log types.Log) (*Camelotv3pairFeePercentUpdated, error) {
  1880  	event := new(Camelotv3pairFeePercentUpdated)
  1881  	if err := _Camelotv3pair.contract.UnpackLog(event, "FeePercentUpdated", log); err != nil {
  1882  		return nil, err
  1883  	}
  1884  	event.Raw = log
  1885  	return event, nil
  1886  }
  1887  
  1888  // Camelotv3pairMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the Camelotv3pair contract.
  1889  type Camelotv3pairMintIterator struct {
  1890  	Event *Camelotv3pairMint // Event containing the contract specifics and raw log
  1891  
  1892  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1893  	event    string              // Event name to use for unpacking event data
  1894  
  1895  	logs chan types.Log        // Log channel receiving the found contract events
  1896  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1897  	done bool                  // Whether the subscription completed delivering logs
  1898  	fail error                 // Occurred error to stop iteration
  1899  }
  1900  
  1901  // Next advances the iterator to the subsequent event, returning whether there
  1902  // are any more events found. In case of a retrieval or parsing error, false is
  1903  // returned and Error() can be queried for the exact failure.
  1904  func (it *Camelotv3pairMintIterator) Next() bool {
  1905  	// If the iterator failed, stop iterating
  1906  	if it.fail != nil {
  1907  		return false
  1908  	}
  1909  	// If the iterator completed, deliver directly whatever's available
  1910  	if it.done {
  1911  		select {
  1912  		case log := <-it.logs:
  1913  			it.Event = new(Camelotv3pairMint)
  1914  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1915  				it.fail = err
  1916  				return false
  1917  			}
  1918  			it.Event.Raw = log
  1919  			return true
  1920  
  1921  		default:
  1922  			return false
  1923  		}
  1924  	}
  1925  	// Iterator still in progress, wait for either a data or an error event
  1926  	select {
  1927  	case log := <-it.logs:
  1928  		it.Event = new(Camelotv3pairMint)
  1929  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1930  			it.fail = err
  1931  			return false
  1932  		}
  1933  		it.Event.Raw = log
  1934  		return true
  1935  
  1936  	case err := <-it.sub.Err():
  1937  		it.done = true
  1938  		it.fail = err
  1939  		return it.Next()
  1940  	}
  1941  }
  1942  
  1943  // Error returns any retrieval or parsing error occurred during filtering.
  1944  func (it *Camelotv3pairMintIterator) Error() error {
  1945  	return it.fail
  1946  }
  1947  
  1948  // Close terminates the iteration process, releasing any pending underlying
  1949  // resources.
  1950  func (it *Camelotv3pairMintIterator) Close() error {
  1951  	it.sub.Unsubscribe()
  1952  	return nil
  1953  }
  1954  
  1955  // Camelotv3pairMint represents a Mint event raised by the Camelotv3pair contract.
  1956  type Camelotv3pairMint struct {
  1957  	Sender  common.Address
  1958  	Amount0 *big.Int
  1959  	Amount1 *big.Int
  1960  	Raw     types.Log // Blockchain specific contextual infos
  1961  }
  1962  
  1963  // FilterMint is a free log retrieval operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f.
  1964  //
  1965  // Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1)
  1966  func (_Camelotv3pair *Camelotv3pairFilterer) FilterMint(opts *bind.FilterOpts, sender []common.Address) (*Camelotv3pairMintIterator, error) {
  1967  
  1968  	var senderRule []interface{}
  1969  	for _, senderItem := range sender {
  1970  		senderRule = append(senderRule, senderItem)
  1971  	}
  1972  
  1973  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "Mint", senderRule)
  1974  	if err != nil {
  1975  		return nil, err
  1976  	}
  1977  	return &Camelotv3pairMintIterator{contract: _Camelotv3pair.contract, event: "Mint", logs: logs, sub: sub}, nil
  1978  }
  1979  
  1980  // WatchMint is a free log subscription operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f.
  1981  //
  1982  // Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1)
  1983  func (_Camelotv3pair *Camelotv3pairFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *Camelotv3pairMint, sender []common.Address) (event.Subscription, error) {
  1984  
  1985  	var senderRule []interface{}
  1986  	for _, senderItem := range sender {
  1987  		senderRule = append(senderRule, senderItem)
  1988  	}
  1989  
  1990  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "Mint", senderRule)
  1991  	if err != nil {
  1992  		return nil, err
  1993  	}
  1994  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1995  		defer sub.Unsubscribe()
  1996  		for {
  1997  			select {
  1998  			case log := <-logs:
  1999  				// New log arrived, parse the event and forward to the user
  2000  				event := new(Camelotv3pairMint)
  2001  				if err := _Camelotv3pair.contract.UnpackLog(event, "Mint", log); err != nil {
  2002  					return err
  2003  				}
  2004  				event.Raw = log
  2005  
  2006  				select {
  2007  				case sink <- event:
  2008  				case err := <-sub.Err():
  2009  					return err
  2010  				case <-quit:
  2011  					return nil
  2012  				}
  2013  			case err := <-sub.Err():
  2014  				return err
  2015  			case <-quit:
  2016  				return nil
  2017  			}
  2018  		}
  2019  	}), nil
  2020  }
  2021  
  2022  // ParseMint is a log parse operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f.
  2023  //
  2024  // Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1)
  2025  func (_Camelotv3pair *Camelotv3pairFilterer) ParseMint(log types.Log) (*Camelotv3pairMint, error) {
  2026  	event := new(Camelotv3pairMint)
  2027  	if err := _Camelotv3pair.contract.UnpackLog(event, "Mint", log); err != nil {
  2028  		return nil, err
  2029  	}
  2030  	event.Raw = log
  2031  	return event, nil
  2032  }
  2033  
  2034  // Camelotv3pairSetPairTypeImmutableIterator is returned from FilterSetPairTypeImmutable and is used to iterate over the raw logs and unpacked data for SetPairTypeImmutable events raised by the Camelotv3pair contract.
  2035  type Camelotv3pairSetPairTypeImmutableIterator struct {
  2036  	Event *Camelotv3pairSetPairTypeImmutable // Event containing the contract specifics and raw log
  2037  
  2038  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2039  	event    string              // Event name to use for unpacking event data
  2040  
  2041  	logs chan types.Log        // Log channel receiving the found contract events
  2042  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2043  	done bool                  // Whether the subscription completed delivering logs
  2044  	fail error                 // Occurred error to stop iteration
  2045  }
  2046  
  2047  // Next advances the iterator to the subsequent event, returning whether there
  2048  // are any more events found. In case of a retrieval or parsing error, false is
  2049  // returned and Error() can be queried for the exact failure.
  2050  func (it *Camelotv3pairSetPairTypeImmutableIterator) Next() bool {
  2051  	// If the iterator failed, stop iterating
  2052  	if it.fail != nil {
  2053  		return false
  2054  	}
  2055  	// If the iterator completed, deliver directly whatever's available
  2056  	if it.done {
  2057  		select {
  2058  		case log := <-it.logs:
  2059  			it.Event = new(Camelotv3pairSetPairTypeImmutable)
  2060  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2061  				it.fail = err
  2062  				return false
  2063  			}
  2064  			it.Event.Raw = log
  2065  			return true
  2066  
  2067  		default:
  2068  			return false
  2069  		}
  2070  	}
  2071  	// Iterator still in progress, wait for either a data or an error event
  2072  	select {
  2073  	case log := <-it.logs:
  2074  		it.Event = new(Camelotv3pairSetPairTypeImmutable)
  2075  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2076  			it.fail = err
  2077  			return false
  2078  		}
  2079  		it.Event.Raw = log
  2080  		return true
  2081  
  2082  	case err := <-it.sub.Err():
  2083  		it.done = true
  2084  		it.fail = err
  2085  		return it.Next()
  2086  	}
  2087  }
  2088  
  2089  // Error returns any retrieval or parsing error occurred during filtering.
  2090  func (it *Camelotv3pairSetPairTypeImmutableIterator) Error() error {
  2091  	return it.fail
  2092  }
  2093  
  2094  // Close terminates the iteration process, releasing any pending underlying
  2095  // resources.
  2096  func (it *Camelotv3pairSetPairTypeImmutableIterator) Close() error {
  2097  	it.sub.Unsubscribe()
  2098  	return nil
  2099  }
  2100  
  2101  // Camelotv3pairSetPairTypeImmutable represents a SetPairTypeImmutable event raised by the Camelotv3pair contract.
  2102  type Camelotv3pairSetPairTypeImmutable struct {
  2103  	Raw types.Log // Blockchain specific contextual infos
  2104  }
  2105  
  2106  // FilterSetPairTypeImmutable is a free log retrieval operation binding the contract event 0x09122c41ae733a4d7740324d50e35fbd6ee85be3c1312a45596d8045150ab2f2.
  2107  //
  2108  // Solidity: event SetPairTypeImmutable()
  2109  func (_Camelotv3pair *Camelotv3pairFilterer) FilterSetPairTypeImmutable(opts *bind.FilterOpts) (*Camelotv3pairSetPairTypeImmutableIterator, error) {
  2110  
  2111  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "SetPairTypeImmutable")
  2112  	if err != nil {
  2113  		return nil, err
  2114  	}
  2115  	return &Camelotv3pairSetPairTypeImmutableIterator{contract: _Camelotv3pair.contract, event: "SetPairTypeImmutable", logs: logs, sub: sub}, nil
  2116  }
  2117  
  2118  // WatchSetPairTypeImmutable is a free log subscription operation binding the contract event 0x09122c41ae733a4d7740324d50e35fbd6ee85be3c1312a45596d8045150ab2f2.
  2119  //
  2120  // Solidity: event SetPairTypeImmutable()
  2121  func (_Camelotv3pair *Camelotv3pairFilterer) WatchSetPairTypeImmutable(opts *bind.WatchOpts, sink chan<- *Camelotv3pairSetPairTypeImmutable) (event.Subscription, error) {
  2122  
  2123  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "SetPairTypeImmutable")
  2124  	if err != nil {
  2125  		return nil, err
  2126  	}
  2127  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2128  		defer sub.Unsubscribe()
  2129  		for {
  2130  			select {
  2131  			case log := <-logs:
  2132  				// New log arrived, parse the event and forward to the user
  2133  				event := new(Camelotv3pairSetPairTypeImmutable)
  2134  				if err := _Camelotv3pair.contract.UnpackLog(event, "SetPairTypeImmutable", log); err != nil {
  2135  					return err
  2136  				}
  2137  				event.Raw = log
  2138  
  2139  				select {
  2140  				case sink <- event:
  2141  				case err := <-sub.Err():
  2142  					return err
  2143  				case <-quit:
  2144  					return nil
  2145  				}
  2146  			case err := <-sub.Err():
  2147  				return err
  2148  			case <-quit:
  2149  				return nil
  2150  			}
  2151  		}
  2152  	}), nil
  2153  }
  2154  
  2155  // ParseSetPairTypeImmutable is a log parse operation binding the contract event 0x09122c41ae733a4d7740324d50e35fbd6ee85be3c1312a45596d8045150ab2f2.
  2156  //
  2157  // Solidity: event SetPairTypeImmutable()
  2158  func (_Camelotv3pair *Camelotv3pairFilterer) ParseSetPairTypeImmutable(log types.Log) (*Camelotv3pairSetPairTypeImmutable, error) {
  2159  	event := new(Camelotv3pairSetPairTypeImmutable)
  2160  	if err := _Camelotv3pair.contract.UnpackLog(event, "SetPairTypeImmutable", log); err != nil {
  2161  		return nil, err
  2162  	}
  2163  	event.Raw = log
  2164  	return event, nil
  2165  }
  2166  
  2167  // Camelotv3pairSetStableSwapIterator is returned from FilterSetStableSwap and is used to iterate over the raw logs and unpacked data for SetStableSwap events raised by the Camelotv3pair contract.
  2168  type Camelotv3pairSetStableSwapIterator struct {
  2169  	Event *Camelotv3pairSetStableSwap // Event containing the contract specifics and raw log
  2170  
  2171  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2172  	event    string              // Event name to use for unpacking event data
  2173  
  2174  	logs chan types.Log        // Log channel receiving the found contract events
  2175  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2176  	done bool                  // Whether the subscription completed delivering logs
  2177  	fail error                 // Occurred error to stop iteration
  2178  }
  2179  
  2180  // Next advances the iterator to the subsequent event, returning whether there
  2181  // are any more events found. In case of a retrieval or parsing error, false is
  2182  // returned and Error() can be queried for the exact failure.
  2183  func (it *Camelotv3pairSetStableSwapIterator) Next() bool {
  2184  	// If the iterator failed, stop iterating
  2185  	if it.fail != nil {
  2186  		return false
  2187  	}
  2188  	// If the iterator completed, deliver directly whatever's available
  2189  	if it.done {
  2190  		select {
  2191  		case log := <-it.logs:
  2192  			it.Event = new(Camelotv3pairSetStableSwap)
  2193  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2194  				it.fail = err
  2195  				return false
  2196  			}
  2197  			it.Event.Raw = log
  2198  			return true
  2199  
  2200  		default:
  2201  			return false
  2202  		}
  2203  	}
  2204  	// Iterator still in progress, wait for either a data or an error event
  2205  	select {
  2206  	case log := <-it.logs:
  2207  		it.Event = new(Camelotv3pairSetStableSwap)
  2208  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2209  			it.fail = err
  2210  			return false
  2211  		}
  2212  		it.Event.Raw = log
  2213  		return true
  2214  
  2215  	case err := <-it.sub.Err():
  2216  		it.done = true
  2217  		it.fail = err
  2218  		return it.Next()
  2219  	}
  2220  }
  2221  
  2222  // Error returns any retrieval or parsing error occurred during filtering.
  2223  func (it *Camelotv3pairSetStableSwapIterator) Error() error {
  2224  	return it.fail
  2225  }
  2226  
  2227  // Close terminates the iteration process, releasing any pending underlying
  2228  // resources.
  2229  func (it *Camelotv3pairSetStableSwapIterator) Close() error {
  2230  	it.sub.Unsubscribe()
  2231  	return nil
  2232  }
  2233  
  2234  // Camelotv3pairSetStableSwap represents a SetStableSwap event raised by the Camelotv3pair contract.
  2235  type Camelotv3pairSetStableSwap struct {
  2236  	PrevStableSwap bool
  2237  	StableSwap     bool
  2238  	Raw            types.Log // Blockchain specific contextual infos
  2239  }
  2240  
  2241  // FilterSetStableSwap is a free log retrieval operation binding the contract event 0xb6a86710bde53aa7fb1b3856279e2af5b476d53e2dd0902cf17a0911b5a43a8b.
  2242  //
  2243  // Solidity: event SetStableSwap(bool prevStableSwap, bool stableSwap)
  2244  func (_Camelotv3pair *Camelotv3pairFilterer) FilterSetStableSwap(opts *bind.FilterOpts) (*Camelotv3pairSetStableSwapIterator, error) {
  2245  
  2246  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "SetStableSwap")
  2247  	if err != nil {
  2248  		return nil, err
  2249  	}
  2250  	return &Camelotv3pairSetStableSwapIterator{contract: _Camelotv3pair.contract, event: "SetStableSwap", logs: logs, sub: sub}, nil
  2251  }
  2252  
  2253  // WatchSetStableSwap is a free log subscription operation binding the contract event 0xb6a86710bde53aa7fb1b3856279e2af5b476d53e2dd0902cf17a0911b5a43a8b.
  2254  //
  2255  // Solidity: event SetStableSwap(bool prevStableSwap, bool stableSwap)
  2256  func (_Camelotv3pair *Camelotv3pairFilterer) WatchSetStableSwap(opts *bind.WatchOpts, sink chan<- *Camelotv3pairSetStableSwap) (event.Subscription, error) {
  2257  
  2258  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "SetStableSwap")
  2259  	if err != nil {
  2260  		return nil, err
  2261  	}
  2262  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2263  		defer sub.Unsubscribe()
  2264  		for {
  2265  			select {
  2266  			case log := <-logs:
  2267  				// New log arrived, parse the event and forward to the user
  2268  				event := new(Camelotv3pairSetStableSwap)
  2269  				if err := _Camelotv3pair.contract.UnpackLog(event, "SetStableSwap", log); err != nil {
  2270  					return err
  2271  				}
  2272  				event.Raw = log
  2273  
  2274  				select {
  2275  				case sink <- event:
  2276  				case err := <-sub.Err():
  2277  					return err
  2278  				case <-quit:
  2279  					return nil
  2280  				}
  2281  			case err := <-sub.Err():
  2282  				return err
  2283  			case <-quit:
  2284  				return nil
  2285  			}
  2286  		}
  2287  	}), nil
  2288  }
  2289  
  2290  // ParseSetStableSwap is a log parse operation binding the contract event 0xb6a86710bde53aa7fb1b3856279e2af5b476d53e2dd0902cf17a0911b5a43a8b.
  2291  //
  2292  // Solidity: event SetStableSwap(bool prevStableSwap, bool stableSwap)
  2293  func (_Camelotv3pair *Camelotv3pairFilterer) ParseSetStableSwap(log types.Log) (*Camelotv3pairSetStableSwap, error) {
  2294  	event := new(Camelotv3pairSetStableSwap)
  2295  	if err := _Camelotv3pair.contract.UnpackLog(event, "SetStableSwap", log); err != nil {
  2296  		return nil, err
  2297  	}
  2298  	event.Raw = log
  2299  	return event, nil
  2300  }
  2301  
  2302  // Camelotv3pairSkimIterator is returned from FilterSkim and is used to iterate over the raw logs and unpacked data for Skim events raised by the Camelotv3pair contract.
  2303  type Camelotv3pairSkimIterator struct {
  2304  	Event *Camelotv3pairSkim // Event containing the contract specifics and raw log
  2305  
  2306  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2307  	event    string              // Event name to use for unpacking event data
  2308  
  2309  	logs chan types.Log        // Log channel receiving the found contract events
  2310  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2311  	done bool                  // Whether the subscription completed delivering logs
  2312  	fail error                 // Occurred error to stop iteration
  2313  }
  2314  
  2315  // Next advances the iterator to the subsequent event, returning whether there
  2316  // are any more events found. In case of a retrieval or parsing error, false is
  2317  // returned and Error() can be queried for the exact failure.
  2318  func (it *Camelotv3pairSkimIterator) Next() bool {
  2319  	// If the iterator failed, stop iterating
  2320  	if it.fail != nil {
  2321  		return false
  2322  	}
  2323  	// If the iterator completed, deliver directly whatever's available
  2324  	if it.done {
  2325  		select {
  2326  		case log := <-it.logs:
  2327  			it.Event = new(Camelotv3pairSkim)
  2328  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2329  				it.fail = err
  2330  				return false
  2331  			}
  2332  			it.Event.Raw = log
  2333  			return true
  2334  
  2335  		default:
  2336  			return false
  2337  		}
  2338  	}
  2339  	// Iterator still in progress, wait for either a data or an error event
  2340  	select {
  2341  	case log := <-it.logs:
  2342  		it.Event = new(Camelotv3pairSkim)
  2343  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2344  			it.fail = err
  2345  			return false
  2346  		}
  2347  		it.Event.Raw = log
  2348  		return true
  2349  
  2350  	case err := <-it.sub.Err():
  2351  		it.done = true
  2352  		it.fail = err
  2353  		return it.Next()
  2354  	}
  2355  }
  2356  
  2357  // Error returns any retrieval or parsing error occurred during filtering.
  2358  func (it *Camelotv3pairSkimIterator) Error() error {
  2359  	return it.fail
  2360  }
  2361  
  2362  // Close terminates the iteration process, releasing any pending underlying
  2363  // resources.
  2364  func (it *Camelotv3pairSkimIterator) Close() error {
  2365  	it.sub.Unsubscribe()
  2366  	return nil
  2367  }
  2368  
  2369  // Camelotv3pairSkim represents a Skim event raised by the Camelotv3pair contract.
  2370  type Camelotv3pairSkim struct {
  2371  	Raw types.Log // Blockchain specific contextual infos
  2372  }
  2373  
  2374  // FilterSkim is a free log retrieval operation binding the contract event 0x21ad22495c9c75cd1c94756f91824e779c0c8a8e168b267c790df464fe056b79.
  2375  //
  2376  // Solidity: event Skim()
  2377  func (_Camelotv3pair *Camelotv3pairFilterer) FilterSkim(opts *bind.FilterOpts) (*Camelotv3pairSkimIterator, error) {
  2378  
  2379  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "Skim")
  2380  	if err != nil {
  2381  		return nil, err
  2382  	}
  2383  	return &Camelotv3pairSkimIterator{contract: _Camelotv3pair.contract, event: "Skim", logs: logs, sub: sub}, nil
  2384  }
  2385  
  2386  // WatchSkim is a free log subscription operation binding the contract event 0x21ad22495c9c75cd1c94756f91824e779c0c8a8e168b267c790df464fe056b79.
  2387  //
  2388  // Solidity: event Skim()
  2389  func (_Camelotv3pair *Camelotv3pairFilterer) WatchSkim(opts *bind.WatchOpts, sink chan<- *Camelotv3pairSkim) (event.Subscription, error) {
  2390  
  2391  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "Skim")
  2392  	if err != nil {
  2393  		return nil, err
  2394  	}
  2395  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2396  		defer sub.Unsubscribe()
  2397  		for {
  2398  			select {
  2399  			case log := <-logs:
  2400  				// New log arrived, parse the event and forward to the user
  2401  				event := new(Camelotv3pairSkim)
  2402  				if err := _Camelotv3pair.contract.UnpackLog(event, "Skim", log); err != nil {
  2403  					return err
  2404  				}
  2405  				event.Raw = log
  2406  
  2407  				select {
  2408  				case sink <- event:
  2409  				case err := <-sub.Err():
  2410  					return err
  2411  				case <-quit:
  2412  					return nil
  2413  				}
  2414  			case err := <-sub.Err():
  2415  				return err
  2416  			case <-quit:
  2417  				return nil
  2418  			}
  2419  		}
  2420  	}), nil
  2421  }
  2422  
  2423  // ParseSkim is a log parse operation binding the contract event 0x21ad22495c9c75cd1c94756f91824e779c0c8a8e168b267c790df464fe056b79.
  2424  //
  2425  // Solidity: event Skim()
  2426  func (_Camelotv3pair *Camelotv3pairFilterer) ParseSkim(log types.Log) (*Camelotv3pairSkim, error) {
  2427  	event := new(Camelotv3pairSkim)
  2428  	if err := _Camelotv3pair.contract.UnpackLog(event, "Skim", log); err != nil {
  2429  		return nil, err
  2430  	}
  2431  	event.Raw = log
  2432  	return event, nil
  2433  }
  2434  
  2435  // Camelotv3pairSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the Camelotv3pair contract.
  2436  type Camelotv3pairSwapIterator struct {
  2437  	Event *Camelotv3pairSwap // Event containing the contract specifics and raw log
  2438  
  2439  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2440  	event    string              // Event name to use for unpacking event data
  2441  
  2442  	logs chan types.Log        // Log channel receiving the found contract events
  2443  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2444  	done bool                  // Whether the subscription completed delivering logs
  2445  	fail error                 // Occurred error to stop iteration
  2446  }
  2447  
  2448  // Next advances the iterator to the subsequent event, returning whether there
  2449  // are any more events found. In case of a retrieval or parsing error, false is
  2450  // returned and Error() can be queried for the exact failure.
  2451  func (it *Camelotv3pairSwapIterator) Next() bool {
  2452  	// If the iterator failed, stop iterating
  2453  	if it.fail != nil {
  2454  		return false
  2455  	}
  2456  	// If the iterator completed, deliver directly whatever's available
  2457  	if it.done {
  2458  		select {
  2459  		case log := <-it.logs:
  2460  			it.Event = new(Camelotv3pairSwap)
  2461  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2462  				it.fail = err
  2463  				return false
  2464  			}
  2465  			it.Event.Raw = log
  2466  			return true
  2467  
  2468  		default:
  2469  			return false
  2470  		}
  2471  	}
  2472  	// Iterator still in progress, wait for either a data or an error event
  2473  	select {
  2474  	case log := <-it.logs:
  2475  		it.Event = new(Camelotv3pairSwap)
  2476  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2477  			it.fail = err
  2478  			return false
  2479  		}
  2480  		it.Event.Raw = log
  2481  		return true
  2482  
  2483  	case err := <-it.sub.Err():
  2484  		it.done = true
  2485  		it.fail = err
  2486  		return it.Next()
  2487  	}
  2488  }
  2489  
  2490  // Error returns any retrieval or parsing error occurred during filtering.
  2491  func (it *Camelotv3pairSwapIterator) Error() error {
  2492  	return it.fail
  2493  }
  2494  
  2495  // Close terminates the iteration process, releasing any pending underlying
  2496  // resources.
  2497  func (it *Camelotv3pairSwapIterator) Close() error {
  2498  	it.sub.Unsubscribe()
  2499  	return nil
  2500  }
  2501  
  2502  // Camelotv3pairSwap represents a Swap event raised by the Camelotv3pair contract.
  2503  type Camelotv3pairSwap struct {
  2504  	Sender     common.Address
  2505  	Amount0In  *big.Int
  2506  	Amount1In  *big.Int
  2507  	Amount0Out *big.Int
  2508  	Amount1Out *big.Int
  2509  	To         common.Address
  2510  	Raw        types.Log // Blockchain specific contextual infos
  2511  }
  2512  
  2513  // FilterSwap is a free log retrieval operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822.
  2514  //
  2515  // Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to)
  2516  func (_Camelotv3pair *Camelotv3pairFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*Camelotv3pairSwapIterator, error) {
  2517  
  2518  	var senderRule []interface{}
  2519  	for _, senderItem := range sender {
  2520  		senderRule = append(senderRule, senderItem)
  2521  	}
  2522  
  2523  	var toRule []interface{}
  2524  	for _, toItem := range to {
  2525  		toRule = append(toRule, toItem)
  2526  	}
  2527  
  2528  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "Swap", senderRule, toRule)
  2529  	if err != nil {
  2530  		return nil, err
  2531  	}
  2532  	return &Camelotv3pairSwapIterator{contract: _Camelotv3pair.contract, event: "Swap", logs: logs, sub: sub}, nil
  2533  }
  2534  
  2535  // WatchSwap is a free log subscription operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822.
  2536  //
  2537  // Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to)
  2538  func (_Camelotv3pair *Camelotv3pairFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *Camelotv3pairSwap, sender []common.Address, to []common.Address) (event.Subscription, error) {
  2539  
  2540  	var senderRule []interface{}
  2541  	for _, senderItem := range sender {
  2542  		senderRule = append(senderRule, senderItem)
  2543  	}
  2544  
  2545  	var toRule []interface{}
  2546  	for _, toItem := range to {
  2547  		toRule = append(toRule, toItem)
  2548  	}
  2549  
  2550  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "Swap", senderRule, toRule)
  2551  	if err != nil {
  2552  		return nil, err
  2553  	}
  2554  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2555  		defer sub.Unsubscribe()
  2556  		for {
  2557  			select {
  2558  			case log := <-logs:
  2559  				// New log arrived, parse the event and forward to the user
  2560  				event := new(Camelotv3pairSwap)
  2561  				if err := _Camelotv3pair.contract.UnpackLog(event, "Swap", log); err != nil {
  2562  					return err
  2563  				}
  2564  				event.Raw = log
  2565  
  2566  				select {
  2567  				case sink <- event:
  2568  				case err := <-sub.Err():
  2569  					return err
  2570  				case <-quit:
  2571  					return nil
  2572  				}
  2573  			case err := <-sub.Err():
  2574  				return err
  2575  			case <-quit:
  2576  				return nil
  2577  			}
  2578  		}
  2579  	}), nil
  2580  }
  2581  
  2582  // ParseSwap is a log parse operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822.
  2583  //
  2584  // Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to)
  2585  func (_Camelotv3pair *Camelotv3pairFilterer) ParseSwap(log types.Log) (*Camelotv3pairSwap, error) {
  2586  	event := new(Camelotv3pairSwap)
  2587  	if err := _Camelotv3pair.contract.UnpackLog(event, "Swap", log); err != nil {
  2588  		return nil, err
  2589  	}
  2590  	event.Raw = log
  2591  	return event, nil
  2592  }
  2593  
  2594  // Camelotv3pairSyncIterator is returned from FilterSync and is used to iterate over the raw logs and unpacked data for Sync events raised by the Camelotv3pair contract.
  2595  type Camelotv3pairSyncIterator struct {
  2596  	Event *Camelotv3pairSync // Event containing the contract specifics and raw log
  2597  
  2598  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2599  	event    string              // Event name to use for unpacking event data
  2600  
  2601  	logs chan types.Log        // Log channel receiving the found contract events
  2602  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2603  	done bool                  // Whether the subscription completed delivering logs
  2604  	fail error                 // Occurred error to stop iteration
  2605  }
  2606  
  2607  // Next advances the iterator to the subsequent event, returning whether there
  2608  // are any more events found. In case of a retrieval or parsing error, false is
  2609  // returned and Error() can be queried for the exact failure.
  2610  func (it *Camelotv3pairSyncIterator) Next() bool {
  2611  	// If the iterator failed, stop iterating
  2612  	if it.fail != nil {
  2613  		return false
  2614  	}
  2615  	// If the iterator completed, deliver directly whatever's available
  2616  	if it.done {
  2617  		select {
  2618  		case log := <-it.logs:
  2619  			it.Event = new(Camelotv3pairSync)
  2620  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2621  				it.fail = err
  2622  				return false
  2623  			}
  2624  			it.Event.Raw = log
  2625  			return true
  2626  
  2627  		default:
  2628  			return false
  2629  		}
  2630  	}
  2631  	// Iterator still in progress, wait for either a data or an error event
  2632  	select {
  2633  	case log := <-it.logs:
  2634  		it.Event = new(Camelotv3pairSync)
  2635  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2636  			it.fail = err
  2637  			return false
  2638  		}
  2639  		it.Event.Raw = log
  2640  		return true
  2641  
  2642  	case err := <-it.sub.Err():
  2643  		it.done = true
  2644  		it.fail = err
  2645  		return it.Next()
  2646  	}
  2647  }
  2648  
  2649  // Error returns any retrieval or parsing error occurred during filtering.
  2650  func (it *Camelotv3pairSyncIterator) Error() error {
  2651  	return it.fail
  2652  }
  2653  
  2654  // Close terminates the iteration process, releasing any pending underlying
  2655  // resources.
  2656  func (it *Camelotv3pairSyncIterator) Close() error {
  2657  	it.sub.Unsubscribe()
  2658  	return nil
  2659  }
  2660  
  2661  // Camelotv3pairSync represents a Sync event raised by the Camelotv3pair contract.
  2662  type Camelotv3pairSync struct {
  2663  	Reserve0 *big.Int
  2664  	Reserve1 *big.Int
  2665  	Raw      types.Log // Blockchain specific contextual infos
  2666  }
  2667  
  2668  // FilterSync is a free log retrieval operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1.
  2669  //
  2670  // Solidity: event Sync(uint112 reserve0, uint112 reserve1)
  2671  func (_Camelotv3pair *Camelotv3pairFilterer) FilterSync(opts *bind.FilterOpts) (*Camelotv3pairSyncIterator, error) {
  2672  
  2673  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "Sync")
  2674  	if err != nil {
  2675  		return nil, err
  2676  	}
  2677  	return &Camelotv3pairSyncIterator{contract: _Camelotv3pair.contract, event: "Sync", logs: logs, sub: sub}, nil
  2678  }
  2679  
  2680  // WatchSync is a free log subscription operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1.
  2681  //
  2682  // Solidity: event Sync(uint112 reserve0, uint112 reserve1)
  2683  func (_Camelotv3pair *Camelotv3pairFilterer) WatchSync(opts *bind.WatchOpts, sink chan<- *Camelotv3pairSync) (event.Subscription, error) {
  2684  
  2685  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "Sync")
  2686  	if err != nil {
  2687  		return nil, err
  2688  	}
  2689  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2690  		defer sub.Unsubscribe()
  2691  		for {
  2692  			select {
  2693  			case log := <-logs:
  2694  				// New log arrived, parse the event and forward to the user
  2695  				event := new(Camelotv3pairSync)
  2696  				if err := _Camelotv3pair.contract.UnpackLog(event, "Sync", log); err != nil {
  2697  					return err
  2698  				}
  2699  				event.Raw = log
  2700  
  2701  				select {
  2702  				case sink <- event:
  2703  				case err := <-sub.Err():
  2704  					return err
  2705  				case <-quit:
  2706  					return nil
  2707  				}
  2708  			case err := <-sub.Err():
  2709  				return err
  2710  			case <-quit:
  2711  				return nil
  2712  			}
  2713  		}
  2714  	}), nil
  2715  }
  2716  
  2717  // ParseSync is a log parse operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1.
  2718  //
  2719  // Solidity: event Sync(uint112 reserve0, uint112 reserve1)
  2720  func (_Camelotv3pair *Camelotv3pairFilterer) ParseSync(log types.Log) (*Camelotv3pairSync, error) {
  2721  	event := new(Camelotv3pairSync)
  2722  	if err := _Camelotv3pair.contract.UnpackLog(event, "Sync", log); err != nil {
  2723  		return nil, err
  2724  	}
  2725  	event.Raw = log
  2726  	return event, nil
  2727  }
  2728  
  2729  // Camelotv3pairTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the Camelotv3pair contract.
  2730  type Camelotv3pairTransferIterator struct {
  2731  	Event *Camelotv3pairTransfer // Event containing the contract specifics and raw log
  2732  
  2733  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2734  	event    string              // Event name to use for unpacking event data
  2735  
  2736  	logs chan types.Log        // Log channel receiving the found contract events
  2737  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2738  	done bool                  // Whether the subscription completed delivering logs
  2739  	fail error                 // Occurred error to stop iteration
  2740  }
  2741  
  2742  // Next advances the iterator to the subsequent event, returning whether there
  2743  // are any more events found. In case of a retrieval or parsing error, false is
  2744  // returned and Error() can be queried for the exact failure.
  2745  func (it *Camelotv3pairTransferIterator) Next() bool {
  2746  	// If the iterator failed, stop iterating
  2747  	if it.fail != nil {
  2748  		return false
  2749  	}
  2750  	// If the iterator completed, deliver directly whatever's available
  2751  	if it.done {
  2752  		select {
  2753  		case log := <-it.logs:
  2754  			it.Event = new(Camelotv3pairTransfer)
  2755  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2756  				it.fail = err
  2757  				return false
  2758  			}
  2759  			it.Event.Raw = log
  2760  			return true
  2761  
  2762  		default:
  2763  			return false
  2764  		}
  2765  	}
  2766  	// Iterator still in progress, wait for either a data or an error event
  2767  	select {
  2768  	case log := <-it.logs:
  2769  		it.Event = new(Camelotv3pairTransfer)
  2770  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2771  			it.fail = err
  2772  			return false
  2773  		}
  2774  		it.Event.Raw = log
  2775  		return true
  2776  
  2777  	case err := <-it.sub.Err():
  2778  		it.done = true
  2779  		it.fail = err
  2780  		return it.Next()
  2781  	}
  2782  }
  2783  
  2784  // Error returns any retrieval or parsing error occurred during filtering.
  2785  func (it *Camelotv3pairTransferIterator) Error() error {
  2786  	return it.fail
  2787  }
  2788  
  2789  // Close terminates the iteration process, releasing any pending underlying
  2790  // resources.
  2791  func (it *Camelotv3pairTransferIterator) Close() error {
  2792  	it.sub.Unsubscribe()
  2793  	return nil
  2794  }
  2795  
  2796  // Camelotv3pairTransfer represents a Transfer event raised by the Camelotv3pair contract.
  2797  type Camelotv3pairTransfer struct {
  2798  	From  common.Address
  2799  	To    common.Address
  2800  	Value *big.Int
  2801  	Raw   types.Log // Blockchain specific contextual infos
  2802  }
  2803  
  2804  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2805  //
  2806  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2807  func (_Camelotv3pair *Camelotv3pairFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*Camelotv3pairTransferIterator, error) {
  2808  
  2809  	var fromRule []interface{}
  2810  	for _, fromItem := range from {
  2811  		fromRule = append(fromRule, fromItem)
  2812  	}
  2813  	var toRule []interface{}
  2814  	for _, toItem := range to {
  2815  		toRule = append(toRule, toItem)
  2816  	}
  2817  
  2818  	logs, sub, err := _Camelotv3pair.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  2819  	if err != nil {
  2820  		return nil, err
  2821  	}
  2822  	return &Camelotv3pairTransferIterator{contract: _Camelotv3pair.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2823  }
  2824  
  2825  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2826  //
  2827  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2828  func (_Camelotv3pair *Camelotv3pairFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *Camelotv3pairTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  2829  
  2830  	var fromRule []interface{}
  2831  	for _, fromItem := range from {
  2832  		fromRule = append(fromRule, fromItem)
  2833  	}
  2834  	var toRule []interface{}
  2835  	for _, toItem := range to {
  2836  		toRule = append(toRule, toItem)
  2837  	}
  2838  
  2839  	logs, sub, err := _Camelotv3pair.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  2840  	if err != nil {
  2841  		return nil, err
  2842  	}
  2843  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2844  		defer sub.Unsubscribe()
  2845  		for {
  2846  			select {
  2847  			case log := <-logs:
  2848  				// New log arrived, parse the event and forward to the user
  2849  				event := new(Camelotv3pairTransfer)
  2850  				if err := _Camelotv3pair.contract.UnpackLog(event, "Transfer", log); err != nil {
  2851  					return err
  2852  				}
  2853  				event.Raw = log
  2854  
  2855  				select {
  2856  				case sink <- event:
  2857  				case err := <-sub.Err():
  2858  					return err
  2859  				case <-quit:
  2860  					return nil
  2861  				}
  2862  			case err := <-sub.Err():
  2863  				return err
  2864  			case <-quit:
  2865  				return nil
  2866  			}
  2867  		}
  2868  	}), nil
  2869  }
  2870  
  2871  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2872  //
  2873  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2874  func (_Camelotv3pair *Camelotv3pairFilterer) ParseTransfer(log types.Log) (*Camelotv3pairTransfer, error) {
  2875  	event := new(Camelotv3pairTransfer)
  2876  	if err := _Camelotv3pair.contract.UnpackLog(event, "Transfer", log); err != nil {
  2877  		return nil, err
  2878  	}
  2879  	event.Raw = log
  2880  	return event, nil
  2881  }