From ceebac8652a6402bb2d53c5d306ad5c1cd892b35 Mon Sep 17 00:00:00 2001 From: perror <23651751+perrornet@users.noreply.github.com> Date: Thu, 10 Oct 2024 09:33:10 +0800 Subject: [PATCH] Add AAVE available borrowing balance query. --- internal/daemons/bot/bot.go | 19 +- internal/daemons/market/market.go | 3 + utils/bot/bot.go | 7 +- utils/bot/helix_liquidity/aave_debt.go | 24 +- utils/bot/helix_liquidity/debt.go | 9 +- utils/bot/helix_liquidity/helix_liquidity.go | 9 +- .../lendingpool/lendingpool.go | 4578 +++++++++++++++++ utils/provider/bridge/li/li.go | 4 +- 8 files changed, 4634 insertions(+), 19 deletions(-) create mode 100644 utils/bot/helix_liquidity/lendingpool/lendingpool.go diff --git a/internal/daemons/bot/bot.go b/internal/daemons/bot/bot.go index 4001027..bc1276f 100644 --- a/internal/daemons/bot/bot.go +++ b/internal/daemons/bot/bot.go @@ -4,6 +4,8 @@ import ( "context" "fmt" "omni-balance/internal/daemons/market" + "omni-balance/internal/db" + "omni-balance/internal/models" "omni-balance/utils/bot" "omni-balance/utils/chains" "omni-balance/utils/configs" @@ -14,6 +16,7 @@ import ( "github.com/ethereum/go-ethereum/ethclient/simulated" "github.com/jinzhu/copier" "github.com/pkg/errors" + "github.com/shopspring/decimal" ) func Run(ctx context.Context, conf configs.Config) error { @@ -95,12 +98,22 @@ func process(ctx context.Context, conf configs.Config, walletAddress, tokenName, panic(fmt.Sprintf("%s botType not found", botType)) } return func() ([]bot.Task, bot.ProcessType, error) { + // get token price + tokenPrices, err := models.FindTokenPrice(db.DB(), []string{tokenName}) + if err != nil { + return nil, bot.Parallel, err + } + if len(tokenPrices) == 0 { + tokenPrices = make(map[string]decimal.Decimal) + } + tasks, processType, err := m.Check(ctx, bot.Params{ Conf: conf, Info: bot.Config{ - Wallet: conf.GetWallet(walletAddress), - TokenName: tokenName, - Chain: chainName, + Wallet: conf.GetWallet(walletAddress), + TokenName: tokenName, + Chain: chainName, + TokenPrice: tokenPrices[tokenName], }, Client: client, }) diff --git a/internal/daemons/market/market.go b/internal/daemons/market/market.go index 5768cf9..6c78487 100644 --- a/internal/daemons/market/market.go +++ b/internal/daemons/market/market.go @@ -160,6 +160,9 @@ func do(ctx context.Context, order models.Order, conf configs.Config) { } removeOrderError(order.ID) order = models.GetOrder(ctx, db.DB(), order.ID) + if order.SourceChainName == "" || order.Tx == "" { + return + } err = notice.Send( provider.WithNotify(ctx, provider.WithNotifyParams{ TaskId: order.TaskId, diff --git a/utils/bot/bot.go b/utils/bot/bot.go index 690b083..653eebe 100644 --- a/utils/bot/bot.go +++ b/utils/bot/bot.go @@ -34,9 +34,10 @@ type Bot interface { } type Config struct { - Wallet wallets.Wallets - TokenName string `json:"token_name"` - Chain string `json:"chains"` + Wallet wallets.Wallets + TokenName string `json:"token_name"` + TokenPrice decimal.Decimal `json:"token_price"` + Chain string `json:"chains"` } type Task struct { diff --git a/utils/bot/helix_liquidity/aave_debt.go b/utils/bot/helix_liquidity/aave_debt.go index f70a425..e64fab8 100644 --- a/utils/bot/helix_liquidity/aave_debt.go +++ b/utils/bot/helix_liquidity/aave_debt.go @@ -2,6 +2,7 @@ package helix_liquidity import ( "context" + "omni-balance/utils/bot/helix_liquidity/lendingpool" "omni-balance/utils/chains" "omni-balance/utils/constant" @@ -350,7 +351,8 @@ var ( }, }, constant.ArbitrumSepolia: { - Chain: constant.ArbitrumSepolia, + Chain: constant.ArbitrumSepolia, + L2Pool: common.HexToAddress("0xBfC91D59fdAA134A4ED45f7B584cAf96D7792Eff"), DebtTokens: map[string]debtTokens{ "USDC": { Name: "USDC", @@ -386,7 +388,7 @@ type Aave struct { func (a Aave) BalanceOf(ctx context.Context, args DebtParams) (decimal.Decimal, error) { conf, ok := aaveAddressBook[args.Chain] if !ok || conf.Chain == "" || conf.DebtTokens[args.Token].Name == "" { - log.Warnf("chain %s not support", args.Chain) + log.Warnf("chain %s token %s not support", args.Chain, args.Token) return decimal.Zero, nil } atokenBalance, err := chains.GetTokenBalance(ctx, args.Client, conf.DebtTokens[args.Token].AToken.Hex(), @@ -400,7 +402,23 @@ func (a Aave) BalanceOf(ctx context.Context, args DebtParams) (decimal.Decimal, if err != nil { return decimal.Zero, errors.Wrap(err, "get vtoken balance error") } - return atokenBalance.Sub(vtokenBalance), nil + if args.TokenPrice.InexactFloat64() <= 0 { + return atokenBalance.Sub(vtokenBalance), nil + } + pool, err := lendingpool.NewLendingpoolCaller(conf.L2Pool, args.Client) + if err != nil { + return decimal.Zero, errors.Wrap(err, "new lendingpool caller error") + } + user, err := pool.GetUserAccountData(nil, args.Address) + if err != nil { + return decimal.Zero, errors.Wrap(err, "get user account data error") + } + if user.AvailableBorrowsBase.Int64() <= 0 { + return atokenBalance.Sub(vtokenBalance), nil + } + AvailableBorrowsBalance := chains.WeiToEth(user.AvailableBorrowsBase, 8) + return AvailableBorrowsBalance.Div(args.TokenPrice), nil + } func (a Aave) Name() string { diff --git a/utils/bot/helix_liquidity/debt.go b/utils/bot/helix_liquidity/debt.go index a8df36f..de4c9b2 100644 --- a/utils/bot/helix_liquidity/debt.go +++ b/utils/bot/helix_liquidity/debt.go @@ -14,10 +14,11 @@ type Debt interface { } type DebtParams struct { - Address common.Address - Token string - Client simulated.Client - Chain string + Address common.Address + Token string + TokenPrice decimal.Decimal + Client simulated.Client + Chain string } var ( diff --git a/utils/bot/helix_liquidity/helix_liquidity.go b/utils/bot/helix_liquidity/helix_liquidity.go index 071da44..ea4190c 100644 --- a/utils/bot/helix_liquidity/helix_liquidity.go +++ b/utils/bot/helix_liquidity/helix_liquidity.go @@ -43,10 +43,11 @@ func (b HelixLiquidity) Balance(ctx context.Context, args bot.Params) (decimal.D } for _, v := range debtImpl { balance, err := v.BalanceOf(ctx, DebtParams{ - Address: args.Info.Wallet.GetAddress(), - Chain: args.Info.Chain, - Client: args.Client, - Token: token.Name, + Address: args.Info.Wallet.GetAddress(), + Chain: args.Info.Chain, + Client: args.Client, + Token: token.Name, + TokenPrice: args.Info.TokenPrice, }) if err != nil { return decimal.Zero, errors.Wrapf(err, "get %s balance of %s error", token.Name, v.Name()) diff --git a/utils/bot/helix_liquidity/lendingpool/lendingpool.go b/utils/bot/helix_liquidity/lendingpool/lendingpool.go new file mode 100644 index 0000000..1f8ab2e --- /dev/null +++ b/utils/bot/helix_liquidity/lendingpool/lendingpool.go @@ -0,0 +1,4578 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package lendingpool + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// DataTypesEModeCategory is an auto generated low-level Go binding around an user-defined struct. +type DataTypesEModeCategory struct { + Ltv uint16 + LiquidationThreshold uint16 + LiquidationBonus uint16 + PriceSource common.Address + Label string +} + +// DataTypesReserveConfigurationMap is an auto generated low-level Go binding around an user-defined struct. +type DataTypesReserveConfigurationMap struct { + Data *big.Int +} + +// DataTypesReserveData is an auto generated low-level Go binding around an user-defined struct. +type DataTypesReserveData struct { + Configuration DataTypesReserveConfigurationMap + LiquidityIndex *big.Int + CurrentLiquidityRate *big.Int + VariableBorrowIndex *big.Int + CurrentVariableBorrowRate *big.Int + CurrentStableBorrowRate *big.Int + LastUpdateTimestamp *big.Int + Id uint16 + LiquidationGracePeriodUntil *big.Int + ATokenAddress common.Address + StableDebtTokenAddress common.Address + VariableDebtTokenAddress common.Address + InterestRateStrategyAddress common.Address + AccruedToTreasury *big.Int + Unbacked *big.Int + IsolationModeTotalDebt *big.Int + VirtualUnderlyingBalance *big.Int +} + +// DataTypesReserveDataLegacy is an auto generated low-level Go binding around an user-defined struct. +type DataTypesReserveDataLegacy struct { + Configuration DataTypesReserveConfigurationMap + LiquidityIndex *big.Int + CurrentLiquidityRate *big.Int + VariableBorrowIndex *big.Int + CurrentVariableBorrowRate *big.Int + CurrentStableBorrowRate *big.Int + LastUpdateTimestamp *big.Int + Id uint16 + ATokenAddress common.Address + StableDebtTokenAddress common.Address + VariableDebtTokenAddress common.Address + InterestRateStrategyAddress common.Address + AccruedToTreasury *big.Int + Unbacked *big.Int + IsolationModeTotalDebt *big.Int +} + +// DataTypesUserConfigurationMap is an auto generated low-level Go binding around an user-defined struct. +type DataTypesUserConfigurationMap struct { + Data *big.Int +} + +// LendingpoolMetaData contains all meta data concerning the Lendingpool contract. +var LendingpoolMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"contractIPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"backer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"BackUnbacked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enumDataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enumDataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"MintUnbacked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"RebalanceStableBorrowRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enumDataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"}],\"name\":\"SwapBorrowRateMode\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contractIPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BRIDGE_PROTOCOL_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_STABLE_RATE_BORROW_SIZE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"backUnbacked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"structDataTypes.EModeCategory\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBridgeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"structDataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"structDataTypes.EModeCategory\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"structDataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"structDataTypes.ReserveDataLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDataExtended\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"structDataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"uint40\",\"name\":\"liquidationGracePeriodUntil\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"virtualUnderlyingBalance\",\"type\":\"uint128\"}],\"internalType\":\"structDataTypes.ReserveData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"structDataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"mintUnbacked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"rebalanceStableBorrowRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"rebalanceStableBorrowRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"structDataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rateStrategyAddress\",\"type\":\"address\"}],\"name\":\"setReserveInterestRateStrategyAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"swapBorrowRateMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"swapBorrowRateMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"swapToVariable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"updateBridgeProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremiumTotal\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"flashLoanPremiumToProtocol\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremiums\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// LendingpoolABI is the input ABI used to generate the binding from. +// Deprecated: Use LendingpoolMetaData.ABI instead. +var LendingpoolABI = LendingpoolMetaData.ABI + +// Lendingpool is an auto generated Go binding around an Ethereum contract. +type Lendingpool struct { + LendingpoolCaller // Read-only binding to the contract + LendingpoolTransactor // Write-only binding to the contract + LendingpoolFilterer // Log filterer for contract events +} + +// LendingpoolCaller is an auto generated read-only Go binding around an Ethereum contract. +type LendingpoolCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LendingpoolTransactor is an auto generated write-only Go binding around an Ethereum contract. +type LendingpoolTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LendingpoolFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type LendingpoolFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LendingpoolSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type LendingpoolSession struct { + Contract *Lendingpool // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LendingpoolCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type LendingpoolCallerSession struct { + Contract *LendingpoolCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// LendingpoolTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type LendingpoolTransactorSession struct { + Contract *LendingpoolTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LendingpoolRaw is an auto generated low-level Go binding around an Ethereum contract. +type LendingpoolRaw struct { + Contract *Lendingpool // Generic contract binding to access the raw methods on +} + +// LendingpoolCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type LendingpoolCallerRaw struct { + Contract *LendingpoolCaller // Generic read-only contract binding to access the raw methods on +} + +// LendingpoolTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type LendingpoolTransactorRaw struct { + Contract *LendingpoolTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewLendingpool creates a new instance of Lendingpool, bound to a specific deployed contract. +func NewLendingpool(address common.Address, backend bind.ContractBackend) (*Lendingpool, error) { + contract, err := bindLendingpool(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Lendingpool{LendingpoolCaller: LendingpoolCaller{contract: contract}, LendingpoolTransactor: LendingpoolTransactor{contract: contract}, LendingpoolFilterer: LendingpoolFilterer{contract: contract}}, nil +} + +// NewLendingpoolCaller creates a new read-only instance of Lendingpool, bound to a specific deployed contract. +func NewLendingpoolCaller(address common.Address, caller bind.ContractCaller) (*LendingpoolCaller, error) { + contract, err := bindLendingpool(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &LendingpoolCaller{contract: contract}, nil +} + +// NewLendingpoolTransactor creates a new write-only instance of Lendingpool, bound to a specific deployed contract. +func NewLendingpoolTransactor(address common.Address, transactor bind.ContractTransactor) (*LendingpoolTransactor, error) { + contract, err := bindLendingpool(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &LendingpoolTransactor{contract: contract}, nil +} + +// NewLendingpoolFilterer creates a new log filterer instance of Lendingpool, bound to a specific deployed contract. +func NewLendingpoolFilterer(address common.Address, filterer bind.ContractFilterer) (*LendingpoolFilterer, error) { + contract, err := bindLendingpool(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &LendingpoolFilterer{contract: contract}, nil +} + +// bindLendingpool binds a generic wrapper to an already deployed contract. +func bindLendingpool(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := LendingpoolMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Lendingpool *LendingpoolRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Lendingpool.Contract.LendingpoolCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Lendingpool *LendingpoolRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Lendingpool.Contract.LendingpoolTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Lendingpool *LendingpoolRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Lendingpool.Contract.LendingpoolTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Lendingpool *LendingpoolCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Lendingpool.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Lendingpool *LendingpoolTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Lendingpool.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Lendingpool *LendingpoolTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Lendingpool.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSESPROVIDER is a free data retrieval call binding the contract method 0x0542975c. +// +// Solidity: function ADDRESSES_PROVIDER() view returns(address) +func (_Lendingpool *LendingpoolCaller) ADDRESSESPROVIDER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "ADDRESSES_PROVIDER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ADDRESSESPROVIDER is a free data retrieval call binding the contract method 0x0542975c. +// +// Solidity: function ADDRESSES_PROVIDER() view returns(address) +func (_Lendingpool *LendingpoolSession) ADDRESSESPROVIDER() (common.Address, error) { + return _Lendingpool.Contract.ADDRESSESPROVIDER(&_Lendingpool.CallOpts) +} + +// ADDRESSESPROVIDER is a free data retrieval call binding the contract method 0x0542975c. +// +// Solidity: function ADDRESSES_PROVIDER() view returns(address) +func (_Lendingpool *LendingpoolCallerSession) ADDRESSESPROVIDER() (common.Address, error) { + return _Lendingpool.Contract.ADDRESSESPROVIDER(&_Lendingpool.CallOpts) +} + +// BRIDGEPROTOCOLFEE is a free data retrieval call binding the contract method 0x272d9072. +// +// Solidity: function BRIDGE_PROTOCOL_FEE() view returns(uint256) +func (_Lendingpool *LendingpoolCaller) BRIDGEPROTOCOLFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "BRIDGE_PROTOCOL_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BRIDGEPROTOCOLFEE is a free data retrieval call binding the contract method 0x272d9072. +// +// Solidity: function BRIDGE_PROTOCOL_FEE() view returns(uint256) +func (_Lendingpool *LendingpoolSession) BRIDGEPROTOCOLFEE() (*big.Int, error) { + return _Lendingpool.Contract.BRIDGEPROTOCOLFEE(&_Lendingpool.CallOpts) +} + +// BRIDGEPROTOCOLFEE is a free data retrieval call binding the contract method 0x272d9072. +// +// Solidity: function BRIDGE_PROTOCOL_FEE() view returns(uint256) +func (_Lendingpool *LendingpoolCallerSession) BRIDGEPROTOCOLFEE() (*big.Int, error) { + return _Lendingpool.Contract.BRIDGEPROTOCOLFEE(&_Lendingpool.CallOpts) +} + +// FLASHLOANPREMIUMTOTAL is a free data retrieval call binding the contract method 0x074b2e43. +// +// Solidity: function FLASHLOAN_PREMIUM_TOTAL() view returns(uint128) +func (_Lendingpool *LendingpoolCaller) FLASHLOANPREMIUMTOTAL(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "FLASHLOAN_PREMIUM_TOTAL") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FLASHLOANPREMIUMTOTAL is a free data retrieval call binding the contract method 0x074b2e43. +// +// Solidity: function FLASHLOAN_PREMIUM_TOTAL() view returns(uint128) +func (_Lendingpool *LendingpoolSession) FLASHLOANPREMIUMTOTAL() (*big.Int, error) { + return _Lendingpool.Contract.FLASHLOANPREMIUMTOTAL(&_Lendingpool.CallOpts) +} + +// FLASHLOANPREMIUMTOTAL is a free data retrieval call binding the contract method 0x074b2e43. +// +// Solidity: function FLASHLOAN_PREMIUM_TOTAL() view returns(uint128) +func (_Lendingpool *LendingpoolCallerSession) FLASHLOANPREMIUMTOTAL() (*big.Int, error) { + return _Lendingpool.Contract.FLASHLOANPREMIUMTOTAL(&_Lendingpool.CallOpts) +} + +// FLASHLOANPREMIUMTOPROTOCOL is a free data retrieval call binding the contract method 0x6a99c036. +// +// Solidity: function FLASHLOAN_PREMIUM_TO_PROTOCOL() view returns(uint128) +func (_Lendingpool *LendingpoolCaller) FLASHLOANPREMIUMTOPROTOCOL(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "FLASHLOAN_PREMIUM_TO_PROTOCOL") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FLASHLOANPREMIUMTOPROTOCOL is a free data retrieval call binding the contract method 0x6a99c036. +// +// Solidity: function FLASHLOAN_PREMIUM_TO_PROTOCOL() view returns(uint128) +func (_Lendingpool *LendingpoolSession) FLASHLOANPREMIUMTOPROTOCOL() (*big.Int, error) { + return _Lendingpool.Contract.FLASHLOANPREMIUMTOPROTOCOL(&_Lendingpool.CallOpts) +} + +// FLASHLOANPREMIUMTOPROTOCOL is a free data retrieval call binding the contract method 0x6a99c036. +// +// Solidity: function FLASHLOAN_PREMIUM_TO_PROTOCOL() view returns(uint128) +func (_Lendingpool *LendingpoolCallerSession) FLASHLOANPREMIUMTOPROTOCOL() (*big.Int, error) { + return _Lendingpool.Contract.FLASHLOANPREMIUMTOPROTOCOL(&_Lendingpool.CallOpts) +} + +// MAXNUMBERRESERVES is a free data retrieval call binding the contract method 0xf8119d51. +// +// Solidity: function MAX_NUMBER_RESERVES() view returns(uint16) +func (_Lendingpool *LendingpoolCaller) MAXNUMBERRESERVES(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "MAX_NUMBER_RESERVES") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// MAXNUMBERRESERVES is a free data retrieval call binding the contract method 0xf8119d51. +// +// Solidity: function MAX_NUMBER_RESERVES() view returns(uint16) +func (_Lendingpool *LendingpoolSession) MAXNUMBERRESERVES() (uint16, error) { + return _Lendingpool.Contract.MAXNUMBERRESERVES(&_Lendingpool.CallOpts) +} + +// MAXNUMBERRESERVES is a free data retrieval call binding the contract method 0xf8119d51. +// +// Solidity: function MAX_NUMBER_RESERVES() view returns(uint16) +func (_Lendingpool *LendingpoolCallerSession) MAXNUMBERRESERVES() (uint16, error) { + return _Lendingpool.Contract.MAXNUMBERRESERVES(&_Lendingpool.CallOpts) +} + +// MAXSTABLERATEBORROWSIZEPERCENT is a free data retrieval call binding the contract method 0xe82fec2f. +// +// Solidity: function MAX_STABLE_RATE_BORROW_SIZE_PERCENT() view returns(uint256) +func (_Lendingpool *LendingpoolCaller) MAXSTABLERATEBORROWSIZEPERCENT(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "MAX_STABLE_RATE_BORROW_SIZE_PERCENT") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXSTABLERATEBORROWSIZEPERCENT is a free data retrieval call binding the contract method 0xe82fec2f. +// +// Solidity: function MAX_STABLE_RATE_BORROW_SIZE_PERCENT() view returns(uint256) +func (_Lendingpool *LendingpoolSession) MAXSTABLERATEBORROWSIZEPERCENT() (*big.Int, error) { + return _Lendingpool.Contract.MAXSTABLERATEBORROWSIZEPERCENT(&_Lendingpool.CallOpts) +} + +// MAXSTABLERATEBORROWSIZEPERCENT is a free data retrieval call binding the contract method 0xe82fec2f. +// +// Solidity: function MAX_STABLE_RATE_BORROW_SIZE_PERCENT() view returns(uint256) +func (_Lendingpool *LendingpoolCallerSession) MAXSTABLERATEBORROWSIZEPERCENT() (*big.Int, error) { + return _Lendingpool.Contract.MAXSTABLERATEBORROWSIZEPERCENT(&_Lendingpool.CallOpts) +} + +// POOLREVISION is a free data retrieval call binding the contract method 0x0148170e. +// +// Solidity: function POOL_REVISION() view returns(uint256) +func (_Lendingpool *LendingpoolCaller) POOLREVISION(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "POOL_REVISION") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// POOLREVISION is a free data retrieval call binding the contract method 0x0148170e. +// +// Solidity: function POOL_REVISION() view returns(uint256) +func (_Lendingpool *LendingpoolSession) POOLREVISION() (*big.Int, error) { + return _Lendingpool.Contract.POOLREVISION(&_Lendingpool.CallOpts) +} + +// POOLREVISION is a free data retrieval call binding the contract method 0x0148170e. +// +// Solidity: function POOL_REVISION() view returns(uint256) +func (_Lendingpool *LendingpoolCallerSession) POOLREVISION() (*big.Int, error) { + return _Lendingpool.Contract.POOLREVISION(&_Lendingpool.CallOpts) +} + +// GetBorrowLogic is a free data retrieval call binding the contract method 0x2be29fa7. +// +// Solidity: function getBorrowLogic() pure returns(address) +func (_Lendingpool *LendingpoolCaller) GetBorrowLogic(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getBorrowLogic") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetBorrowLogic is a free data retrieval call binding the contract method 0x2be29fa7. +// +// Solidity: function getBorrowLogic() pure returns(address) +func (_Lendingpool *LendingpoolSession) GetBorrowLogic() (common.Address, error) { + return _Lendingpool.Contract.GetBorrowLogic(&_Lendingpool.CallOpts) +} + +// GetBorrowLogic is a free data retrieval call binding the contract method 0x2be29fa7. +// +// Solidity: function getBorrowLogic() pure returns(address) +func (_Lendingpool *LendingpoolCallerSession) GetBorrowLogic() (common.Address, error) { + return _Lendingpool.Contract.GetBorrowLogic(&_Lendingpool.CallOpts) +} + +// GetBridgeLogic is a free data retrieval call binding the contract method 0xdf374c36. +// +// Solidity: function getBridgeLogic() pure returns(address) +func (_Lendingpool *LendingpoolCaller) GetBridgeLogic(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getBridgeLogic") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetBridgeLogic is a free data retrieval call binding the contract method 0xdf374c36. +// +// Solidity: function getBridgeLogic() pure returns(address) +func (_Lendingpool *LendingpoolSession) GetBridgeLogic() (common.Address, error) { + return _Lendingpool.Contract.GetBridgeLogic(&_Lendingpool.CallOpts) +} + +// GetBridgeLogic is a free data retrieval call binding the contract method 0xdf374c36. +// +// Solidity: function getBridgeLogic() pure returns(address) +func (_Lendingpool *LendingpoolCallerSession) GetBridgeLogic() (common.Address, error) { + return _Lendingpool.Contract.GetBridgeLogic(&_Lendingpool.CallOpts) +} + +// GetConfiguration is a free data retrieval call binding the contract method 0xc44b11f7. +// +// Solidity: function getConfiguration(address asset) view returns((uint256)) +func (_Lendingpool *LendingpoolCaller) GetConfiguration(opts *bind.CallOpts, asset common.Address) (DataTypesReserveConfigurationMap, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getConfiguration", asset) + + if err != nil { + return *new(DataTypesReserveConfigurationMap), err + } + + out0 := *abi.ConvertType(out[0], new(DataTypesReserveConfigurationMap)).(*DataTypesReserveConfigurationMap) + + return out0, err + +} + +// GetConfiguration is a free data retrieval call binding the contract method 0xc44b11f7. +// +// Solidity: function getConfiguration(address asset) view returns((uint256)) +func (_Lendingpool *LendingpoolSession) GetConfiguration(asset common.Address) (DataTypesReserveConfigurationMap, error) { + return _Lendingpool.Contract.GetConfiguration(&_Lendingpool.CallOpts, asset) +} + +// GetConfiguration is a free data retrieval call binding the contract method 0xc44b11f7. +// +// Solidity: function getConfiguration(address asset) view returns((uint256)) +func (_Lendingpool *LendingpoolCallerSession) GetConfiguration(asset common.Address) (DataTypesReserveConfigurationMap, error) { + return _Lendingpool.Contract.GetConfiguration(&_Lendingpool.CallOpts, asset) +} + +// GetEModeCategoryData is a free data retrieval call binding the contract method 0x6c6f6ae1. +// +// Solidity: function getEModeCategoryData(uint8 id) view returns((uint16,uint16,uint16,address,string)) +func (_Lendingpool *LendingpoolCaller) GetEModeCategoryData(opts *bind.CallOpts, id uint8) (DataTypesEModeCategory, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getEModeCategoryData", id) + + if err != nil { + return *new(DataTypesEModeCategory), err + } + + out0 := *abi.ConvertType(out[0], new(DataTypesEModeCategory)).(*DataTypesEModeCategory) + + return out0, err + +} + +// GetEModeCategoryData is a free data retrieval call binding the contract method 0x6c6f6ae1. +// +// Solidity: function getEModeCategoryData(uint8 id) view returns((uint16,uint16,uint16,address,string)) +func (_Lendingpool *LendingpoolSession) GetEModeCategoryData(id uint8) (DataTypesEModeCategory, error) { + return _Lendingpool.Contract.GetEModeCategoryData(&_Lendingpool.CallOpts, id) +} + +// GetEModeCategoryData is a free data retrieval call binding the contract method 0x6c6f6ae1. +// +// Solidity: function getEModeCategoryData(uint8 id) view returns((uint16,uint16,uint16,address,string)) +func (_Lendingpool *LendingpoolCallerSession) GetEModeCategoryData(id uint8) (DataTypesEModeCategory, error) { + return _Lendingpool.Contract.GetEModeCategoryData(&_Lendingpool.CallOpts, id) +} + +// GetEModeLogic is a free data retrieval call binding the contract method 0xf32b9a73. +// +// Solidity: function getEModeLogic() pure returns(address) +func (_Lendingpool *LendingpoolCaller) GetEModeLogic(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getEModeLogic") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetEModeLogic is a free data retrieval call binding the contract method 0xf32b9a73. +// +// Solidity: function getEModeLogic() pure returns(address) +func (_Lendingpool *LendingpoolSession) GetEModeLogic() (common.Address, error) { + return _Lendingpool.Contract.GetEModeLogic(&_Lendingpool.CallOpts) +} + +// GetEModeLogic is a free data retrieval call binding the contract method 0xf32b9a73. +// +// Solidity: function getEModeLogic() pure returns(address) +func (_Lendingpool *LendingpoolCallerSession) GetEModeLogic() (common.Address, error) { + return _Lendingpool.Contract.GetEModeLogic(&_Lendingpool.CallOpts) +} + +// GetFlashLoanLogic is a free data retrieval call binding the contract method 0x348fde0f. +// +// Solidity: function getFlashLoanLogic() pure returns(address) +func (_Lendingpool *LendingpoolCaller) GetFlashLoanLogic(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getFlashLoanLogic") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetFlashLoanLogic is a free data retrieval call binding the contract method 0x348fde0f. +// +// Solidity: function getFlashLoanLogic() pure returns(address) +func (_Lendingpool *LendingpoolSession) GetFlashLoanLogic() (common.Address, error) { + return _Lendingpool.Contract.GetFlashLoanLogic(&_Lendingpool.CallOpts) +} + +// GetFlashLoanLogic is a free data retrieval call binding the contract method 0x348fde0f. +// +// Solidity: function getFlashLoanLogic() pure returns(address) +func (_Lendingpool *LendingpoolCallerSession) GetFlashLoanLogic() (common.Address, error) { + return _Lendingpool.Contract.GetFlashLoanLogic(&_Lendingpool.CallOpts) +} + +// GetLiquidationLogic is a free data retrieval call binding the contract method 0x911a3413. +// +// Solidity: function getLiquidationLogic() pure returns(address) +func (_Lendingpool *LendingpoolCaller) GetLiquidationLogic(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getLiquidationLogic") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetLiquidationLogic is a free data retrieval call binding the contract method 0x911a3413. +// +// Solidity: function getLiquidationLogic() pure returns(address) +func (_Lendingpool *LendingpoolSession) GetLiquidationLogic() (common.Address, error) { + return _Lendingpool.Contract.GetLiquidationLogic(&_Lendingpool.CallOpts) +} + +// GetLiquidationLogic is a free data retrieval call binding the contract method 0x911a3413. +// +// Solidity: function getLiquidationLogic() pure returns(address) +func (_Lendingpool *LendingpoolCallerSession) GetLiquidationLogic() (common.Address, error) { + return _Lendingpool.Contract.GetLiquidationLogic(&_Lendingpool.CallOpts) +} + +// GetPoolLogic is a free data retrieval call binding the contract method 0xd3350155. +// +// Solidity: function getPoolLogic() pure returns(address) +func (_Lendingpool *LendingpoolCaller) GetPoolLogic(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getPoolLogic") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetPoolLogic is a free data retrieval call binding the contract method 0xd3350155. +// +// Solidity: function getPoolLogic() pure returns(address) +func (_Lendingpool *LendingpoolSession) GetPoolLogic() (common.Address, error) { + return _Lendingpool.Contract.GetPoolLogic(&_Lendingpool.CallOpts) +} + +// GetPoolLogic is a free data retrieval call binding the contract method 0xd3350155. +// +// Solidity: function getPoolLogic() pure returns(address) +func (_Lendingpool *LendingpoolCallerSession) GetPoolLogic() (common.Address, error) { + return _Lendingpool.Contract.GetPoolLogic(&_Lendingpool.CallOpts) +} + +// GetReserveAddressById is a free data retrieval call binding the contract method 0x52751797. +// +// Solidity: function getReserveAddressById(uint16 id) view returns(address) +func (_Lendingpool *LendingpoolCaller) GetReserveAddressById(opts *bind.CallOpts, id uint16) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getReserveAddressById", id) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetReserveAddressById is a free data retrieval call binding the contract method 0x52751797. +// +// Solidity: function getReserveAddressById(uint16 id) view returns(address) +func (_Lendingpool *LendingpoolSession) GetReserveAddressById(id uint16) (common.Address, error) { + return _Lendingpool.Contract.GetReserveAddressById(&_Lendingpool.CallOpts, id) +} + +// GetReserveAddressById is a free data retrieval call binding the contract method 0x52751797. +// +// Solidity: function getReserveAddressById(uint16 id) view returns(address) +func (_Lendingpool *LendingpoolCallerSession) GetReserveAddressById(id uint16) (common.Address, error) { + return _Lendingpool.Contract.GetReserveAddressById(&_Lendingpool.CallOpts, id) +} + +// GetReserveData is a free data retrieval call binding the contract method 0x35ea6a75. +// +// Solidity: function getReserveData(address asset) view returns(((uint256),uint128,uint128,uint128,uint128,uint128,uint40,uint16,address,address,address,address,uint128,uint128,uint128)) +func (_Lendingpool *LendingpoolCaller) GetReserveData(opts *bind.CallOpts, asset common.Address) (DataTypesReserveDataLegacy, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getReserveData", asset) + + if err != nil { + return *new(DataTypesReserveDataLegacy), err + } + + out0 := *abi.ConvertType(out[0], new(DataTypesReserveDataLegacy)).(*DataTypesReserveDataLegacy) + + return out0, err + +} + +// GetReserveData is a free data retrieval call binding the contract method 0x35ea6a75. +// +// Solidity: function getReserveData(address asset) view returns(((uint256),uint128,uint128,uint128,uint128,uint128,uint40,uint16,address,address,address,address,uint128,uint128,uint128)) +func (_Lendingpool *LendingpoolSession) GetReserveData(asset common.Address) (DataTypesReserveDataLegacy, error) { + return _Lendingpool.Contract.GetReserveData(&_Lendingpool.CallOpts, asset) +} + +// GetReserveData is a free data retrieval call binding the contract method 0x35ea6a75. +// +// Solidity: function getReserveData(address asset) view returns(((uint256),uint128,uint128,uint128,uint128,uint128,uint40,uint16,address,address,address,address,uint128,uint128,uint128)) +func (_Lendingpool *LendingpoolCallerSession) GetReserveData(asset common.Address) (DataTypesReserveDataLegacy, error) { + return _Lendingpool.Contract.GetReserveData(&_Lendingpool.CallOpts, asset) +} + +// GetReserveDataExtended is a free data retrieval call binding the contract method 0x8381995f. +// +// Solidity: function getReserveDataExtended(address asset) view returns(((uint256),uint128,uint128,uint128,uint128,uint128,uint40,uint16,uint40,address,address,address,address,uint128,uint128,uint128,uint128)) +func (_Lendingpool *LendingpoolCaller) GetReserveDataExtended(opts *bind.CallOpts, asset common.Address) (DataTypesReserveData, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getReserveDataExtended", asset) + + if err != nil { + return *new(DataTypesReserveData), err + } + + out0 := *abi.ConvertType(out[0], new(DataTypesReserveData)).(*DataTypesReserveData) + + return out0, err + +} + +// GetReserveDataExtended is a free data retrieval call binding the contract method 0x8381995f. +// +// Solidity: function getReserveDataExtended(address asset) view returns(((uint256),uint128,uint128,uint128,uint128,uint128,uint40,uint16,uint40,address,address,address,address,uint128,uint128,uint128,uint128)) +func (_Lendingpool *LendingpoolSession) GetReserveDataExtended(asset common.Address) (DataTypesReserveData, error) { + return _Lendingpool.Contract.GetReserveDataExtended(&_Lendingpool.CallOpts, asset) +} + +// GetReserveDataExtended is a free data retrieval call binding the contract method 0x8381995f. +// +// Solidity: function getReserveDataExtended(address asset) view returns(((uint256),uint128,uint128,uint128,uint128,uint128,uint40,uint16,uint40,address,address,address,address,uint128,uint128,uint128,uint128)) +func (_Lendingpool *LendingpoolCallerSession) GetReserveDataExtended(asset common.Address) (DataTypesReserveData, error) { + return _Lendingpool.Contract.GetReserveDataExtended(&_Lendingpool.CallOpts, asset) +} + +// GetReserveNormalizedIncome is a free data retrieval call binding the contract method 0xd15e0053. +// +// Solidity: function getReserveNormalizedIncome(address asset) view returns(uint256) +func (_Lendingpool *LendingpoolCaller) GetReserveNormalizedIncome(opts *bind.CallOpts, asset common.Address) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getReserveNormalizedIncome", asset) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetReserveNormalizedIncome is a free data retrieval call binding the contract method 0xd15e0053. +// +// Solidity: function getReserveNormalizedIncome(address asset) view returns(uint256) +func (_Lendingpool *LendingpoolSession) GetReserveNormalizedIncome(asset common.Address) (*big.Int, error) { + return _Lendingpool.Contract.GetReserveNormalizedIncome(&_Lendingpool.CallOpts, asset) +} + +// GetReserveNormalizedIncome is a free data retrieval call binding the contract method 0xd15e0053. +// +// Solidity: function getReserveNormalizedIncome(address asset) view returns(uint256) +func (_Lendingpool *LendingpoolCallerSession) GetReserveNormalizedIncome(asset common.Address) (*big.Int, error) { + return _Lendingpool.Contract.GetReserveNormalizedIncome(&_Lendingpool.CallOpts, asset) +} + +// GetReserveNormalizedVariableDebt is a free data retrieval call binding the contract method 0x386497fd. +// +// Solidity: function getReserveNormalizedVariableDebt(address asset) view returns(uint256) +func (_Lendingpool *LendingpoolCaller) GetReserveNormalizedVariableDebt(opts *bind.CallOpts, asset common.Address) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getReserveNormalizedVariableDebt", asset) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetReserveNormalizedVariableDebt is a free data retrieval call binding the contract method 0x386497fd. +// +// Solidity: function getReserveNormalizedVariableDebt(address asset) view returns(uint256) +func (_Lendingpool *LendingpoolSession) GetReserveNormalizedVariableDebt(asset common.Address) (*big.Int, error) { + return _Lendingpool.Contract.GetReserveNormalizedVariableDebt(&_Lendingpool.CallOpts, asset) +} + +// GetReserveNormalizedVariableDebt is a free data retrieval call binding the contract method 0x386497fd. +// +// Solidity: function getReserveNormalizedVariableDebt(address asset) view returns(uint256) +func (_Lendingpool *LendingpoolCallerSession) GetReserveNormalizedVariableDebt(asset common.Address) (*big.Int, error) { + return _Lendingpool.Contract.GetReserveNormalizedVariableDebt(&_Lendingpool.CallOpts, asset) +} + +// GetReservesCount is a free data retrieval call binding the contract method 0x72218d04. +// +// Solidity: function getReservesCount() view returns(uint256) +func (_Lendingpool *LendingpoolCaller) GetReservesCount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getReservesCount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetReservesCount is a free data retrieval call binding the contract method 0x72218d04. +// +// Solidity: function getReservesCount() view returns(uint256) +func (_Lendingpool *LendingpoolSession) GetReservesCount() (*big.Int, error) { + return _Lendingpool.Contract.GetReservesCount(&_Lendingpool.CallOpts) +} + +// GetReservesCount is a free data retrieval call binding the contract method 0x72218d04. +// +// Solidity: function getReservesCount() view returns(uint256) +func (_Lendingpool *LendingpoolCallerSession) GetReservesCount() (*big.Int, error) { + return _Lendingpool.Contract.GetReservesCount(&_Lendingpool.CallOpts) +} + +// GetReservesList is a free data retrieval call binding the contract method 0xd1946dbc. +// +// Solidity: function getReservesList() view returns(address[]) +func (_Lendingpool *LendingpoolCaller) GetReservesList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getReservesList") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetReservesList is a free data retrieval call binding the contract method 0xd1946dbc. +// +// Solidity: function getReservesList() view returns(address[]) +func (_Lendingpool *LendingpoolSession) GetReservesList() ([]common.Address, error) { + return _Lendingpool.Contract.GetReservesList(&_Lendingpool.CallOpts) +} + +// GetReservesList is a free data retrieval call binding the contract method 0xd1946dbc. +// +// Solidity: function getReservesList() view returns(address[]) +func (_Lendingpool *LendingpoolCallerSession) GetReservesList() ([]common.Address, error) { + return _Lendingpool.Contract.GetReservesList(&_Lendingpool.CallOpts) +} + +// GetSupplyLogic is a free data retrieval call binding the contract method 0x870e7744. +// +// Solidity: function getSupplyLogic() pure returns(address) +func (_Lendingpool *LendingpoolCaller) GetSupplyLogic(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getSupplyLogic") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetSupplyLogic is a free data retrieval call binding the contract method 0x870e7744. +// +// Solidity: function getSupplyLogic() pure returns(address) +func (_Lendingpool *LendingpoolSession) GetSupplyLogic() (common.Address, error) { + return _Lendingpool.Contract.GetSupplyLogic(&_Lendingpool.CallOpts) +} + +// GetSupplyLogic is a free data retrieval call binding the contract method 0x870e7744. +// +// Solidity: function getSupplyLogic() pure returns(address) +func (_Lendingpool *LendingpoolCallerSession) GetSupplyLogic() (common.Address, error) { + return _Lendingpool.Contract.GetSupplyLogic(&_Lendingpool.CallOpts) +} + +// GetUserAccountData is a free data retrieval call binding the contract method 0xbf92857c. +// +// Solidity: function getUserAccountData(address user) view returns(uint256 totalCollateralBase, uint256 totalDebtBase, uint256 availableBorrowsBase, uint256 currentLiquidationThreshold, uint256 ltv, uint256 healthFactor) +func (_Lendingpool *LendingpoolCaller) GetUserAccountData(opts *bind.CallOpts, user common.Address) (struct { + TotalCollateralBase *big.Int + TotalDebtBase *big.Int + AvailableBorrowsBase *big.Int + CurrentLiquidationThreshold *big.Int + Ltv *big.Int + HealthFactor *big.Int +}, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getUserAccountData", user) + + outstruct := new(struct { + TotalCollateralBase *big.Int + TotalDebtBase *big.Int + AvailableBorrowsBase *big.Int + CurrentLiquidationThreshold *big.Int + Ltv *big.Int + HealthFactor *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.TotalCollateralBase = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.TotalDebtBase = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.AvailableBorrowsBase = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.CurrentLiquidationThreshold = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.Ltv = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.HealthFactor = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// GetUserAccountData is a free data retrieval call binding the contract method 0xbf92857c. +// +// Solidity: function getUserAccountData(address user) view returns(uint256 totalCollateralBase, uint256 totalDebtBase, uint256 availableBorrowsBase, uint256 currentLiquidationThreshold, uint256 ltv, uint256 healthFactor) +func (_Lendingpool *LendingpoolSession) GetUserAccountData(user common.Address) (struct { + TotalCollateralBase *big.Int + TotalDebtBase *big.Int + AvailableBorrowsBase *big.Int + CurrentLiquidationThreshold *big.Int + Ltv *big.Int + HealthFactor *big.Int +}, error) { + return _Lendingpool.Contract.GetUserAccountData(&_Lendingpool.CallOpts, user) +} + +// GetUserAccountData is a free data retrieval call binding the contract method 0xbf92857c. +// +// Solidity: function getUserAccountData(address user) view returns(uint256 totalCollateralBase, uint256 totalDebtBase, uint256 availableBorrowsBase, uint256 currentLiquidationThreshold, uint256 ltv, uint256 healthFactor) +func (_Lendingpool *LendingpoolCallerSession) GetUserAccountData(user common.Address) (struct { + TotalCollateralBase *big.Int + TotalDebtBase *big.Int + AvailableBorrowsBase *big.Int + CurrentLiquidationThreshold *big.Int + Ltv *big.Int + HealthFactor *big.Int +}, error) { + return _Lendingpool.Contract.GetUserAccountData(&_Lendingpool.CallOpts, user) +} + +// GetUserConfiguration is a free data retrieval call binding the contract method 0x4417a583. +// +// Solidity: function getUserConfiguration(address user) view returns((uint256)) +func (_Lendingpool *LendingpoolCaller) GetUserConfiguration(opts *bind.CallOpts, user common.Address) (DataTypesUserConfigurationMap, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getUserConfiguration", user) + + if err != nil { + return *new(DataTypesUserConfigurationMap), err + } + + out0 := *abi.ConvertType(out[0], new(DataTypesUserConfigurationMap)).(*DataTypesUserConfigurationMap) + + return out0, err + +} + +// GetUserConfiguration is a free data retrieval call binding the contract method 0x4417a583. +// +// Solidity: function getUserConfiguration(address user) view returns((uint256)) +func (_Lendingpool *LendingpoolSession) GetUserConfiguration(user common.Address) (DataTypesUserConfigurationMap, error) { + return _Lendingpool.Contract.GetUserConfiguration(&_Lendingpool.CallOpts, user) +} + +// GetUserConfiguration is a free data retrieval call binding the contract method 0x4417a583. +// +// Solidity: function getUserConfiguration(address user) view returns((uint256)) +func (_Lendingpool *LendingpoolCallerSession) GetUserConfiguration(user common.Address) (DataTypesUserConfigurationMap, error) { + return _Lendingpool.Contract.GetUserConfiguration(&_Lendingpool.CallOpts, user) +} + +// GetUserEMode is a free data retrieval call binding the contract method 0xeddf1b79. +// +// Solidity: function getUserEMode(address user) view returns(uint256) +func (_Lendingpool *LendingpoolCaller) GetUserEMode(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getUserEMode", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetUserEMode is a free data retrieval call binding the contract method 0xeddf1b79. +// +// Solidity: function getUserEMode(address user) view returns(uint256) +func (_Lendingpool *LendingpoolSession) GetUserEMode(user common.Address) (*big.Int, error) { + return _Lendingpool.Contract.GetUserEMode(&_Lendingpool.CallOpts, user) +} + +// GetUserEMode is a free data retrieval call binding the contract method 0xeddf1b79. +// +// Solidity: function getUserEMode(address user) view returns(uint256) +func (_Lendingpool *LendingpoolCallerSession) GetUserEMode(user common.Address) (*big.Int, error) { + return _Lendingpool.Contract.GetUserEMode(&_Lendingpool.CallOpts, user) +} + +// GetVirtualUnderlyingBalance is a free data retrieval call binding the contract method 0x6fb07f96. +// +// Solidity: function getVirtualUnderlyingBalance(address asset) view returns(uint128) +func (_Lendingpool *LendingpoolCaller) GetVirtualUnderlyingBalance(opts *bind.CallOpts, asset common.Address) (*big.Int, error) { + var out []interface{} + err := _Lendingpool.contract.Call(opts, &out, "getVirtualUnderlyingBalance", asset) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetVirtualUnderlyingBalance is a free data retrieval call binding the contract method 0x6fb07f96. +// +// Solidity: function getVirtualUnderlyingBalance(address asset) view returns(uint128) +func (_Lendingpool *LendingpoolSession) GetVirtualUnderlyingBalance(asset common.Address) (*big.Int, error) { + return _Lendingpool.Contract.GetVirtualUnderlyingBalance(&_Lendingpool.CallOpts, asset) +} + +// GetVirtualUnderlyingBalance is a free data retrieval call binding the contract method 0x6fb07f96. +// +// Solidity: function getVirtualUnderlyingBalance(address asset) view returns(uint128) +func (_Lendingpool *LendingpoolCallerSession) GetVirtualUnderlyingBalance(asset common.Address) (*big.Int, error) { + return _Lendingpool.Contract.GetVirtualUnderlyingBalance(&_Lendingpool.CallOpts, asset) +} + +// BackUnbacked is a paid mutator transaction binding the contract method 0xd65dc7a1. +// +// Solidity: function backUnbacked(address asset, uint256 amount, uint256 fee) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) BackUnbacked(opts *bind.TransactOpts, asset common.Address, amount *big.Int, fee *big.Int) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "backUnbacked", asset, amount, fee) +} + +// BackUnbacked is a paid mutator transaction binding the contract method 0xd65dc7a1. +// +// Solidity: function backUnbacked(address asset, uint256 amount, uint256 fee) returns(uint256) +func (_Lendingpool *LendingpoolSession) BackUnbacked(asset common.Address, amount *big.Int, fee *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.BackUnbacked(&_Lendingpool.TransactOpts, asset, amount, fee) +} + +// BackUnbacked is a paid mutator transaction binding the contract method 0xd65dc7a1. +// +// Solidity: function backUnbacked(address asset, uint256 amount, uint256 fee) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) BackUnbacked(asset common.Address, amount *big.Int, fee *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.BackUnbacked(&_Lendingpool.TransactOpts, asset, amount, fee) +} + +// Borrow is a paid mutator transaction binding the contract method 0xa415bcad. +// +// Solidity: function borrow(address asset, uint256 amount, uint256 interestRateMode, uint16 referralCode, address onBehalfOf) returns() +func (_Lendingpool *LendingpoolTransactor) Borrow(opts *bind.TransactOpts, asset common.Address, amount *big.Int, interestRateMode *big.Int, referralCode uint16, onBehalfOf common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "borrow", asset, amount, interestRateMode, referralCode, onBehalfOf) +} + +// Borrow is a paid mutator transaction binding the contract method 0xa415bcad. +// +// Solidity: function borrow(address asset, uint256 amount, uint256 interestRateMode, uint16 referralCode, address onBehalfOf) returns() +func (_Lendingpool *LendingpoolSession) Borrow(asset common.Address, amount *big.Int, interestRateMode *big.Int, referralCode uint16, onBehalfOf common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.Borrow(&_Lendingpool.TransactOpts, asset, amount, interestRateMode, referralCode, onBehalfOf) +} + +// Borrow is a paid mutator transaction binding the contract method 0xa415bcad. +// +// Solidity: function borrow(address asset, uint256 amount, uint256 interestRateMode, uint16 referralCode, address onBehalfOf) returns() +func (_Lendingpool *LendingpoolTransactorSession) Borrow(asset common.Address, amount *big.Int, interestRateMode *big.Int, referralCode uint16, onBehalfOf common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.Borrow(&_Lendingpool.TransactOpts, asset, amount, interestRateMode, referralCode, onBehalfOf) +} + +// Borrow0 is a paid mutator transaction binding the contract method 0xd5eed868. +// +// Solidity: function borrow(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactor) Borrow0(opts *bind.TransactOpts, args [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "borrow0", args) +} + +// Borrow0 is a paid mutator transaction binding the contract method 0xd5eed868. +// +// Solidity: function borrow(bytes32 args) returns() +func (_Lendingpool *LendingpoolSession) Borrow0(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.Borrow0(&_Lendingpool.TransactOpts, args) +} + +// Borrow0 is a paid mutator transaction binding the contract method 0xd5eed868. +// +// Solidity: function borrow(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactorSession) Borrow0(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.Borrow0(&_Lendingpool.TransactOpts, args) +} + +// ConfigureEModeCategory is a paid mutator transaction binding the contract method 0xd579ea7d. +// +// Solidity: function configureEModeCategory(uint8 id, (uint16,uint16,uint16,address,string) category) returns() +func (_Lendingpool *LendingpoolTransactor) ConfigureEModeCategory(opts *bind.TransactOpts, id uint8, category DataTypesEModeCategory) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "configureEModeCategory", id, category) +} + +// ConfigureEModeCategory is a paid mutator transaction binding the contract method 0xd579ea7d. +// +// Solidity: function configureEModeCategory(uint8 id, (uint16,uint16,uint16,address,string) category) returns() +func (_Lendingpool *LendingpoolSession) ConfigureEModeCategory(id uint8, category DataTypesEModeCategory) (*types.Transaction, error) { + return _Lendingpool.Contract.ConfigureEModeCategory(&_Lendingpool.TransactOpts, id, category) +} + +// ConfigureEModeCategory is a paid mutator transaction binding the contract method 0xd579ea7d. +// +// Solidity: function configureEModeCategory(uint8 id, (uint16,uint16,uint16,address,string) category) returns() +func (_Lendingpool *LendingpoolTransactorSession) ConfigureEModeCategory(id uint8, category DataTypesEModeCategory) (*types.Transaction, error) { + return _Lendingpool.Contract.ConfigureEModeCategory(&_Lendingpool.TransactOpts, id, category) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe8eda9df. +// +// Solidity: function deposit(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactor) Deposit(opts *bind.TransactOpts, asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "deposit", asset, amount, onBehalfOf, referralCode) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe8eda9df. +// +// Solidity: function deposit(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolSession) Deposit(asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.Deposit(&_Lendingpool.TransactOpts, asset, amount, onBehalfOf, referralCode) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe8eda9df. +// +// Solidity: function deposit(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactorSession) Deposit(asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.Deposit(&_Lendingpool.TransactOpts, asset, amount, onBehalfOf, referralCode) +} + +// DropReserve is a paid mutator transaction binding the contract method 0x63c9b860. +// +// Solidity: function dropReserve(address asset) returns() +func (_Lendingpool *LendingpoolTransactor) DropReserve(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "dropReserve", asset) +} + +// DropReserve is a paid mutator transaction binding the contract method 0x63c9b860. +// +// Solidity: function dropReserve(address asset) returns() +func (_Lendingpool *LendingpoolSession) DropReserve(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.DropReserve(&_Lendingpool.TransactOpts, asset) +} + +// DropReserve is a paid mutator transaction binding the contract method 0x63c9b860. +// +// Solidity: function dropReserve(address asset) returns() +func (_Lendingpool *LendingpoolTransactorSession) DropReserve(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.DropReserve(&_Lendingpool.TransactOpts, asset) +} + +// FinalizeTransfer is a paid mutator transaction binding the contract method 0xd5ed3933. +// +// Solidity: function finalizeTransfer(address asset, address from, address to, uint256 amount, uint256 balanceFromBefore, uint256 balanceToBefore) returns() +func (_Lendingpool *LendingpoolTransactor) FinalizeTransfer(opts *bind.TransactOpts, asset common.Address, from common.Address, to common.Address, amount *big.Int, balanceFromBefore *big.Int, balanceToBefore *big.Int) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "finalizeTransfer", asset, from, to, amount, balanceFromBefore, balanceToBefore) +} + +// FinalizeTransfer is a paid mutator transaction binding the contract method 0xd5ed3933. +// +// Solidity: function finalizeTransfer(address asset, address from, address to, uint256 amount, uint256 balanceFromBefore, uint256 balanceToBefore) returns() +func (_Lendingpool *LendingpoolSession) FinalizeTransfer(asset common.Address, from common.Address, to common.Address, amount *big.Int, balanceFromBefore *big.Int, balanceToBefore *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.FinalizeTransfer(&_Lendingpool.TransactOpts, asset, from, to, amount, balanceFromBefore, balanceToBefore) +} + +// FinalizeTransfer is a paid mutator transaction binding the contract method 0xd5ed3933. +// +// Solidity: function finalizeTransfer(address asset, address from, address to, uint256 amount, uint256 balanceFromBefore, uint256 balanceToBefore) returns() +func (_Lendingpool *LendingpoolTransactorSession) FinalizeTransfer(asset common.Address, from common.Address, to common.Address, amount *big.Int, balanceFromBefore *big.Int, balanceToBefore *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.FinalizeTransfer(&_Lendingpool.TransactOpts, asset, from, to, amount, balanceFromBefore, balanceToBefore) +} + +// FlashLoan is a paid mutator transaction binding the contract method 0xab9c4b5d. +// +// Solidity: function flashLoan(address receiverAddress, address[] assets, uint256[] amounts, uint256[] interestRateModes, address onBehalfOf, bytes params, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactor) FlashLoan(opts *bind.TransactOpts, receiverAddress common.Address, assets []common.Address, amounts []*big.Int, interestRateModes []*big.Int, onBehalfOf common.Address, params []byte, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "flashLoan", receiverAddress, assets, amounts, interestRateModes, onBehalfOf, params, referralCode) +} + +// FlashLoan is a paid mutator transaction binding the contract method 0xab9c4b5d. +// +// Solidity: function flashLoan(address receiverAddress, address[] assets, uint256[] amounts, uint256[] interestRateModes, address onBehalfOf, bytes params, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolSession) FlashLoan(receiverAddress common.Address, assets []common.Address, amounts []*big.Int, interestRateModes []*big.Int, onBehalfOf common.Address, params []byte, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.FlashLoan(&_Lendingpool.TransactOpts, receiverAddress, assets, amounts, interestRateModes, onBehalfOf, params, referralCode) +} + +// FlashLoan is a paid mutator transaction binding the contract method 0xab9c4b5d. +// +// Solidity: function flashLoan(address receiverAddress, address[] assets, uint256[] amounts, uint256[] interestRateModes, address onBehalfOf, bytes params, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactorSession) FlashLoan(receiverAddress common.Address, assets []common.Address, amounts []*big.Int, interestRateModes []*big.Int, onBehalfOf common.Address, params []byte, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.FlashLoan(&_Lendingpool.TransactOpts, receiverAddress, assets, amounts, interestRateModes, onBehalfOf, params, referralCode) +} + +// FlashLoanSimple is a paid mutator transaction binding the contract method 0x42b0b77c. +// +// Solidity: function flashLoanSimple(address receiverAddress, address asset, uint256 amount, bytes params, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactor) FlashLoanSimple(opts *bind.TransactOpts, receiverAddress common.Address, asset common.Address, amount *big.Int, params []byte, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "flashLoanSimple", receiverAddress, asset, amount, params, referralCode) +} + +// FlashLoanSimple is a paid mutator transaction binding the contract method 0x42b0b77c. +// +// Solidity: function flashLoanSimple(address receiverAddress, address asset, uint256 amount, bytes params, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolSession) FlashLoanSimple(receiverAddress common.Address, asset common.Address, amount *big.Int, params []byte, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.FlashLoanSimple(&_Lendingpool.TransactOpts, receiverAddress, asset, amount, params, referralCode) +} + +// FlashLoanSimple is a paid mutator transaction binding the contract method 0x42b0b77c. +// +// Solidity: function flashLoanSimple(address receiverAddress, address asset, uint256 amount, bytes params, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactorSession) FlashLoanSimple(receiverAddress common.Address, asset common.Address, amount *big.Int, params []byte, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.FlashLoanSimple(&_Lendingpool.TransactOpts, receiverAddress, asset, amount, params, referralCode) +} + +// GetLiquidationGracePeriod is a paid mutator transaction binding the contract method 0x5c9a8b18. +// +// Solidity: function getLiquidationGracePeriod(address asset) returns(uint40) +func (_Lendingpool *LendingpoolTransactor) GetLiquidationGracePeriod(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "getLiquidationGracePeriod", asset) +} + +// GetLiquidationGracePeriod is a paid mutator transaction binding the contract method 0x5c9a8b18. +// +// Solidity: function getLiquidationGracePeriod(address asset) returns(uint40) +func (_Lendingpool *LendingpoolSession) GetLiquidationGracePeriod(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.GetLiquidationGracePeriod(&_Lendingpool.TransactOpts, asset) +} + +// GetLiquidationGracePeriod is a paid mutator transaction binding the contract method 0x5c9a8b18. +// +// Solidity: function getLiquidationGracePeriod(address asset) returns(uint40) +func (_Lendingpool *LendingpoolTransactorSession) GetLiquidationGracePeriod(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.GetLiquidationGracePeriod(&_Lendingpool.TransactOpts, asset) +} + +// InitReserve is a paid mutator transaction binding the contract method 0x7a708e92. +// +// Solidity: function initReserve(address asset, address aTokenAddress, address stableDebtAddress, address variableDebtAddress, address interestRateStrategyAddress) returns() +func (_Lendingpool *LendingpoolTransactor) InitReserve(opts *bind.TransactOpts, asset common.Address, aTokenAddress common.Address, stableDebtAddress common.Address, variableDebtAddress common.Address, interestRateStrategyAddress common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "initReserve", asset, aTokenAddress, stableDebtAddress, variableDebtAddress, interestRateStrategyAddress) +} + +// InitReserve is a paid mutator transaction binding the contract method 0x7a708e92. +// +// Solidity: function initReserve(address asset, address aTokenAddress, address stableDebtAddress, address variableDebtAddress, address interestRateStrategyAddress) returns() +func (_Lendingpool *LendingpoolSession) InitReserve(asset common.Address, aTokenAddress common.Address, stableDebtAddress common.Address, variableDebtAddress common.Address, interestRateStrategyAddress common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.InitReserve(&_Lendingpool.TransactOpts, asset, aTokenAddress, stableDebtAddress, variableDebtAddress, interestRateStrategyAddress) +} + +// InitReserve is a paid mutator transaction binding the contract method 0x7a708e92. +// +// Solidity: function initReserve(address asset, address aTokenAddress, address stableDebtAddress, address variableDebtAddress, address interestRateStrategyAddress) returns() +func (_Lendingpool *LendingpoolTransactorSession) InitReserve(asset common.Address, aTokenAddress common.Address, stableDebtAddress common.Address, variableDebtAddress common.Address, interestRateStrategyAddress common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.InitReserve(&_Lendingpool.TransactOpts, asset, aTokenAddress, stableDebtAddress, variableDebtAddress, interestRateStrategyAddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address provider) returns() +func (_Lendingpool *LendingpoolTransactor) Initialize(opts *bind.TransactOpts, provider common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "initialize", provider) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address provider) returns() +func (_Lendingpool *LendingpoolSession) Initialize(provider common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.Initialize(&_Lendingpool.TransactOpts, provider) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address provider) returns() +func (_Lendingpool *LendingpoolTransactorSession) Initialize(provider common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.Initialize(&_Lendingpool.TransactOpts, provider) +} + +// LiquidationCall is a paid mutator transaction binding the contract method 0x00a718a9. +// +// Solidity: function liquidationCall(address collateralAsset, address debtAsset, address user, uint256 debtToCover, bool receiveAToken) returns() +func (_Lendingpool *LendingpoolTransactor) LiquidationCall(opts *bind.TransactOpts, collateralAsset common.Address, debtAsset common.Address, user common.Address, debtToCover *big.Int, receiveAToken bool) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "liquidationCall", collateralAsset, debtAsset, user, debtToCover, receiveAToken) +} + +// LiquidationCall is a paid mutator transaction binding the contract method 0x00a718a9. +// +// Solidity: function liquidationCall(address collateralAsset, address debtAsset, address user, uint256 debtToCover, bool receiveAToken) returns() +func (_Lendingpool *LendingpoolSession) LiquidationCall(collateralAsset common.Address, debtAsset common.Address, user common.Address, debtToCover *big.Int, receiveAToken bool) (*types.Transaction, error) { + return _Lendingpool.Contract.LiquidationCall(&_Lendingpool.TransactOpts, collateralAsset, debtAsset, user, debtToCover, receiveAToken) +} + +// LiquidationCall is a paid mutator transaction binding the contract method 0x00a718a9. +// +// Solidity: function liquidationCall(address collateralAsset, address debtAsset, address user, uint256 debtToCover, bool receiveAToken) returns() +func (_Lendingpool *LendingpoolTransactorSession) LiquidationCall(collateralAsset common.Address, debtAsset common.Address, user common.Address, debtToCover *big.Int, receiveAToken bool) (*types.Transaction, error) { + return _Lendingpool.Contract.LiquidationCall(&_Lendingpool.TransactOpts, collateralAsset, debtAsset, user, debtToCover, receiveAToken) +} + +// LiquidationCall0 is a paid mutator transaction binding the contract method 0xfd21ecff. +// +// Solidity: function liquidationCall(bytes32 args1, bytes32 args2) returns() +func (_Lendingpool *LendingpoolTransactor) LiquidationCall0(opts *bind.TransactOpts, args1 [32]byte, args2 [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "liquidationCall0", args1, args2) +} + +// LiquidationCall0 is a paid mutator transaction binding the contract method 0xfd21ecff. +// +// Solidity: function liquidationCall(bytes32 args1, bytes32 args2) returns() +func (_Lendingpool *LendingpoolSession) LiquidationCall0(args1 [32]byte, args2 [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.LiquidationCall0(&_Lendingpool.TransactOpts, args1, args2) +} + +// LiquidationCall0 is a paid mutator transaction binding the contract method 0xfd21ecff. +// +// Solidity: function liquidationCall(bytes32 args1, bytes32 args2) returns() +func (_Lendingpool *LendingpoolTransactorSession) LiquidationCall0(args1 [32]byte, args2 [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.LiquidationCall0(&_Lendingpool.TransactOpts, args1, args2) +} + +// MintToTreasury is a paid mutator transaction binding the contract method 0x9cd19996. +// +// Solidity: function mintToTreasury(address[] assets) returns() +func (_Lendingpool *LendingpoolTransactor) MintToTreasury(opts *bind.TransactOpts, assets []common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "mintToTreasury", assets) +} + +// MintToTreasury is a paid mutator transaction binding the contract method 0x9cd19996. +// +// Solidity: function mintToTreasury(address[] assets) returns() +func (_Lendingpool *LendingpoolSession) MintToTreasury(assets []common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.MintToTreasury(&_Lendingpool.TransactOpts, assets) +} + +// MintToTreasury is a paid mutator transaction binding the contract method 0x9cd19996. +// +// Solidity: function mintToTreasury(address[] assets) returns() +func (_Lendingpool *LendingpoolTransactorSession) MintToTreasury(assets []common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.MintToTreasury(&_Lendingpool.TransactOpts, assets) +} + +// MintUnbacked is a paid mutator transaction binding the contract method 0x69a933a5. +// +// Solidity: function mintUnbacked(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactor) MintUnbacked(opts *bind.TransactOpts, asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "mintUnbacked", asset, amount, onBehalfOf, referralCode) +} + +// MintUnbacked is a paid mutator transaction binding the contract method 0x69a933a5. +// +// Solidity: function mintUnbacked(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolSession) MintUnbacked(asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.MintUnbacked(&_Lendingpool.TransactOpts, asset, amount, onBehalfOf, referralCode) +} + +// MintUnbacked is a paid mutator transaction binding the contract method 0x69a933a5. +// +// Solidity: function mintUnbacked(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactorSession) MintUnbacked(asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.MintUnbacked(&_Lendingpool.TransactOpts, asset, amount, onBehalfOf, referralCode) +} + +// RebalanceStableBorrowRate is a paid mutator transaction binding the contract method 0x427da177. +// +// Solidity: function rebalanceStableBorrowRate(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactor) RebalanceStableBorrowRate(opts *bind.TransactOpts, args [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "rebalanceStableBorrowRate", args) +} + +// RebalanceStableBorrowRate is a paid mutator transaction binding the contract method 0x427da177. +// +// Solidity: function rebalanceStableBorrowRate(bytes32 args) returns() +func (_Lendingpool *LendingpoolSession) RebalanceStableBorrowRate(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.RebalanceStableBorrowRate(&_Lendingpool.TransactOpts, args) +} + +// RebalanceStableBorrowRate is a paid mutator transaction binding the contract method 0x427da177. +// +// Solidity: function rebalanceStableBorrowRate(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactorSession) RebalanceStableBorrowRate(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.RebalanceStableBorrowRate(&_Lendingpool.TransactOpts, args) +} + +// RebalanceStableBorrowRate0 is a paid mutator transaction binding the contract method 0xcd112382. +// +// Solidity: function rebalanceStableBorrowRate(address asset, address user) returns() +func (_Lendingpool *LendingpoolTransactor) RebalanceStableBorrowRate0(opts *bind.TransactOpts, asset common.Address, user common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "rebalanceStableBorrowRate0", asset, user) +} + +// RebalanceStableBorrowRate0 is a paid mutator transaction binding the contract method 0xcd112382. +// +// Solidity: function rebalanceStableBorrowRate(address asset, address user) returns() +func (_Lendingpool *LendingpoolSession) RebalanceStableBorrowRate0(asset common.Address, user common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.RebalanceStableBorrowRate0(&_Lendingpool.TransactOpts, asset, user) +} + +// RebalanceStableBorrowRate0 is a paid mutator transaction binding the contract method 0xcd112382. +// +// Solidity: function rebalanceStableBorrowRate(address asset, address user) returns() +func (_Lendingpool *LendingpoolTransactorSession) RebalanceStableBorrowRate0(asset common.Address, user common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.RebalanceStableBorrowRate0(&_Lendingpool.TransactOpts, asset, user) +} + +// Repay is a paid mutator transaction binding the contract method 0x563dd613. +// +// Solidity: function repay(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) Repay(opts *bind.TransactOpts, args [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "repay", args) +} + +// Repay is a paid mutator transaction binding the contract method 0x563dd613. +// +// Solidity: function repay(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolSession) Repay(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.Repay(&_Lendingpool.TransactOpts, args) +} + +// Repay is a paid mutator transaction binding the contract method 0x563dd613. +// +// Solidity: function repay(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) Repay(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.Repay(&_Lendingpool.TransactOpts, args) +} + +// Repay0 is a paid mutator transaction binding the contract method 0x573ade81. +// +// Solidity: function repay(address asset, uint256 amount, uint256 interestRateMode, address onBehalfOf) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) Repay0(opts *bind.TransactOpts, asset common.Address, amount *big.Int, interestRateMode *big.Int, onBehalfOf common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "repay0", asset, amount, interestRateMode, onBehalfOf) +} + +// Repay0 is a paid mutator transaction binding the contract method 0x573ade81. +// +// Solidity: function repay(address asset, uint256 amount, uint256 interestRateMode, address onBehalfOf) returns(uint256) +func (_Lendingpool *LendingpoolSession) Repay0(asset common.Address, amount *big.Int, interestRateMode *big.Int, onBehalfOf common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.Repay0(&_Lendingpool.TransactOpts, asset, amount, interestRateMode, onBehalfOf) +} + +// Repay0 is a paid mutator transaction binding the contract method 0x573ade81. +// +// Solidity: function repay(address asset, uint256 amount, uint256 interestRateMode, address onBehalfOf) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) Repay0(asset common.Address, amount *big.Int, interestRateMode *big.Int, onBehalfOf common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.Repay0(&_Lendingpool.TransactOpts, asset, amount, interestRateMode, onBehalfOf) +} + +// RepayWithATokens is a paid mutator transaction binding the contract method 0x2dad97d4. +// +// Solidity: function repayWithATokens(address asset, uint256 amount, uint256 interestRateMode) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) RepayWithATokens(opts *bind.TransactOpts, asset common.Address, amount *big.Int, interestRateMode *big.Int) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "repayWithATokens", asset, amount, interestRateMode) +} + +// RepayWithATokens is a paid mutator transaction binding the contract method 0x2dad97d4. +// +// Solidity: function repayWithATokens(address asset, uint256 amount, uint256 interestRateMode) returns(uint256) +func (_Lendingpool *LendingpoolSession) RepayWithATokens(asset common.Address, amount *big.Int, interestRateMode *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.RepayWithATokens(&_Lendingpool.TransactOpts, asset, amount, interestRateMode) +} + +// RepayWithATokens is a paid mutator transaction binding the contract method 0x2dad97d4. +// +// Solidity: function repayWithATokens(address asset, uint256 amount, uint256 interestRateMode) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) RepayWithATokens(asset common.Address, amount *big.Int, interestRateMode *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.RepayWithATokens(&_Lendingpool.TransactOpts, asset, amount, interestRateMode) +} + +// RepayWithATokens0 is a paid mutator transaction binding the contract method 0xdc7c0bff. +// +// Solidity: function repayWithATokens(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) RepayWithATokens0(opts *bind.TransactOpts, args [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "repayWithATokens0", args) +} + +// RepayWithATokens0 is a paid mutator transaction binding the contract method 0xdc7c0bff. +// +// Solidity: function repayWithATokens(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolSession) RepayWithATokens0(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.RepayWithATokens0(&_Lendingpool.TransactOpts, args) +} + +// RepayWithATokens0 is a paid mutator transaction binding the contract method 0xdc7c0bff. +// +// Solidity: function repayWithATokens(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) RepayWithATokens0(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.RepayWithATokens0(&_Lendingpool.TransactOpts, args) +} + +// RepayWithPermit is a paid mutator transaction binding the contract method 0x94b576de. +// +// Solidity: function repayWithPermit(bytes32 args, bytes32 r, bytes32 s) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) RepayWithPermit(opts *bind.TransactOpts, args [32]byte, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "repayWithPermit", args, r, s) +} + +// RepayWithPermit is a paid mutator transaction binding the contract method 0x94b576de. +// +// Solidity: function repayWithPermit(bytes32 args, bytes32 r, bytes32 s) returns(uint256) +func (_Lendingpool *LendingpoolSession) RepayWithPermit(args [32]byte, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.RepayWithPermit(&_Lendingpool.TransactOpts, args, r, s) +} + +// RepayWithPermit is a paid mutator transaction binding the contract method 0x94b576de. +// +// Solidity: function repayWithPermit(bytes32 args, bytes32 r, bytes32 s) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) RepayWithPermit(args [32]byte, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.RepayWithPermit(&_Lendingpool.TransactOpts, args, r, s) +} + +// RepayWithPermit0 is a paid mutator transaction binding the contract method 0xee3e210b. +// +// Solidity: function repayWithPermit(address asset, uint256 amount, uint256 interestRateMode, address onBehalfOf, uint256 deadline, uint8 permitV, bytes32 permitR, bytes32 permitS) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) RepayWithPermit0(opts *bind.TransactOpts, asset common.Address, amount *big.Int, interestRateMode *big.Int, onBehalfOf common.Address, deadline *big.Int, permitV uint8, permitR [32]byte, permitS [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "repayWithPermit0", asset, amount, interestRateMode, onBehalfOf, deadline, permitV, permitR, permitS) +} + +// RepayWithPermit0 is a paid mutator transaction binding the contract method 0xee3e210b. +// +// Solidity: function repayWithPermit(address asset, uint256 amount, uint256 interestRateMode, address onBehalfOf, uint256 deadline, uint8 permitV, bytes32 permitR, bytes32 permitS) returns(uint256) +func (_Lendingpool *LendingpoolSession) RepayWithPermit0(asset common.Address, amount *big.Int, interestRateMode *big.Int, onBehalfOf common.Address, deadline *big.Int, permitV uint8, permitR [32]byte, permitS [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.RepayWithPermit0(&_Lendingpool.TransactOpts, asset, amount, interestRateMode, onBehalfOf, deadline, permitV, permitR, permitS) +} + +// RepayWithPermit0 is a paid mutator transaction binding the contract method 0xee3e210b. +// +// Solidity: function repayWithPermit(address asset, uint256 amount, uint256 interestRateMode, address onBehalfOf, uint256 deadline, uint8 permitV, bytes32 permitR, bytes32 permitS) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) RepayWithPermit0(asset common.Address, amount *big.Int, interestRateMode *big.Int, onBehalfOf common.Address, deadline *big.Int, permitV uint8, permitR [32]byte, permitS [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.RepayWithPermit0(&_Lendingpool.TransactOpts, asset, amount, interestRateMode, onBehalfOf, deadline, permitV, permitR, permitS) +} + +// RescueTokens is a paid mutator transaction binding the contract method 0xcea9d26f. +// +// Solidity: function rescueTokens(address token, address to, uint256 amount) returns() +func (_Lendingpool *LendingpoolTransactor) RescueTokens(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "rescueTokens", token, to, amount) +} + +// RescueTokens is a paid mutator transaction binding the contract method 0xcea9d26f. +// +// Solidity: function rescueTokens(address token, address to, uint256 amount) returns() +func (_Lendingpool *LendingpoolSession) RescueTokens(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.RescueTokens(&_Lendingpool.TransactOpts, token, to, amount) +} + +// RescueTokens is a paid mutator transaction binding the contract method 0xcea9d26f. +// +// Solidity: function rescueTokens(address token, address to, uint256 amount) returns() +func (_Lendingpool *LendingpoolTransactorSession) RescueTokens(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.RescueTokens(&_Lendingpool.TransactOpts, token, to, amount) +} + +// ResetIsolationModeTotalDebt is a paid mutator transaction binding the contract method 0xe43e88a1. +// +// Solidity: function resetIsolationModeTotalDebt(address asset) returns() +func (_Lendingpool *LendingpoolTransactor) ResetIsolationModeTotalDebt(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "resetIsolationModeTotalDebt", asset) +} + +// ResetIsolationModeTotalDebt is a paid mutator transaction binding the contract method 0xe43e88a1. +// +// Solidity: function resetIsolationModeTotalDebt(address asset) returns() +func (_Lendingpool *LendingpoolSession) ResetIsolationModeTotalDebt(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.ResetIsolationModeTotalDebt(&_Lendingpool.TransactOpts, asset) +} + +// ResetIsolationModeTotalDebt is a paid mutator transaction binding the contract method 0xe43e88a1. +// +// Solidity: function resetIsolationModeTotalDebt(address asset) returns() +func (_Lendingpool *LendingpoolTransactorSession) ResetIsolationModeTotalDebt(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.ResetIsolationModeTotalDebt(&_Lendingpool.TransactOpts, asset) +} + +// SetConfiguration is a paid mutator transaction binding the contract method 0xf51e435b. +// +// Solidity: function setConfiguration(address asset, (uint256) configuration) returns() +func (_Lendingpool *LendingpoolTransactor) SetConfiguration(opts *bind.TransactOpts, asset common.Address, configuration DataTypesReserveConfigurationMap) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "setConfiguration", asset, configuration) +} + +// SetConfiguration is a paid mutator transaction binding the contract method 0xf51e435b. +// +// Solidity: function setConfiguration(address asset, (uint256) configuration) returns() +func (_Lendingpool *LendingpoolSession) SetConfiguration(asset common.Address, configuration DataTypesReserveConfigurationMap) (*types.Transaction, error) { + return _Lendingpool.Contract.SetConfiguration(&_Lendingpool.TransactOpts, asset, configuration) +} + +// SetConfiguration is a paid mutator transaction binding the contract method 0xf51e435b. +// +// Solidity: function setConfiguration(address asset, (uint256) configuration) returns() +func (_Lendingpool *LendingpoolTransactorSession) SetConfiguration(asset common.Address, configuration DataTypesReserveConfigurationMap) (*types.Transaction, error) { + return _Lendingpool.Contract.SetConfiguration(&_Lendingpool.TransactOpts, asset, configuration) +} + +// SetLiquidationGracePeriod is a paid mutator transaction binding the contract method 0xb1a99e26. +// +// Solidity: function setLiquidationGracePeriod(address asset, uint40 until) returns() +func (_Lendingpool *LendingpoolTransactor) SetLiquidationGracePeriod(opts *bind.TransactOpts, asset common.Address, until *big.Int) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "setLiquidationGracePeriod", asset, until) +} + +// SetLiquidationGracePeriod is a paid mutator transaction binding the contract method 0xb1a99e26. +// +// Solidity: function setLiquidationGracePeriod(address asset, uint40 until) returns() +func (_Lendingpool *LendingpoolSession) SetLiquidationGracePeriod(asset common.Address, until *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.SetLiquidationGracePeriod(&_Lendingpool.TransactOpts, asset, until) +} + +// SetLiquidationGracePeriod is a paid mutator transaction binding the contract method 0xb1a99e26. +// +// Solidity: function setLiquidationGracePeriod(address asset, uint40 until) returns() +func (_Lendingpool *LendingpoolTransactorSession) SetLiquidationGracePeriod(asset common.Address, until *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.SetLiquidationGracePeriod(&_Lendingpool.TransactOpts, asset, until) +} + +// SetReserveInterestRateStrategyAddress is a paid mutator transaction binding the contract method 0x1d2118f9. +// +// Solidity: function setReserveInterestRateStrategyAddress(address asset, address rateStrategyAddress) returns() +func (_Lendingpool *LendingpoolTransactor) SetReserveInterestRateStrategyAddress(opts *bind.TransactOpts, asset common.Address, rateStrategyAddress common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "setReserveInterestRateStrategyAddress", asset, rateStrategyAddress) +} + +// SetReserveInterestRateStrategyAddress is a paid mutator transaction binding the contract method 0x1d2118f9. +// +// Solidity: function setReserveInterestRateStrategyAddress(address asset, address rateStrategyAddress) returns() +func (_Lendingpool *LendingpoolSession) SetReserveInterestRateStrategyAddress(asset common.Address, rateStrategyAddress common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.SetReserveInterestRateStrategyAddress(&_Lendingpool.TransactOpts, asset, rateStrategyAddress) +} + +// SetReserveInterestRateStrategyAddress is a paid mutator transaction binding the contract method 0x1d2118f9. +// +// Solidity: function setReserveInterestRateStrategyAddress(address asset, address rateStrategyAddress) returns() +func (_Lendingpool *LendingpoolTransactorSession) SetReserveInterestRateStrategyAddress(asset common.Address, rateStrategyAddress common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.SetReserveInterestRateStrategyAddress(&_Lendingpool.TransactOpts, asset, rateStrategyAddress) +} + +// SetUserEMode is a paid mutator transaction binding the contract method 0x28530a47. +// +// Solidity: function setUserEMode(uint8 categoryId) returns() +func (_Lendingpool *LendingpoolTransactor) SetUserEMode(opts *bind.TransactOpts, categoryId uint8) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "setUserEMode", categoryId) +} + +// SetUserEMode is a paid mutator transaction binding the contract method 0x28530a47. +// +// Solidity: function setUserEMode(uint8 categoryId) returns() +func (_Lendingpool *LendingpoolSession) SetUserEMode(categoryId uint8) (*types.Transaction, error) { + return _Lendingpool.Contract.SetUserEMode(&_Lendingpool.TransactOpts, categoryId) +} + +// SetUserEMode is a paid mutator transaction binding the contract method 0x28530a47. +// +// Solidity: function setUserEMode(uint8 categoryId) returns() +func (_Lendingpool *LendingpoolTransactorSession) SetUserEMode(categoryId uint8) (*types.Transaction, error) { + return _Lendingpool.Contract.SetUserEMode(&_Lendingpool.TransactOpts, categoryId) +} + +// SetUserUseReserveAsCollateral is a paid mutator transaction binding the contract method 0x4d013f03. +// +// Solidity: function setUserUseReserveAsCollateral(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactor) SetUserUseReserveAsCollateral(opts *bind.TransactOpts, args [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "setUserUseReserveAsCollateral", args) +} + +// SetUserUseReserveAsCollateral is a paid mutator transaction binding the contract method 0x4d013f03. +// +// Solidity: function setUserUseReserveAsCollateral(bytes32 args) returns() +func (_Lendingpool *LendingpoolSession) SetUserUseReserveAsCollateral(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.SetUserUseReserveAsCollateral(&_Lendingpool.TransactOpts, args) +} + +// SetUserUseReserveAsCollateral is a paid mutator transaction binding the contract method 0x4d013f03. +// +// Solidity: function setUserUseReserveAsCollateral(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactorSession) SetUserUseReserveAsCollateral(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.SetUserUseReserveAsCollateral(&_Lendingpool.TransactOpts, args) +} + +// SetUserUseReserveAsCollateral0 is a paid mutator transaction binding the contract method 0x5a3b74b9. +// +// Solidity: function setUserUseReserveAsCollateral(address asset, bool useAsCollateral) returns() +func (_Lendingpool *LendingpoolTransactor) SetUserUseReserveAsCollateral0(opts *bind.TransactOpts, asset common.Address, useAsCollateral bool) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "setUserUseReserveAsCollateral0", asset, useAsCollateral) +} + +// SetUserUseReserveAsCollateral0 is a paid mutator transaction binding the contract method 0x5a3b74b9. +// +// Solidity: function setUserUseReserveAsCollateral(address asset, bool useAsCollateral) returns() +func (_Lendingpool *LendingpoolSession) SetUserUseReserveAsCollateral0(asset common.Address, useAsCollateral bool) (*types.Transaction, error) { + return _Lendingpool.Contract.SetUserUseReserveAsCollateral0(&_Lendingpool.TransactOpts, asset, useAsCollateral) +} + +// SetUserUseReserveAsCollateral0 is a paid mutator transaction binding the contract method 0x5a3b74b9. +// +// Solidity: function setUserUseReserveAsCollateral(address asset, bool useAsCollateral) returns() +func (_Lendingpool *LendingpoolTransactorSession) SetUserUseReserveAsCollateral0(asset common.Address, useAsCollateral bool) (*types.Transaction, error) { + return _Lendingpool.Contract.SetUserUseReserveAsCollateral0(&_Lendingpool.TransactOpts, asset, useAsCollateral) +} + +// Supply is a paid mutator transaction binding the contract method 0x617ba037. +// +// Solidity: function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactor) Supply(opts *bind.TransactOpts, asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "supply", asset, amount, onBehalfOf, referralCode) +} + +// Supply is a paid mutator transaction binding the contract method 0x617ba037. +// +// Solidity: function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolSession) Supply(asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.Supply(&_Lendingpool.TransactOpts, asset, amount, onBehalfOf, referralCode) +} + +// Supply is a paid mutator transaction binding the contract method 0x617ba037. +// +// Solidity: function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) returns() +func (_Lendingpool *LendingpoolTransactorSession) Supply(asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16) (*types.Transaction, error) { + return _Lendingpool.Contract.Supply(&_Lendingpool.TransactOpts, asset, amount, onBehalfOf, referralCode) +} + +// Supply0 is a paid mutator transaction binding the contract method 0xf7a73840. +// +// Solidity: function supply(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactor) Supply0(opts *bind.TransactOpts, args [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "supply0", args) +} + +// Supply0 is a paid mutator transaction binding the contract method 0xf7a73840. +// +// Solidity: function supply(bytes32 args) returns() +func (_Lendingpool *LendingpoolSession) Supply0(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.Supply0(&_Lendingpool.TransactOpts, args) +} + +// Supply0 is a paid mutator transaction binding the contract method 0xf7a73840. +// +// Solidity: function supply(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactorSession) Supply0(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.Supply0(&_Lendingpool.TransactOpts, args) +} + +// SupplyWithPermit is a paid mutator transaction binding the contract method 0x02c205f0. +// +// Solidity: function supplyWithPermit(address asset, uint256 amount, address onBehalfOf, uint16 referralCode, uint256 deadline, uint8 permitV, bytes32 permitR, bytes32 permitS) returns() +func (_Lendingpool *LendingpoolTransactor) SupplyWithPermit(opts *bind.TransactOpts, asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16, deadline *big.Int, permitV uint8, permitR [32]byte, permitS [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "supplyWithPermit", asset, amount, onBehalfOf, referralCode, deadline, permitV, permitR, permitS) +} + +// SupplyWithPermit is a paid mutator transaction binding the contract method 0x02c205f0. +// +// Solidity: function supplyWithPermit(address asset, uint256 amount, address onBehalfOf, uint16 referralCode, uint256 deadline, uint8 permitV, bytes32 permitR, bytes32 permitS) returns() +func (_Lendingpool *LendingpoolSession) SupplyWithPermit(asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16, deadline *big.Int, permitV uint8, permitR [32]byte, permitS [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.SupplyWithPermit(&_Lendingpool.TransactOpts, asset, amount, onBehalfOf, referralCode, deadline, permitV, permitR, permitS) +} + +// SupplyWithPermit is a paid mutator transaction binding the contract method 0x02c205f0. +// +// Solidity: function supplyWithPermit(address asset, uint256 amount, address onBehalfOf, uint16 referralCode, uint256 deadline, uint8 permitV, bytes32 permitR, bytes32 permitS) returns() +func (_Lendingpool *LendingpoolTransactorSession) SupplyWithPermit(asset common.Address, amount *big.Int, onBehalfOf common.Address, referralCode uint16, deadline *big.Int, permitV uint8, permitR [32]byte, permitS [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.SupplyWithPermit(&_Lendingpool.TransactOpts, asset, amount, onBehalfOf, referralCode, deadline, permitV, permitR, permitS) +} + +// SupplyWithPermit0 is a paid mutator transaction binding the contract method 0x680dd47c. +// +// Solidity: function supplyWithPermit(bytes32 args, bytes32 r, bytes32 s) returns() +func (_Lendingpool *LendingpoolTransactor) SupplyWithPermit0(opts *bind.TransactOpts, args [32]byte, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "supplyWithPermit0", args, r, s) +} + +// SupplyWithPermit0 is a paid mutator transaction binding the contract method 0x680dd47c. +// +// Solidity: function supplyWithPermit(bytes32 args, bytes32 r, bytes32 s) returns() +func (_Lendingpool *LendingpoolSession) SupplyWithPermit0(args [32]byte, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.SupplyWithPermit0(&_Lendingpool.TransactOpts, args, r, s) +} + +// SupplyWithPermit0 is a paid mutator transaction binding the contract method 0x680dd47c. +// +// Solidity: function supplyWithPermit(bytes32 args, bytes32 r, bytes32 s) returns() +func (_Lendingpool *LendingpoolTransactorSession) SupplyWithPermit0(args [32]byte, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.SupplyWithPermit0(&_Lendingpool.TransactOpts, args, r, s) +} + +// SwapBorrowRateMode is a paid mutator transaction binding the contract method 0x1fe3c6f3. +// +// Solidity: function swapBorrowRateMode(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactor) SwapBorrowRateMode(opts *bind.TransactOpts, args [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "swapBorrowRateMode", args) +} + +// SwapBorrowRateMode is a paid mutator transaction binding the contract method 0x1fe3c6f3. +// +// Solidity: function swapBorrowRateMode(bytes32 args) returns() +func (_Lendingpool *LendingpoolSession) SwapBorrowRateMode(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.SwapBorrowRateMode(&_Lendingpool.TransactOpts, args) +} + +// SwapBorrowRateMode is a paid mutator transaction binding the contract method 0x1fe3c6f3. +// +// Solidity: function swapBorrowRateMode(bytes32 args) returns() +func (_Lendingpool *LendingpoolTransactorSession) SwapBorrowRateMode(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.SwapBorrowRateMode(&_Lendingpool.TransactOpts, args) +} + +// SwapBorrowRateMode0 is a paid mutator transaction binding the contract method 0x94ba89a2. +// +// Solidity: function swapBorrowRateMode(address asset, uint256 interestRateMode) returns() +func (_Lendingpool *LendingpoolTransactor) SwapBorrowRateMode0(opts *bind.TransactOpts, asset common.Address, interestRateMode *big.Int) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "swapBorrowRateMode0", asset, interestRateMode) +} + +// SwapBorrowRateMode0 is a paid mutator transaction binding the contract method 0x94ba89a2. +// +// Solidity: function swapBorrowRateMode(address asset, uint256 interestRateMode) returns() +func (_Lendingpool *LendingpoolSession) SwapBorrowRateMode0(asset common.Address, interestRateMode *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.SwapBorrowRateMode0(&_Lendingpool.TransactOpts, asset, interestRateMode) +} + +// SwapBorrowRateMode0 is a paid mutator transaction binding the contract method 0x94ba89a2. +// +// Solidity: function swapBorrowRateMode(address asset, uint256 interestRateMode) returns() +func (_Lendingpool *LendingpoolTransactorSession) SwapBorrowRateMode0(asset common.Address, interestRateMode *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.SwapBorrowRateMode0(&_Lendingpool.TransactOpts, asset, interestRateMode) +} + +// SwapToVariable is a paid mutator transaction binding the contract method 0x2520d5ee. +// +// Solidity: function swapToVariable(address asset, address user) returns() +func (_Lendingpool *LendingpoolTransactor) SwapToVariable(opts *bind.TransactOpts, asset common.Address, user common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "swapToVariable", asset, user) +} + +// SwapToVariable is a paid mutator transaction binding the contract method 0x2520d5ee. +// +// Solidity: function swapToVariable(address asset, address user) returns() +func (_Lendingpool *LendingpoolSession) SwapToVariable(asset common.Address, user common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.SwapToVariable(&_Lendingpool.TransactOpts, asset, user) +} + +// SwapToVariable is a paid mutator transaction binding the contract method 0x2520d5ee. +// +// Solidity: function swapToVariable(address asset, address user) returns() +func (_Lendingpool *LendingpoolTransactorSession) SwapToVariable(asset common.Address, user common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.SwapToVariable(&_Lendingpool.TransactOpts, asset, user) +} + +// SyncIndexesState is a paid mutator transaction binding the contract method 0xab2b51f6. +// +// Solidity: function syncIndexesState(address asset) returns() +func (_Lendingpool *LendingpoolTransactor) SyncIndexesState(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "syncIndexesState", asset) +} + +// SyncIndexesState is a paid mutator transaction binding the contract method 0xab2b51f6. +// +// Solidity: function syncIndexesState(address asset) returns() +func (_Lendingpool *LendingpoolSession) SyncIndexesState(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.SyncIndexesState(&_Lendingpool.TransactOpts, asset) +} + +// SyncIndexesState is a paid mutator transaction binding the contract method 0xab2b51f6. +// +// Solidity: function syncIndexesState(address asset) returns() +func (_Lendingpool *LendingpoolTransactorSession) SyncIndexesState(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.SyncIndexesState(&_Lendingpool.TransactOpts, asset) +} + +// SyncRatesState is a paid mutator transaction binding the contract method 0x98c7da4e. +// +// Solidity: function syncRatesState(address asset) returns() +func (_Lendingpool *LendingpoolTransactor) SyncRatesState(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "syncRatesState", asset) +} + +// SyncRatesState is a paid mutator transaction binding the contract method 0x98c7da4e. +// +// Solidity: function syncRatesState(address asset) returns() +func (_Lendingpool *LendingpoolSession) SyncRatesState(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.SyncRatesState(&_Lendingpool.TransactOpts, asset) +} + +// SyncRatesState is a paid mutator transaction binding the contract method 0x98c7da4e. +// +// Solidity: function syncRatesState(address asset) returns() +func (_Lendingpool *LendingpoolTransactorSession) SyncRatesState(asset common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.SyncRatesState(&_Lendingpool.TransactOpts, asset) +} + +// UpdateBridgeProtocolFee is a paid mutator transaction binding the contract method 0x3036b439. +// +// Solidity: function updateBridgeProtocolFee(uint256 protocolFee) returns() +func (_Lendingpool *LendingpoolTransactor) UpdateBridgeProtocolFee(opts *bind.TransactOpts, protocolFee *big.Int) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "updateBridgeProtocolFee", protocolFee) +} + +// UpdateBridgeProtocolFee is a paid mutator transaction binding the contract method 0x3036b439. +// +// Solidity: function updateBridgeProtocolFee(uint256 protocolFee) returns() +func (_Lendingpool *LendingpoolSession) UpdateBridgeProtocolFee(protocolFee *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.UpdateBridgeProtocolFee(&_Lendingpool.TransactOpts, protocolFee) +} + +// UpdateBridgeProtocolFee is a paid mutator transaction binding the contract method 0x3036b439. +// +// Solidity: function updateBridgeProtocolFee(uint256 protocolFee) returns() +func (_Lendingpool *LendingpoolTransactorSession) UpdateBridgeProtocolFee(protocolFee *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.UpdateBridgeProtocolFee(&_Lendingpool.TransactOpts, protocolFee) +} + +// UpdateFlashloanPremiums is a paid mutator transaction binding the contract method 0xbcb6e522. +// +// Solidity: function updateFlashloanPremiums(uint128 flashLoanPremiumTotal, uint128 flashLoanPremiumToProtocol) returns() +func (_Lendingpool *LendingpoolTransactor) UpdateFlashloanPremiums(opts *bind.TransactOpts, flashLoanPremiumTotal *big.Int, flashLoanPremiumToProtocol *big.Int) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "updateFlashloanPremiums", flashLoanPremiumTotal, flashLoanPremiumToProtocol) +} + +// UpdateFlashloanPremiums is a paid mutator transaction binding the contract method 0xbcb6e522. +// +// Solidity: function updateFlashloanPremiums(uint128 flashLoanPremiumTotal, uint128 flashLoanPremiumToProtocol) returns() +func (_Lendingpool *LendingpoolSession) UpdateFlashloanPremiums(flashLoanPremiumTotal *big.Int, flashLoanPremiumToProtocol *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.UpdateFlashloanPremiums(&_Lendingpool.TransactOpts, flashLoanPremiumTotal, flashLoanPremiumToProtocol) +} + +// UpdateFlashloanPremiums is a paid mutator transaction binding the contract method 0xbcb6e522. +// +// Solidity: function updateFlashloanPremiums(uint128 flashLoanPremiumTotal, uint128 flashLoanPremiumToProtocol) returns() +func (_Lendingpool *LendingpoolTransactorSession) UpdateFlashloanPremiums(flashLoanPremiumTotal *big.Int, flashLoanPremiumToProtocol *big.Int) (*types.Transaction, error) { + return _Lendingpool.Contract.UpdateFlashloanPremiums(&_Lendingpool.TransactOpts, flashLoanPremiumTotal, flashLoanPremiumToProtocol) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x69328dec. +// +// Solidity: function withdraw(address asset, uint256 amount, address to) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) Withdraw(opts *bind.TransactOpts, asset common.Address, amount *big.Int, to common.Address) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "withdraw", asset, amount, to) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x69328dec. +// +// Solidity: function withdraw(address asset, uint256 amount, address to) returns(uint256) +func (_Lendingpool *LendingpoolSession) Withdraw(asset common.Address, amount *big.Int, to common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.Withdraw(&_Lendingpool.TransactOpts, asset, amount, to) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x69328dec. +// +// Solidity: function withdraw(address asset, uint256 amount, address to) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) Withdraw(asset common.Address, amount *big.Int, to common.Address) (*types.Transaction, error) { + return _Lendingpool.Contract.Withdraw(&_Lendingpool.TransactOpts, asset, amount, to) +} + +// Withdraw0 is a paid mutator transaction binding the contract method 0x8e19899e. +// +// Solidity: function withdraw(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolTransactor) Withdraw0(opts *bind.TransactOpts, args [32]byte) (*types.Transaction, error) { + return _Lendingpool.contract.Transact(opts, "withdraw0", args) +} + +// Withdraw0 is a paid mutator transaction binding the contract method 0x8e19899e. +// +// Solidity: function withdraw(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolSession) Withdraw0(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.Withdraw0(&_Lendingpool.TransactOpts, args) +} + +// Withdraw0 is a paid mutator transaction binding the contract method 0x8e19899e. +// +// Solidity: function withdraw(bytes32 args) returns(uint256) +func (_Lendingpool *LendingpoolTransactorSession) Withdraw0(args [32]byte) (*types.Transaction, error) { + return _Lendingpool.Contract.Withdraw0(&_Lendingpool.TransactOpts, args) +} + +// LendingpoolBackUnbackedIterator is returned from FilterBackUnbacked and is used to iterate over the raw logs and unpacked data for BackUnbacked events raised by the Lendingpool contract. +type LendingpoolBackUnbackedIterator struct { + Event *LendingpoolBackUnbacked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolBackUnbackedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolBackUnbacked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolBackUnbacked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolBackUnbackedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolBackUnbackedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolBackUnbacked represents a BackUnbacked event raised by the Lendingpool contract. +type LendingpoolBackUnbacked struct { + Reserve common.Address + Backer common.Address + Amount *big.Int + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBackUnbacked is a free log retrieval operation binding the contract event 0x281596e92b2d974beb7d4f124df30a0b39067b096893e95011ce4bdad798b759. +// +// Solidity: event BackUnbacked(address indexed reserve, address indexed backer, uint256 amount, uint256 fee) +func (_Lendingpool *LendingpoolFilterer) FilterBackUnbacked(opts *bind.FilterOpts, reserve []common.Address, backer []common.Address) (*LendingpoolBackUnbackedIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var backerRule []interface{} + for _, backerItem := range backer { + backerRule = append(backerRule, backerItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "BackUnbacked", reserveRule, backerRule) + if err != nil { + return nil, err + } + return &LendingpoolBackUnbackedIterator{contract: _Lendingpool.contract, event: "BackUnbacked", logs: logs, sub: sub}, nil +} + +// WatchBackUnbacked is a free log subscription operation binding the contract event 0x281596e92b2d974beb7d4f124df30a0b39067b096893e95011ce4bdad798b759. +// +// Solidity: event BackUnbacked(address indexed reserve, address indexed backer, uint256 amount, uint256 fee) +func (_Lendingpool *LendingpoolFilterer) WatchBackUnbacked(opts *bind.WatchOpts, sink chan<- *LendingpoolBackUnbacked, reserve []common.Address, backer []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var backerRule []interface{} + for _, backerItem := range backer { + backerRule = append(backerRule, backerItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "BackUnbacked", reserveRule, backerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolBackUnbacked) + if err := _Lendingpool.contract.UnpackLog(event, "BackUnbacked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBackUnbacked is a log parse operation binding the contract event 0x281596e92b2d974beb7d4f124df30a0b39067b096893e95011ce4bdad798b759. +// +// Solidity: event BackUnbacked(address indexed reserve, address indexed backer, uint256 amount, uint256 fee) +func (_Lendingpool *LendingpoolFilterer) ParseBackUnbacked(log types.Log) (*LendingpoolBackUnbacked, error) { + event := new(LendingpoolBackUnbacked) + if err := _Lendingpool.contract.UnpackLog(event, "BackUnbacked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolBorrowIterator is returned from FilterBorrow and is used to iterate over the raw logs and unpacked data for Borrow events raised by the Lendingpool contract. +type LendingpoolBorrowIterator struct { + Event *LendingpoolBorrow // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolBorrowIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolBorrow) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolBorrow) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolBorrowIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolBorrowIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolBorrow represents a Borrow event raised by the Lendingpool contract. +type LendingpoolBorrow struct { + Reserve common.Address + User common.Address + OnBehalfOf common.Address + Amount *big.Int + InterestRateMode uint8 + BorrowRate *big.Int + ReferralCode uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBorrow is a free log retrieval operation binding the contract event 0xb3d084820fb1a9decffb176436bd02558d15fac9b0ddfed8c465bc7359d7dce0. +// +// Solidity: event Borrow(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint8 interestRateMode, uint256 borrowRate, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) FilterBorrow(opts *bind.FilterOpts, reserve []common.Address, onBehalfOf []common.Address, referralCode []uint16) (*LendingpoolBorrowIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + var onBehalfOfRule []interface{} + for _, onBehalfOfItem := range onBehalfOf { + onBehalfOfRule = append(onBehalfOfRule, onBehalfOfItem) + } + + var referralCodeRule []interface{} + for _, referralCodeItem := range referralCode { + referralCodeRule = append(referralCodeRule, referralCodeItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "Borrow", reserveRule, onBehalfOfRule, referralCodeRule) + if err != nil { + return nil, err + } + return &LendingpoolBorrowIterator{contract: _Lendingpool.contract, event: "Borrow", logs: logs, sub: sub}, nil +} + +// WatchBorrow is a free log subscription operation binding the contract event 0xb3d084820fb1a9decffb176436bd02558d15fac9b0ddfed8c465bc7359d7dce0. +// +// Solidity: event Borrow(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint8 interestRateMode, uint256 borrowRate, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) WatchBorrow(opts *bind.WatchOpts, sink chan<- *LendingpoolBorrow, reserve []common.Address, onBehalfOf []common.Address, referralCode []uint16) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + var onBehalfOfRule []interface{} + for _, onBehalfOfItem := range onBehalfOf { + onBehalfOfRule = append(onBehalfOfRule, onBehalfOfItem) + } + + var referralCodeRule []interface{} + for _, referralCodeItem := range referralCode { + referralCodeRule = append(referralCodeRule, referralCodeItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "Borrow", reserveRule, onBehalfOfRule, referralCodeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolBorrow) + if err := _Lendingpool.contract.UnpackLog(event, "Borrow", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBorrow is a log parse operation binding the contract event 0xb3d084820fb1a9decffb176436bd02558d15fac9b0ddfed8c465bc7359d7dce0. +// +// Solidity: event Borrow(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint8 interestRateMode, uint256 borrowRate, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) ParseBorrow(log types.Log) (*LendingpoolBorrow, error) { + event := new(LendingpoolBorrow) + if err := _Lendingpool.contract.UnpackLog(event, "Borrow", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolFlashLoanIterator is returned from FilterFlashLoan and is used to iterate over the raw logs and unpacked data for FlashLoan events raised by the Lendingpool contract. +type LendingpoolFlashLoanIterator struct { + Event *LendingpoolFlashLoan // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolFlashLoanIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolFlashLoan) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolFlashLoan) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolFlashLoanIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolFlashLoanIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolFlashLoan represents a FlashLoan event raised by the Lendingpool contract. +type LendingpoolFlashLoan struct { + Target common.Address + Initiator common.Address + Asset common.Address + Amount *big.Int + InterestRateMode uint8 + Premium *big.Int + ReferralCode uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFlashLoan is a free log retrieval operation binding the contract event 0xefefaba5e921573100900a3ad9cf29f222d995fb3b6045797eaea7521bd8d6f0. +// +// Solidity: event FlashLoan(address indexed target, address initiator, address indexed asset, uint256 amount, uint8 interestRateMode, uint256 premium, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) FilterFlashLoan(opts *bind.FilterOpts, target []common.Address, asset []common.Address, referralCode []uint16) (*LendingpoolFlashLoanIterator, error) { + + var targetRule []interface{} + for _, targetItem := range target { + targetRule = append(targetRule, targetItem) + } + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + var referralCodeRule []interface{} + for _, referralCodeItem := range referralCode { + referralCodeRule = append(referralCodeRule, referralCodeItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "FlashLoan", targetRule, assetRule, referralCodeRule) + if err != nil { + return nil, err + } + return &LendingpoolFlashLoanIterator{contract: _Lendingpool.contract, event: "FlashLoan", logs: logs, sub: sub}, nil +} + +// WatchFlashLoan is a free log subscription operation binding the contract event 0xefefaba5e921573100900a3ad9cf29f222d995fb3b6045797eaea7521bd8d6f0. +// +// Solidity: event FlashLoan(address indexed target, address initiator, address indexed asset, uint256 amount, uint8 interestRateMode, uint256 premium, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) WatchFlashLoan(opts *bind.WatchOpts, sink chan<- *LendingpoolFlashLoan, target []common.Address, asset []common.Address, referralCode []uint16) (event.Subscription, error) { + + var targetRule []interface{} + for _, targetItem := range target { + targetRule = append(targetRule, targetItem) + } + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + var referralCodeRule []interface{} + for _, referralCodeItem := range referralCode { + referralCodeRule = append(referralCodeRule, referralCodeItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "FlashLoan", targetRule, assetRule, referralCodeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolFlashLoan) + if err := _Lendingpool.contract.UnpackLog(event, "FlashLoan", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFlashLoan is a log parse operation binding the contract event 0xefefaba5e921573100900a3ad9cf29f222d995fb3b6045797eaea7521bd8d6f0. +// +// Solidity: event FlashLoan(address indexed target, address initiator, address indexed asset, uint256 amount, uint8 interestRateMode, uint256 premium, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) ParseFlashLoan(log types.Log) (*LendingpoolFlashLoan, error) { + event := new(LendingpoolFlashLoan) + if err := _Lendingpool.contract.UnpackLog(event, "FlashLoan", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolIsolationModeTotalDebtUpdatedIterator is returned from FilterIsolationModeTotalDebtUpdated and is used to iterate over the raw logs and unpacked data for IsolationModeTotalDebtUpdated events raised by the Lendingpool contract. +type LendingpoolIsolationModeTotalDebtUpdatedIterator struct { + Event *LendingpoolIsolationModeTotalDebtUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolIsolationModeTotalDebtUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolIsolationModeTotalDebtUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolIsolationModeTotalDebtUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolIsolationModeTotalDebtUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolIsolationModeTotalDebtUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolIsolationModeTotalDebtUpdated represents a IsolationModeTotalDebtUpdated event raised by the Lendingpool contract. +type LendingpoolIsolationModeTotalDebtUpdated struct { + Asset common.Address + TotalDebt *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterIsolationModeTotalDebtUpdated is a free log retrieval operation binding the contract event 0xaef84d3b40895fd58c561f3998000f0583abb992a52fbdc99ace8e8de4d676a5. +// +// Solidity: event IsolationModeTotalDebtUpdated(address indexed asset, uint256 totalDebt) +func (_Lendingpool *LendingpoolFilterer) FilterIsolationModeTotalDebtUpdated(opts *bind.FilterOpts, asset []common.Address) (*LendingpoolIsolationModeTotalDebtUpdatedIterator, error) { + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "IsolationModeTotalDebtUpdated", assetRule) + if err != nil { + return nil, err + } + return &LendingpoolIsolationModeTotalDebtUpdatedIterator{contract: _Lendingpool.contract, event: "IsolationModeTotalDebtUpdated", logs: logs, sub: sub}, nil +} + +// WatchIsolationModeTotalDebtUpdated is a free log subscription operation binding the contract event 0xaef84d3b40895fd58c561f3998000f0583abb992a52fbdc99ace8e8de4d676a5. +// +// Solidity: event IsolationModeTotalDebtUpdated(address indexed asset, uint256 totalDebt) +func (_Lendingpool *LendingpoolFilterer) WatchIsolationModeTotalDebtUpdated(opts *bind.WatchOpts, sink chan<- *LendingpoolIsolationModeTotalDebtUpdated, asset []common.Address) (event.Subscription, error) { + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "IsolationModeTotalDebtUpdated", assetRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolIsolationModeTotalDebtUpdated) + if err := _Lendingpool.contract.UnpackLog(event, "IsolationModeTotalDebtUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseIsolationModeTotalDebtUpdated is a log parse operation binding the contract event 0xaef84d3b40895fd58c561f3998000f0583abb992a52fbdc99ace8e8de4d676a5. +// +// Solidity: event IsolationModeTotalDebtUpdated(address indexed asset, uint256 totalDebt) +func (_Lendingpool *LendingpoolFilterer) ParseIsolationModeTotalDebtUpdated(log types.Log) (*LendingpoolIsolationModeTotalDebtUpdated, error) { + event := new(LendingpoolIsolationModeTotalDebtUpdated) + if err := _Lendingpool.contract.UnpackLog(event, "IsolationModeTotalDebtUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolLiquidationCallIterator is returned from FilterLiquidationCall and is used to iterate over the raw logs and unpacked data for LiquidationCall events raised by the Lendingpool contract. +type LendingpoolLiquidationCallIterator struct { + Event *LendingpoolLiquidationCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolLiquidationCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolLiquidationCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolLiquidationCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolLiquidationCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolLiquidationCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolLiquidationCall represents a LiquidationCall event raised by the Lendingpool contract. +type LendingpoolLiquidationCall struct { + CollateralAsset common.Address + DebtAsset common.Address + User common.Address + DebtToCover *big.Int + LiquidatedCollateralAmount *big.Int + Liquidator common.Address + ReceiveAToken bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLiquidationCall is a free log retrieval operation binding the contract event 0xe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286. +// +// Solidity: event LiquidationCall(address indexed collateralAsset, address indexed debtAsset, address indexed user, uint256 debtToCover, uint256 liquidatedCollateralAmount, address liquidator, bool receiveAToken) +func (_Lendingpool *LendingpoolFilterer) FilterLiquidationCall(opts *bind.FilterOpts, collateralAsset []common.Address, debtAsset []common.Address, user []common.Address) (*LendingpoolLiquidationCallIterator, error) { + + var collateralAssetRule []interface{} + for _, collateralAssetItem := range collateralAsset { + collateralAssetRule = append(collateralAssetRule, collateralAssetItem) + } + var debtAssetRule []interface{} + for _, debtAssetItem := range debtAsset { + debtAssetRule = append(debtAssetRule, debtAssetItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "LiquidationCall", collateralAssetRule, debtAssetRule, userRule) + if err != nil { + return nil, err + } + return &LendingpoolLiquidationCallIterator{contract: _Lendingpool.contract, event: "LiquidationCall", logs: logs, sub: sub}, nil +} + +// WatchLiquidationCall is a free log subscription operation binding the contract event 0xe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286. +// +// Solidity: event LiquidationCall(address indexed collateralAsset, address indexed debtAsset, address indexed user, uint256 debtToCover, uint256 liquidatedCollateralAmount, address liquidator, bool receiveAToken) +func (_Lendingpool *LendingpoolFilterer) WatchLiquidationCall(opts *bind.WatchOpts, sink chan<- *LendingpoolLiquidationCall, collateralAsset []common.Address, debtAsset []common.Address, user []common.Address) (event.Subscription, error) { + + var collateralAssetRule []interface{} + for _, collateralAssetItem := range collateralAsset { + collateralAssetRule = append(collateralAssetRule, collateralAssetItem) + } + var debtAssetRule []interface{} + for _, debtAssetItem := range debtAsset { + debtAssetRule = append(debtAssetRule, debtAssetItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "LiquidationCall", collateralAssetRule, debtAssetRule, userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolLiquidationCall) + if err := _Lendingpool.contract.UnpackLog(event, "LiquidationCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLiquidationCall is a log parse operation binding the contract event 0xe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286. +// +// Solidity: event LiquidationCall(address indexed collateralAsset, address indexed debtAsset, address indexed user, uint256 debtToCover, uint256 liquidatedCollateralAmount, address liquidator, bool receiveAToken) +func (_Lendingpool *LendingpoolFilterer) ParseLiquidationCall(log types.Log) (*LendingpoolLiquidationCall, error) { + event := new(LendingpoolLiquidationCall) + if err := _Lendingpool.contract.UnpackLog(event, "LiquidationCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolMintUnbackedIterator is returned from FilterMintUnbacked and is used to iterate over the raw logs and unpacked data for MintUnbacked events raised by the Lendingpool contract. +type LendingpoolMintUnbackedIterator struct { + Event *LendingpoolMintUnbacked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolMintUnbackedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolMintUnbacked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolMintUnbacked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolMintUnbackedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolMintUnbackedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolMintUnbacked represents a MintUnbacked event raised by the Lendingpool contract. +type LendingpoolMintUnbacked struct { + Reserve common.Address + User common.Address + OnBehalfOf common.Address + Amount *big.Int + ReferralCode uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMintUnbacked is a free log retrieval operation binding the contract event 0xf25af37b3d3ec226063dc9bdc103ece7eb110a50f340fe854bb7bc1b0676d7d0. +// +// Solidity: event MintUnbacked(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) FilterMintUnbacked(opts *bind.FilterOpts, reserve []common.Address, onBehalfOf []common.Address, referralCode []uint16) (*LendingpoolMintUnbackedIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + var onBehalfOfRule []interface{} + for _, onBehalfOfItem := range onBehalfOf { + onBehalfOfRule = append(onBehalfOfRule, onBehalfOfItem) + } + + var referralCodeRule []interface{} + for _, referralCodeItem := range referralCode { + referralCodeRule = append(referralCodeRule, referralCodeItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "MintUnbacked", reserveRule, onBehalfOfRule, referralCodeRule) + if err != nil { + return nil, err + } + return &LendingpoolMintUnbackedIterator{contract: _Lendingpool.contract, event: "MintUnbacked", logs: logs, sub: sub}, nil +} + +// WatchMintUnbacked is a free log subscription operation binding the contract event 0xf25af37b3d3ec226063dc9bdc103ece7eb110a50f340fe854bb7bc1b0676d7d0. +// +// Solidity: event MintUnbacked(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) WatchMintUnbacked(opts *bind.WatchOpts, sink chan<- *LendingpoolMintUnbacked, reserve []common.Address, onBehalfOf []common.Address, referralCode []uint16) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + var onBehalfOfRule []interface{} + for _, onBehalfOfItem := range onBehalfOf { + onBehalfOfRule = append(onBehalfOfRule, onBehalfOfItem) + } + + var referralCodeRule []interface{} + for _, referralCodeItem := range referralCode { + referralCodeRule = append(referralCodeRule, referralCodeItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "MintUnbacked", reserveRule, onBehalfOfRule, referralCodeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolMintUnbacked) + if err := _Lendingpool.contract.UnpackLog(event, "MintUnbacked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMintUnbacked is a log parse operation binding the contract event 0xf25af37b3d3ec226063dc9bdc103ece7eb110a50f340fe854bb7bc1b0676d7d0. +// +// Solidity: event MintUnbacked(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) ParseMintUnbacked(log types.Log) (*LendingpoolMintUnbacked, error) { + event := new(LendingpoolMintUnbacked) + if err := _Lendingpool.contract.UnpackLog(event, "MintUnbacked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolMintedToTreasuryIterator is returned from FilterMintedToTreasury and is used to iterate over the raw logs and unpacked data for MintedToTreasury events raised by the Lendingpool contract. +type LendingpoolMintedToTreasuryIterator struct { + Event *LendingpoolMintedToTreasury // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolMintedToTreasuryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolMintedToTreasury) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolMintedToTreasury) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolMintedToTreasuryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolMintedToTreasuryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolMintedToTreasury represents a MintedToTreasury event raised by the Lendingpool contract. +type LendingpoolMintedToTreasury struct { + Reserve common.Address + AmountMinted *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMintedToTreasury is a free log retrieval operation binding the contract event 0xbfa21aa5d5f9a1f0120a95e7c0749f389863cbdbfff531aa7339077a5bc919de. +// +// Solidity: event MintedToTreasury(address indexed reserve, uint256 amountMinted) +func (_Lendingpool *LendingpoolFilterer) FilterMintedToTreasury(opts *bind.FilterOpts, reserve []common.Address) (*LendingpoolMintedToTreasuryIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "MintedToTreasury", reserveRule) + if err != nil { + return nil, err + } + return &LendingpoolMintedToTreasuryIterator{contract: _Lendingpool.contract, event: "MintedToTreasury", logs: logs, sub: sub}, nil +} + +// WatchMintedToTreasury is a free log subscription operation binding the contract event 0xbfa21aa5d5f9a1f0120a95e7c0749f389863cbdbfff531aa7339077a5bc919de. +// +// Solidity: event MintedToTreasury(address indexed reserve, uint256 amountMinted) +func (_Lendingpool *LendingpoolFilterer) WatchMintedToTreasury(opts *bind.WatchOpts, sink chan<- *LendingpoolMintedToTreasury, reserve []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "MintedToTreasury", reserveRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolMintedToTreasury) + if err := _Lendingpool.contract.UnpackLog(event, "MintedToTreasury", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMintedToTreasury is a log parse operation binding the contract event 0xbfa21aa5d5f9a1f0120a95e7c0749f389863cbdbfff531aa7339077a5bc919de. +// +// Solidity: event MintedToTreasury(address indexed reserve, uint256 amountMinted) +func (_Lendingpool *LendingpoolFilterer) ParseMintedToTreasury(log types.Log) (*LendingpoolMintedToTreasury, error) { + event := new(LendingpoolMintedToTreasury) + if err := _Lendingpool.contract.UnpackLog(event, "MintedToTreasury", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolRebalanceStableBorrowRateIterator is returned from FilterRebalanceStableBorrowRate and is used to iterate over the raw logs and unpacked data for RebalanceStableBorrowRate events raised by the Lendingpool contract. +type LendingpoolRebalanceStableBorrowRateIterator struct { + Event *LendingpoolRebalanceStableBorrowRate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolRebalanceStableBorrowRateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolRebalanceStableBorrowRate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolRebalanceStableBorrowRate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolRebalanceStableBorrowRateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolRebalanceStableBorrowRateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolRebalanceStableBorrowRate represents a RebalanceStableBorrowRate event raised by the Lendingpool contract. +type LendingpoolRebalanceStableBorrowRate struct { + Reserve common.Address + User common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRebalanceStableBorrowRate is a free log retrieval operation binding the contract event 0x9f439ae0c81e41a04d3fdfe07aed54e6a179fb0db15be7702eb66fa8ef6f5300. +// +// Solidity: event RebalanceStableBorrowRate(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) FilterRebalanceStableBorrowRate(opts *bind.FilterOpts, reserve []common.Address, user []common.Address) (*LendingpoolRebalanceStableBorrowRateIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "RebalanceStableBorrowRate", reserveRule, userRule) + if err != nil { + return nil, err + } + return &LendingpoolRebalanceStableBorrowRateIterator{contract: _Lendingpool.contract, event: "RebalanceStableBorrowRate", logs: logs, sub: sub}, nil +} + +// WatchRebalanceStableBorrowRate is a free log subscription operation binding the contract event 0x9f439ae0c81e41a04d3fdfe07aed54e6a179fb0db15be7702eb66fa8ef6f5300. +// +// Solidity: event RebalanceStableBorrowRate(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) WatchRebalanceStableBorrowRate(opts *bind.WatchOpts, sink chan<- *LendingpoolRebalanceStableBorrowRate, reserve []common.Address, user []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "RebalanceStableBorrowRate", reserveRule, userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolRebalanceStableBorrowRate) + if err := _Lendingpool.contract.UnpackLog(event, "RebalanceStableBorrowRate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRebalanceStableBorrowRate is a log parse operation binding the contract event 0x9f439ae0c81e41a04d3fdfe07aed54e6a179fb0db15be7702eb66fa8ef6f5300. +// +// Solidity: event RebalanceStableBorrowRate(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) ParseRebalanceStableBorrowRate(log types.Log) (*LendingpoolRebalanceStableBorrowRate, error) { + event := new(LendingpoolRebalanceStableBorrowRate) + if err := _Lendingpool.contract.UnpackLog(event, "RebalanceStableBorrowRate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolRepayIterator is returned from FilterRepay and is used to iterate over the raw logs and unpacked data for Repay events raised by the Lendingpool contract. +type LendingpoolRepayIterator struct { + Event *LendingpoolRepay // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolRepayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolRepay) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolRepay) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolRepayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolRepayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolRepay represents a Repay event raised by the Lendingpool contract. +type LendingpoolRepay struct { + Reserve common.Address + User common.Address + Repayer common.Address + Amount *big.Int + UseATokens bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRepay is a free log retrieval operation binding the contract event 0xa534c8dbe71f871f9f3530e97a74601fea17b426cae02e1c5aee42c96c784051. +// +// Solidity: event Repay(address indexed reserve, address indexed user, address indexed repayer, uint256 amount, bool useATokens) +func (_Lendingpool *LendingpoolFilterer) FilterRepay(opts *bind.FilterOpts, reserve []common.Address, user []common.Address, repayer []common.Address) (*LendingpoolRepayIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var repayerRule []interface{} + for _, repayerItem := range repayer { + repayerRule = append(repayerRule, repayerItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "Repay", reserveRule, userRule, repayerRule) + if err != nil { + return nil, err + } + return &LendingpoolRepayIterator{contract: _Lendingpool.contract, event: "Repay", logs: logs, sub: sub}, nil +} + +// WatchRepay is a free log subscription operation binding the contract event 0xa534c8dbe71f871f9f3530e97a74601fea17b426cae02e1c5aee42c96c784051. +// +// Solidity: event Repay(address indexed reserve, address indexed user, address indexed repayer, uint256 amount, bool useATokens) +func (_Lendingpool *LendingpoolFilterer) WatchRepay(opts *bind.WatchOpts, sink chan<- *LendingpoolRepay, reserve []common.Address, user []common.Address, repayer []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var repayerRule []interface{} + for _, repayerItem := range repayer { + repayerRule = append(repayerRule, repayerItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "Repay", reserveRule, userRule, repayerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolRepay) + if err := _Lendingpool.contract.UnpackLog(event, "Repay", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRepay is a log parse operation binding the contract event 0xa534c8dbe71f871f9f3530e97a74601fea17b426cae02e1c5aee42c96c784051. +// +// Solidity: event Repay(address indexed reserve, address indexed user, address indexed repayer, uint256 amount, bool useATokens) +func (_Lendingpool *LendingpoolFilterer) ParseRepay(log types.Log) (*LendingpoolRepay, error) { + event := new(LendingpoolRepay) + if err := _Lendingpool.contract.UnpackLog(event, "Repay", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolReserveDataUpdatedIterator is returned from FilterReserveDataUpdated and is used to iterate over the raw logs and unpacked data for ReserveDataUpdated events raised by the Lendingpool contract. +type LendingpoolReserveDataUpdatedIterator struct { + Event *LendingpoolReserveDataUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolReserveDataUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolReserveDataUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolReserveDataUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolReserveDataUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolReserveDataUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolReserveDataUpdated represents a ReserveDataUpdated event raised by the Lendingpool contract. +type LendingpoolReserveDataUpdated struct { + Reserve common.Address + LiquidityRate *big.Int + StableBorrowRate *big.Int + VariableBorrowRate *big.Int + LiquidityIndex *big.Int + VariableBorrowIndex *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReserveDataUpdated is a free log retrieval operation binding the contract event 0x804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a. +// +// Solidity: event ReserveDataUpdated(address indexed reserve, uint256 liquidityRate, uint256 stableBorrowRate, uint256 variableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex) +func (_Lendingpool *LendingpoolFilterer) FilterReserveDataUpdated(opts *bind.FilterOpts, reserve []common.Address) (*LendingpoolReserveDataUpdatedIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "ReserveDataUpdated", reserveRule) + if err != nil { + return nil, err + } + return &LendingpoolReserveDataUpdatedIterator{contract: _Lendingpool.contract, event: "ReserveDataUpdated", logs: logs, sub: sub}, nil +} + +// WatchReserveDataUpdated is a free log subscription operation binding the contract event 0x804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a. +// +// Solidity: event ReserveDataUpdated(address indexed reserve, uint256 liquidityRate, uint256 stableBorrowRate, uint256 variableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex) +func (_Lendingpool *LendingpoolFilterer) WatchReserveDataUpdated(opts *bind.WatchOpts, sink chan<- *LendingpoolReserveDataUpdated, reserve []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "ReserveDataUpdated", reserveRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolReserveDataUpdated) + if err := _Lendingpool.contract.UnpackLog(event, "ReserveDataUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReserveDataUpdated is a log parse operation binding the contract event 0x804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a. +// +// Solidity: event ReserveDataUpdated(address indexed reserve, uint256 liquidityRate, uint256 stableBorrowRate, uint256 variableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex) +func (_Lendingpool *LendingpoolFilterer) ParseReserveDataUpdated(log types.Log) (*LendingpoolReserveDataUpdated, error) { + event := new(LendingpoolReserveDataUpdated) + if err := _Lendingpool.contract.UnpackLog(event, "ReserveDataUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolReserveUsedAsCollateralDisabledIterator is returned from FilterReserveUsedAsCollateralDisabled and is used to iterate over the raw logs and unpacked data for ReserveUsedAsCollateralDisabled events raised by the Lendingpool contract. +type LendingpoolReserveUsedAsCollateralDisabledIterator struct { + Event *LendingpoolReserveUsedAsCollateralDisabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolReserveUsedAsCollateralDisabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolReserveUsedAsCollateralDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolReserveUsedAsCollateralDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolReserveUsedAsCollateralDisabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolReserveUsedAsCollateralDisabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolReserveUsedAsCollateralDisabled represents a ReserveUsedAsCollateralDisabled event raised by the Lendingpool contract. +type LendingpoolReserveUsedAsCollateralDisabled struct { + Reserve common.Address + User common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReserveUsedAsCollateralDisabled is a free log retrieval operation binding the contract event 0x44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd. +// +// Solidity: event ReserveUsedAsCollateralDisabled(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) FilterReserveUsedAsCollateralDisabled(opts *bind.FilterOpts, reserve []common.Address, user []common.Address) (*LendingpoolReserveUsedAsCollateralDisabledIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "ReserveUsedAsCollateralDisabled", reserveRule, userRule) + if err != nil { + return nil, err + } + return &LendingpoolReserveUsedAsCollateralDisabledIterator{contract: _Lendingpool.contract, event: "ReserveUsedAsCollateralDisabled", logs: logs, sub: sub}, nil +} + +// WatchReserveUsedAsCollateralDisabled is a free log subscription operation binding the contract event 0x44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd. +// +// Solidity: event ReserveUsedAsCollateralDisabled(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) WatchReserveUsedAsCollateralDisabled(opts *bind.WatchOpts, sink chan<- *LendingpoolReserveUsedAsCollateralDisabled, reserve []common.Address, user []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "ReserveUsedAsCollateralDisabled", reserveRule, userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolReserveUsedAsCollateralDisabled) + if err := _Lendingpool.contract.UnpackLog(event, "ReserveUsedAsCollateralDisabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReserveUsedAsCollateralDisabled is a log parse operation binding the contract event 0x44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd. +// +// Solidity: event ReserveUsedAsCollateralDisabled(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) ParseReserveUsedAsCollateralDisabled(log types.Log) (*LendingpoolReserveUsedAsCollateralDisabled, error) { + event := new(LendingpoolReserveUsedAsCollateralDisabled) + if err := _Lendingpool.contract.UnpackLog(event, "ReserveUsedAsCollateralDisabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolReserveUsedAsCollateralEnabledIterator is returned from FilterReserveUsedAsCollateralEnabled and is used to iterate over the raw logs and unpacked data for ReserveUsedAsCollateralEnabled events raised by the Lendingpool contract. +type LendingpoolReserveUsedAsCollateralEnabledIterator struct { + Event *LendingpoolReserveUsedAsCollateralEnabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolReserveUsedAsCollateralEnabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolReserveUsedAsCollateralEnabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolReserveUsedAsCollateralEnabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolReserveUsedAsCollateralEnabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolReserveUsedAsCollateralEnabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolReserveUsedAsCollateralEnabled represents a ReserveUsedAsCollateralEnabled event raised by the Lendingpool contract. +type LendingpoolReserveUsedAsCollateralEnabled struct { + Reserve common.Address + User common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReserveUsedAsCollateralEnabled is a free log retrieval operation binding the contract event 0x00058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f2. +// +// Solidity: event ReserveUsedAsCollateralEnabled(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) FilterReserveUsedAsCollateralEnabled(opts *bind.FilterOpts, reserve []common.Address, user []common.Address) (*LendingpoolReserveUsedAsCollateralEnabledIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "ReserveUsedAsCollateralEnabled", reserveRule, userRule) + if err != nil { + return nil, err + } + return &LendingpoolReserveUsedAsCollateralEnabledIterator{contract: _Lendingpool.contract, event: "ReserveUsedAsCollateralEnabled", logs: logs, sub: sub}, nil +} + +// WatchReserveUsedAsCollateralEnabled is a free log subscription operation binding the contract event 0x00058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f2. +// +// Solidity: event ReserveUsedAsCollateralEnabled(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) WatchReserveUsedAsCollateralEnabled(opts *bind.WatchOpts, sink chan<- *LendingpoolReserveUsedAsCollateralEnabled, reserve []common.Address, user []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "ReserveUsedAsCollateralEnabled", reserveRule, userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolReserveUsedAsCollateralEnabled) + if err := _Lendingpool.contract.UnpackLog(event, "ReserveUsedAsCollateralEnabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReserveUsedAsCollateralEnabled is a log parse operation binding the contract event 0x00058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f2. +// +// Solidity: event ReserveUsedAsCollateralEnabled(address indexed reserve, address indexed user) +func (_Lendingpool *LendingpoolFilterer) ParseReserveUsedAsCollateralEnabled(log types.Log) (*LendingpoolReserveUsedAsCollateralEnabled, error) { + event := new(LendingpoolReserveUsedAsCollateralEnabled) + if err := _Lendingpool.contract.UnpackLog(event, "ReserveUsedAsCollateralEnabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolSupplyIterator is returned from FilterSupply and is used to iterate over the raw logs and unpacked data for Supply events raised by the Lendingpool contract. +type LendingpoolSupplyIterator struct { + Event *LendingpoolSupply // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolSupplyIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolSupply) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolSupply) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolSupplyIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolSupplyIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolSupply represents a Supply event raised by the Lendingpool contract. +type LendingpoolSupply struct { + Reserve common.Address + User common.Address + OnBehalfOf common.Address + Amount *big.Int + ReferralCode uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSupply is a free log retrieval operation binding the contract event 0x2b627736bca15cd5381dcf80b0bf11fd197d01a037c52b927a881a10fb73ba61. +// +// Solidity: event Supply(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) FilterSupply(opts *bind.FilterOpts, reserve []common.Address, onBehalfOf []common.Address, referralCode []uint16) (*LendingpoolSupplyIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + var onBehalfOfRule []interface{} + for _, onBehalfOfItem := range onBehalfOf { + onBehalfOfRule = append(onBehalfOfRule, onBehalfOfItem) + } + + var referralCodeRule []interface{} + for _, referralCodeItem := range referralCode { + referralCodeRule = append(referralCodeRule, referralCodeItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "Supply", reserveRule, onBehalfOfRule, referralCodeRule) + if err != nil { + return nil, err + } + return &LendingpoolSupplyIterator{contract: _Lendingpool.contract, event: "Supply", logs: logs, sub: sub}, nil +} + +// WatchSupply is a free log subscription operation binding the contract event 0x2b627736bca15cd5381dcf80b0bf11fd197d01a037c52b927a881a10fb73ba61. +// +// Solidity: event Supply(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) WatchSupply(opts *bind.WatchOpts, sink chan<- *LendingpoolSupply, reserve []common.Address, onBehalfOf []common.Address, referralCode []uint16) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + + var onBehalfOfRule []interface{} + for _, onBehalfOfItem := range onBehalfOf { + onBehalfOfRule = append(onBehalfOfRule, onBehalfOfItem) + } + + var referralCodeRule []interface{} + for _, referralCodeItem := range referralCode { + referralCodeRule = append(referralCodeRule, referralCodeItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "Supply", reserveRule, onBehalfOfRule, referralCodeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolSupply) + if err := _Lendingpool.contract.UnpackLog(event, "Supply", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSupply is a log parse operation binding the contract event 0x2b627736bca15cd5381dcf80b0bf11fd197d01a037c52b927a881a10fb73ba61. +// +// Solidity: event Supply(address indexed reserve, address user, address indexed onBehalfOf, uint256 amount, uint16 indexed referralCode) +func (_Lendingpool *LendingpoolFilterer) ParseSupply(log types.Log) (*LendingpoolSupply, error) { + event := new(LendingpoolSupply) + if err := _Lendingpool.contract.UnpackLog(event, "Supply", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolSwapBorrowRateModeIterator is returned from FilterSwapBorrowRateMode and is used to iterate over the raw logs and unpacked data for SwapBorrowRateMode events raised by the Lendingpool contract. +type LendingpoolSwapBorrowRateModeIterator struct { + Event *LendingpoolSwapBorrowRateMode // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolSwapBorrowRateModeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolSwapBorrowRateMode) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolSwapBorrowRateMode) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolSwapBorrowRateModeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolSwapBorrowRateModeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolSwapBorrowRateMode represents a SwapBorrowRateMode event raised by the Lendingpool contract. +type LendingpoolSwapBorrowRateMode struct { + Reserve common.Address + User common.Address + InterestRateMode uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSwapBorrowRateMode is a free log retrieval operation binding the contract event 0x7962b394d85a534033ba2efcf43cd36de57b7ebeb3de0ca4428965d9b3ddc481. +// +// Solidity: event SwapBorrowRateMode(address indexed reserve, address indexed user, uint8 interestRateMode) +func (_Lendingpool *LendingpoolFilterer) FilterSwapBorrowRateMode(opts *bind.FilterOpts, reserve []common.Address, user []common.Address) (*LendingpoolSwapBorrowRateModeIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "SwapBorrowRateMode", reserveRule, userRule) + if err != nil { + return nil, err + } + return &LendingpoolSwapBorrowRateModeIterator{contract: _Lendingpool.contract, event: "SwapBorrowRateMode", logs: logs, sub: sub}, nil +} + +// WatchSwapBorrowRateMode is a free log subscription operation binding the contract event 0x7962b394d85a534033ba2efcf43cd36de57b7ebeb3de0ca4428965d9b3ddc481. +// +// Solidity: event SwapBorrowRateMode(address indexed reserve, address indexed user, uint8 interestRateMode) +func (_Lendingpool *LendingpoolFilterer) WatchSwapBorrowRateMode(opts *bind.WatchOpts, sink chan<- *LendingpoolSwapBorrowRateMode, reserve []common.Address, user []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "SwapBorrowRateMode", reserveRule, userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolSwapBorrowRateMode) + if err := _Lendingpool.contract.UnpackLog(event, "SwapBorrowRateMode", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSwapBorrowRateMode is a log parse operation binding the contract event 0x7962b394d85a534033ba2efcf43cd36de57b7ebeb3de0ca4428965d9b3ddc481. +// +// Solidity: event SwapBorrowRateMode(address indexed reserve, address indexed user, uint8 interestRateMode) +func (_Lendingpool *LendingpoolFilterer) ParseSwapBorrowRateMode(log types.Log) (*LendingpoolSwapBorrowRateMode, error) { + event := new(LendingpoolSwapBorrowRateMode) + if err := _Lendingpool.contract.UnpackLog(event, "SwapBorrowRateMode", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolUserEModeSetIterator is returned from FilterUserEModeSet and is used to iterate over the raw logs and unpacked data for UserEModeSet events raised by the Lendingpool contract. +type LendingpoolUserEModeSetIterator struct { + Event *LendingpoolUserEModeSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolUserEModeSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolUserEModeSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolUserEModeSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolUserEModeSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolUserEModeSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolUserEModeSet represents a UserEModeSet event raised by the Lendingpool contract. +type LendingpoolUserEModeSet struct { + User common.Address + CategoryId uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUserEModeSet is a free log retrieval operation binding the contract event 0xd728da875fc88944cbf17638bcbe4af0eedaef63becd1d1c57cc097eb4608d84. +// +// Solidity: event UserEModeSet(address indexed user, uint8 categoryId) +func (_Lendingpool *LendingpoolFilterer) FilterUserEModeSet(opts *bind.FilterOpts, user []common.Address) (*LendingpoolUserEModeSetIterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "UserEModeSet", userRule) + if err != nil { + return nil, err + } + return &LendingpoolUserEModeSetIterator{contract: _Lendingpool.contract, event: "UserEModeSet", logs: logs, sub: sub}, nil +} + +// WatchUserEModeSet is a free log subscription operation binding the contract event 0xd728da875fc88944cbf17638bcbe4af0eedaef63becd1d1c57cc097eb4608d84. +// +// Solidity: event UserEModeSet(address indexed user, uint8 categoryId) +func (_Lendingpool *LendingpoolFilterer) WatchUserEModeSet(opts *bind.WatchOpts, sink chan<- *LendingpoolUserEModeSet, user []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "UserEModeSet", userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolUserEModeSet) + if err := _Lendingpool.contract.UnpackLog(event, "UserEModeSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUserEModeSet is a log parse operation binding the contract event 0xd728da875fc88944cbf17638bcbe4af0eedaef63becd1d1c57cc097eb4608d84. +// +// Solidity: event UserEModeSet(address indexed user, uint8 categoryId) +func (_Lendingpool *LendingpoolFilterer) ParseUserEModeSet(log types.Log) (*LendingpoolUserEModeSet, error) { + event := new(LendingpoolUserEModeSet) + if err := _Lendingpool.contract.UnpackLog(event, "UserEModeSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LendingpoolWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the Lendingpool contract. +type LendingpoolWithdrawIterator struct { + Event *LendingpoolWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LendingpoolWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LendingpoolWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LendingpoolWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LendingpoolWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LendingpoolWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LendingpoolWithdraw represents a Withdraw event raised by the Lendingpool contract. +type LendingpoolWithdraw struct { + Reserve common.Address + User common.Address + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f7. +// +// Solidity: event Withdraw(address indexed reserve, address indexed user, address indexed to, uint256 amount) +func (_Lendingpool *LendingpoolFilterer) FilterWithdraw(opts *bind.FilterOpts, reserve []common.Address, user []common.Address, to []common.Address) (*LendingpoolWithdrawIterator, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Lendingpool.contract.FilterLogs(opts, "Withdraw", reserveRule, userRule, toRule) + if err != nil { + return nil, err + } + return &LendingpoolWithdrawIterator{contract: _Lendingpool.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f7. +// +// Solidity: event Withdraw(address indexed reserve, address indexed user, address indexed to, uint256 amount) +func (_Lendingpool *LendingpoolFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *LendingpoolWithdraw, reserve []common.Address, user []common.Address, to []common.Address) (event.Subscription, error) { + + var reserveRule []interface{} + for _, reserveItem := range reserve { + reserveRule = append(reserveRule, reserveItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Lendingpool.contract.WatchLogs(opts, "Withdraw", reserveRule, userRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LendingpoolWithdraw) + if err := _Lendingpool.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f7. +// +// Solidity: event Withdraw(address indexed reserve, address indexed user, address indexed to, uint256 amount) +func (_Lendingpool *LendingpoolFilterer) ParseWithdraw(log types.Log) (*LendingpoolWithdraw, error) { + event := new(LendingpoolWithdraw) + if err := _Lendingpool.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + diff --git a/utils/provider/bridge/li/li.go b/utils/provider/bridge/li/li.go index 38e2608..0c04125 100644 --- a/utils/provider/bridge/li/li.go +++ b/utils/provider/bridge/li/li.go @@ -79,8 +79,8 @@ func (l Li) Swap(ctx context.Context, args provider.SwapParams) (result provider var ( targetChain = l.conf.GetChainConfig(args.TargetChain) tokenOut = l.conf.GetTokenInfoOnChain(args.TargetToken, targetChain.Name) - tokenOutAmount = args.Amount - tokenOutAmountWei = decimal.NewFromBigInt(chains.EthToWei(tokenOutAmount, tokenOut.Decimals), 0) + tokenOutAmount decimal.Decimal + tokenOutAmountWei decimal.Decimal tokenIn configs.Token tokenInAmount decimal.Decimal tokenInAmountWei decimal.Decimal