github.com/cwntr/go-defi@v0.0.0-20210629134751-07f9ec2f7e66/binding/compound/cETH/cETH.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 cETH
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // CETHABI is the input ABI used to generate the binding from.
    30  const CETHABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x06fdde03\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0x095ea7b3\"},{\"constant\":false,\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\",\"signature\":\"0x1249c58b\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveFactorMantissa\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x173b9904\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0x17bfdfbc\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x18160ddd\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeRateStored\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x182df0f5\"},{\"constant\":false,\"inputs\":[{\"name\":\"src\",\"type\":\"address\"},{\"name\":\"dst\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0x23b872dd\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x26782247\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x313ce567\"},{\"constant\":false,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0x3af9e669\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCash\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x3b1d21a2\"},{\"constant\":false,\"inputs\":[{\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"_setComptroller\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0x4576b5db\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalBorrows\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x47bd3718\"},{\"constant\":false,\"inputs\":[],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\",\"signature\":\"0x4e4d9fea\"},{\"constant\":true,\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x5fe3b567\"},{\"constant\":false,\"inputs\":[{\"name\":\"reduceAmount\",\"type\":\"uint256\"}],\"name\":\"_reduceReserves\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0x601a0bf1\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialExchangeRateMantissa\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x675d972c\"},{\"constant\":true,\"inputs\":[],\"name\":\"accrualBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x6c540baf\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x70a08231\"},{\"constant\":false,\"inputs\":[],\"name\":\"totalBorrowsCurrent\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0x73acee98\"},{\"constant\":false,\"inputs\":[{\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0x852a12e3\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalReserves\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x8f840ddd\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x95d89b41\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0x95dd9193\"},{\"constant\":false,\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xa6afed95\"},{\"constant\":false,\"inputs\":[{\"name\":\"dst\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xa9059cbb\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0xaa5af0fd\"},{\"constant\":false,\"inputs\":[{\"name\":\"borrower\",\"type\":\"address\"},{\"name\":\"cTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\",\"signature\":\"0xaae40a2a\"},{\"constant\":true,\"inputs\":[],\"name\":\"supplyRatePerBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0xae9d70b0\"},{\"constant\":false,\"inputs\":[{\"name\":\"liquidator\",\"type\":\"address\"},{\"name\":\"borrower\",\"type\":\"address\"},{\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xb2a02ff1\"},{\"constant\":false,\"inputs\":[{\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"_setPendingAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xb71d1a0c\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xbd6d894d\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountSnapshot\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0xc37f68e2\"},{\"constant\":false,\"inputs\":[{\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xc5ebeaec\"},{\"constant\":false,\"inputs\":[{\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xdb006a75\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0xdd62ed3e\"},{\"constant\":false,\"inputs\":[{\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\",\"signature\":\"0xe5974619\"},{\"constant\":false,\"inputs\":[],\"name\":\"_acceptAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xe9c714f2\"},{\"constant\":false,\"inputs\":[{\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"_setInterestRateModel\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xf2b3abbd\"},{\"constant\":true,\"inputs\":[],\"name\":\"interestRateModel\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0xf3fdb15a\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0xf851a440\"},{\"constant\":true,\"inputs\":[],\"name\":\"borrowRatePerBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0xf8f9da28\"},{\"constant\":false,\"inputs\":[{\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"_setReserveFactor\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"signature\":\"0xfca7820b\"},{\"constant\":true,\"inputs\":[],\"name\":\"isCToken\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\",\"signature\":\"0xfe9c44ae\"},{\"inputs\":[{\"name\":\"comptroller_\",\"type\":\"address\"},{\"name\":\"interestRateModel_\",\"type\":\"address\"},{\"name\":\"initialExchangeRateMantissa_\",\"type\":\"uint256\"},{\"name\":\"name_\",\"type\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"signature\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"interestAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"borrowIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"AccrueInterest\",\"type\":\"event\",\"signature\":\"0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\",\"signature\":\"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\",\"signature\":\"0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"Borrow\",\"type\":\"event\",\"signature\":\"0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"accountBorrows\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"totalBorrows\",\"type\":\"uint256\"}],\"name\":\"RepayBorrow\",\"type\":\"event\",\"signature\":\"0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"LiquidateBorrow\",\"type\":\"event\",\"signature\":\"0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"oldPendingAdmin\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"NewPendingAdmin\",\"type\":\"event\",\"signature\":\"0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"NewAdmin\",\"type\":\"event\",\"signature\":\"0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"NewComptroller\",\"type\":\"event\",\"signature\":\"0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"oldInterestRateModel\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"newInterestRateModel\",\"type\":\"address\"}],\"name\":\"NewMarketInterestRateModel\",\"type\":\"event\",\"signature\":\"0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"oldReserveFactorMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"newReserveFactorMantissa\",\"type\":\"uint256\"}],\"name\":\"NewReserveFactor\",\"type\":\"event\",\"signature\":\"0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"reduceAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"newTotalReserves\",\"type\":\"uint256\"}],\"name\":\"ReservesReduced\",\"type\":\"event\",\"signature\":\"0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\",\"signature\":\"0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\",\"signature\":\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\",\"signature\":\"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\"}]"
    31  
    32  // CETH is an auto generated Go binding around an Ethereum contract.
    33  type CETH struct {
    34  	CETHCaller     // Read-only binding to the contract
    35  	CETHTransactor // Write-only binding to the contract
    36  	CETHFilterer   // Log filterer for contract events
    37  }
    38  
    39  // CETHCaller is an auto generated read-only Go binding around an Ethereum contract.
    40  type CETHCaller struct {
    41  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    42  }
    43  
    44  // CETHTransactor is an auto generated write-only Go binding around an Ethereum contract.
    45  type CETHTransactor struct {
    46  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    47  }
    48  
    49  // CETHFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    50  type CETHFilterer struct {
    51  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    52  }
    53  
    54  // CETHSession is an auto generated Go binding around an Ethereum contract,
    55  // with pre-set call and transact options.
    56  type CETHSession struct {
    57  	Contract     *CETH             // Generic contract binding to set the session for
    58  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    59  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    60  }
    61  
    62  // CETHCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    63  // with pre-set call options.
    64  type CETHCallerSession struct {
    65  	Contract *CETHCaller   // Generic contract caller binding to set the session for
    66  	CallOpts bind.CallOpts // Call options to use throughout this session
    67  }
    68  
    69  // CETHTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    70  // with pre-set transact options.
    71  type CETHTransactorSession struct {
    72  	Contract     *CETHTransactor   // Generic contract transactor binding to set the session for
    73  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    74  }
    75  
    76  // CETHRaw is an auto generated low-level Go binding around an Ethereum contract.
    77  type CETHRaw struct {
    78  	Contract *CETH // Generic contract binding to access the raw methods on
    79  }
    80  
    81  // CETHCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    82  type CETHCallerRaw struct {
    83  	Contract *CETHCaller // Generic read-only contract binding to access the raw methods on
    84  }
    85  
    86  // CETHTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    87  type CETHTransactorRaw struct {
    88  	Contract *CETHTransactor // Generic write-only contract binding to access the raw methods on
    89  }
    90  
    91  // NewCETH creates a new instance of CETH, bound to a specific deployed contract.
    92  func NewCETH(address common.Address, backend bind.ContractBackend) (*CETH, error) {
    93  	contract, err := bindCETH(address, backend, backend, backend)
    94  	if err != nil {
    95  		return nil, err
    96  	}
    97  	return &CETH{CETHCaller: CETHCaller{contract: contract}, CETHTransactor: CETHTransactor{contract: contract}, CETHFilterer: CETHFilterer{contract: contract}}, nil
    98  }
    99  
   100  // NewCETHCaller creates a new read-only instance of CETH, bound to a specific deployed contract.
   101  func NewCETHCaller(address common.Address, caller bind.ContractCaller) (*CETHCaller, error) {
   102  	contract, err := bindCETH(address, caller, nil, nil)
   103  	if err != nil {
   104  		return nil, err
   105  	}
   106  	return &CETHCaller{contract: contract}, nil
   107  }
   108  
   109  // NewCETHTransactor creates a new write-only instance of CETH, bound to a specific deployed contract.
   110  func NewCETHTransactor(address common.Address, transactor bind.ContractTransactor) (*CETHTransactor, error) {
   111  	contract, err := bindCETH(address, nil, transactor, nil)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	return &CETHTransactor{contract: contract}, nil
   116  }
   117  
   118  // NewCETHFilterer creates a new log filterer instance of CETH, bound to a specific deployed contract.
   119  func NewCETHFilterer(address common.Address, filterer bind.ContractFilterer) (*CETHFilterer, error) {
   120  	contract, err := bindCETH(address, nil, nil, filterer)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &CETHFilterer{contract: contract}, nil
   125  }
   126  
   127  // bindCETH binds a generic wrapper to an already deployed contract.
   128  func bindCETH(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   129  	parsed, err := abi.JSON(strings.NewReader(CETHABI))
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   134  }
   135  
   136  // Call invokes the (constant) contract method with params as input values and
   137  // sets the output to result. The result type might be a single field for simple
   138  // returns, a slice of interfaces for anonymous returns and a struct for named
   139  // returns.
   140  func (_CETH *CETHRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   141  	return _CETH.Contract.CETHCaller.contract.Call(opts, result, method, params...)
   142  }
   143  
   144  // Transfer initiates a plain transaction to move funds to the contract, calling
   145  // its default method if one is available.
   146  func (_CETH *CETHRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   147  	return _CETH.Contract.CETHTransactor.contract.Transfer(opts)
   148  }
   149  
   150  // Transact invokes the (paid) contract method with params as input values.
   151  func (_CETH *CETHRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   152  	return _CETH.Contract.CETHTransactor.contract.Transact(opts, method, params...)
   153  }
   154  
   155  // Call invokes the (constant) contract method with params as input values and
   156  // sets the output to result. The result type might be a single field for simple
   157  // returns, a slice of interfaces for anonymous returns and a struct for named
   158  // returns.
   159  func (_CETH *CETHCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   160  	return _CETH.Contract.contract.Call(opts, result, method, params...)
   161  }
   162  
   163  // Transfer initiates a plain transaction to move funds to the contract, calling
   164  // its default method if one is available.
   165  func (_CETH *CETHTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   166  	return _CETH.Contract.contract.Transfer(opts)
   167  }
   168  
   169  // Transact invokes the (paid) contract method with params as input values.
   170  func (_CETH *CETHTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   171  	return _CETH.Contract.contract.Transact(opts, method, params...)
   172  }
   173  
   174  // AccrualBlockNumber is a free data retrieval call binding the contract method 0x6c540baf.
   175  //
   176  // Solidity: function accrualBlockNumber() view returns(uint256)
   177  func (_CETH *CETHCaller) AccrualBlockNumber(opts *bind.CallOpts) (*big.Int, error) {
   178  	var out []interface{}
   179  	err := _CETH.contract.Call(opts, &out, "accrualBlockNumber")
   180  
   181  	if err != nil {
   182  		return *new(*big.Int), err
   183  	}
   184  
   185  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   186  
   187  	return out0, err
   188  
   189  }
   190  
   191  // AccrualBlockNumber is a free data retrieval call binding the contract method 0x6c540baf.
   192  //
   193  // Solidity: function accrualBlockNumber() view returns(uint256)
   194  func (_CETH *CETHSession) AccrualBlockNumber() (*big.Int, error) {
   195  	return _CETH.Contract.AccrualBlockNumber(&_CETH.CallOpts)
   196  }
   197  
   198  // AccrualBlockNumber is a free data retrieval call binding the contract method 0x6c540baf.
   199  //
   200  // Solidity: function accrualBlockNumber() view returns(uint256)
   201  func (_CETH *CETHCallerSession) AccrualBlockNumber() (*big.Int, error) {
   202  	return _CETH.Contract.AccrualBlockNumber(&_CETH.CallOpts)
   203  }
   204  
   205  // Admin is a free data retrieval call binding the contract method 0xf851a440.
   206  //
   207  // Solidity: function admin() view returns(address)
   208  func (_CETH *CETHCaller) Admin(opts *bind.CallOpts) (common.Address, error) {
   209  	var out []interface{}
   210  	err := _CETH.contract.Call(opts, &out, "admin")
   211  
   212  	if err != nil {
   213  		return *new(common.Address), err
   214  	}
   215  
   216  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   217  
   218  	return out0, err
   219  
   220  }
   221  
   222  // Admin is a free data retrieval call binding the contract method 0xf851a440.
   223  //
   224  // Solidity: function admin() view returns(address)
   225  func (_CETH *CETHSession) Admin() (common.Address, error) {
   226  	return _CETH.Contract.Admin(&_CETH.CallOpts)
   227  }
   228  
   229  // Admin is a free data retrieval call binding the contract method 0xf851a440.
   230  //
   231  // Solidity: function admin() view returns(address)
   232  func (_CETH *CETHCallerSession) Admin() (common.Address, error) {
   233  	return _CETH.Contract.Admin(&_CETH.CallOpts)
   234  }
   235  
   236  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   237  //
   238  // Solidity: function allowance(address owner, address spender) view returns(uint256)
   239  func (_CETH *CETHCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
   240  	var out []interface{}
   241  	err := _CETH.contract.Call(opts, &out, "allowance", owner, spender)
   242  
   243  	if err != nil {
   244  		return *new(*big.Int), err
   245  	}
   246  
   247  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   248  
   249  	return out0, err
   250  
   251  }
   252  
   253  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   254  //
   255  // Solidity: function allowance(address owner, address spender) view returns(uint256)
   256  func (_CETH *CETHSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
   257  	return _CETH.Contract.Allowance(&_CETH.CallOpts, owner, spender)
   258  }
   259  
   260  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   261  //
   262  // Solidity: function allowance(address owner, address spender) view returns(uint256)
   263  func (_CETH *CETHCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
   264  	return _CETH.Contract.Allowance(&_CETH.CallOpts, owner, spender)
   265  }
   266  
   267  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   268  //
   269  // Solidity: function balanceOf(address owner) view returns(uint256)
   270  func (_CETH *CETHCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
   271  	var out []interface{}
   272  	err := _CETH.contract.Call(opts, &out, "balanceOf", owner)
   273  
   274  	if err != nil {
   275  		return *new(*big.Int), err
   276  	}
   277  
   278  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   279  
   280  	return out0, err
   281  
   282  }
   283  
   284  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   285  //
   286  // Solidity: function balanceOf(address owner) view returns(uint256)
   287  func (_CETH *CETHSession) BalanceOf(owner common.Address) (*big.Int, error) {
   288  	return _CETH.Contract.BalanceOf(&_CETH.CallOpts, owner)
   289  }
   290  
   291  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   292  //
   293  // Solidity: function balanceOf(address owner) view returns(uint256)
   294  func (_CETH *CETHCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
   295  	return _CETH.Contract.BalanceOf(&_CETH.CallOpts, owner)
   296  }
   297  
   298  // BorrowBalanceStored is a free data retrieval call binding the contract method 0x95dd9193.
   299  //
   300  // Solidity: function borrowBalanceStored(address account) view returns(uint256)
   301  func (_CETH *CETHCaller) BorrowBalanceStored(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
   302  	var out []interface{}
   303  	err := _CETH.contract.Call(opts, &out, "borrowBalanceStored", account)
   304  
   305  	if err != nil {
   306  		return *new(*big.Int), err
   307  	}
   308  
   309  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   310  
   311  	return out0, err
   312  
   313  }
   314  
   315  // BorrowBalanceStored is a free data retrieval call binding the contract method 0x95dd9193.
   316  //
   317  // Solidity: function borrowBalanceStored(address account) view returns(uint256)
   318  func (_CETH *CETHSession) BorrowBalanceStored(account common.Address) (*big.Int, error) {
   319  	return _CETH.Contract.BorrowBalanceStored(&_CETH.CallOpts, account)
   320  }
   321  
   322  // BorrowBalanceStored is a free data retrieval call binding the contract method 0x95dd9193.
   323  //
   324  // Solidity: function borrowBalanceStored(address account) view returns(uint256)
   325  func (_CETH *CETHCallerSession) BorrowBalanceStored(account common.Address) (*big.Int, error) {
   326  	return _CETH.Contract.BorrowBalanceStored(&_CETH.CallOpts, account)
   327  }
   328  
   329  // BorrowIndex is a free data retrieval call binding the contract method 0xaa5af0fd.
   330  //
   331  // Solidity: function borrowIndex() view returns(uint256)
   332  func (_CETH *CETHCaller) BorrowIndex(opts *bind.CallOpts) (*big.Int, error) {
   333  	var out []interface{}
   334  	err := _CETH.contract.Call(opts, &out, "borrowIndex")
   335  
   336  	if err != nil {
   337  		return *new(*big.Int), err
   338  	}
   339  
   340  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   341  
   342  	return out0, err
   343  
   344  }
   345  
   346  // BorrowIndex is a free data retrieval call binding the contract method 0xaa5af0fd.
   347  //
   348  // Solidity: function borrowIndex() view returns(uint256)
   349  func (_CETH *CETHSession) BorrowIndex() (*big.Int, error) {
   350  	return _CETH.Contract.BorrowIndex(&_CETH.CallOpts)
   351  }
   352  
   353  // BorrowIndex is a free data retrieval call binding the contract method 0xaa5af0fd.
   354  //
   355  // Solidity: function borrowIndex() view returns(uint256)
   356  func (_CETH *CETHCallerSession) BorrowIndex() (*big.Int, error) {
   357  	return _CETH.Contract.BorrowIndex(&_CETH.CallOpts)
   358  }
   359  
   360  // BorrowRatePerBlock is a free data retrieval call binding the contract method 0xf8f9da28.
   361  //
   362  // Solidity: function borrowRatePerBlock() view returns(uint256)
   363  func (_CETH *CETHCaller) BorrowRatePerBlock(opts *bind.CallOpts) (*big.Int, error) {
   364  	var out []interface{}
   365  	err := _CETH.contract.Call(opts, &out, "borrowRatePerBlock")
   366  
   367  	if err != nil {
   368  		return *new(*big.Int), err
   369  	}
   370  
   371  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   372  
   373  	return out0, err
   374  
   375  }
   376  
   377  // BorrowRatePerBlock is a free data retrieval call binding the contract method 0xf8f9da28.
   378  //
   379  // Solidity: function borrowRatePerBlock() view returns(uint256)
   380  func (_CETH *CETHSession) BorrowRatePerBlock() (*big.Int, error) {
   381  	return _CETH.Contract.BorrowRatePerBlock(&_CETH.CallOpts)
   382  }
   383  
   384  // BorrowRatePerBlock is a free data retrieval call binding the contract method 0xf8f9da28.
   385  //
   386  // Solidity: function borrowRatePerBlock() view returns(uint256)
   387  func (_CETH *CETHCallerSession) BorrowRatePerBlock() (*big.Int, error) {
   388  	return _CETH.Contract.BorrowRatePerBlock(&_CETH.CallOpts)
   389  }
   390  
   391  // Comptroller is a free data retrieval call binding the contract method 0x5fe3b567.
   392  //
   393  // Solidity: function comptroller() view returns(address)
   394  func (_CETH *CETHCaller) Comptroller(opts *bind.CallOpts) (common.Address, error) {
   395  	var out []interface{}
   396  	err := _CETH.contract.Call(opts, &out, "comptroller")
   397  
   398  	if err != nil {
   399  		return *new(common.Address), err
   400  	}
   401  
   402  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   403  
   404  	return out0, err
   405  
   406  }
   407  
   408  // Comptroller is a free data retrieval call binding the contract method 0x5fe3b567.
   409  //
   410  // Solidity: function comptroller() view returns(address)
   411  func (_CETH *CETHSession) Comptroller() (common.Address, error) {
   412  	return _CETH.Contract.Comptroller(&_CETH.CallOpts)
   413  }
   414  
   415  // Comptroller is a free data retrieval call binding the contract method 0x5fe3b567.
   416  //
   417  // Solidity: function comptroller() view returns(address)
   418  func (_CETH *CETHCallerSession) Comptroller() (common.Address, error) {
   419  	return _CETH.Contract.Comptroller(&_CETH.CallOpts)
   420  }
   421  
   422  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
   423  //
   424  // Solidity: function decimals() view returns(uint256)
   425  func (_CETH *CETHCaller) Decimals(opts *bind.CallOpts) (*big.Int, error) {
   426  	var out []interface{}
   427  	err := _CETH.contract.Call(opts, &out, "decimals")
   428  
   429  	if err != nil {
   430  		return *new(*big.Int), err
   431  	}
   432  
   433  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   434  
   435  	return out0, err
   436  
   437  }
   438  
   439  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
   440  //
   441  // Solidity: function decimals() view returns(uint256)
   442  func (_CETH *CETHSession) Decimals() (*big.Int, error) {
   443  	return _CETH.Contract.Decimals(&_CETH.CallOpts)
   444  }
   445  
   446  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
   447  //
   448  // Solidity: function decimals() view returns(uint256)
   449  func (_CETH *CETHCallerSession) Decimals() (*big.Int, error) {
   450  	return _CETH.Contract.Decimals(&_CETH.CallOpts)
   451  }
   452  
   453  // ExchangeRateStored is a free data retrieval call binding the contract method 0x182df0f5.
   454  //
   455  // Solidity: function exchangeRateStored() view returns(uint256)
   456  func (_CETH *CETHCaller) ExchangeRateStored(opts *bind.CallOpts) (*big.Int, error) {
   457  	var out []interface{}
   458  	err := _CETH.contract.Call(opts, &out, "exchangeRateStored")
   459  
   460  	if err != nil {
   461  		return *new(*big.Int), err
   462  	}
   463  
   464  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   465  
   466  	return out0, err
   467  
   468  }
   469  
   470  // ExchangeRateStored is a free data retrieval call binding the contract method 0x182df0f5.
   471  //
   472  // Solidity: function exchangeRateStored() view returns(uint256)
   473  func (_CETH *CETHSession) ExchangeRateStored() (*big.Int, error) {
   474  	return _CETH.Contract.ExchangeRateStored(&_CETH.CallOpts)
   475  }
   476  
   477  // ExchangeRateStored is a free data retrieval call binding the contract method 0x182df0f5.
   478  //
   479  // Solidity: function exchangeRateStored() view returns(uint256)
   480  func (_CETH *CETHCallerSession) ExchangeRateStored() (*big.Int, error) {
   481  	return _CETH.Contract.ExchangeRateStored(&_CETH.CallOpts)
   482  }
   483  
   484  // GetAccountSnapshot is a free data retrieval call binding the contract method 0xc37f68e2.
   485  //
   486  // Solidity: function getAccountSnapshot(address account) view returns(uint256, uint256, uint256, uint256)
   487  func (_CETH *CETHCaller) GetAccountSnapshot(opts *bind.CallOpts, account common.Address) (*big.Int, *big.Int, *big.Int, *big.Int, error) {
   488  	var out []interface{}
   489  	err := _CETH.contract.Call(opts, &out, "getAccountSnapshot", account)
   490  
   491  	if err != nil {
   492  		return *new(*big.Int), *new(*big.Int), *new(*big.Int), *new(*big.Int), err
   493  	}
   494  
   495  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   496  	out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   497  	out2 := *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   498  	out3 := *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   499  
   500  	return out0, out1, out2, out3, err
   501  
   502  }
   503  
   504  // GetAccountSnapshot is a free data retrieval call binding the contract method 0xc37f68e2.
   505  //
   506  // Solidity: function getAccountSnapshot(address account) view returns(uint256, uint256, uint256, uint256)
   507  func (_CETH *CETHSession) GetAccountSnapshot(account common.Address) (*big.Int, *big.Int, *big.Int, *big.Int, error) {
   508  	return _CETH.Contract.GetAccountSnapshot(&_CETH.CallOpts, account)
   509  }
   510  
   511  // GetAccountSnapshot is a free data retrieval call binding the contract method 0xc37f68e2.
   512  //
   513  // Solidity: function getAccountSnapshot(address account) view returns(uint256, uint256, uint256, uint256)
   514  func (_CETH *CETHCallerSession) GetAccountSnapshot(account common.Address) (*big.Int, *big.Int, *big.Int, *big.Int, error) {
   515  	return _CETH.Contract.GetAccountSnapshot(&_CETH.CallOpts, account)
   516  }
   517  
   518  // GetCash is a free data retrieval call binding the contract method 0x3b1d21a2.
   519  //
   520  // Solidity: function getCash() view returns(uint256)
   521  func (_CETH *CETHCaller) GetCash(opts *bind.CallOpts) (*big.Int, error) {
   522  	var out []interface{}
   523  	err := _CETH.contract.Call(opts, &out, "getCash")
   524  
   525  	if err != nil {
   526  		return *new(*big.Int), err
   527  	}
   528  
   529  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   530  
   531  	return out0, err
   532  
   533  }
   534  
   535  // GetCash is a free data retrieval call binding the contract method 0x3b1d21a2.
   536  //
   537  // Solidity: function getCash() view returns(uint256)
   538  func (_CETH *CETHSession) GetCash() (*big.Int, error) {
   539  	return _CETH.Contract.GetCash(&_CETH.CallOpts)
   540  }
   541  
   542  // GetCash is a free data retrieval call binding the contract method 0x3b1d21a2.
   543  //
   544  // Solidity: function getCash() view returns(uint256)
   545  func (_CETH *CETHCallerSession) GetCash() (*big.Int, error) {
   546  	return _CETH.Contract.GetCash(&_CETH.CallOpts)
   547  }
   548  
   549  // InitialExchangeRateMantissa is a free data retrieval call binding the contract method 0x675d972c.
   550  //
   551  // Solidity: function initialExchangeRateMantissa() view returns(uint256)
   552  func (_CETH *CETHCaller) InitialExchangeRateMantissa(opts *bind.CallOpts) (*big.Int, error) {
   553  	var out []interface{}
   554  	err := _CETH.contract.Call(opts, &out, "initialExchangeRateMantissa")
   555  
   556  	if err != nil {
   557  		return *new(*big.Int), err
   558  	}
   559  
   560  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   561  
   562  	return out0, err
   563  
   564  }
   565  
   566  // InitialExchangeRateMantissa is a free data retrieval call binding the contract method 0x675d972c.
   567  //
   568  // Solidity: function initialExchangeRateMantissa() view returns(uint256)
   569  func (_CETH *CETHSession) InitialExchangeRateMantissa() (*big.Int, error) {
   570  	return _CETH.Contract.InitialExchangeRateMantissa(&_CETH.CallOpts)
   571  }
   572  
   573  // InitialExchangeRateMantissa is a free data retrieval call binding the contract method 0x675d972c.
   574  //
   575  // Solidity: function initialExchangeRateMantissa() view returns(uint256)
   576  func (_CETH *CETHCallerSession) InitialExchangeRateMantissa() (*big.Int, error) {
   577  	return _CETH.Contract.InitialExchangeRateMantissa(&_CETH.CallOpts)
   578  }
   579  
   580  // InterestRateModel is a free data retrieval call binding the contract method 0xf3fdb15a.
   581  //
   582  // Solidity: function interestRateModel() view returns(address)
   583  func (_CETH *CETHCaller) InterestRateModel(opts *bind.CallOpts) (common.Address, error) {
   584  	var out []interface{}
   585  	err := _CETH.contract.Call(opts, &out, "interestRateModel")
   586  
   587  	if err != nil {
   588  		return *new(common.Address), err
   589  	}
   590  
   591  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   592  
   593  	return out0, err
   594  
   595  }
   596  
   597  // InterestRateModel is a free data retrieval call binding the contract method 0xf3fdb15a.
   598  //
   599  // Solidity: function interestRateModel() view returns(address)
   600  func (_CETH *CETHSession) InterestRateModel() (common.Address, error) {
   601  	return _CETH.Contract.InterestRateModel(&_CETH.CallOpts)
   602  }
   603  
   604  // InterestRateModel is a free data retrieval call binding the contract method 0xf3fdb15a.
   605  //
   606  // Solidity: function interestRateModel() view returns(address)
   607  func (_CETH *CETHCallerSession) InterestRateModel() (common.Address, error) {
   608  	return _CETH.Contract.InterestRateModel(&_CETH.CallOpts)
   609  }
   610  
   611  // IsCToken is a free data retrieval call binding the contract method 0xfe9c44ae.
   612  //
   613  // Solidity: function isCToken() view returns(bool)
   614  func (_CETH *CETHCaller) IsCToken(opts *bind.CallOpts) (bool, error) {
   615  	var out []interface{}
   616  	err := _CETH.contract.Call(opts, &out, "isCToken")
   617  
   618  	if err != nil {
   619  		return *new(bool), err
   620  	}
   621  
   622  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   623  
   624  	return out0, err
   625  
   626  }
   627  
   628  // IsCToken is a free data retrieval call binding the contract method 0xfe9c44ae.
   629  //
   630  // Solidity: function isCToken() view returns(bool)
   631  func (_CETH *CETHSession) IsCToken() (bool, error) {
   632  	return _CETH.Contract.IsCToken(&_CETH.CallOpts)
   633  }
   634  
   635  // IsCToken is a free data retrieval call binding the contract method 0xfe9c44ae.
   636  //
   637  // Solidity: function isCToken() view returns(bool)
   638  func (_CETH *CETHCallerSession) IsCToken() (bool, error) {
   639  	return _CETH.Contract.IsCToken(&_CETH.CallOpts)
   640  }
   641  
   642  // Name is a free data retrieval call binding the contract method 0x06fdde03.
   643  //
   644  // Solidity: function name() view returns(string)
   645  func (_CETH *CETHCaller) Name(opts *bind.CallOpts) (string, error) {
   646  	var out []interface{}
   647  	err := _CETH.contract.Call(opts, &out, "name")
   648  
   649  	if err != nil {
   650  		return *new(string), err
   651  	}
   652  
   653  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   654  
   655  	return out0, err
   656  
   657  }
   658  
   659  // Name is a free data retrieval call binding the contract method 0x06fdde03.
   660  //
   661  // Solidity: function name() view returns(string)
   662  func (_CETH *CETHSession) Name() (string, error) {
   663  	return _CETH.Contract.Name(&_CETH.CallOpts)
   664  }
   665  
   666  // Name is a free data retrieval call binding the contract method 0x06fdde03.
   667  //
   668  // Solidity: function name() view returns(string)
   669  func (_CETH *CETHCallerSession) Name() (string, error) {
   670  	return _CETH.Contract.Name(&_CETH.CallOpts)
   671  }
   672  
   673  // PendingAdmin is a free data retrieval call binding the contract method 0x26782247.
   674  //
   675  // Solidity: function pendingAdmin() view returns(address)
   676  func (_CETH *CETHCaller) PendingAdmin(opts *bind.CallOpts) (common.Address, error) {
   677  	var out []interface{}
   678  	err := _CETH.contract.Call(opts, &out, "pendingAdmin")
   679  
   680  	if err != nil {
   681  		return *new(common.Address), err
   682  	}
   683  
   684  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   685  
   686  	return out0, err
   687  
   688  }
   689  
   690  // PendingAdmin is a free data retrieval call binding the contract method 0x26782247.
   691  //
   692  // Solidity: function pendingAdmin() view returns(address)
   693  func (_CETH *CETHSession) PendingAdmin() (common.Address, error) {
   694  	return _CETH.Contract.PendingAdmin(&_CETH.CallOpts)
   695  }
   696  
   697  // PendingAdmin is a free data retrieval call binding the contract method 0x26782247.
   698  //
   699  // Solidity: function pendingAdmin() view returns(address)
   700  func (_CETH *CETHCallerSession) PendingAdmin() (common.Address, error) {
   701  	return _CETH.Contract.PendingAdmin(&_CETH.CallOpts)
   702  }
   703  
   704  // ReserveFactorMantissa is a free data retrieval call binding the contract method 0x173b9904.
   705  //
   706  // Solidity: function reserveFactorMantissa() view returns(uint256)
   707  func (_CETH *CETHCaller) ReserveFactorMantissa(opts *bind.CallOpts) (*big.Int, error) {
   708  	var out []interface{}
   709  	err := _CETH.contract.Call(opts, &out, "reserveFactorMantissa")
   710  
   711  	if err != nil {
   712  		return *new(*big.Int), err
   713  	}
   714  
   715  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   716  
   717  	return out0, err
   718  
   719  }
   720  
   721  // ReserveFactorMantissa is a free data retrieval call binding the contract method 0x173b9904.
   722  //
   723  // Solidity: function reserveFactorMantissa() view returns(uint256)
   724  func (_CETH *CETHSession) ReserveFactorMantissa() (*big.Int, error) {
   725  	return _CETH.Contract.ReserveFactorMantissa(&_CETH.CallOpts)
   726  }
   727  
   728  // ReserveFactorMantissa is a free data retrieval call binding the contract method 0x173b9904.
   729  //
   730  // Solidity: function reserveFactorMantissa() view returns(uint256)
   731  func (_CETH *CETHCallerSession) ReserveFactorMantissa() (*big.Int, error) {
   732  	return _CETH.Contract.ReserveFactorMantissa(&_CETH.CallOpts)
   733  }
   734  
   735  // SupplyRatePerBlock is a free data retrieval call binding the contract method 0xae9d70b0.
   736  //
   737  // Solidity: function supplyRatePerBlock() view returns(uint256)
   738  func (_CETH *CETHCaller) SupplyRatePerBlock(opts *bind.CallOpts) (*big.Int, error) {
   739  	var out []interface{}
   740  	err := _CETH.contract.Call(opts, &out, "supplyRatePerBlock")
   741  
   742  	if err != nil {
   743  		return *new(*big.Int), err
   744  	}
   745  
   746  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   747  
   748  	return out0, err
   749  
   750  }
   751  
   752  // SupplyRatePerBlock is a free data retrieval call binding the contract method 0xae9d70b0.
   753  //
   754  // Solidity: function supplyRatePerBlock() view returns(uint256)
   755  func (_CETH *CETHSession) SupplyRatePerBlock() (*big.Int, error) {
   756  	return _CETH.Contract.SupplyRatePerBlock(&_CETH.CallOpts)
   757  }
   758  
   759  // SupplyRatePerBlock is a free data retrieval call binding the contract method 0xae9d70b0.
   760  //
   761  // Solidity: function supplyRatePerBlock() view returns(uint256)
   762  func (_CETH *CETHCallerSession) SupplyRatePerBlock() (*big.Int, error) {
   763  	return _CETH.Contract.SupplyRatePerBlock(&_CETH.CallOpts)
   764  }
   765  
   766  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
   767  //
   768  // Solidity: function symbol() view returns(string)
   769  func (_CETH *CETHCaller) Symbol(opts *bind.CallOpts) (string, error) {
   770  	var out []interface{}
   771  	err := _CETH.contract.Call(opts, &out, "symbol")
   772  
   773  	if err != nil {
   774  		return *new(string), err
   775  	}
   776  
   777  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   778  
   779  	return out0, err
   780  
   781  }
   782  
   783  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
   784  //
   785  // Solidity: function symbol() view returns(string)
   786  func (_CETH *CETHSession) Symbol() (string, error) {
   787  	return _CETH.Contract.Symbol(&_CETH.CallOpts)
   788  }
   789  
   790  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
   791  //
   792  // Solidity: function symbol() view returns(string)
   793  func (_CETH *CETHCallerSession) Symbol() (string, error) {
   794  	return _CETH.Contract.Symbol(&_CETH.CallOpts)
   795  }
   796  
   797  // TotalBorrows is a free data retrieval call binding the contract method 0x47bd3718.
   798  //
   799  // Solidity: function totalBorrows() view returns(uint256)
   800  func (_CETH *CETHCaller) TotalBorrows(opts *bind.CallOpts) (*big.Int, error) {
   801  	var out []interface{}
   802  	err := _CETH.contract.Call(opts, &out, "totalBorrows")
   803  
   804  	if err != nil {
   805  		return *new(*big.Int), err
   806  	}
   807  
   808  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   809  
   810  	return out0, err
   811  
   812  }
   813  
   814  // TotalBorrows is a free data retrieval call binding the contract method 0x47bd3718.
   815  //
   816  // Solidity: function totalBorrows() view returns(uint256)
   817  func (_CETH *CETHSession) TotalBorrows() (*big.Int, error) {
   818  	return _CETH.Contract.TotalBorrows(&_CETH.CallOpts)
   819  }
   820  
   821  // TotalBorrows is a free data retrieval call binding the contract method 0x47bd3718.
   822  //
   823  // Solidity: function totalBorrows() view returns(uint256)
   824  func (_CETH *CETHCallerSession) TotalBorrows() (*big.Int, error) {
   825  	return _CETH.Contract.TotalBorrows(&_CETH.CallOpts)
   826  }
   827  
   828  // TotalReserves is a free data retrieval call binding the contract method 0x8f840ddd.
   829  //
   830  // Solidity: function totalReserves() view returns(uint256)
   831  func (_CETH *CETHCaller) TotalReserves(opts *bind.CallOpts) (*big.Int, error) {
   832  	var out []interface{}
   833  	err := _CETH.contract.Call(opts, &out, "totalReserves")
   834  
   835  	if err != nil {
   836  		return *new(*big.Int), err
   837  	}
   838  
   839  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   840  
   841  	return out0, err
   842  
   843  }
   844  
   845  // TotalReserves is a free data retrieval call binding the contract method 0x8f840ddd.
   846  //
   847  // Solidity: function totalReserves() view returns(uint256)
   848  func (_CETH *CETHSession) TotalReserves() (*big.Int, error) {
   849  	return _CETH.Contract.TotalReserves(&_CETH.CallOpts)
   850  }
   851  
   852  // TotalReserves is a free data retrieval call binding the contract method 0x8f840ddd.
   853  //
   854  // Solidity: function totalReserves() view returns(uint256)
   855  func (_CETH *CETHCallerSession) TotalReserves() (*big.Int, error) {
   856  	return _CETH.Contract.TotalReserves(&_CETH.CallOpts)
   857  }
   858  
   859  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   860  //
   861  // Solidity: function totalSupply() view returns(uint256)
   862  func (_CETH *CETHCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
   863  	var out []interface{}
   864  	err := _CETH.contract.Call(opts, &out, "totalSupply")
   865  
   866  	if err != nil {
   867  		return *new(*big.Int), err
   868  	}
   869  
   870  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   871  
   872  	return out0, err
   873  
   874  }
   875  
   876  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   877  //
   878  // Solidity: function totalSupply() view returns(uint256)
   879  func (_CETH *CETHSession) TotalSupply() (*big.Int, error) {
   880  	return _CETH.Contract.TotalSupply(&_CETH.CallOpts)
   881  }
   882  
   883  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   884  //
   885  // Solidity: function totalSupply() view returns(uint256)
   886  func (_CETH *CETHCallerSession) TotalSupply() (*big.Int, error) {
   887  	return _CETH.Contract.TotalSupply(&_CETH.CallOpts)
   888  }
   889  
   890  // AcceptAdmin is a paid mutator transaction binding the contract method 0xe9c714f2.
   891  //
   892  // Solidity: function _acceptAdmin() returns(uint256)
   893  func (_CETH *CETHTransactor) AcceptAdmin(opts *bind.TransactOpts) (*types.Transaction, error) {
   894  	return _CETH.contract.Transact(opts, "_acceptAdmin")
   895  }
   896  
   897  // AcceptAdmin is a paid mutator transaction binding the contract method 0xe9c714f2.
   898  //
   899  // Solidity: function _acceptAdmin() returns(uint256)
   900  func (_CETH *CETHSession) AcceptAdmin() (*types.Transaction, error) {
   901  	return _CETH.Contract.AcceptAdmin(&_CETH.TransactOpts)
   902  }
   903  
   904  // AcceptAdmin is a paid mutator transaction binding the contract method 0xe9c714f2.
   905  //
   906  // Solidity: function _acceptAdmin() returns(uint256)
   907  func (_CETH *CETHTransactorSession) AcceptAdmin() (*types.Transaction, error) {
   908  	return _CETH.Contract.AcceptAdmin(&_CETH.TransactOpts)
   909  }
   910  
   911  // ReduceReserves is a paid mutator transaction binding the contract method 0x601a0bf1.
   912  //
   913  // Solidity: function _reduceReserves(uint256 reduceAmount) returns(uint256)
   914  func (_CETH *CETHTransactor) ReduceReserves(opts *bind.TransactOpts, reduceAmount *big.Int) (*types.Transaction, error) {
   915  	return _CETH.contract.Transact(opts, "_reduceReserves", reduceAmount)
   916  }
   917  
   918  // ReduceReserves is a paid mutator transaction binding the contract method 0x601a0bf1.
   919  //
   920  // Solidity: function _reduceReserves(uint256 reduceAmount) returns(uint256)
   921  func (_CETH *CETHSession) ReduceReserves(reduceAmount *big.Int) (*types.Transaction, error) {
   922  	return _CETH.Contract.ReduceReserves(&_CETH.TransactOpts, reduceAmount)
   923  }
   924  
   925  // ReduceReserves is a paid mutator transaction binding the contract method 0x601a0bf1.
   926  //
   927  // Solidity: function _reduceReserves(uint256 reduceAmount) returns(uint256)
   928  func (_CETH *CETHTransactorSession) ReduceReserves(reduceAmount *big.Int) (*types.Transaction, error) {
   929  	return _CETH.Contract.ReduceReserves(&_CETH.TransactOpts, reduceAmount)
   930  }
   931  
   932  // SetComptroller is a paid mutator transaction binding the contract method 0x4576b5db.
   933  //
   934  // Solidity: function _setComptroller(address newComptroller) returns(uint256)
   935  func (_CETH *CETHTransactor) SetComptroller(opts *bind.TransactOpts, newComptroller common.Address) (*types.Transaction, error) {
   936  	return _CETH.contract.Transact(opts, "_setComptroller", newComptroller)
   937  }
   938  
   939  // SetComptroller is a paid mutator transaction binding the contract method 0x4576b5db.
   940  //
   941  // Solidity: function _setComptroller(address newComptroller) returns(uint256)
   942  func (_CETH *CETHSession) SetComptroller(newComptroller common.Address) (*types.Transaction, error) {
   943  	return _CETH.Contract.SetComptroller(&_CETH.TransactOpts, newComptroller)
   944  }
   945  
   946  // SetComptroller is a paid mutator transaction binding the contract method 0x4576b5db.
   947  //
   948  // Solidity: function _setComptroller(address newComptroller) returns(uint256)
   949  func (_CETH *CETHTransactorSession) SetComptroller(newComptroller common.Address) (*types.Transaction, error) {
   950  	return _CETH.Contract.SetComptroller(&_CETH.TransactOpts, newComptroller)
   951  }
   952  
   953  // SetInterestRateModel is a paid mutator transaction binding the contract method 0xf2b3abbd.
   954  //
   955  // Solidity: function _setInterestRateModel(address newInterestRateModel) returns(uint256)
   956  func (_CETH *CETHTransactor) SetInterestRateModel(opts *bind.TransactOpts, newInterestRateModel common.Address) (*types.Transaction, error) {
   957  	return _CETH.contract.Transact(opts, "_setInterestRateModel", newInterestRateModel)
   958  }
   959  
   960  // SetInterestRateModel is a paid mutator transaction binding the contract method 0xf2b3abbd.
   961  //
   962  // Solidity: function _setInterestRateModel(address newInterestRateModel) returns(uint256)
   963  func (_CETH *CETHSession) SetInterestRateModel(newInterestRateModel common.Address) (*types.Transaction, error) {
   964  	return _CETH.Contract.SetInterestRateModel(&_CETH.TransactOpts, newInterestRateModel)
   965  }
   966  
   967  // SetInterestRateModel is a paid mutator transaction binding the contract method 0xf2b3abbd.
   968  //
   969  // Solidity: function _setInterestRateModel(address newInterestRateModel) returns(uint256)
   970  func (_CETH *CETHTransactorSession) SetInterestRateModel(newInterestRateModel common.Address) (*types.Transaction, error) {
   971  	return _CETH.Contract.SetInterestRateModel(&_CETH.TransactOpts, newInterestRateModel)
   972  }
   973  
   974  // SetPendingAdmin is a paid mutator transaction binding the contract method 0xb71d1a0c.
   975  //
   976  // Solidity: function _setPendingAdmin(address newPendingAdmin) returns(uint256)
   977  func (_CETH *CETHTransactor) SetPendingAdmin(opts *bind.TransactOpts, newPendingAdmin common.Address) (*types.Transaction, error) {
   978  	return _CETH.contract.Transact(opts, "_setPendingAdmin", newPendingAdmin)
   979  }
   980  
   981  // SetPendingAdmin is a paid mutator transaction binding the contract method 0xb71d1a0c.
   982  //
   983  // Solidity: function _setPendingAdmin(address newPendingAdmin) returns(uint256)
   984  func (_CETH *CETHSession) SetPendingAdmin(newPendingAdmin common.Address) (*types.Transaction, error) {
   985  	return _CETH.Contract.SetPendingAdmin(&_CETH.TransactOpts, newPendingAdmin)
   986  }
   987  
   988  // SetPendingAdmin is a paid mutator transaction binding the contract method 0xb71d1a0c.
   989  //
   990  // Solidity: function _setPendingAdmin(address newPendingAdmin) returns(uint256)
   991  func (_CETH *CETHTransactorSession) SetPendingAdmin(newPendingAdmin common.Address) (*types.Transaction, error) {
   992  	return _CETH.Contract.SetPendingAdmin(&_CETH.TransactOpts, newPendingAdmin)
   993  }
   994  
   995  // SetReserveFactor is a paid mutator transaction binding the contract method 0xfca7820b.
   996  //
   997  // Solidity: function _setReserveFactor(uint256 newReserveFactorMantissa) returns(uint256)
   998  func (_CETH *CETHTransactor) SetReserveFactor(opts *bind.TransactOpts, newReserveFactorMantissa *big.Int) (*types.Transaction, error) {
   999  	return _CETH.contract.Transact(opts, "_setReserveFactor", newReserveFactorMantissa)
  1000  }
  1001  
  1002  // SetReserveFactor is a paid mutator transaction binding the contract method 0xfca7820b.
  1003  //
  1004  // Solidity: function _setReserveFactor(uint256 newReserveFactorMantissa) returns(uint256)
  1005  func (_CETH *CETHSession) SetReserveFactor(newReserveFactorMantissa *big.Int) (*types.Transaction, error) {
  1006  	return _CETH.Contract.SetReserveFactor(&_CETH.TransactOpts, newReserveFactorMantissa)
  1007  }
  1008  
  1009  // SetReserveFactor is a paid mutator transaction binding the contract method 0xfca7820b.
  1010  //
  1011  // Solidity: function _setReserveFactor(uint256 newReserveFactorMantissa) returns(uint256)
  1012  func (_CETH *CETHTransactorSession) SetReserveFactor(newReserveFactorMantissa *big.Int) (*types.Transaction, error) {
  1013  	return _CETH.Contract.SetReserveFactor(&_CETH.TransactOpts, newReserveFactorMantissa)
  1014  }
  1015  
  1016  // AccrueInterest is a paid mutator transaction binding the contract method 0xa6afed95.
  1017  //
  1018  // Solidity: function accrueInterest() returns(uint256)
  1019  func (_CETH *CETHTransactor) AccrueInterest(opts *bind.TransactOpts) (*types.Transaction, error) {
  1020  	return _CETH.contract.Transact(opts, "accrueInterest")
  1021  }
  1022  
  1023  // AccrueInterest is a paid mutator transaction binding the contract method 0xa6afed95.
  1024  //
  1025  // Solidity: function accrueInterest() returns(uint256)
  1026  func (_CETH *CETHSession) AccrueInterest() (*types.Transaction, error) {
  1027  	return _CETH.Contract.AccrueInterest(&_CETH.TransactOpts)
  1028  }
  1029  
  1030  // AccrueInterest is a paid mutator transaction binding the contract method 0xa6afed95.
  1031  //
  1032  // Solidity: function accrueInterest() returns(uint256)
  1033  func (_CETH *CETHTransactorSession) AccrueInterest() (*types.Transaction, error) {
  1034  	return _CETH.Contract.AccrueInterest(&_CETH.TransactOpts)
  1035  }
  1036  
  1037  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1038  //
  1039  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  1040  func (_CETH *CETHTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1041  	return _CETH.contract.Transact(opts, "approve", spender, amount)
  1042  }
  1043  
  1044  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1045  //
  1046  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  1047  func (_CETH *CETHSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1048  	return _CETH.Contract.Approve(&_CETH.TransactOpts, spender, amount)
  1049  }
  1050  
  1051  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1052  //
  1053  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  1054  func (_CETH *CETHTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1055  	return _CETH.Contract.Approve(&_CETH.TransactOpts, spender, amount)
  1056  }
  1057  
  1058  // BalanceOfUnderlying is a paid mutator transaction binding the contract method 0x3af9e669.
  1059  //
  1060  // Solidity: function balanceOfUnderlying(address owner) returns(uint256)
  1061  func (_CETH *CETHTransactor) BalanceOfUnderlying(opts *bind.TransactOpts, owner common.Address) (*types.Transaction, error) {
  1062  	return _CETH.contract.Transact(opts, "balanceOfUnderlying", owner)
  1063  }
  1064  
  1065  // BalanceOfUnderlying is a paid mutator transaction binding the contract method 0x3af9e669.
  1066  //
  1067  // Solidity: function balanceOfUnderlying(address owner) returns(uint256)
  1068  func (_CETH *CETHSession) BalanceOfUnderlying(owner common.Address) (*types.Transaction, error) {
  1069  	return _CETH.Contract.BalanceOfUnderlying(&_CETH.TransactOpts, owner)
  1070  }
  1071  
  1072  // BalanceOfUnderlying is a paid mutator transaction binding the contract method 0x3af9e669.
  1073  //
  1074  // Solidity: function balanceOfUnderlying(address owner) returns(uint256)
  1075  func (_CETH *CETHTransactorSession) BalanceOfUnderlying(owner common.Address) (*types.Transaction, error) {
  1076  	return _CETH.Contract.BalanceOfUnderlying(&_CETH.TransactOpts, owner)
  1077  }
  1078  
  1079  // Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec.
  1080  //
  1081  // Solidity: function borrow(uint256 borrowAmount) returns(uint256)
  1082  func (_CETH *CETHTransactor) Borrow(opts *bind.TransactOpts, borrowAmount *big.Int) (*types.Transaction, error) {
  1083  	return _CETH.contract.Transact(opts, "borrow", borrowAmount)
  1084  }
  1085  
  1086  // Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec.
  1087  //
  1088  // Solidity: function borrow(uint256 borrowAmount) returns(uint256)
  1089  func (_CETH *CETHSession) Borrow(borrowAmount *big.Int) (*types.Transaction, error) {
  1090  	return _CETH.Contract.Borrow(&_CETH.TransactOpts, borrowAmount)
  1091  }
  1092  
  1093  // Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec.
  1094  //
  1095  // Solidity: function borrow(uint256 borrowAmount) returns(uint256)
  1096  func (_CETH *CETHTransactorSession) Borrow(borrowAmount *big.Int) (*types.Transaction, error) {
  1097  	return _CETH.Contract.Borrow(&_CETH.TransactOpts, borrowAmount)
  1098  }
  1099  
  1100  // BorrowBalanceCurrent is a paid mutator transaction binding the contract method 0x17bfdfbc.
  1101  //
  1102  // Solidity: function borrowBalanceCurrent(address account) returns(uint256)
  1103  func (_CETH *CETHTransactor) BorrowBalanceCurrent(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  1104  	return _CETH.contract.Transact(opts, "borrowBalanceCurrent", account)
  1105  }
  1106  
  1107  // BorrowBalanceCurrent is a paid mutator transaction binding the contract method 0x17bfdfbc.
  1108  //
  1109  // Solidity: function borrowBalanceCurrent(address account) returns(uint256)
  1110  func (_CETH *CETHSession) BorrowBalanceCurrent(account common.Address) (*types.Transaction, error) {
  1111  	return _CETH.Contract.BorrowBalanceCurrent(&_CETH.TransactOpts, account)
  1112  }
  1113  
  1114  // BorrowBalanceCurrent is a paid mutator transaction binding the contract method 0x17bfdfbc.
  1115  //
  1116  // Solidity: function borrowBalanceCurrent(address account) returns(uint256)
  1117  func (_CETH *CETHTransactorSession) BorrowBalanceCurrent(account common.Address) (*types.Transaction, error) {
  1118  	return _CETH.Contract.BorrowBalanceCurrent(&_CETH.TransactOpts, account)
  1119  }
  1120  
  1121  // ExchangeRateCurrent is a paid mutator transaction binding the contract method 0xbd6d894d.
  1122  //
  1123  // Solidity: function exchangeRateCurrent() returns(uint256)
  1124  func (_CETH *CETHTransactor) ExchangeRateCurrent(opts *bind.TransactOpts) (*types.Transaction, error) {
  1125  	return _CETH.contract.Transact(opts, "exchangeRateCurrent")
  1126  }
  1127  
  1128  // ExchangeRateCurrent is a paid mutator transaction binding the contract method 0xbd6d894d.
  1129  //
  1130  // Solidity: function exchangeRateCurrent() returns(uint256)
  1131  func (_CETH *CETHSession) ExchangeRateCurrent() (*types.Transaction, error) {
  1132  	return _CETH.Contract.ExchangeRateCurrent(&_CETH.TransactOpts)
  1133  }
  1134  
  1135  // ExchangeRateCurrent is a paid mutator transaction binding the contract method 0xbd6d894d.
  1136  //
  1137  // Solidity: function exchangeRateCurrent() returns(uint256)
  1138  func (_CETH *CETHTransactorSession) ExchangeRateCurrent() (*types.Transaction, error) {
  1139  	return _CETH.Contract.ExchangeRateCurrent(&_CETH.TransactOpts)
  1140  }
  1141  
  1142  // LiquidateBorrow is a paid mutator transaction binding the contract method 0xaae40a2a.
  1143  //
  1144  // Solidity: function liquidateBorrow(address borrower, address cTokenCollateral) payable returns()
  1145  func (_CETH *CETHTransactor) LiquidateBorrow(opts *bind.TransactOpts, borrower common.Address, cTokenCollateral common.Address) (*types.Transaction, error) {
  1146  	return _CETH.contract.Transact(opts, "liquidateBorrow", borrower, cTokenCollateral)
  1147  }
  1148  
  1149  // LiquidateBorrow is a paid mutator transaction binding the contract method 0xaae40a2a.
  1150  //
  1151  // Solidity: function liquidateBorrow(address borrower, address cTokenCollateral) payable returns()
  1152  func (_CETH *CETHSession) LiquidateBorrow(borrower common.Address, cTokenCollateral common.Address) (*types.Transaction, error) {
  1153  	return _CETH.Contract.LiquidateBorrow(&_CETH.TransactOpts, borrower, cTokenCollateral)
  1154  }
  1155  
  1156  // LiquidateBorrow is a paid mutator transaction binding the contract method 0xaae40a2a.
  1157  //
  1158  // Solidity: function liquidateBorrow(address borrower, address cTokenCollateral) payable returns()
  1159  func (_CETH *CETHTransactorSession) LiquidateBorrow(borrower common.Address, cTokenCollateral common.Address) (*types.Transaction, error) {
  1160  	return _CETH.Contract.LiquidateBorrow(&_CETH.TransactOpts, borrower, cTokenCollateral)
  1161  }
  1162  
  1163  // Mint is a paid mutator transaction binding the contract method 0x1249c58b.
  1164  //
  1165  // Solidity: function mint() payable returns()
  1166  func (_CETH *CETHTransactor) Mint(opts *bind.TransactOpts) (*types.Transaction, error) {
  1167  	return _CETH.contract.Transact(opts, "mint")
  1168  }
  1169  
  1170  // Mint is a paid mutator transaction binding the contract method 0x1249c58b.
  1171  //
  1172  // Solidity: function mint() payable returns()
  1173  func (_CETH *CETHSession) Mint() (*types.Transaction, error) {
  1174  	return _CETH.Contract.Mint(&_CETH.TransactOpts)
  1175  }
  1176  
  1177  // Mint is a paid mutator transaction binding the contract method 0x1249c58b.
  1178  //
  1179  // Solidity: function mint() payable returns()
  1180  func (_CETH *CETHTransactorSession) Mint() (*types.Transaction, error) {
  1181  	return _CETH.Contract.Mint(&_CETH.TransactOpts)
  1182  }
  1183  
  1184  // Redeem is a paid mutator transaction binding the contract method 0xdb006a75.
  1185  //
  1186  // Solidity: function redeem(uint256 redeemTokens) returns(uint256)
  1187  func (_CETH *CETHTransactor) Redeem(opts *bind.TransactOpts, redeemTokens *big.Int) (*types.Transaction, error) {
  1188  	return _CETH.contract.Transact(opts, "redeem", redeemTokens)
  1189  }
  1190  
  1191  // Redeem is a paid mutator transaction binding the contract method 0xdb006a75.
  1192  //
  1193  // Solidity: function redeem(uint256 redeemTokens) returns(uint256)
  1194  func (_CETH *CETHSession) Redeem(redeemTokens *big.Int) (*types.Transaction, error) {
  1195  	return _CETH.Contract.Redeem(&_CETH.TransactOpts, redeemTokens)
  1196  }
  1197  
  1198  // Redeem is a paid mutator transaction binding the contract method 0xdb006a75.
  1199  //
  1200  // Solidity: function redeem(uint256 redeemTokens) returns(uint256)
  1201  func (_CETH *CETHTransactorSession) Redeem(redeemTokens *big.Int) (*types.Transaction, error) {
  1202  	return _CETH.Contract.Redeem(&_CETH.TransactOpts, redeemTokens)
  1203  }
  1204  
  1205  // RedeemUnderlying is a paid mutator transaction binding the contract method 0x852a12e3.
  1206  //
  1207  // Solidity: function redeemUnderlying(uint256 redeemAmount) returns(uint256)
  1208  func (_CETH *CETHTransactor) RedeemUnderlying(opts *bind.TransactOpts, redeemAmount *big.Int) (*types.Transaction, error) {
  1209  	return _CETH.contract.Transact(opts, "redeemUnderlying", redeemAmount)
  1210  }
  1211  
  1212  // RedeemUnderlying is a paid mutator transaction binding the contract method 0x852a12e3.
  1213  //
  1214  // Solidity: function redeemUnderlying(uint256 redeemAmount) returns(uint256)
  1215  func (_CETH *CETHSession) RedeemUnderlying(redeemAmount *big.Int) (*types.Transaction, error) {
  1216  	return _CETH.Contract.RedeemUnderlying(&_CETH.TransactOpts, redeemAmount)
  1217  }
  1218  
  1219  // RedeemUnderlying is a paid mutator transaction binding the contract method 0x852a12e3.
  1220  //
  1221  // Solidity: function redeemUnderlying(uint256 redeemAmount) returns(uint256)
  1222  func (_CETH *CETHTransactorSession) RedeemUnderlying(redeemAmount *big.Int) (*types.Transaction, error) {
  1223  	return _CETH.Contract.RedeemUnderlying(&_CETH.TransactOpts, redeemAmount)
  1224  }
  1225  
  1226  // RepayBorrow is a paid mutator transaction binding the contract method 0x4e4d9fea.
  1227  //
  1228  // Solidity: function repayBorrow() payable returns()
  1229  func (_CETH *CETHTransactor) RepayBorrow(opts *bind.TransactOpts) (*types.Transaction, error) {
  1230  	return _CETH.contract.Transact(opts, "repayBorrow")
  1231  }
  1232  
  1233  // RepayBorrow is a paid mutator transaction binding the contract method 0x4e4d9fea.
  1234  //
  1235  // Solidity: function repayBorrow() payable returns()
  1236  func (_CETH *CETHSession) RepayBorrow() (*types.Transaction, error) {
  1237  	return _CETH.Contract.RepayBorrow(&_CETH.TransactOpts)
  1238  }
  1239  
  1240  // RepayBorrow is a paid mutator transaction binding the contract method 0x4e4d9fea.
  1241  //
  1242  // Solidity: function repayBorrow() payable returns()
  1243  func (_CETH *CETHTransactorSession) RepayBorrow() (*types.Transaction, error) {
  1244  	return _CETH.Contract.RepayBorrow(&_CETH.TransactOpts)
  1245  }
  1246  
  1247  // RepayBorrowBehalf is a paid mutator transaction binding the contract method 0xe5974619.
  1248  //
  1249  // Solidity: function repayBorrowBehalf(address borrower) payable returns()
  1250  func (_CETH *CETHTransactor) RepayBorrowBehalf(opts *bind.TransactOpts, borrower common.Address) (*types.Transaction, error) {
  1251  	return _CETH.contract.Transact(opts, "repayBorrowBehalf", borrower)
  1252  }
  1253  
  1254  // RepayBorrowBehalf is a paid mutator transaction binding the contract method 0xe5974619.
  1255  //
  1256  // Solidity: function repayBorrowBehalf(address borrower) payable returns()
  1257  func (_CETH *CETHSession) RepayBorrowBehalf(borrower common.Address) (*types.Transaction, error) {
  1258  	return _CETH.Contract.RepayBorrowBehalf(&_CETH.TransactOpts, borrower)
  1259  }
  1260  
  1261  // RepayBorrowBehalf is a paid mutator transaction binding the contract method 0xe5974619.
  1262  //
  1263  // Solidity: function repayBorrowBehalf(address borrower) payable returns()
  1264  func (_CETH *CETHTransactorSession) RepayBorrowBehalf(borrower common.Address) (*types.Transaction, error) {
  1265  	return _CETH.Contract.RepayBorrowBehalf(&_CETH.TransactOpts, borrower)
  1266  }
  1267  
  1268  // Seize is a paid mutator transaction binding the contract method 0xb2a02ff1.
  1269  //
  1270  // Solidity: function seize(address liquidator, address borrower, uint256 seizeTokens) returns(uint256)
  1271  func (_CETH *CETHTransactor) Seize(opts *bind.TransactOpts, liquidator common.Address, borrower common.Address, seizeTokens *big.Int) (*types.Transaction, error) {
  1272  	return _CETH.contract.Transact(opts, "seize", liquidator, borrower, seizeTokens)
  1273  }
  1274  
  1275  // Seize is a paid mutator transaction binding the contract method 0xb2a02ff1.
  1276  //
  1277  // Solidity: function seize(address liquidator, address borrower, uint256 seizeTokens) returns(uint256)
  1278  func (_CETH *CETHSession) Seize(liquidator common.Address, borrower common.Address, seizeTokens *big.Int) (*types.Transaction, error) {
  1279  	return _CETH.Contract.Seize(&_CETH.TransactOpts, liquidator, borrower, seizeTokens)
  1280  }
  1281  
  1282  // Seize is a paid mutator transaction binding the contract method 0xb2a02ff1.
  1283  //
  1284  // Solidity: function seize(address liquidator, address borrower, uint256 seizeTokens) returns(uint256)
  1285  func (_CETH *CETHTransactorSession) Seize(liquidator common.Address, borrower common.Address, seizeTokens *big.Int) (*types.Transaction, error) {
  1286  	return _CETH.Contract.Seize(&_CETH.TransactOpts, liquidator, borrower, seizeTokens)
  1287  }
  1288  
  1289  // TotalBorrowsCurrent is a paid mutator transaction binding the contract method 0x73acee98.
  1290  //
  1291  // Solidity: function totalBorrowsCurrent() returns(uint256)
  1292  func (_CETH *CETHTransactor) TotalBorrowsCurrent(opts *bind.TransactOpts) (*types.Transaction, error) {
  1293  	return _CETH.contract.Transact(opts, "totalBorrowsCurrent")
  1294  }
  1295  
  1296  // TotalBorrowsCurrent is a paid mutator transaction binding the contract method 0x73acee98.
  1297  //
  1298  // Solidity: function totalBorrowsCurrent() returns(uint256)
  1299  func (_CETH *CETHSession) TotalBorrowsCurrent() (*types.Transaction, error) {
  1300  	return _CETH.Contract.TotalBorrowsCurrent(&_CETH.TransactOpts)
  1301  }
  1302  
  1303  // TotalBorrowsCurrent is a paid mutator transaction binding the contract method 0x73acee98.
  1304  //
  1305  // Solidity: function totalBorrowsCurrent() returns(uint256)
  1306  func (_CETH *CETHTransactorSession) TotalBorrowsCurrent() (*types.Transaction, error) {
  1307  	return _CETH.Contract.TotalBorrowsCurrent(&_CETH.TransactOpts)
  1308  }
  1309  
  1310  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1311  //
  1312  // Solidity: function transfer(address dst, uint256 amount) returns(bool)
  1313  func (_CETH *CETHTransactor) Transfer(opts *bind.TransactOpts, dst common.Address, amount *big.Int) (*types.Transaction, error) {
  1314  	return _CETH.contract.Transact(opts, "transfer", dst, amount)
  1315  }
  1316  
  1317  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1318  //
  1319  // Solidity: function transfer(address dst, uint256 amount) returns(bool)
  1320  func (_CETH *CETHSession) Transfer(dst common.Address, amount *big.Int) (*types.Transaction, error) {
  1321  	return _CETH.Contract.Transfer(&_CETH.TransactOpts, dst, amount)
  1322  }
  1323  
  1324  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1325  //
  1326  // Solidity: function transfer(address dst, uint256 amount) returns(bool)
  1327  func (_CETH *CETHTransactorSession) Transfer(dst common.Address, amount *big.Int) (*types.Transaction, error) {
  1328  	return _CETH.Contract.Transfer(&_CETH.TransactOpts, dst, amount)
  1329  }
  1330  
  1331  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1332  //
  1333  // Solidity: function transferFrom(address src, address dst, uint256 amount) returns(bool)
  1334  func (_CETH *CETHTransactor) TransferFrom(opts *bind.TransactOpts, src common.Address, dst common.Address, amount *big.Int) (*types.Transaction, error) {
  1335  	return _CETH.contract.Transact(opts, "transferFrom", src, dst, amount)
  1336  }
  1337  
  1338  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1339  //
  1340  // Solidity: function transferFrom(address src, address dst, uint256 amount) returns(bool)
  1341  func (_CETH *CETHSession) TransferFrom(src common.Address, dst common.Address, amount *big.Int) (*types.Transaction, error) {
  1342  	return _CETH.Contract.TransferFrom(&_CETH.TransactOpts, src, dst, amount)
  1343  }
  1344  
  1345  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1346  //
  1347  // Solidity: function transferFrom(address src, address dst, uint256 amount) returns(bool)
  1348  func (_CETH *CETHTransactorSession) TransferFrom(src common.Address, dst common.Address, amount *big.Int) (*types.Transaction, error) {
  1349  	return _CETH.Contract.TransferFrom(&_CETH.TransactOpts, src, dst, amount)
  1350  }
  1351  
  1352  // Fallback is a paid mutator transaction binding the contract fallback function.
  1353  //
  1354  // Solidity: fallback() payable returns()
  1355  func (_CETH *CETHTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) {
  1356  	return _CETH.contract.RawTransact(opts, calldata)
  1357  }
  1358  
  1359  // Fallback is a paid mutator transaction binding the contract fallback function.
  1360  //
  1361  // Solidity: fallback() payable returns()
  1362  func (_CETH *CETHSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1363  	return _CETH.Contract.Fallback(&_CETH.TransactOpts, calldata)
  1364  }
  1365  
  1366  // Fallback is a paid mutator transaction binding the contract fallback function.
  1367  //
  1368  // Solidity: fallback() payable returns()
  1369  func (_CETH *CETHTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1370  	return _CETH.Contract.Fallback(&_CETH.TransactOpts, calldata)
  1371  }
  1372  
  1373  // CETHAccrueInterestIterator is returned from FilterAccrueInterest and is used to iterate over the raw logs and unpacked data for AccrueInterest events raised by the CETH contract.
  1374  type CETHAccrueInterestIterator struct {
  1375  	Event *CETHAccrueInterest // Event containing the contract specifics and raw log
  1376  
  1377  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1378  	event    string              // Event name to use for unpacking event data
  1379  
  1380  	logs chan types.Log        // Log channel receiving the found contract events
  1381  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1382  	done bool                  // Whether the subscription completed delivering logs
  1383  	fail error                 // Occurred error to stop iteration
  1384  }
  1385  
  1386  // Next advances the iterator to the subsequent event, returning whether there
  1387  // are any more events found. In case of a retrieval or parsing error, false is
  1388  // returned and Error() can be queried for the exact failure.
  1389  func (it *CETHAccrueInterestIterator) Next() bool {
  1390  	// If the iterator failed, stop iterating
  1391  	if it.fail != nil {
  1392  		return false
  1393  	}
  1394  	// If the iterator completed, deliver directly whatever's available
  1395  	if it.done {
  1396  		select {
  1397  		case log := <-it.logs:
  1398  			it.Event = new(CETHAccrueInterest)
  1399  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1400  				it.fail = err
  1401  				return false
  1402  			}
  1403  			it.Event.Raw = log
  1404  			return true
  1405  
  1406  		default:
  1407  			return false
  1408  		}
  1409  	}
  1410  	// Iterator still in progress, wait for either a data or an error event
  1411  	select {
  1412  	case log := <-it.logs:
  1413  		it.Event = new(CETHAccrueInterest)
  1414  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1415  			it.fail = err
  1416  			return false
  1417  		}
  1418  		it.Event.Raw = log
  1419  		return true
  1420  
  1421  	case err := <-it.sub.Err():
  1422  		it.done = true
  1423  		it.fail = err
  1424  		return it.Next()
  1425  	}
  1426  }
  1427  
  1428  // Error returns any retrieval or parsing error occurred during filtering.
  1429  func (it *CETHAccrueInterestIterator) Error() error {
  1430  	return it.fail
  1431  }
  1432  
  1433  // Close terminates the iteration process, releasing any pending underlying
  1434  // resources.
  1435  func (it *CETHAccrueInterestIterator) Close() error {
  1436  	it.sub.Unsubscribe()
  1437  	return nil
  1438  }
  1439  
  1440  // CETHAccrueInterest represents a AccrueInterest event raised by the CETH contract.
  1441  type CETHAccrueInterest struct {
  1442  	InterestAccumulated *big.Int
  1443  	BorrowIndex         *big.Int
  1444  	TotalBorrows        *big.Int
  1445  	Raw                 types.Log // Blockchain specific contextual infos
  1446  }
  1447  
  1448  // FilterAccrueInterest is a free log retrieval operation binding the contract event 0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9.
  1449  //
  1450  // Solidity: event AccrueInterest(uint256 interestAccumulated, uint256 borrowIndex, uint256 totalBorrows)
  1451  func (_CETH *CETHFilterer) FilterAccrueInterest(opts *bind.FilterOpts) (*CETHAccrueInterestIterator, error) {
  1452  
  1453  	logs, sub, err := _CETH.contract.FilterLogs(opts, "AccrueInterest")
  1454  	if err != nil {
  1455  		return nil, err
  1456  	}
  1457  	return &CETHAccrueInterestIterator{contract: _CETH.contract, event: "AccrueInterest", logs: logs, sub: sub}, nil
  1458  }
  1459  
  1460  // WatchAccrueInterest is a free log subscription operation binding the contract event 0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9.
  1461  //
  1462  // Solidity: event AccrueInterest(uint256 interestAccumulated, uint256 borrowIndex, uint256 totalBorrows)
  1463  func (_CETH *CETHFilterer) WatchAccrueInterest(opts *bind.WatchOpts, sink chan<- *CETHAccrueInterest) (event.Subscription, error) {
  1464  
  1465  	logs, sub, err := _CETH.contract.WatchLogs(opts, "AccrueInterest")
  1466  	if err != nil {
  1467  		return nil, err
  1468  	}
  1469  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1470  		defer sub.Unsubscribe()
  1471  		for {
  1472  			select {
  1473  			case log := <-logs:
  1474  				// New log arrived, parse the event and forward to the user
  1475  				event := new(CETHAccrueInterest)
  1476  				if err := _CETH.contract.UnpackLog(event, "AccrueInterest", log); err != nil {
  1477  					return err
  1478  				}
  1479  				event.Raw = log
  1480  
  1481  				select {
  1482  				case sink <- event:
  1483  				case err := <-sub.Err():
  1484  					return err
  1485  				case <-quit:
  1486  					return nil
  1487  				}
  1488  			case err := <-sub.Err():
  1489  				return err
  1490  			case <-quit:
  1491  				return nil
  1492  			}
  1493  		}
  1494  	}), nil
  1495  }
  1496  
  1497  // ParseAccrueInterest is a log parse operation binding the contract event 0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9.
  1498  //
  1499  // Solidity: event AccrueInterest(uint256 interestAccumulated, uint256 borrowIndex, uint256 totalBorrows)
  1500  func (_CETH *CETHFilterer) ParseAccrueInterest(log types.Log) (*CETHAccrueInterest, error) {
  1501  	event := new(CETHAccrueInterest)
  1502  	if err := _CETH.contract.UnpackLog(event, "AccrueInterest", log); err != nil {
  1503  		return nil, err
  1504  	}
  1505  	return event, nil
  1506  }
  1507  
  1508  // CETHApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the CETH contract.
  1509  type CETHApprovalIterator struct {
  1510  	Event *CETHApproval // Event containing the contract specifics and raw log
  1511  
  1512  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1513  	event    string              // Event name to use for unpacking event data
  1514  
  1515  	logs chan types.Log        // Log channel receiving the found contract events
  1516  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1517  	done bool                  // Whether the subscription completed delivering logs
  1518  	fail error                 // Occurred error to stop iteration
  1519  }
  1520  
  1521  // Next advances the iterator to the subsequent event, returning whether there
  1522  // are any more events found. In case of a retrieval or parsing error, false is
  1523  // returned and Error() can be queried for the exact failure.
  1524  func (it *CETHApprovalIterator) Next() bool {
  1525  	// If the iterator failed, stop iterating
  1526  	if it.fail != nil {
  1527  		return false
  1528  	}
  1529  	// If the iterator completed, deliver directly whatever's available
  1530  	if it.done {
  1531  		select {
  1532  		case log := <-it.logs:
  1533  			it.Event = new(CETHApproval)
  1534  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1535  				it.fail = err
  1536  				return false
  1537  			}
  1538  			it.Event.Raw = log
  1539  			return true
  1540  
  1541  		default:
  1542  			return false
  1543  		}
  1544  	}
  1545  	// Iterator still in progress, wait for either a data or an error event
  1546  	select {
  1547  	case log := <-it.logs:
  1548  		it.Event = new(CETHApproval)
  1549  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1550  			it.fail = err
  1551  			return false
  1552  		}
  1553  		it.Event.Raw = log
  1554  		return true
  1555  
  1556  	case err := <-it.sub.Err():
  1557  		it.done = true
  1558  		it.fail = err
  1559  		return it.Next()
  1560  	}
  1561  }
  1562  
  1563  // Error returns any retrieval or parsing error occurred during filtering.
  1564  func (it *CETHApprovalIterator) Error() error {
  1565  	return it.fail
  1566  }
  1567  
  1568  // Close terminates the iteration process, releasing any pending underlying
  1569  // resources.
  1570  func (it *CETHApprovalIterator) Close() error {
  1571  	it.sub.Unsubscribe()
  1572  	return nil
  1573  }
  1574  
  1575  // CETHApproval represents a Approval event raised by the CETH contract.
  1576  type CETHApproval struct {
  1577  	Owner   common.Address
  1578  	Spender common.Address
  1579  	Amount  *big.Int
  1580  	Raw     types.Log // Blockchain specific contextual infos
  1581  }
  1582  
  1583  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1584  //
  1585  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 amount)
  1586  func (_CETH *CETHFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*CETHApprovalIterator, error) {
  1587  
  1588  	var ownerRule []interface{}
  1589  	for _, ownerItem := range owner {
  1590  		ownerRule = append(ownerRule, ownerItem)
  1591  	}
  1592  	var spenderRule []interface{}
  1593  	for _, spenderItem := range spender {
  1594  		spenderRule = append(spenderRule, spenderItem)
  1595  	}
  1596  
  1597  	logs, sub, err := _CETH.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  1598  	if err != nil {
  1599  		return nil, err
  1600  	}
  1601  	return &CETHApprovalIterator{contract: _CETH.contract, event: "Approval", logs: logs, sub: sub}, nil
  1602  }
  1603  
  1604  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1605  //
  1606  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 amount)
  1607  func (_CETH *CETHFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *CETHApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  1608  
  1609  	var ownerRule []interface{}
  1610  	for _, ownerItem := range owner {
  1611  		ownerRule = append(ownerRule, ownerItem)
  1612  	}
  1613  	var spenderRule []interface{}
  1614  	for _, spenderItem := range spender {
  1615  		spenderRule = append(spenderRule, spenderItem)
  1616  	}
  1617  
  1618  	logs, sub, err := _CETH.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  1619  	if err != nil {
  1620  		return nil, err
  1621  	}
  1622  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1623  		defer sub.Unsubscribe()
  1624  		for {
  1625  			select {
  1626  			case log := <-logs:
  1627  				// New log arrived, parse the event and forward to the user
  1628  				event := new(CETHApproval)
  1629  				if err := _CETH.contract.UnpackLog(event, "Approval", log); err != nil {
  1630  					return err
  1631  				}
  1632  				event.Raw = log
  1633  
  1634  				select {
  1635  				case sink <- event:
  1636  				case err := <-sub.Err():
  1637  					return err
  1638  				case <-quit:
  1639  					return nil
  1640  				}
  1641  			case err := <-sub.Err():
  1642  				return err
  1643  			case <-quit:
  1644  				return nil
  1645  			}
  1646  		}
  1647  	}), nil
  1648  }
  1649  
  1650  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1651  //
  1652  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 amount)
  1653  func (_CETH *CETHFilterer) ParseApproval(log types.Log) (*CETHApproval, error) {
  1654  	event := new(CETHApproval)
  1655  	if err := _CETH.contract.UnpackLog(event, "Approval", log); err != nil {
  1656  		return nil, err
  1657  	}
  1658  	return event, nil
  1659  }
  1660  
  1661  // CETHBorrowIterator is returned from FilterBorrow and is used to iterate over the raw logs and unpacked data for Borrow events raised by the CETH contract.
  1662  type CETHBorrowIterator struct {
  1663  	Event *CETHBorrow // Event containing the contract specifics and raw log
  1664  
  1665  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1666  	event    string              // Event name to use for unpacking event data
  1667  
  1668  	logs chan types.Log        // Log channel receiving the found contract events
  1669  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1670  	done bool                  // Whether the subscription completed delivering logs
  1671  	fail error                 // Occurred error to stop iteration
  1672  }
  1673  
  1674  // Next advances the iterator to the subsequent event, returning whether there
  1675  // are any more events found. In case of a retrieval or parsing error, false is
  1676  // returned and Error() can be queried for the exact failure.
  1677  func (it *CETHBorrowIterator) Next() bool {
  1678  	// If the iterator failed, stop iterating
  1679  	if it.fail != nil {
  1680  		return false
  1681  	}
  1682  	// If the iterator completed, deliver directly whatever's available
  1683  	if it.done {
  1684  		select {
  1685  		case log := <-it.logs:
  1686  			it.Event = new(CETHBorrow)
  1687  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1688  				it.fail = err
  1689  				return false
  1690  			}
  1691  			it.Event.Raw = log
  1692  			return true
  1693  
  1694  		default:
  1695  			return false
  1696  		}
  1697  	}
  1698  	// Iterator still in progress, wait for either a data or an error event
  1699  	select {
  1700  	case log := <-it.logs:
  1701  		it.Event = new(CETHBorrow)
  1702  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1703  			it.fail = err
  1704  			return false
  1705  		}
  1706  		it.Event.Raw = log
  1707  		return true
  1708  
  1709  	case err := <-it.sub.Err():
  1710  		it.done = true
  1711  		it.fail = err
  1712  		return it.Next()
  1713  	}
  1714  }
  1715  
  1716  // Error returns any retrieval or parsing error occurred during filtering.
  1717  func (it *CETHBorrowIterator) Error() error {
  1718  	return it.fail
  1719  }
  1720  
  1721  // Close terminates the iteration process, releasing any pending underlying
  1722  // resources.
  1723  func (it *CETHBorrowIterator) Close() error {
  1724  	it.sub.Unsubscribe()
  1725  	return nil
  1726  }
  1727  
  1728  // CETHBorrow represents a Borrow event raised by the CETH contract.
  1729  type CETHBorrow struct {
  1730  	Borrower       common.Address
  1731  	BorrowAmount   *big.Int
  1732  	AccountBorrows *big.Int
  1733  	TotalBorrows   *big.Int
  1734  	Raw            types.Log // Blockchain specific contextual infos
  1735  }
  1736  
  1737  // FilterBorrow is a free log retrieval operation binding the contract event 0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80.
  1738  //
  1739  // Solidity: event Borrow(address borrower, uint256 borrowAmount, uint256 accountBorrows, uint256 totalBorrows)
  1740  func (_CETH *CETHFilterer) FilterBorrow(opts *bind.FilterOpts) (*CETHBorrowIterator, error) {
  1741  
  1742  	logs, sub, err := _CETH.contract.FilterLogs(opts, "Borrow")
  1743  	if err != nil {
  1744  		return nil, err
  1745  	}
  1746  	return &CETHBorrowIterator{contract: _CETH.contract, event: "Borrow", logs: logs, sub: sub}, nil
  1747  }
  1748  
  1749  // WatchBorrow is a free log subscription operation binding the contract event 0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80.
  1750  //
  1751  // Solidity: event Borrow(address borrower, uint256 borrowAmount, uint256 accountBorrows, uint256 totalBorrows)
  1752  func (_CETH *CETHFilterer) WatchBorrow(opts *bind.WatchOpts, sink chan<- *CETHBorrow) (event.Subscription, error) {
  1753  
  1754  	logs, sub, err := _CETH.contract.WatchLogs(opts, "Borrow")
  1755  	if err != nil {
  1756  		return nil, err
  1757  	}
  1758  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1759  		defer sub.Unsubscribe()
  1760  		for {
  1761  			select {
  1762  			case log := <-logs:
  1763  				// New log arrived, parse the event and forward to the user
  1764  				event := new(CETHBorrow)
  1765  				if err := _CETH.contract.UnpackLog(event, "Borrow", log); err != nil {
  1766  					return err
  1767  				}
  1768  				event.Raw = log
  1769  
  1770  				select {
  1771  				case sink <- event:
  1772  				case err := <-sub.Err():
  1773  					return err
  1774  				case <-quit:
  1775  					return nil
  1776  				}
  1777  			case err := <-sub.Err():
  1778  				return err
  1779  			case <-quit:
  1780  				return nil
  1781  			}
  1782  		}
  1783  	}), nil
  1784  }
  1785  
  1786  // ParseBorrow is a log parse operation binding the contract event 0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80.
  1787  //
  1788  // Solidity: event Borrow(address borrower, uint256 borrowAmount, uint256 accountBorrows, uint256 totalBorrows)
  1789  func (_CETH *CETHFilterer) ParseBorrow(log types.Log) (*CETHBorrow, error) {
  1790  	event := new(CETHBorrow)
  1791  	if err := _CETH.contract.UnpackLog(event, "Borrow", log); err != nil {
  1792  		return nil, err
  1793  	}
  1794  	return event, nil
  1795  }
  1796  
  1797  // CETHFailureIterator is returned from FilterFailure and is used to iterate over the raw logs and unpacked data for Failure events raised by the CETH contract.
  1798  type CETHFailureIterator struct {
  1799  	Event *CETHFailure // Event containing the contract specifics and raw log
  1800  
  1801  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1802  	event    string              // Event name to use for unpacking event data
  1803  
  1804  	logs chan types.Log        // Log channel receiving the found contract events
  1805  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1806  	done bool                  // Whether the subscription completed delivering logs
  1807  	fail error                 // Occurred error to stop iteration
  1808  }
  1809  
  1810  // Next advances the iterator to the subsequent event, returning whether there
  1811  // are any more events found. In case of a retrieval or parsing error, false is
  1812  // returned and Error() can be queried for the exact failure.
  1813  func (it *CETHFailureIterator) Next() bool {
  1814  	// If the iterator failed, stop iterating
  1815  	if it.fail != nil {
  1816  		return false
  1817  	}
  1818  	// If the iterator completed, deliver directly whatever's available
  1819  	if it.done {
  1820  		select {
  1821  		case log := <-it.logs:
  1822  			it.Event = new(CETHFailure)
  1823  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1824  				it.fail = err
  1825  				return false
  1826  			}
  1827  			it.Event.Raw = log
  1828  			return true
  1829  
  1830  		default:
  1831  			return false
  1832  		}
  1833  	}
  1834  	// Iterator still in progress, wait for either a data or an error event
  1835  	select {
  1836  	case log := <-it.logs:
  1837  		it.Event = new(CETHFailure)
  1838  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1839  			it.fail = err
  1840  			return false
  1841  		}
  1842  		it.Event.Raw = log
  1843  		return true
  1844  
  1845  	case err := <-it.sub.Err():
  1846  		it.done = true
  1847  		it.fail = err
  1848  		return it.Next()
  1849  	}
  1850  }
  1851  
  1852  // Error returns any retrieval or parsing error occurred during filtering.
  1853  func (it *CETHFailureIterator) Error() error {
  1854  	return it.fail
  1855  }
  1856  
  1857  // Close terminates the iteration process, releasing any pending underlying
  1858  // resources.
  1859  func (it *CETHFailureIterator) Close() error {
  1860  	it.sub.Unsubscribe()
  1861  	return nil
  1862  }
  1863  
  1864  // CETHFailure represents a Failure event raised by the CETH contract.
  1865  type CETHFailure struct {
  1866  	Error  *big.Int
  1867  	Info   *big.Int
  1868  	Detail *big.Int
  1869  	Raw    types.Log // Blockchain specific contextual infos
  1870  }
  1871  
  1872  // FilterFailure is a free log retrieval operation binding the contract event 0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0.
  1873  //
  1874  // Solidity: event Failure(uint256 error, uint256 info, uint256 detail)
  1875  func (_CETH *CETHFilterer) FilterFailure(opts *bind.FilterOpts) (*CETHFailureIterator, error) {
  1876  
  1877  	logs, sub, err := _CETH.contract.FilterLogs(opts, "Failure")
  1878  	if err != nil {
  1879  		return nil, err
  1880  	}
  1881  	return &CETHFailureIterator{contract: _CETH.contract, event: "Failure", logs: logs, sub: sub}, nil
  1882  }
  1883  
  1884  // WatchFailure is a free log subscription operation binding the contract event 0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0.
  1885  //
  1886  // Solidity: event Failure(uint256 error, uint256 info, uint256 detail)
  1887  func (_CETH *CETHFilterer) WatchFailure(opts *bind.WatchOpts, sink chan<- *CETHFailure) (event.Subscription, error) {
  1888  
  1889  	logs, sub, err := _CETH.contract.WatchLogs(opts, "Failure")
  1890  	if err != nil {
  1891  		return nil, err
  1892  	}
  1893  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1894  		defer sub.Unsubscribe()
  1895  		for {
  1896  			select {
  1897  			case log := <-logs:
  1898  				// New log arrived, parse the event and forward to the user
  1899  				event := new(CETHFailure)
  1900  				if err := _CETH.contract.UnpackLog(event, "Failure", log); err != nil {
  1901  					return err
  1902  				}
  1903  				event.Raw = log
  1904  
  1905  				select {
  1906  				case sink <- event:
  1907  				case err := <-sub.Err():
  1908  					return err
  1909  				case <-quit:
  1910  					return nil
  1911  				}
  1912  			case err := <-sub.Err():
  1913  				return err
  1914  			case <-quit:
  1915  				return nil
  1916  			}
  1917  		}
  1918  	}), nil
  1919  }
  1920  
  1921  // ParseFailure is a log parse operation binding the contract event 0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0.
  1922  //
  1923  // Solidity: event Failure(uint256 error, uint256 info, uint256 detail)
  1924  func (_CETH *CETHFilterer) ParseFailure(log types.Log) (*CETHFailure, error) {
  1925  	event := new(CETHFailure)
  1926  	if err := _CETH.contract.UnpackLog(event, "Failure", log); err != nil {
  1927  		return nil, err
  1928  	}
  1929  	return event, nil
  1930  }
  1931  
  1932  // CETHLiquidateBorrowIterator is returned from FilterLiquidateBorrow and is used to iterate over the raw logs and unpacked data for LiquidateBorrow events raised by the CETH contract.
  1933  type CETHLiquidateBorrowIterator struct {
  1934  	Event *CETHLiquidateBorrow // Event containing the contract specifics and raw log
  1935  
  1936  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1937  	event    string              // Event name to use for unpacking event data
  1938  
  1939  	logs chan types.Log        // Log channel receiving the found contract events
  1940  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1941  	done bool                  // Whether the subscription completed delivering logs
  1942  	fail error                 // Occurred error to stop iteration
  1943  }
  1944  
  1945  // Next advances the iterator to the subsequent event, returning whether there
  1946  // are any more events found. In case of a retrieval or parsing error, false is
  1947  // returned and Error() can be queried for the exact failure.
  1948  func (it *CETHLiquidateBorrowIterator) Next() bool {
  1949  	// If the iterator failed, stop iterating
  1950  	if it.fail != nil {
  1951  		return false
  1952  	}
  1953  	// If the iterator completed, deliver directly whatever's available
  1954  	if it.done {
  1955  		select {
  1956  		case log := <-it.logs:
  1957  			it.Event = new(CETHLiquidateBorrow)
  1958  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1959  				it.fail = err
  1960  				return false
  1961  			}
  1962  			it.Event.Raw = log
  1963  			return true
  1964  
  1965  		default:
  1966  			return false
  1967  		}
  1968  	}
  1969  	// Iterator still in progress, wait for either a data or an error event
  1970  	select {
  1971  	case log := <-it.logs:
  1972  		it.Event = new(CETHLiquidateBorrow)
  1973  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1974  			it.fail = err
  1975  			return false
  1976  		}
  1977  		it.Event.Raw = log
  1978  		return true
  1979  
  1980  	case err := <-it.sub.Err():
  1981  		it.done = true
  1982  		it.fail = err
  1983  		return it.Next()
  1984  	}
  1985  }
  1986  
  1987  // Error returns any retrieval or parsing error occurred during filtering.
  1988  func (it *CETHLiquidateBorrowIterator) Error() error {
  1989  	return it.fail
  1990  }
  1991  
  1992  // Close terminates the iteration process, releasing any pending underlying
  1993  // resources.
  1994  func (it *CETHLiquidateBorrowIterator) Close() error {
  1995  	it.sub.Unsubscribe()
  1996  	return nil
  1997  }
  1998  
  1999  // CETHLiquidateBorrow represents a LiquidateBorrow event raised by the CETH contract.
  2000  type CETHLiquidateBorrow struct {
  2001  	Liquidator       common.Address
  2002  	Borrower         common.Address
  2003  	RepayAmount      *big.Int
  2004  	CTokenCollateral common.Address
  2005  	SeizeTokens      *big.Int
  2006  	Raw              types.Log // Blockchain specific contextual infos
  2007  }
  2008  
  2009  // FilterLiquidateBorrow is a free log retrieval operation binding the contract event 0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52.
  2010  //
  2011  // Solidity: event LiquidateBorrow(address liquidator, address borrower, uint256 repayAmount, address cTokenCollateral, uint256 seizeTokens)
  2012  func (_CETH *CETHFilterer) FilterLiquidateBorrow(opts *bind.FilterOpts) (*CETHLiquidateBorrowIterator, error) {
  2013  
  2014  	logs, sub, err := _CETH.contract.FilterLogs(opts, "LiquidateBorrow")
  2015  	if err != nil {
  2016  		return nil, err
  2017  	}
  2018  	return &CETHLiquidateBorrowIterator{contract: _CETH.contract, event: "LiquidateBorrow", logs: logs, sub: sub}, nil
  2019  }
  2020  
  2021  // WatchLiquidateBorrow is a free log subscription operation binding the contract event 0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52.
  2022  //
  2023  // Solidity: event LiquidateBorrow(address liquidator, address borrower, uint256 repayAmount, address cTokenCollateral, uint256 seizeTokens)
  2024  func (_CETH *CETHFilterer) WatchLiquidateBorrow(opts *bind.WatchOpts, sink chan<- *CETHLiquidateBorrow) (event.Subscription, error) {
  2025  
  2026  	logs, sub, err := _CETH.contract.WatchLogs(opts, "LiquidateBorrow")
  2027  	if err != nil {
  2028  		return nil, err
  2029  	}
  2030  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2031  		defer sub.Unsubscribe()
  2032  		for {
  2033  			select {
  2034  			case log := <-logs:
  2035  				// New log arrived, parse the event and forward to the user
  2036  				event := new(CETHLiquidateBorrow)
  2037  				if err := _CETH.contract.UnpackLog(event, "LiquidateBorrow", log); err != nil {
  2038  					return err
  2039  				}
  2040  				event.Raw = log
  2041  
  2042  				select {
  2043  				case sink <- event:
  2044  				case err := <-sub.Err():
  2045  					return err
  2046  				case <-quit:
  2047  					return nil
  2048  				}
  2049  			case err := <-sub.Err():
  2050  				return err
  2051  			case <-quit:
  2052  				return nil
  2053  			}
  2054  		}
  2055  	}), nil
  2056  }
  2057  
  2058  // ParseLiquidateBorrow is a log parse operation binding the contract event 0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52.
  2059  //
  2060  // Solidity: event LiquidateBorrow(address liquidator, address borrower, uint256 repayAmount, address cTokenCollateral, uint256 seizeTokens)
  2061  func (_CETH *CETHFilterer) ParseLiquidateBorrow(log types.Log) (*CETHLiquidateBorrow, error) {
  2062  	event := new(CETHLiquidateBorrow)
  2063  	if err := _CETH.contract.UnpackLog(event, "LiquidateBorrow", log); err != nil {
  2064  		return nil, err
  2065  	}
  2066  	return event, nil
  2067  }
  2068  
  2069  // CETHMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the CETH contract.
  2070  type CETHMintIterator struct {
  2071  	Event *CETHMint // Event containing the contract specifics and raw log
  2072  
  2073  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2074  	event    string              // Event name to use for unpacking event data
  2075  
  2076  	logs chan types.Log        // Log channel receiving the found contract events
  2077  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2078  	done bool                  // Whether the subscription completed delivering logs
  2079  	fail error                 // Occurred error to stop iteration
  2080  }
  2081  
  2082  // Next advances the iterator to the subsequent event, returning whether there
  2083  // are any more events found. In case of a retrieval or parsing error, false is
  2084  // returned and Error() can be queried for the exact failure.
  2085  func (it *CETHMintIterator) Next() bool {
  2086  	// If the iterator failed, stop iterating
  2087  	if it.fail != nil {
  2088  		return false
  2089  	}
  2090  	// If the iterator completed, deliver directly whatever's available
  2091  	if it.done {
  2092  		select {
  2093  		case log := <-it.logs:
  2094  			it.Event = new(CETHMint)
  2095  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2096  				it.fail = err
  2097  				return false
  2098  			}
  2099  			it.Event.Raw = log
  2100  			return true
  2101  
  2102  		default:
  2103  			return false
  2104  		}
  2105  	}
  2106  	// Iterator still in progress, wait for either a data or an error event
  2107  	select {
  2108  	case log := <-it.logs:
  2109  		it.Event = new(CETHMint)
  2110  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2111  			it.fail = err
  2112  			return false
  2113  		}
  2114  		it.Event.Raw = log
  2115  		return true
  2116  
  2117  	case err := <-it.sub.Err():
  2118  		it.done = true
  2119  		it.fail = err
  2120  		return it.Next()
  2121  	}
  2122  }
  2123  
  2124  // Error returns any retrieval or parsing error occurred during filtering.
  2125  func (it *CETHMintIterator) Error() error {
  2126  	return it.fail
  2127  }
  2128  
  2129  // Close terminates the iteration process, releasing any pending underlying
  2130  // resources.
  2131  func (it *CETHMintIterator) Close() error {
  2132  	it.sub.Unsubscribe()
  2133  	return nil
  2134  }
  2135  
  2136  // CETHMint represents a Mint event raised by the CETH contract.
  2137  type CETHMint struct {
  2138  	Minter     common.Address
  2139  	MintAmount *big.Int
  2140  	MintTokens *big.Int
  2141  	Raw        types.Log // Blockchain specific contextual infos
  2142  }
  2143  
  2144  // FilterMint is a free log retrieval operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f.
  2145  //
  2146  // Solidity: event Mint(address minter, uint256 mintAmount, uint256 mintTokens)
  2147  func (_CETH *CETHFilterer) FilterMint(opts *bind.FilterOpts) (*CETHMintIterator, error) {
  2148  
  2149  	logs, sub, err := _CETH.contract.FilterLogs(opts, "Mint")
  2150  	if err != nil {
  2151  		return nil, err
  2152  	}
  2153  	return &CETHMintIterator{contract: _CETH.contract, event: "Mint", logs: logs, sub: sub}, nil
  2154  }
  2155  
  2156  // WatchMint is a free log subscription operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f.
  2157  //
  2158  // Solidity: event Mint(address minter, uint256 mintAmount, uint256 mintTokens)
  2159  func (_CETH *CETHFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *CETHMint) (event.Subscription, error) {
  2160  
  2161  	logs, sub, err := _CETH.contract.WatchLogs(opts, "Mint")
  2162  	if err != nil {
  2163  		return nil, err
  2164  	}
  2165  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2166  		defer sub.Unsubscribe()
  2167  		for {
  2168  			select {
  2169  			case log := <-logs:
  2170  				// New log arrived, parse the event and forward to the user
  2171  				event := new(CETHMint)
  2172  				if err := _CETH.contract.UnpackLog(event, "Mint", log); err != nil {
  2173  					return err
  2174  				}
  2175  				event.Raw = log
  2176  
  2177  				select {
  2178  				case sink <- event:
  2179  				case err := <-sub.Err():
  2180  					return err
  2181  				case <-quit:
  2182  					return nil
  2183  				}
  2184  			case err := <-sub.Err():
  2185  				return err
  2186  			case <-quit:
  2187  				return nil
  2188  			}
  2189  		}
  2190  	}), nil
  2191  }
  2192  
  2193  // ParseMint is a log parse operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f.
  2194  //
  2195  // Solidity: event Mint(address minter, uint256 mintAmount, uint256 mintTokens)
  2196  func (_CETH *CETHFilterer) ParseMint(log types.Log) (*CETHMint, error) {
  2197  	event := new(CETHMint)
  2198  	if err := _CETH.contract.UnpackLog(event, "Mint", log); err != nil {
  2199  		return nil, err
  2200  	}
  2201  	return event, nil
  2202  }
  2203  
  2204  // CETHNewAdminIterator is returned from FilterNewAdmin and is used to iterate over the raw logs and unpacked data for NewAdmin events raised by the CETH contract.
  2205  type CETHNewAdminIterator struct {
  2206  	Event *CETHNewAdmin // Event containing the contract specifics and raw log
  2207  
  2208  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2209  	event    string              // Event name to use for unpacking event data
  2210  
  2211  	logs chan types.Log        // Log channel receiving the found contract events
  2212  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2213  	done bool                  // Whether the subscription completed delivering logs
  2214  	fail error                 // Occurred error to stop iteration
  2215  }
  2216  
  2217  // Next advances the iterator to the subsequent event, returning whether there
  2218  // are any more events found. In case of a retrieval or parsing error, false is
  2219  // returned and Error() can be queried for the exact failure.
  2220  func (it *CETHNewAdminIterator) Next() bool {
  2221  	// If the iterator failed, stop iterating
  2222  	if it.fail != nil {
  2223  		return false
  2224  	}
  2225  	// If the iterator completed, deliver directly whatever's available
  2226  	if it.done {
  2227  		select {
  2228  		case log := <-it.logs:
  2229  			it.Event = new(CETHNewAdmin)
  2230  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2231  				it.fail = err
  2232  				return false
  2233  			}
  2234  			it.Event.Raw = log
  2235  			return true
  2236  
  2237  		default:
  2238  			return false
  2239  		}
  2240  	}
  2241  	// Iterator still in progress, wait for either a data or an error event
  2242  	select {
  2243  	case log := <-it.logs:
  2244  		it.Event = new(CETHNewAdmin)
  2245  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2246  			it.fail = err
  2247  			return false
  2248  		}
  2249  		it.Event.Raw = log
  2250  		return true
  2251  
  2252  	case err := <-it.sub.Err():
  2253  		it.done = true
  2254  		it.fail = err
  2255  		return it.Next()
  2256  	}
  2257  }
  2258  
  2259  // Error returns any retrieval or parsing error occurred during filtering.
  2260  func (it *CETHNewAdminIterator) Error() error {
  2261  	return it.fail
  2262  }
  2263  
  2264  // Close terminates the iteration process, releasing any pending underlying
  2265  // resources.
  2266  func (it *CETHNewAdminIterator) Close() error {
  2267  	it.sub.Unsubscribe()
  2268  	return nil
  2269  }
  2270  
  2271  // CETHNewAdmin represents a NewAdmin event raised by the CETH contract.
  2272  type CETHNewAdmin struct {
  2273  	OldAdmin common.Address
  2274  	NewAdmin common.Address
  2275  	Raw      types.Log // Blockchain specific contextual infos
  2276  }
  2277  
  2278  // FilterNewAdmin is a free log retrieval operation binding the contract event 0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc.
  2279  //
  2280  // Solidity: event NewAdmin(address oldAdmin, address newAdmin)
  2281  func (_CETH *CETHFilterer) FilterNewAdmin(opts *bind.FilterOpts) (*CETHNewAdminIterator, error) {
  2282  
  2283  	logs, sub, err := _CETH.contract.FilterLogs(opts, "NewAdmin")
  2284  	if err != nil {
  2285  		return nil, err
  2286  	}
  2287  	return &CETHNewAdminIterator{contract: _CETH.contract, event: "NewAdmin", logs: logs, sub: sub}, nil
  2288  }
  2289  
  2290  // WatchNewAdmin is a free log subscription operation binding the contract event 0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc.
  2291  //
  2292  // Solidity: event NewAdmin(address oldAdmin, address newAdmin)
  2293  func (_CETH *CETHFilterer) WatchNewAdmin(opts *bind.WatchOpts, sink chan<- *CETHNewAdmin) (event.Subscription, error) {
  2294  
  2295  	logs, sub, err := _CETH.contract.WatchLogs(opts, "NewAdmin")
  2296  	if err != nil {
  2297  		return nil, err
  2298  	}
  2299  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2300  		defer sub.Unsubscribe()
  2301  		for {
  2302  			select {
  2303  			case log := <-logs:
  2304  				// New log arrived, parse the event and forward to the user
  2305  				event := new(CETHNewAdmin)
  2306  				if err := _CETH.contract.UnpackLog(event, "NewAdmin", log); err != nil {
  2307  					return err
  2308  				}
  2309  				event.Raw = log
  2310  
  2311  				select {
  2312  				case sink <- event:
  2313  				case err := <-sub.Err():
  2314  					return err
  2315  				case <-quit:
  2316  					return nil
  2317  				}
  2318  			case err := <-sub.Err():
  2319  				return err
  2320  			case <-quit:
  2321  				return nil
  2322  			}
  2323  		}
  2324  	}), nil
  2325  }
  2326  
  2327  // ParseNewAdmin is a log parse operation binding the contract event 0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc.
  2328  //
  2329  // Solidity: event NewAdmin(address oldAdmin, address newAdmin)
  2330  func (_CETH *CETHFilterer) ParseNewAdmin(log types.Log) (*CETHNewAdmin, error) {
  2331  	event := new(CETHNewAdmin)
  2332  	if err := _CETH.contract.UnpackLog(event, "NewAdmin", log); err != nil {
  2333  		return nil, err
  2334  	}
  2335  	return event, nil
  2336  }
  2337  
  2338  // CETHNewComptrollerIterator is returned from FilterNewComptroller and is used to iterate over the raw logs and unpacked data for NewComptroller events raised by the CETH contract.
  2339  type CETHNewComptrollerIterator struct {
  2340  	Event *CETHNewComptroller // Event containing the contract specifics and raw log
  2341  
  2342  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2343  	event    string              // Event name to use for unpacking event data
  2344  
  2345  	logs chan types.Log        // Log channel receiving the found contract events
  2346  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2347  	done bool                  // Whether the subscription completed delivering logs
  2348  	fail error                 // Occurred error to stop iteration
  2349  }
  2350  
  2351  // Next advances the iterator to the subsequent event, returning whether there
  2352  // are any more events found. In case of a retrieval or parsing error, false is
  2353  // returned and Error() can be queried for the exact failure.
  2354  func (it *CETHNewComptrollerIterator) Next() bool {
  2355  	// If the iterator failed, stop iterating
  2356  	if it.fail != nil {
  2357  		return false
  2358  	}
  2359  	// If the iterator completed, deliver directly whatever's available
  2360  	if it.done {
  2361  		select {
  2362  		case log := <-it.logs:
  2363  			it.Event = new(CETHNewComptroller)
  2364  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2365  				it.fail = err
  2366  				return false
  2367  			}
  2368  			it.Event.Raw = log
  2369  			return true
  2370  
  2371  		default:
  2372  			return false
  2373  		}
  2374  	}
  2375  	// Iterator still in progress, wait for either a data or an error event
  2376  	select {
  2377  	case log := <-it.logs:
  2378  		it.Event = new(CETHNewComptroller)
  2379  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2380  			it.fail = err
  2381  			return false
  2382  		}
  2383  		it.Event.Raw = log
  2384  		return true
  2385  
  2386  	case err := <-it.sub.Err():
  2387  		it.done = true
  2388  		it.fail = err
  2389  		return it.Next()
  2390  	}
  2391  }
  2392  
  2393  // Error returns any retrieval or parsing error occurred during filtering.
  2394  func (it *CETHNewComptrollerIterator) Error() error {
  2395  	return it.fail
  2396  }
  2397  
  2398  // Close terminates the iteration process, releasing any pending underlying
  2399  // resources.
  2400  func (it *CETHNewComptrollerIterator) Close() error {
  2401  	it.sub.Unsubscribe()
  2402  	return nil
  2403  }
  2404  
  2405  // CETHNewComptroller represents a NewComptroller event raised by the CETH contract.
  2406  type CETHNewComptroller struct {
  2407  	OldComptroller common.Address
  2408  	NewComptroller common.Address
  2409  	Raw            types.Log // Blockchain specific contextual infos
  2410  }
  2411  
  2412  // FilterNewComptroller is a free log retrieval operation binding the contract event 0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d.
  2413  //
  2414  // Solidity: event NewComptroller(address oldComptroller, address newComptroller)
  2415  func (_CETH *CETHFilterer) FilterNewComptroller(opts *bind.FilterOpts) (*CETHNewComptrollerIterator, error) {
  2416  
  2417  	logs, sub, err := _CETH.contract.FilterLogs(opts, "NewComptroller")
  2418  	if err != nil {
  2419  		return nil, err
  2420  	}
  2421  	return &CETHNewComptrollerIterator{contract: _CETH.contract, event: "NewComptroller", logs: logs, sub: sub}, nil
  2422  }
  2423  
  2424  // WatchNewComptroller is a free log subscription operation binding the contract event 0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d.
  2425  //
  2426  // Solidity: event NewComptroller(address oldComptroller, address newComptroller)
  2427  func (_CETH *CETHFilterer) WatchNewComptroller(opts *bind.WatchOpts, sink chan<- *CETHNewComptroller) (event.Subscription, error) {
  2428  
  2429  	logs, sub, err := _CETH.contract.WatchLogs(opts, "NewComptroller")
  2430  	if err != nil {
  2431  		return nil, err
  2432  	}
  2433  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2434  		defer sub.Unsubscribe()
  2435  		for {
  2436  			select {
  2437  			case log := <-logs:
  2438  				// New log arrived, parse the event and forward to the user
  2439  				event := new(CETHNewComptroller)
  2440  				if err := _CETH.contract.UnpackLog(event, "NewComptroller", log); err != nil {
  2441  					return err
  2442  				}
  2443  				event.Raw = log
  2444  
  2445  				select {
  2446  				case sink <- event:
  2447  				case err := <-sub.Err():
  2448  					return err
  2449  				case <-quit:
  2450  					return nil
  2451  				}
  2452  			case err := <-sub.Err():
  2453  				return err
  2454  			case <-quit:
  2455  				return nil
  2456  			}
  2457  		}
  2458  	}), nil
  2459  }
  2460  
  2461  // ParseNewComptroller is a log parse operation binding the contract event 0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d.
  2462  //
  2463  // Solidity: event NewComptroller(address oldComptroller, address newComptroller)
  2464  func (_CETH *CETHFilterer) ParseNewComptroller(log types.Log) (*CETHNewComptroller, error) {
  2465  	event := new(CETHNewComptroller)
  2466  	if err := _CETH.contract.UnpackLog(event, "NewComptroller", log); err != nil {
  2467  		return nil, err
  2468  	}
  2469  	return event, nil
  2470  }
  2471  
  2472  // CETHNewMarketInterestRateModelIterator is returned from FilterNewMarketInterestRateModel and is used to iterate over the raw logs and unpacked data for NewMarketInterestRateModel events raised by the CETH contract.
  2473  type CETHNewMarketInterestRateModelIterator struct {
  2474  	Event *CETHNewMarketInterestRateModel // Event containing the contract specifics and raw log
  2475  
  2476  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2477  	event    string              // Event name to use for unpacking event data
  2478  
  2479  	logs chan types.Log        // Log channel receiving the found contract events
  2480  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2481  	done bool                  // Whether the subscription completed delivering logs
  2482  	fail error                 // Occurred error to stop iteration
  2483  }
  2484  
  2485  // Next advances the iterator to the subsequent event, returning whether there
  2486  // are any more events found. In case of a retrieval or parsing error, false is
  2487  // returned and Error() can be queried for the exact failure.
  2488  func (it *CETHNewMarketInterestRateModelIterator) Next() bool {
  2489  	// If the iterator failed, stop iterating
  2490  	if it.fail != nil {
  2491  		return false
  2492  	}
  2493  	// If the iterator completed, deliver directly whatever's available
  2494  	if it.done {
  2495  		select {
  2496  		case log := <-it.logs:
  2497  			it.Event = new(CETHNewMarketInterestRateModel)
  2498  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2499  				it.fail = err
  2500  				return false
  2501  			}
  2502  			it.Event.Raw = log
  2503  			return true
  2504  
  2505  		default:
  2506  			return false
  2507  		}
  2508  	}
  2509  	// Iterator still in progress, wait for either a data or an error event
  2510  	select {
  2511  	case log := <-it.logs:
  2512  		it.Event = new(CETHNewMarketInterestRateModel)
  2513  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2514  			it.fail = err
  2515  			return false
  2516  		}
  2517  		it.Event.Raw = log
  2518  		return true
  2519  
  2520  	case err := <-it.sub.Err():
  2521  		it.done = true
  2522  		it.fail = err
  2523  		return it.Next()
  2524  	}
  2525  }
  2526  
  2527  // Error returns any retrieval or parsing error occurred during filtering.
  2528  func (it *CETHNewMarketInterestRateModelIterator) Error() error {
  2529  	return it.fail
  2530  }
  2531  
  2532  // Close terminates the iteration process, releasing any pending underlying
  2533  // resources.
  2534  func (it *CETHNewMarketInterestRateModelIterator) Close() error {
  2535  	it.sub.Unsubscribe()
  2536  	return nil
  2537  }
  2538  
  2539  // CETHNewMarketInterestRateModel represents a NewMarketInterestRateModel event raised by the CETH contract.
  2540  type CETHNewMarketInterestRateModel struct {
  2541  	OldInterestRateModel common.Address
  2542  	NewInterestRateModel common.Address
  2543  	Raw                  types.Log // Blockchain specific contextual infos
  2544  }
  2545  
  2546  // FilterNewMarketInterestRateModel is a free log retrieval operation binding the contract event 0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926.
  2547  //
  2548  // Solidity: event NewMarketInterestRateModel(address oldInterestRateModel, address newInterestRateModel)
  2549  func (_CETH *CETHFilterer) FilterNewMarketInterestRateModel(opts *bind.FilterOpts) (*CETHNewMarketInterestRateModelIterator, error) {
  2550  
  2551  	logs, sub, err := _CETH.contract.FilterLogs(opts, "NewMarketInterestRateModel")
  2552  	if err != nil {
  2553  		return nil, err
  2554  	}
  2555  	return &CETHNewMarketInterestRateModelIterator{contract: _CETH.contract, event: "NewMarketInterestRateModel", logs: logs, sub: sub}, nil
  2556  }
  2557  
  2558  // WatchNewMarketInterestRateModel is a free log subscription operation binding the contract event 0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926.
  2559  //
  2560  // Solidity: event NewMarketInterestRateModel(address oldInterestRateModel, address newInterestRateModel)
  2561  func (_CETH *CETHFilterer) WatchNewMarketInterestRateModel(opts *bind.WatchOpts, sink chan<- *CETHNewMarketInterestRateModel) (event.Subscription, error) {
  2562  
  2563  	logs, sub, err := _CETH.contract.WatchLogs(opts, "NewMarketInterestRateModel")
  2564  	if err != nil {
  2565  		return nil, err
  2566  	}
  2567  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2568  		defer sub.Unsubscribe()
  2569  		for {
  2570  			select {
  2571  			case log := <-logs:
  2572  				// New log arrived, parse the event and forward to the user
  2573  				event := new(CETHNewMarketInterestRateModel)
  2574  				if err := _CETH.contract.UnpackLog(event, "NewMarketInterestRateModel", log); err != nil {
  2575  					return err
  2576  				}
  2577  				event.Raw = log
  2578  
  2579  				select {
  2580  				case sink <- event:
  2581  				case err := <-sub.Err():
  2582  					return err
  2583  				case <-quit:
  2584  					return nil
  2585  				}
  2586  			case err := <-sub.Err():
  2587  				return err
  2588  			case <-quit:
  2589  				return nil
  2590  			}
  2591  		}
  2592  	}), nil
  2593  }
  2594  
  2595  // ParseNewMarketInterestRateModel is a log parse operation binding the contract event 0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926.
  2596  //
  2597  // Solidity: event NewMarketInterestRateModel(address oldInterestRateModel, address newInterestRateModel)
  2598  func (_CETH *CETHFilterer) ParseNewMarketInterestRateModel(log types.Log) (*CETHNewMarketInterestRateModel, error) {
  2599  	event := new(CETHNewMarketInterestRateModel)
  2600  	if err := _CETH.contract.UnpackLog(event, "NewMarketInterestRateModel", log); err != nil {
  2601  		return nil, err
  2602  	}
  2603  	return event, nil
  2604  }
  2605  
  2606  // CETHNewPendingAdminIterator is returned from FilterNewPendingAdmin and is used to iterate over the raw logs and unpacked data for NewPendingAdmin events raised by the CETH contract.
  2607  type CETHNewPendingAdminIterator struct {
  2608  	Event *CETHNewPendingAdmin // Event containing the contract specifics and raw log
  2609  
  2610  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2611  	event    string              // Event name to use for unpacking event data
  2612  
  2613  	logs chan types.Log        // Log channel receiving the found contract events
  2614  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2615  	done bool                  // Whether the subscription completed delivering logs
  2616  	fail error                 // Occurred error to stop iteration
  2617  }
  2618  
  2619  // Next advances the iterator to the subsequent event, returning whether there
  2620  // are any more events found. In case of a retrieval or parsing error, false is
  2621  // returned and Error() can be queried for the exact failure.
  2622  func (it *CETHNewPendingAdminIterator) Next() bool {
  2623  	// If the iterator failed, stop iterating
  2624  	if it.fail != nil {
  2625  		return false
  2626  	}
  2627  	// If the iterator completed, deliver directly whatever's available
  2628  	if it.done {
  2629  		select {
  2630  		case log := <-it.logs:
  2631  			it.Event = new(CETHNewPendingAdmin)
  2632  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2633  				it.fail = err
  2634  				return false
  2635  			}
  2636  			it.Event.Raw = log
  2637  			return true
  2638  
  2639  		default:
  2640  			return false
  2641  		}
  2642  	}
  2643  	// Iterator still in progress, wait for either a data or an error event
  2644  	select {
  2645  	case log := <-it.logs:
  2646  		it.Event = new(CETHNewPendingAdmin)
  2647  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2648  			it.fail = err
  2649  			return false
  2650  		}
  2651  		it.Event.Raw = log
  2652  		return true
  2653  
  2654  	case err := <-it.sub.Err():
  2655  		it.done = true
  2656  		it.fail = err
  2657  		return it.Next()
  2658  	}
  2659  }
  2660  
  2661  // Error returns any retrieval or parsing error occurred during filtering.
  2662  func (it *CETHNewPendingAdminIterator) Error() error {
  2663  	return it.fail
  2664  }
  2665  
  2666  // Close terminates the iteration process, releasing any pending underlying
  2667  // resources.
  2668  func (it *CETHNewPendingAdminIterator) Close() error {
  2669  	it.sub.Unsubscribe()
  2670  	return nil
  2671  }
  2672  
  2673  // CETHNewPendingAdmin represents a NewPendingAdmin event raised by the CETH contract.
  2674  type CETHNewPendingAdmin struct {
  2675  	OldPendingAdmin common.Address
  2676  	NewPendingAdmin common.Address
  2677  	Raw             types.Log // Blockchain specific contextual infos
  2678  }
  2679  
  2680  // FilterNewPendingAdmin is a free log retrieval operation binding the contract event 0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9.
  2681  //
  2682  // Solidity: event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin)
  2683  func (_CETH *CETHFilterer) FilterNewPendingAdmin(opts *bind.FilterOpts) (*CETHNewPendingAdminIterator, error) {
  2684  
  2685  	logs, sub, err := _CETH.contract.FilterLogs(opts, "NewPendingAdmin")
  2686  	if err != nil {
  2687  		return nil, err
  2688  	}
  2689  	return &CETHNewPendingAdminIterator{contract: _CETH.contract, event: "NewPendingAdmin", logs: logs, sub: sub}, nil
  2690  }
  2691  
  2692  // WatchNewPendingAdmin is a free log subscription operation binding the contract event 0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9.
  2693  //
  2694  // Solidity: event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin)
  2695  func (_CETH *CETHFilterer) WatchNewPendingAdmin(opts *bind.WatchOpts, sink chan<- *CETHNewPendingAdmin) (event.Subscription, error) {
  2696  
  2697  	logs, sub, err := _CETH.contract.WatchLogs(opts, "NewPendingAdmin")
  2698  	if err != nil {
  2699  		return nil, err
  2700  	}
  2701  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2702  		defer sub.Unsubscribe()
  2703  		for {
  2704  			select {
  2705  			case log := <-logs:
  2706  				// New log arrived, parse the event and forward to the user
  2707  				event := new(CETHNewPendingAdmin)
  2708  				if err := _CETH.contract.UnpackLog(event, "NewPendingAdmin", log); err != nil {
  2709  					return err
  2710  				}
  2711  				event.Raw = log
  2712  
  2713  				select {
  2714  				case sink <- event:
  2715  				case err := <-sub.Err():
  2716  					return err
  2717  				case <-quit:
  2718  					return nil
  2719  				}
  2720  			case err := <-sub.Err():
  2721  				return err
  2722  			case <-quit:
  2723  				return nil
  2724  			}
  2725  		}
  2726  	}), nil
  2727  }
  2728  
  2729  // ParseNewPendingAdmin is a log parse operation binding the contract event 0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9.
  2730  //
  2731  // Solidity: event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin)
  2732  func (_CETH *CETHFilterer) ParseNewPendingAdmin(log types.Log) (*CETHNewPendingAdmin, error) {
  2733  	event := new(CETHNewPendingAdmin)
  2734  	if err := _CETH.contract.UnpackLog(event, "NewPendingAdmin", log); err != nil {
  2735  		return nil, err
  2736  	}
  2737  	return event, nil
  2738  }
  2739  
  2740  // CETHNewReserveFactorIterator is returned from FilterNewReserveFactor and is used to iterate over the raw logs and unpacked data for NewReserveFactor events raised by the CETH contract.
  2741  type CETHNewReserveFactorIterator struct {
  2742  	Event *CETHNewReserveFactor // Event containing the contract specifics and raw log
  2743  
  2744  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2745  	event    string              // Event name to use for unpacking event data
  2746  
  2747  	logs chan types.Log        // Log channel receiving the found contract events
  2748  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2749  	done bool                  // Whether the subscription completed delivering logs
  2750  	fail error                 // Occurred error to stop iteration
  2751  }
  2752  
  2753  // Next advances the iterator to the subsequent event, returning whether there
  2754  // are any more events found. In case of a retrieval or parsing error, false is
  2755  // returned and Error() can be queried for the exact failure.
  2756  func (it *CETHNewReserveFactorIterator) Next() bool {
  2757  	// If the iterator failed, stop iterating
  2758  	if it.fail != nil {
  2759  		return false
  2760  	}
  2761  	// If the iterator completed, deliver directly whatever's available
  2762  	if it.done {
  2763  		select {
  2764  		case log := <-it.logs:
  2765  			it.Event = new(CETHNewReserveFactor)
  2766  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2767  				it.fail = err
  2768  				return false
  2769  			}
  2770  			it.Event.Raw = log
  2771  			return true
  2772  
  2773  		default:
  2774  			return false
  2775  		}
  2776  	}
  2777  	// Iterator still in progress, wait for either a data or an error event
  2778  	select {
  2779  	case log := <-it.logs:
  2780  		it.Event = new(CETHNewReserveFactor)
  2781  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2782  			it.fail = err
  2783  			return false
  2784  		}
  2785  		it.Event.Raw = log
  2786  		return true
  2787  
  2788  	case err := <-it.sub.Err():
  2789  		it.done = true
  2790  		it.fail = err
  2791  		return it.Next()
  2792  	}
  2793  }
  2794  
  2795  // Error returns any retrieval or parsing error occurred during filtering.
  2796  func (it *CETHNewReserveFactorIterator) Error() error {
  2797  	return it.fail
  2798  }
  2799  
  2800  // Close terminates the iteration process, releasing any pending underlying
  2801  // resources.
  2802  func (it *CETHNewReserveFactorIterator) Close() error {
  2803  	it.sub.Unsubscribe()
  2804  	return nil
  2805  }
  2806  
  2807  // CETHNewReserveFactor represents a NewReserveFactor event raised by the CETH contract.
  2808  type CETHNewReserveFactor struct {
  2809  	OldReserveFactorMantissa *big.Int
  2810  	NewReserveFactorMantissa *big.Int
  2811  	Raw                      types.Log // Blockchain specific contextual infos
  2812  }
  2813  
  2814  // FilterNewReserveFactor is a free log retrieval operation binding the contract event 0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460.
  2815  //
  2816  // Solidity: event NewReserveFactor(uint256 oldReserveFactorMantissa, uint256 newReserveFactorMantissa)
  2817  func (_CETH *CETHFilterer) FilterNewReserveFactor(opts *bind.FilterOpts) (*CETHNewReserveFactorIterator, error) {
  2818  
  2819  	logs, sub, err := _CETH.contract.FilterLogs(opts, "NewReserveFactor")
  2820  	if err != nil {
  2821  		return nil, err
  2822  	}
  2823  	return &CETHNewReserveFactorIterator{contract: _CETH.contract, event: "NewReserveFactor", logs: logs, sub: sub}, nil
  2824  }
  2825  
  2826  // WatchNewReserveFactor is a free log subscription operation binding the contract event 0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460.
  2827  //
  2828  // Solidity: event NewReserveFactor(uint256 oldReserveFactorMantissa, uint256 newReserveFactorMantissa)
  2829  func (_CETH *CETHFilterer) WatchNewReserveFactor(opts *bind.WatchOpts, sink chan<- *CETHNewReserveFactor) (event.Subscription, error) {
  2830  
  2831  	logs, sub, err := _CETH.contract.WatchLogs(opts, "NewReserveFactor")
  2832  	if err != nil {
  2833  		return nil, err
  2834  	}
  2835  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2836  		defer sub.Unsubscribe()
  2837  		for {
  2838  			select {
  2839  			case log := <-logs:
  2840  				// New log arrived, parse the event and forward to the user
  2841  				event := new(CETHNewReserveFactor)
  2842  				if err := _CETH.contract.UnpackLog(event, "NewReserveFactor", log); err != nil {
  2843  					return err
  2844  				}
  2845  				event.Raw = log
  2846  
  2847  				select {
  2848  				case sink <- event:
  2849  				case err := <-sub.Err():
  2850  					return err
  2851  				case <-quit:
  2852  					return nil
  2853  				}
  2854  			case err := <-sub.Err():
  2855  				return err
  2856  			case <-quit:
  2857  				return nil
  2858  			}
  2859  		}
  2860  	}), nil
  2861  }
  2862  
  2863  // ParseNewReserveFactor is a log parse operation binding the contract event 0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460.
  2864  //
  2865  // Solidity: event NewReserveFactor(uint256 oldReserveFactorMantissa, uint256 newReserveFactorMantissa)
  2866  func (_CETH *CETHFilterer) ParseNewReserveFactor(log types.Log) (*CETHNewReserveFactor, error) {
  2867  	event := new(CETHNewReserveFactor)
  2868  	if err := _CETH.contract.UnpackLog(event, "NewReserveFactor", log); err != nil {
  2869  		return nil, err
  2870  	}
  2871  	return event, nil
  2872  }
  2873  
  2874  // CETHRedeemIterator is returned from FilterRedeem and is used to iterate over the raw logs and unpacked data for Redeem events raised by the CETH contract.
  2875  type CETHRedeemIterator struct {
  2876  	Event *CETHRedeem // Event containing the contract specifics and raw log
  2877  
  2878  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2879  	event    string              // Event name to use for unpacking event data
  2880  
  2881  	logs chan types.Log        // Log channel receiving the found contract events
  2882  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2883  	done bool                  // Whether the subscription completed delivering logs
  2884  	fail error                 // Occurred error to stop iteration
  2885  }
  2886  
  2887  // Next advances the iterator to the subsequent event, returning whether there
  2888  // are any more events found. In case of a retrieval or parsing error, false is
  2889  // returned and Error() can be queried for the exact failure.
  2890  func (it *CETHRedeemIterator) Next() bool {
  2891  	// If the iterator failed, stop iterating
  2892  	if it.fail != nil {
  2893  		return false
  2894  	}
  2895  	// If the iterator completed, deliver directly whatever's available
  2896  	if it.done {
  2897  		select {
  2898  		case log := <-it.logs:
  2899  			it.Event = new(CETHRedeem)
  2900  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2901  				it.fail = err
  2902  				return false
  2903  			}
  2904  			it.Event.Raw = log
  2905  			return true
  2906  
  2907  		default:
  2908  			return false
  2909  		}
  2910  	}
  2911  	// Iterator still in progress, wait for either a data or an error event
  2912  	select {
  2913  	case log := <-it.logs:
  2914  		it.Event = new(CETHRedeem)
  2915  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2916  			it.fail = err
  2917  			return false
  2918  		}
  2919  		it.Event.Raw = log
  2920  		return true
  2921  
  2922  	case err := <-it.sub.Err():
  2923  		it.done = true
  2924  		it.fail = err
  2925  		return it.Next()
  2926  	}
  2927  }
  2928  
  2929  // Error returns any retrieval or parsing error occurred during filtering.
  2930  func (it *CETHRedeemIterator) Error() error {
  2931  	return it.fail
  2932  }
  2933  
  2934  // Close terminates the iteration process, releasing any pending underlying
  2935  // resources.
  2936  func (it *CETHRedeemIterator) Close() error {
  2937  	it.sub.Unsubscribe()
  2938  	return nil
  2939  }
  2940  
  2941  // CETHRedeem represents a Redeem event raised by the CETH contract.
  2942  type CETHRedeem struct {
  2943  	Redeemer     common.Address
  2944  	RedeemAmount *big.Int
  2945  	RedeemTokens *big.Int
  2946  	Raw          types.Log // Blockchain specific contextual infos
  2947  }
  2948  
  2949  // FilterRedeem is a free log retrieval operation binding the contract event 0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929.
  2950  //
  2951  // Solidity: event Redeem(address redeemer, uint256 redeemAmount, uint256 redeemTokens)
  2952  func (_CETH *CETHFilterer) FilterRedeem(opts *bind.FilterOpts) (*CETHRedeemIterator, error) {
  2953  
  2954  	logs, sub, err := _CETH.contract.FilterLogs(opts, "Redeem")
  2955  	if err != nil {
  2956  		return nil, err
  2957  	}
  2958  	return &CETHRedeemIterator{contract: _CETH.contract, event: "Redeem", logs: logs, sub: sub}, nil
  2959  }
  2960  
  2961  // WatchRedeem is a free log subscription operation binding the contract event 0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929.
  2962  //
  2963  // Solidity: event Redeem(address redeemer, uint256 redeemAmount, uint256 redeemTokens)
  2964  func (_CETH *CETHFilterer) WatchRedeem(opts *bind.WatchOpts, sink chan<- *CETHRedeem) (event.Subscription, error) {
  2965  
  2966  	logs, sub, err := _CETH.contract.WatchLogs(opts, "Redeem")
  2967  	if err != nil {
  2968  		return nil, err
  2969  	}
  2970  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2971  		defer sub.Unsubscribe()
  2972  		for {
  2973  			select {
  2974  			case log := <-logs:
  2975  				// New log arrived, parse the event and forward to the user
  2976  				event := new(CETHRedeem)
  2977  				if err := _CETH.contract.UnpackLog(event, "Redeem", log); err != nil {
  2978  					return err
  2979  				}
  2980  				event.Raw = log
  2981  
  2982  				select {
  2983  				case sink <- event:
  2984  				case err := <-sub.Err():
  2985  					return err
  2986  				case <-quit:
  2987  					return nil
  2988  				}
  2989  			case err := <-sub.Err():
  2990  				return err
  2991  			case <-quit:
  2992  				return nil
  2993  			}
  2994  		}
  2995  	}), nil
  2996  }
  2997  
  2998  // ParseRedeem is a log parse operation binding the contract event 0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929.
  2999  //
  3000  // Solidity: event Redeem(address redeemer, uint256 redeemAmount, uint256 redeemTokens)
  3001  func (_CETH *CETHFilterer) ParseRedeem(log types.Log) (*CETHRedeem, error) {
  3002  	event := new(CETHRedeem)
  3003  	if err := _CETH.contract.UnpackLog(event, "Redeem", log); err != nil {
  3004  		return nil, err
  3005  	}
  3006  	return event, nil
  3007  }
  3008  
  3009  // CETHRepayBorrowIterator is returned from FilterRepayBorrow and is used to iterate over the raw logs and unpacked data for RepayBorrow events raised by the CETH contract.
  3010  type CETHRepayBorrowIterator struct {
  3011  	Event *CETHRepayBorrow // Event containing the contract specifics and raw log
  3012  
  3013  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3014  	event    string              // Event name to use for unpacking event data
  3015  
  3016  	logs chan types.Log        // Log channel receiving the found contract events
  3017  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3018  	done bool                  // Whether the subscription completed delivering logs
  3019  	fail error                 // Occurred error to stop iteration
  3020  }
  3021  
  3022  // Next advances the iterator to the subsequent event, returning whether there
  3023  // are any more events found. In case of a retrieval or parsing error, false is
  3024  // returned and Error() can be queried for the exact failure.
  3025  func (it *CETHRepayBorrowIterator) Next() bool {
  3026  	// If the iterator failed, stop iterating
  3027  	if it.fail != nil {
  3028  		return false
  3029  	}
  3030  	// If the iterator completed, deliver directly whatever's available
  3031  	if it.done {
  3032  		select {
  3033  		case log := <-it.logs:
  3034  			it.Event = new(CETHRepayBorrow)
  3035  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3036  				it.fail = err
  3037  				return false
  3038  			}
  3039  			it.Event.Raw = log
  3040  			return true
  3041  
  3042  		default:
  3043  			return false
  3044  		}
  3045  	}
  3046  	// Iterator still in progress, wait for either a data or an error event
  3047  	select {
  3048  	case log := <-it.logs:
  3049  		it.Event = new(CETHRepayBorrow)
  3050  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3051  			it.fail = err
  3052  			return false
  3053  		}
  3054  		it.Event.Raw = log
  3055  		return true
  3056  
  3057  	case err := <-it.sub.Err():
  3058  		it.done = true
  3059  		it.fail = err
  3060  		return it.Next()
  3061  	}
  3062  }
  3063  
  3064  // Error returns any retrieval or parsing error occurred during filtering.
  3065  func (it *CETHRepayBorrowIterator) Error() error {
  3066  	return it.fail
  3067  }
  3068  
  3069  // Close terminates the iteration process, releasing any pending underlying
  3070  // resources.
  3071  func (it *CETHRepayBorrowIterator) Close() error {
  3072  	it.sub.Unsubscribe()
  3073  	return nil
  3074  }
  3075  
  3076  // CETHRepayBorrow represents a RepayBorrow event raised by the CETH contract.
  3077  type CETHRepayBorrow struct {
  3078  	Payer          common.Address
  3079  	Borrower       common.Address
  3080  	RepayAmount    *big.Int
  3081  	AccountBorrows *big.Int
  3082  	TotalBorrows   *big.Int
  3083  	Raw            types.Log // Blockchain specific contextual infos
  3084  }
  3085  
  3086  // FilterRepayBorrow is a free log retrieval operation binding the contract event 0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1.
  3087  //
  3088  // Solidity: event RepayBorrow(address payer, address borrower, uint256 repayAmount, uint256 accountBorrows, uint256 totalBorrows)
  3089  func (_CETH *CETHFilterer) FilterRepayBorrow(opts *bind.FilterOpts) (*CETHRepayBorrowIterator, error) {
  3090  
  3091  	logs, sub, err := _CETH.contract.FilterLogs(opts, "RepayBorrow")
  3092  	if err != nil {
  3093  		return nil, err
  3094  	}
  3095  	return &CETHRepayBorrowIterator{contract: _CETH.contract, event: "RepayBorrow", logs: logs, sub: sub}, nil
  3096  }
  3097  
  3098  // WatchRepayBorrow is a free log subscription operation binding the contract event 0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1.
  3099  //
  3100  // Solidity: event RepayBorrow(address payer, address borrower, uint256 repayAmount, uint256 accountBorrows, uint256 totalBorrows)
  3101  func (_CETH *CETHFilterer) WatchRepayBorrow(opts *bind.WatchOpts, sink chan<- *CETHRepayBorrow) (event.Subscription, error) {
  3102  
  3103  	logs, sub, err := _CETH.contract.WatchLogs(opts, "RepayBorrow")
  3104  	if err != nil {
  3105  		return nil, err
  3106  	}
  3107  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3108  		defer sub.Unsubscribe()
  3109  		for {
  3110  			select {
  3111  			case log := <-logs:
  3112  				// New log arrived, parse the event and forward to the user
  3113  				event := new(CETHRepayBorrow)
  3114  				if err := _CETH.contract.UnpackLog(event, "RepayBorrow", log); err != nil {
  3115  					return err
  3116  				}
  3117  				event.Raw = log
  3118  
  3119  				select {
  3120  				case sink <- event:
  3121  				case err := <-sub.Err():
  3122  					return err
  3123  				case <-quit:
  3124  					return nil
  3125  				}
  3126  			case err := <-sub.Err():
  3127  				return err
  3128  			case <-quit:
  3129  				return nil
  3130  			}
  3131  		}
  3132  	}), nil
  3133  }
  3134  
  3135  // ParseRepayBorrow is a log parse operation binding the contract event 0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1.
  3136  //
  3137  // Solidity: event RepayBorrow(address payer, address borrower, uint256 repayAmount, uint256 accountBorrows, uint256 totalBorrows)
  3138  func (_CETH *CETHFilterer) ParseRepayBorrow(log types.Log) (*CETHRepayBorrow, error) {
  3139  	event := new(CETHRepayBorrow)
  3140  	if err := _CETH.contract.UnpackLog(event, "RepayBorrow", log); err != nil {
  3141  		return nil, err
  3142  	}
  3143  	return event, nil
  3144  }
  3145  
  3146  // CETHReservesReducedIterator is returned from FilterReservesReduced and is used to iterate over the raw logs and unpacked data for ReservesReduced events raised by the CETH contract.
  3147  type CETHReservesReducedIterator struct {
  3148  	Event *CETHReservesReduced // Event containing the contract specifics and raw log
  3149  
  3150  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3151  	event    string              // Event name to use for unpacking event data
  3152  
  3153  	logs chan types.Log        // Log channel receiving the found contract events
  3154  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3155  	done bool                  // Whether the subscription completed delivering logs
  3156  	fail error                 // Occurred error to stop iteration
  3157  }
  3158  
  3159  // Next advances the iterator to the subsequent event, returning whether there
  3160  // are any more events found. In case of a retrieval or parsing error, false is
  3161  // returned and Error() can be queried for the exact failure.
  3162  func (it *CETHReservesReducedIterator) Next() bool {
  3163  	// If the iterator failed, stop iterating
  3164  	if it.fail != nil {
  3165  		return false
  3166  	}
  3167  	// If the iterator completed, deliver directly whatever's available
  3168  	if it.done {
  3169  		select {
  3170  		case log := <-it.logs:
  3171  			it.Event = new(CETHReservesReduced)
  3172  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3173  				it.fail = err
  3174  				return false
  3175  			}
  3176  			it.Event.Raw = log
  3177  			return true
  3178  
  3179  		default:
  3180  			return false
  3181  		}
  3182  	}
  3183  	// Iterator still in progress, wait for either a data or an error event
  3184  	select {
  3185  	case log := <-it.logs:
  3186  		it.Event = new(CETHReservesReduced)
  3187  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3188  			it.fail = err
  3189  			return false
  3190  		}
  3191  		it.Event.Raw = log
  3192  		return true
  3193  
  3194  	case err := <-it.sub.Err():
  3195  		it.done = true
  3196  		it.fail = err
  3197  		return it.Next()
  3198  	}
  3199  }
  3200  
  3201  // Error returns any retrieval or parsing error occurred during filtering.
  3202  func (it *CETHReservesReducedIterator) Error() error {
  3203  	return it.fail
  3204  }
  3205  
  3206  // Close terminates the iteration process, releasing any pending underlying
  3207  // resources.
  3208  func (it *CETHReservesReducedIterator) Close() error {
  3209  	it.sub.Unsubscribe()
  3210  	return nil
  3211  }
  3212  
  3213  // CETHReservesReduced represents a ReservesReduced event raised by the CETH contract.
  3214  type CETHReservesReduced struct {
  3215  	Admin            common.Address
  3216  	ReduceAmount     *big.Int
  3217  	NewTotalReserves *big.Int
  3218  	Raw              types.Log // Blockchain specific contextual infos
  3219  }
  3220  
  3221  // FilterReservesReduced is a free log retrieval operation binding the contract event 0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e.
  3222  //
  3223  // Solidity: event ReservesReduced(address admin, uint256 reduceAmount, uint256 newTotalReserves)
  3224  func (_CETH *CETHFilterer) FilterReservesReduced(opts *bind.FilterOpts) (*CETHReservesReducedIterator, error) {
  3225  
  3226  	logs, sub, err := _CETH.contract.FilterLogs(opts, "ReservesReduced")
  3227  	if err != nil {
  3228  		return nil, err
  3229  	}
  3230  	return &CETHReservesReducedIterator{contract: _CETH.contract, event: "ReservesReduced", logs: logs, sub: sub}, nil
  3231  }
  3232  
  3233  // WatchReservesReduced is a free log subscription operation binding the contract event 0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e.
  3234  //
  3235  // Solidity: event ReservesReduced(address admin, uint256 reduceAmount, uint256 newTotalReserves)
  3236  func (_CETH *CETHFilterer) WatchReservesReduced(opts *bind.WatchOpts, sink chan<- *CETHReservesReduced) (event.Subscription, error) {
  3237  
  3238  	logs, sub, err := _CETH.contract.WatchLogs(opts, "ReservesReduced")
  3239  	if err != nil {
  3240  		return nil, err
  3241  	}
  3242  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3243  		defer sub.Unsubscribe()
  3244  		for {
  3245  			select {
  3246  			case log := <-logs:
  3247  				// New log arrived, parse the event and forward to the user
  3248  				event := new(CETHReservesReduced)
  3249  				if err := _CETH.contract.UnpackLog(event, "ReservesReduced", log); err != nil {
  3250  					return err
  3251  				}
  3252  				event.Raw = log
  3253  
  3254  				select {
  3255  				case sink <- event:
  3256  				case err := <-sub.Err():
  3257  					return err
  3258  				case <-quit:
  3259  					return nil
  3260  				}
  3261  			case err := <-sub.Err():
  3262  				return err
  3263  			case <-quit:
  3264  				return nil
  3265  			}
  3266  		}
  3267  	}), nil
  3268  }
  3269  
  3270  // ParseReservesReduced is a log parse operation binding the contract event 0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e.
  3271  //
  3272  // Solidity: event ReservesReduced(address admin, uint256 reduceAmount, uint256 newTotalReserves)
  3273  func (_CETH *CETHFilterer) ParseReservesReduced(log types.Log) (*CETHReservesReduced, error) {
  3274  	event := new(CETHReservesReduced)
  3275  	if err := _CETH.contract.UnpackLog(event, "ReservesReduced", log); err != nil {
  3276  		return nil, err
  3277  	}
  3278  	return event, nil
  3279  }
  3280  
  3281  // CETHTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the CETH contract.
  3282  type CETHTransferIterator struct {
  3283  	Event *CETHTransfer // Event containing the contract specifics and raw log
  3284  
  3285  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3286  	event    string              // Event name to use for unpacking event data
  3287  
  3288  	logs chan types.Log        // Log channel receiving the found contract events
  3289  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3290  	done bool                  // Whether the subscription completed delivering logs
  3291  	fail error                 // Occurred error to stop iteration
  3292  }
  3293  
  3294  // Next advances the iterator to the subsequent event, returning whether there
  3295  // are any more events found. In case of a retrieval or parsing error, false is
  3296  // returned and Error() can be queried for the exact failure.
  3297  func (it *CETHTransferIterator) Next() bool {
  3298  	// If the iterator failed, stop iterating
  3299  	if it.fail != nil {
  3300  		return false
  3301  	}
  3302  	// If the iterator completed, deliver directly whatever's available
  3303  	if it.done {
  3304  		select {
  3305  		case log := <-it.logs:
  3306  			it.Event = new(CETHTransfer)
  3307  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3308  				it.fail = err
  3309  				return false
  3310  			}
  3311  			it.Event.Raw = log
  3312  			return true
  3313  
  3314  		default:
  3315  			return false
  3316  		}
  3317  	}
  3318  	// Iterator still in progress, wait for either a data or an error event
  3319  	select {
  3320  	case log := <-it.logs:
  3321  		it.Event = new(CETHTransfer)
  3322  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3323  			it.fail = err
  3324  			return false
  3325  		}
  3326  		it.Event.Raw = log
  3327  		return true
  3328  
  3329  	case err := <-it.sub.Err():
  3330  		it.done = true
  3331  		it.fail = err
  3332  		return it.Next()
  3333  	}
  3334  }
  3335  
  3336  // Error returns any retrieval or parsing error occurred during filtering.
  3337  func (it *CETHTransferIterator) Error() error {
  3338  	return it.fail
  3339  }
  3340  
  3341  // Close terminates the iteration process, releasing any pending underlying
  3342  // resources.
  3343  func (it *CETHTransferIterator) Close() error {
  3344  	it.sub.Unsubscribe()
  3345  	return nil
  3346  }
  3347  
  3348  // CETHTransfer represents a Transfer event raised by the CETH contract.
  3349  type CETHTransfer struct {
  3350  	From   common.Address
  3351  	To     common.Address
  3352  	Amount *big.Int
  3353  	Raw    types.Log // Blockchain specific contextual infos
  3354  }
  3355  
  3356  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3357  //
  3358  // Solidity: event Transfer(address indexed from, address indexed to, uint256 amount)
  3359  func (_CETH *CETHFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*CETHTransferIterator, error) {
  3360  
  3361  	var fromRule []interface{}
  3362  	for _, fromItem := range from {
  3363  		fromRule = append(fromRule, fromItem)
  3364  	}
  3365  	var toRule []interface{}
  3366  	for _, toItem := range to {
  3367  		toRule = append(toRule, toItem)
  3368  	}
  3369  
  3370  	logs, sub, err := _CETH.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  3371  	if err != nil {
  3372  		return nil, err
  3373  	}
  3374  	return &CETHTransferIterator{contract: _CETH.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3375  }
  3376  
  3377  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3378  //
  3379  // Solidity: event Transfer(address indexed from, address indexed to, uint256 amount)
  3380  func (_CETH *CETHFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *CETHTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  3381  
  3382  	var fromRule []interface{}
  3383  	for _, fromItem := range from {
  3384  		fromRule = append(fromRule, fromItem)
  3385  	}
  3386  	var toRule []interface{}
  3387  	for _, toItem := range to {
  3388  		toRule = append(toRule, toItem)
  3389  	}
  3390  
  3391  	logs, sub, err := _CETH.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  3392  	if err != nil {
  3393  		return nil, err
  3394  	}
  3395  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3396  		defer sub.Unsubscribe()
  3397  		for {
  3398  			select {
  3399  			case log := <-logs:
  3400  				// New log arrived, parse the event and forward to the user
  3401  				event := new(CETHTransfer)
  3402  				if err := _CETH.contract.UnpackLog(event, "Transfer", log); err != nil {
  3403  					return err
  3404  				}
  3405  				event.Raw = log
  3406  
  3407  				select {
  3408  				case sink <- event:
  3409  				case err := <-sub.Err():
  3410  					return err
  3411  				case <-quit:
  3412  					return nil
  3413  				}
  3414  			case err := <-sub.Err():
  3415  				return err
  3416  			case <-quit:
  3417  				return nil
  3418  			}
  3419  		}
  3420  	}), nil
  3421  }
  3422  
  3423  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3424  //
  3425  // Solidity: event Transfer(address indexed from, address indexed to, uint256 amount)
  3426  func (_CETH *CETHFilterer) ParseTransfer(log types.Log) (*CETHTransfer, error) {
  3427  	event := new(CETHTransfer)
  3428  	if err := _CETH.contract.UnpackLog(event, "Transfer", log); err != nil {
  3429  		return nil, err
  3430  	}
  3431  	return event, nil
  3432  }