2019-07-02 07:28:57 +00:00
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package ierc20
import (
"math/big"
"strings"
2020-09-15 11:46:28 +00:00
"github.com/ethereum/go-ethereum/common/hexutil"
2019-07-02 07:28:57 +00:00
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 (
_ = big . NewInt
_ = strings . NewReader
_ = ethereum . NotFound
_ = abi . U256
_ = bind . Bind
_ = common . Big1
_ = types . BloomLookup
_ = event . NewSubscription
)
// IERC20ABI is the input ABI used to generate the binding from.
const IERC20ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"
// IERC20Bin is the compiled bytecode used for deploying new contracts.
const IERC20Bin = ` 0x `
// DeployIERC20 deploys a new Ethereum contract, binding an instance of IERC20 to it.
func DeployIERC20 ( auth * bind . TransactOpts , backend bind . ContractBackend ) ( common . Address , * types . Transaction , * IERC20 , error ) {
parsed , err := abi . JSON ( strings . NewReader ( IERC20ABI ) )
if err != nil {
return common . Address { } , nil , nil , err
}
address , tx , contract , err := bind . DeployContract ( auth , parsed , common . FromHex ( IERC20Bin ) , backend )
if err != nil {
return common . Address { } , nil , nil , err
}
return address , tx , & IERC20 { IERC20Caller : IERC20Caller { contract : contract } , IERC20Transactor : IERC20Transactor { contract : contract } , IERC20Filterer : IERC20Filterer { contract : contract } } , nil
}
// IERC20 is an auto generated Go binding around an Ethereum contract.
type IERC20 struct {
IERC20Caller // Read-only binding to the contract
IERC20Transactor // Write-only binding to the contract
IERC20Filterer // Log filterer for contract events
}
// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract.
type IERC20Caller struct {
contract * bind . BoundContract // Generic contract wrapper for the low level calls
}
// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract.
type IERC20Transactor struct {
contract * bind . BoundContract // Generic contract wrapper for the low level calls
}
// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
type IERC20Filterer struct {
contract * bind . BoundContract // Generic contract wrapper for the low level calls
}
// IERC20Session is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type IERC20Session struct {
Contract * IERC20 // 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
}
// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type IERC20CallerSession struct {
Contract * IERC20Caller // Generic contract caller binding to set the session for
CallOpts bind . CallOpts // Call options to use throughout this session
}
// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type IERC20TransactorSession struct {
Contract * IERC20Transactor // Generic contract transactor binding to set the session for
TransactOpts bind . TransactOpts // Transaction auth options to use throughout this session
}
// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract.
type IERC20Raw struct {
Contract * IERC20 // Generic contract binding to access the raw methods on
}
// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type IERC20CallerRaw struct {
Contract * IERC20Caller // Generic read-only contract binding to access the raw methods on
}
// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type IERC20TransactorRaw struct {
Contract * IERC20Transactor // Generic write-only contract binding to access the raw methods on
}
// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract.
func NewIERC20 ( address common . Address , backend bind . ContractBackend ) ( * IERC20 , error ) {
contract , err := bindIERC20 ( address , backend , backend , backend )
if err != nil {
return nil , err
}
return & IERC20 { IERC20Caller : IERC20Caller { contract : contract } , IERC20Transactor : IERC20Transactor { contract : contract } , IERC20Filterer : IERC20Filterer { contract : contract } } , nil
}
// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract.
func NewIERC20Caller ( address common . Address , caller bind . ContractCaller ) ( * IERC20Caller , error ) {
contract , err := bindIERC20 ( address , caller , nil , nil )
if err != nil {
return nil , err
}
return & IERC20Caller { contract : contract } , nil
}
// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract.
func NewIERC20Transactor ( address common . Address , transactor bind . ContractTransactor ) ( * IERC20Transactor , error ) {
contract , err := bindIERC20 ( address , nil , transactor , nil )
if err != nil {
return nil , err
}
return & IERC20Transactor { contract : contract } , nil
}
// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract.
func NewIERC20Filterer ( address common . Address , filterer bind . ContractFilterer ) ( * IERC20Filterer , error ) {
contract , err := bindIERC20 ( address , nil , nil , filterer )
if err != nil {
return nil , err
}
return & IERC20Filterer { contract : contract } , nil
}
// bindIERC20 binds a generic wrapper to an already deployed contract.
func bindIERC20 ( address common . Address , caller bind . ContractCaller , transactor bind . ContractTransactor , filterer bind . ContractFilterer ) ( * bind . BoundContract , error ) {
parsed , err := abi . JSON ( strings . NewReader ( IERC20ABI ) )
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 ( _IERC20 * IERC20Raw ) Call ( opts * bind . CallOpts , result interface { } , method string , params ... interface { } ) error {
return _IERC20 . Contract . IERC20Caller . 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 ( _IERC20 * IERC20Raw ) Transfer ( opts * bind . TransactOpts ) ( * types . Transaction , error ) {
return _IERC20 . Contract . IERC20Transactor . contract . Transfer ( opts )
}
// Transact invokes the (paid) contract method with params as input values.
func ( _IERC20 * IERC20Raw ) Transact ( opts * bind . TransactOpts , method string , params ... interface { } ) ( * types . Transaction , error ) {
return _IERC20 . Contract . IERC20Transactor . 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 ( _IERC20 * IERC20CallerRaw ) Call ( opts * bind . CallOpts , result interface { } , method string , params ... interface { } ) error {
return _IERC20 . 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 ( _IERC20 * IERC20TransactorRaw ) Transfer ( opts * bind . TransactOpts ) ( * types . Transaction , error ) {
return _IERC20 . Contract . contract . Transfer ( opts )
}
// Transact invokes the (paid) contract method with params as input values.
func ( _IERC20 * IERC20TransactorRaw ) Transact ( opts * bind . TransactOpts , method string , params ... interface { } ) ( * types . Transaction , error ) {
return _IERC20 . Contract . contract . Transact ( opts , method , params ... )
}
// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) constant returns(uint256)
func ( _IERC20 * IERC20Caller ) Allowance ( opts * bind . CallOpts , owner common . Address , spender common . Address ) ( * big . Int , error ) {
var (
ret0 = new ( * big . Int )
)
out := ret0
err := _IERC20 . contract . Call ( opts , out , "allowance" , owner , spender )
return * ret0 , err
}
// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) constant returns(uint256)
func ( _IERC20 * IERC20Session ) Allowance ( owner common . Address , spender common . Address ) ( * big . Int , error ) {
return _IERC20 . Contract . Allowance ( & _IERC20 . CallOpts , owner , spender )
}
// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) constant returns(uint256)
func ( _IERC20 * IERC20CallerSession ) Allowance ( owner common . Address , spender common . Address ) ( * big . Int , error ) {
return _IERC20 . Contract . Allowance ( & _IERC20 . CallOpts , owner , spender )
}
// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) constant returns(uint256)
2020-09-15 11:46:28 +00:00
func ( _IERC20 * IERC20Caller ) BalanceOf ( opts * bind . CallOpts , account common . Address ) ( * hexutil . Big , error ) {
2019-07-02 07:28:57 +00:00
var (
ret0 = new ( * big . Int )
)
out := ret0
err := _IERC20 . contract . Call ( opts , out , "balanceOf" , account )
2020-09-15 11:46:28 +00:00
return ( * hexutil . Big ) ( * ret0 ) , err
2019-07-02 07:28:57 +00:00
}
// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) constant returns(uint256)
2020-09-15 11:46:28 +00:00
func ( _IERC20 * IERC20Session ) BalanceOf ( account common . Address ) ( * hexutil . Big , error ) {
2019-07-02 07:28:57 +00:00
return _IERC20 . Contract . BalanceOf ( & _IERC20 . CallOpts , account )
}
// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) constant returns(uint256)
2020-09-15 11:46:28 +00:00
func ( _IERC20 * IERC20CallerSession ) BalanceOf ( account common . Address ) ( * hexutil . Big , error ) {
2019-07-02 07:28:57 +00:00
return _IERC20 . Contract . BalanceOf ( & _IERC20 . CallOpts , account )
}
// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
//
// Solidity: function totalSupply() constant returns(uint256)
func ( _IERC20 * IERC20Caller ) TotalSupply ( opts * bind . CallOpts ) ( * big . Int , error ) {
var (
ret0 = new ( * big . Int )
)
out := ret0
err := _IERC20 . contract . Call ( opts , out , "totalSupply" )
return * ret0 , err
}
// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
//
// Solidity: function totalSupply() constant returns(uint256)
func ( _IERC20 * IERC20Session ) TotalSupply ( ) ( * big . Int , error ) {
return _IERC20 . Contract . TotalSupply ( & _IERC20 . CallOpts )
}
// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
//
// Solidity: function totalSupply() constant returns(uint256)
func ( _IERC20 * IERC20CallerSession ) TotalSupply ( ) ( * big . Int , error ) {
return _IERC20 . Contract . TotalSupply ( & _IERC20 . CallOpts )
}
// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 amount) returns(bool)
func ( _IERC20 * IERC20Transactor ) Approve ( opts * bind . TransactOpts , spender common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . contract . Transact ( opts , "approve" , spender , amount )
}
// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 amount) returns(bool)
func ( _IERC20 * IERC20Session ) Approve ( spender common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . Contract . Approve ( & _IERC20 . TransactOpts , spender , amount )
}
// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 amount) returns(bool)
func ( _IERC20 * IERC20TransactorSession ) Approve ( spender common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . Contract . Approve ( & _IERC20 . TransactOpts , spender , amount )
}
// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address recipient, uint256 amount) returns(bool)
func ( _IERC20 * IERC20Transactor ) Transfer ( opts * bind . TransactOpts , recipient common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . contract . Transact ( opts , "transfer" , recipient , amount )
}
// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address recipient, uint256 amount) returns(bool)
func ( _IERC20 * IERC20Session ) Transfer ( recipient common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . Contract . Transfer ( & _IERC20 . TransactOpts , recipient , amount )
}
// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address recipient, uint256 amount) returns(bool)
func ( _IERC20 * IERC20TransactorSession ) Transfer ( recipient common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . Contract . Transfer ( & _IERC20 . TransactOpts , recipient , amount )
}
// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
func ( _IERC20 * IERC20Transactor ) TransferFrom ( opts * bind . TransactOpts , sender common . Address , recipient common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . contract . Transact ( opts , "transferFrom" , sender , recipient , amount )
}
// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
func ( _IERC20 * IERC20Session ) TransferFrom ( sender common . Address , recipient common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . Contract . TransferFrom ( & _IERC20 . TransactOpts , sender , recipient , amount )
}
// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
func ( _IERC20 * IERC20TransactorSession ) TransferFrom ( sender common . Address , recipient common . Address , amount * big . Int ) ( * types . Transaction , error ) {
return _IERC20 . Contract . TransferFrom ( & _IERC20 . TransactOpts , sender , recipient , amount )
}
// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract.
type IERC20ApprovalIterator struct {
Event * IERC20Approval // 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 * IERC20ApprovalIterator ) 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 ( IERC20Approval )
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 ( IERC20Approval )
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 * IERC20ApprovalIterator ) Error ( ) error {
return it . fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func ( it * IERC20ApprovalIterator ) Close ( ) error {
it . sub . Unsubscribe ( )
return nil
}
// IERC20Approval represents a Approval event raised by the IERC20 contract.
type IERC20Approval struct {
Owner common . Address
Spender common . Address
Value * big . Int
Raw types . Log // Blockchain specific contextual infos
}
// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
//
// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
func ( _IERC20 * IERC20Filterer ) FilterApproval ( opts * bind . FilterOpts , owner [ ] common . Address , spender [ ] common . Address ) ( * IERC20ApprovalIterator , error ) {
var ownerRule [ ] interface { }
for _ , ownerItem := range owner {
ownerRule = append ( ownerRule , ownerItem )
}
var spenderRule [ ] interface { }
for _ , spenderItem := range spender {
spenderRule = append ( spenderRule , spenderItem )
}
logs , sub , err := _IERC20 . contract . FilterLogs ( opts , "Approval" , ownerRule , spenderRule )
if err != nil {
return nil , err
}
return & IERC20ApprovalIterator { contract : _IERC20 . contract , event : "Approval" , logs : logs , sub : sub } , nil
}
// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
//
// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
func ( _IERC20 * IERC20Filterer ) WatchApproval ( opts * bind . WatchOpts , sink chan <- * IERC20Approval , owner [ ] common . Address , spender [ ] common . Address ) ( event . Subscription , error ) {
var ownerRule [ ] interface { }
for _ , ownerItem := range owner {
ownerRule = append ( ownerRule , ownerItem )
}
var spenderRule [ ] interface { }
for _ , spenderItem := range spender {
spenderRule = append ( spenderRule , spenderItem )
}
logs , sub , err := _IERC20 . contract . WatchLogs ( opts , "Approval" , ownerRule , spenderRule )
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 ( IERC20Approval )
if err := _IERC20 . contract . UnpackLog ( event , "Approval" , 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
}
// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract.
type IERC20TransferIterator struct {
Event * IERC20Transfer // 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 * IERC20TransferIterator ) 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 ( IERC20Transfer )
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 ( IERC20Transfer )
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 * IERC20TransferIterator ) Error ( ) error {
return it . fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func ( it * IERC20TransferIterator ) Close ( ) error {
it . sub . Unsubscribe ( )
return nil
}
// IERC20Transfer represents a Transfer event raised by the IERC20 contract.
type IERC20Transfer struct {
From common . Address
To common . Address
Value * big . Int
Raw types . Log // Blockchain specific contextual infos
}
// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
//
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
func ( _IERC20 * IERC20Filterer ) FilterTransfer ( opts * bind . FilterOpts , from [ ] common . Address , to [ ] common . Address ) ( * IERC20TransferIterator , error ) {
var fromRule [ ] interface { }
for _ , fromItem := range from {
fromRule = append ( fromRule , fromItem )
}
var toRule [ ] interface { }
for _ , toItem := range to {
toRule = append ( toRule , toItem )
}
logs , sub , err := _IERC20 . contract . FilterLogs ( opts , "Transfer" , fromRule , toRule )
if err != nil {
return nil , err
}
return & IERC20TransferIterator { contract : _IERC20 . contract , event : "Transfer" , logs : logs , sub : sub } , nil
}
// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
//
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
func ( _IERC20 * IERC20Filterer ) WatchTransfer ( opts * bind . WatchOpts , sink chan <- * IERC20Transfer , from [ ] common . Address , to [ ] common . Address ) ( event . Subscription , error ) {
var fromRule [ ] interface { }
for _ , fromItem := range from {
fromRule = append ( fromRule , fromItem )
}
var toRule [ ] interface { }
for _ , toItem := range to {
toRule = append ( toRule , toItem )
}
logs , sub , err := _IERC20 . contract . WatchLogs ( opts , "Transfer" , fromRule , 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 ( IERC20Transfer )
if err := _IERC20 . contract . UnpackLog ( event , "Transfer" , 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
}