github.com/Onther-Tech/plasma-evm@v0.0.0-rc7.7/contracts/plasma/rootchainregistry/rootchainregistry.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package rootchainregistry
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	"github.com/Onther-Tech/plasma-evm"
    11  	"github.com/Onther-Tech/plasma-evm/accounts/abi"
    12  	"github.com/Onther-Tech/plasma-evm/accounts/abi/bind"
    13  	"github.com/Onther-Tech/plasma-evm/common"
    14  	"github.com/Onther-Tech/plasma-evm/core/types"
    15  	"github.com/Onther-Tech/plasma-evm/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = abi.U256
    24  	_ = bind.Bind
    25  	_ = common.Big1
    26  	_ = types.BloomLookup
    27  	_ = event.NewSubscription
    28  )
    29  
    30  // ContextABI is the input ABI used to generate the binding from.
    31  const ContextABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
    32  
    33  // Context is an auto generated Go binding around an Ethereum contract.
    34  type Context struct {
    35  	ContextCaller     // Read-only binding to the contract
    36  	ContextTransactor // Write-only binding to the contract
    37  	ContextFilterer   // Log filterer for contract events
    38  }
    39  
    40  // ContextCaller is an auto generated read-only Go binding around an Ethereum contract.
    41  type ContextCaller struct {
    42  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    43  }
    44  
    45  // ContextTransactor is an auto generated write-only Go binding around an Ethereum contract.
    46  type ContextTransactor struct {
    47  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    48  }
    49  
    50  // ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    51  type ContextFilterer struct {
    52  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    53  }
    54  
    55  // ContextSession is an auto generated Go binding around an Ethereum contract,
    56  // with pre-set call and transact options.
    57  type ContextSession struct {
    58  	Contract     *Context          // Generic contract binding to set the session for
    59  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    60  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    61  }
    62  
    63  // ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    64  // with pre-set call options.
    65  type ContextCallerSession struct {
    66  	Contract *ContextCaller // Generic contract caller binding to set the session for
    67  	CallOpts bind.CallOpts  // Call options to use throughout this session
    68  }
    69  
    70  // ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    71  // with pre-set transact options.
    72  type ContextTransactorSession struct {
    73  	Contract     *ContextTransactor // Generic contract transactor binding to set the session for
    74  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    75  }
    76  
    77  // ContextRaw is an auto generated low-level Go binding around an Ethereum contract.
    78  type ContextRaw struct {
    79  	Contract *Context // Generic contract binding to access the raw methods on
    80  }
    81  
    82  // ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    83  type ContextCallerRaw struct {
    84  	Contract *ContextCaller // Generic read-only contract binding to access the raw methods on
    85  }
    86  
    87  // ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    88  type ContextTransactorRaw struct {
    89  	Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on
    90  }
    91  
    92  // NewContext creates a new instance of Context, bound to a specific deployed contract.
    93  func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) {
    94  	contract, err := bindContext(address, backend, backend, backend)
    95  	if err != nil {
    96  		return nil, err
    97  	}
    98  	return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil
    99  }
   100  
   101  // NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract.
   102  func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) {
   103  	contract, err := bindContext(address, caller, nil, nil)
   104  	if err != nil {
   105  		return nil, err
   106  	}
   107  	return &ContextCaller{contract: contract}, nil
   108  }
   109  
   110  // NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract.
   111  func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) {
   112  	contract, err := bindContext(address, nil, transactor, nil)
   113  	if err != nil {
   114  		return nil, err
   115  	}
   116  	return &ContextTransactor{contract: contract}, nil
   117  }
   118  
   119  // NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract.
   120  func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) {
   121  	contract, err := bindContext(address, nil, nil, filterer)
   122  	if err != nil {
   123  		return nil, err
   124  	}
   125  	return &ContextFilterer{contract: contract}, nil
   126  }
   127  
   128  // bindContext binds a generic wrapper to an already deployed contract.
   129  func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   130  	parsed, err := abi.JSON(strings.NewReader(ContextABI))
   131  	if err != nil {
   132  		return nil, err
   133  	}
   134  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   135  }
   136  
   137  // Call invokes the (constant) contract method with params as input values and
   138  // sets the output to result. The result type might be a single field for simple
   139  // returns, a slice of interfaces for anonymous returns and a struct for named
   140  // returns.
   141  func (_Context *ContextRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   142  	return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...)
   143  }
   144  
   145  // Transfer initiates a plain transaction to move funds to the contract, calling
   146  // its default method if one is available.
   147  func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   148  	return _Context.Contract.ContextTransactor.contract.Transfer(opts)
   149  }
   150  
   151  // Transact invokes the (paid) contract method with params as input values.
   152  func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   153  	return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...)
   154  }
   155  
   156  // Call invokes the (constant) contract method with params as input values and
   157  // sets the output to result. The result type might be a single field for simple
   158  // returns, a slice of interfaces for anonymous returns and a struct for named
   159  // returns.
   160  func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   161  	return _Context.Contract.contract.Call(opts, result, method, params...)
   162  }
   163  
   164  // Transfer initiates a plain transaction to move funds to the contract, calling
   165  // its default method if one is available.
   166  func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   167  	return _Context.Contract.contract.Transfer(opts)
   168  }
   169  
   170  // Transact invokes the (paid) contract method with params as input values.
   171  func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   172  	return _Context.Contract.contract.Transact(opts, method, params...)
   173  }
   174  
   175  // OwnableABI is the input ABI used to generate the binding from.
   176  const OwnableABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
   177  
   178  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
   179  var OwnableFuncSigs = map[string]string{
   180  	"8f32d59b": "isOwner()",
   181  	"8da5cb5b": "owner()",
   182  	"715018a6": "renounceOwnership()",
   183  	"f2fde38b": "transferOwnership(address)",
   184  }
   185  
   186  // Ownable is an auto generated Go binding around an Ethereum contract.
   187  type Ownable struct {
   188  	OwnableCaller     // Read-only binding to the contract
   189  	OwnableTransactor // Write-only binding to the contract
   190  	OwnableFilterer   // Log filterer for contract events
   191  }
   192  
   193  // OwnableCaller is an auto generated read-only Go binding around an Ethereum contract.
   194  type OwnableCaller struct {
   195  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   196  }
   197  
   198  // OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract.
   199  type OwnableTransactor struct {
   200  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   201  }
   202  
   203  // OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   204  type OwnableFilterer struct {
   205  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   206  }
   207  
   208  // OwnableSession is an auto generated Go binding around an Ethereum contract,
   209  // with pre-set call and transact options.
   210  type OwnableSession struct {
   211  	Contract     *Ownable          // Generic contract binding to set the session for
   212  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   213  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   214  }
   215  
   216  // OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   217  // with pre-set call options.
   218  type OwnableCallerSession struct {
   219  	Contract *OwnableCaller // Generic contract caller binding to set the session for
   220  	CallOpts bind.CallOpts  // Call options to use throughout this session
   221  }
   222  
   223  // OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   224  // with pre-set transact options.
   225  type OwnableTransactorSession struct {
   226  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
   227  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   228  }
   229  
   230  // OwnableRaw is an auto generated low-level Go binding around an Ethereum contract.
   231  type OwnableRaw struct {
   232  	Contract *Ownable // Generic contract binding to access the raw methods on
   233  }
   234  
   235  // OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   236  type OwnableCallerRaw struct {
   237  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
   238  }
   239  
   240  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   241  type OwnableTransactorRaw struct {
   242  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
   243  }
   244  
   245  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
   246  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
   247  	contract, err := bindOwnable(address, backend, backend, backend)
   248  	if err != nil {
   249  		return nil, err
   250  	}
   251  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
   252  }
   253  
   254  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
   255  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
   256  	contract, err := bindOwnable(address, caller, nil, nil)
   257  	if err != nil {
   258  		return nil, err
   259  	}
   260  	return &OwnableCaller{contract: contract}, nil
   261  }
   262  
   263  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
   264  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
   265  	contract, err := bindOwnable(address, nil, transactor, nil)
   266  	if err != nil {
   267  		return nil, err
   268  	}
   269  	return &OwnableTransactor{contract: contract}, nil
   270  }
   271  
   272  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
   273  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
   274  	contract, err := bindOwnable(address, nil, nil, filterer)
   275  	if err != nil {
   276  		return nil, err
   277  	}
   278  	return &OwnableFilterer{contract: contract}, nil
   279  }
   280  
   281  // bindOwnable binds a generic wrapper to an already deployed contract.
   282  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   283  	parsed, err := abi.JSON(strings.NewReader(OwnableABI))
   284  	if err != nil {
   285  		return nil, err
   286  	}
   287  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   288  }
   289  
   290  // Call invokes the (constant) contract method with params as input values and
   291  // sets the output to result. The result type might be a single field for simple
   292  // returns, a slice of interfaces for anonymous returns and a struct for named
   293  // returns.
   294  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   295  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
   296  }
   297  
   298  // Transfer initiates a plain transaction to move funds to the contract, calling
   299  // its default method if one is available.
   300  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   301  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
   302  }
   303  
   304  // Transact invokes the (paid) contract method with params as input values.
   305  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   306  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
   307  }
   308  
   309  // Call invokes the (constant) contract method with params as input values and
   310  // sets the output to result. The result type might be a single field for simple
   311  // returns, a slice of interfaces for anonymous returns and a struct for named
   312  // returns.
   313  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   314  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
   315  }
   316  
   317  // Transfer initiates a plain transaction to move funds to the contract, calling
   318  // its default method if one is available.
   319  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   320  	return _Ownable.Contract.contract.Transfer(opts)
   321  }
   322  
   323  // Transact invokes the (paid) contract method with params as input values.
   324  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   325  	return _Ownable.Contract.contract.Transact(opts, method, params...)
   326  }
   327  
   328  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   329  //
   330  // Solidity: function isOwner() constant returns(bool)
   331  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
   332  	var (
   333  		ret0 = new(bool)
   334  	)
   335  	out := ret0
   336  	err := _Ownable.contract.Call(opts, out, "isOwner")
   337  	return *ret0, err
   338  }
   339  
   340  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   341  //
   342  // Solidity: function isOwner() constant returns(bool)
   343  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
   344  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
   345  }
   346  
   347  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   348  //
   349  // Solidity: function isOwner() constant returns(bool)
   350  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
   351  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
   352  }
   353  
   354  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   355  //
   356  // Solidity: function owner() constant returns(address)
   357  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
   358  	var (
   359  		ret0 = new(common.Address)
   360  	)
   361  	out := ret0
   362  	err := _Ownable.contract.Call(opts, out, "owner")
   363  	return *ret0, err
   364  }
   365  
   366  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   367  //
   368  // Solidity: function owner() constant returns(address)
   369  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
   370  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
   371  }
   372  
   373  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   374  //
   375  // Solidity: function owner() constant returns(address)
   376  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
   377  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
   378  }
   379  
   380  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
   381  //
   382  // Solidity: function renounceOwnership() returns()
   383  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
   384  	return _Ownable.contract.Transact(opts, "renounceOwnership")
   385  }
   386  
   387  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
   388  //
   389  // Solidity: function renounceOwnership() returns()
   390  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
   391  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
   392  }
   393  
   394  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
   395  //
   396  // Solidity: function renounceOwnership() returns()
   397  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
   398  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
   399  }
   400  
   401  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
   402  //
   403  // Solidity: function transferOwnership(address newOwner) returns()
   404  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
   405  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
   406  }
   407  
   408  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
   409  //
   410  // Solidity: function transferOwnership(address newOwner) returns()
   411  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
   412  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
   413  }
   414  
   415  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
   416  //
   417  // Solidity: function transferOwnership(address newOwner) returns()
   418  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
   419  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
   420  }
   421  
   422  // OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract.
   423  type OwnableOwnershipTransferredIterator struct {
   424  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
   425  
   426  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   427  	event    string              // Event name to use for unpacking event data
   428  
   429  	logs chan types.Log        // Log channel receiving the found contract events
   430  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   431  	done bool                  // Whether the subscription completed delivering logs
   432  	fail error                 // Occurred error to stop iteration
   433  }
   434  
   435  // Next advances the iterator to the subsequent event, returning whether there
   436  // are any more events found. In case of a retrieval or parsing error, false is
   437  // returned and Error() can be queried for the exact failure.
   438  func (it *OwnableOwnershipTransferredIterator) Next() bool {
   439  	// If the iterator failed, stop iterating
   440  	if it.fail != nil {
   441  		return false
   442  	}
   443  	// If the iterator completed, deliver directly whatever's available
   444  	if it.done {
   445  		select {
   446  		case log := <-it.logs:
   447  			it.Event = new(OwnableOwnershipTransferred)
   448  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   449  				it.fail = err
   450  				return false
   451  			}
   452  			it.Event.Raw = log
   453  			return true
   454  
   455  		default:
   456  			return false
   457  		}
   458  	}
   459  	// Iterator still in progress, wait for either a data or an error event
   460  	select {
   461  	case log := <-it.logs:
   462  		it.Event = new(OwnableOwnershipTransferred)
   463  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   464  			it.fail = err
   465  			return false
   466  		}
   467  		it.Event.Raw = log
   468  		return true
   469  
   470  	case err := <-it.sub.Err():
   471  		it.done = true
   472  		it.fail = err
   473  		return it.Next()
   474  	}
   475  }
   476  
   477  // Error returns any retrieval or parsing error occurred during filtering.
   478  func (it *OwnableOwnershipTransferredIterator) Error() error {
   479  	return it.fail
   480  }
   481  
   482  // Close terminates the iteration process, releasing any pending underlying
   483  // resources.
   484  func (it *OwnableOwnershipTransferredIterator) Close() error {
   485  	it.sub.Unsubscribe()
   486  	return nil
   487  }
   488  
   489  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
   490  type OwnableOwnershipTransferred struct {
   491  	PreviousOwner common.Address
   492  	NewOwner      common.Address
   493  	Raw           types.Log // Blockchain specific contextual infos
   494  }
   495  
   496  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   497  //
   498  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   499  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
   500  
   501  	var previousOwnerRule []interface{}
   502  	for _, previousOwnerItem := range previousOwner {
   503  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
   504  	}
   505  	var newOwnerRule []interface{}
   506  	for _, newOwnerItem := range newOwner {
   507  		newOwnerRule = append(newOwnerRule, newOwnerItem)
   508  	}
   509  
   510  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
   511  	if err != nil {
   512  		return nil, err
   513  	}
   514  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
   515  }
   516  
   517  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   518  //
   519  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   520  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
   521  
   522  	var previousOwnerRule []interface{}
   523  	for _, previousOwnerItem := range previousOwner {
   524  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
   525  	}
   526  	var newOwnerRule []interface{}
   527  	for _, newOwnerItem := range newOwner {
   528  		newOwnerRule = append(newOwnerRule, newOwnerItem)
   529  	}
   530  
   531  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
   532  	if err != nil {
   533  		return nil, err
   534  	}
   535  	return event.NewSubscription(func(quit <-chan struct{}) error {
   536  		defer sub.Unsubscribe()
   537  		for {
   538  			select {
   539  			case log := <-logs:
   540  				// New log arrived, parse the event and forward to the user
   541  				event := new(OwnableOwnershipTransferred)
   542  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
   543  					return err
   544  				}
   545  				event.Raw = log
   546  
   547  				select {
   548  				case sink <- event:
   549  				case err := <-sub.Err():
   550  					return err
   551  				case <-quit:
   552  					return nil
   553  				}
   554  			case err := <-sub.Err():
   555  				return err
   556  			case <-quit:
   557  				return nil
   558  			}
   559  		}
   560  	}), nil
   561  }
   562  
   563  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   564  //
   565  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   566  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
   567  	event := new(OwnableOwnershipTransferred)
   568  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
   569  		return nil, err
   570  	}
   571  	return event, nil
   572  }
   573  
   574  // RootChainIABI is the input ABI used to generate the binding from.
   575  const RootChainIABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"currentFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRootChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"}],\"name\":\"lastEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
   576  
   577  // RootChainIFuncSigs maps the 4-byte function signature to its string representation.
   578  var RootChainIFuncSigs = map[string]string{
   579  	"183d2d1c": "currentFork()",
   580  	"420bb4b8": "isRootChain()",
   581  	"11e4c914": "lastEpoch(uint256)",
   582  	"570ca735": "operator()",
   583  }
   584  
   585  // RootChainI is an auto generated Go binding around an Ethereum contract.
   586  type RootChainI struct {
   587  	RootChainICaller     // Read-only binding to the contract
   588  	RootChainITransactor // Write-only binding to the contract
   589  	RootChainIFilterer   // Log filterer for contract events
   590  }
   591  
   592  // RootChainICaller is an auto generated read-only Go binding around an Ethereum contract.
   593  type RootChainICaller struct {
   594  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   595  }
   596  
   597  // RootChainITransactor is an auto generated write-only Go binding around an Ethereum contract.
   598  type RootChainITransactor struct {
   599  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   600  }
   601  
   602  // RootChainIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   603  type RootChainIFilterer struct {
   604  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   605  }
   606  
   607  // RootChainISession is an auto generated Go binding around an Ethereum contract,
   608  // with pre-set call and transact options.
   609  type RootChainISession struct {
   610  	Contract     *RootChainI       // Generic contract binding to set the session for
   611  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   612  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   613  }
   614  
   615  // RootChainICallerSession is an auto generated read-only Go binding around an Ethereum contract,
   616  // with pre-set call options.
   617  type RootChainICallerSession struct {
   618  	Contract *RootChainICaller // Generic contract caller binding to set the session for
   619  	CallOpts bind.CallOpts     // Call options to use throughout this session
   620  }
   621  
   622  // RootChainITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   623  // with pre-set transact options.
   624  type RootChainITransactorSession struct {
   625  	Contract     *RootChainITransactor // Generic contract transactor binding to set the session for
   626  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
   627  }
   628  
   629  // RootChainIRaw is an auto generated low-level Go binding around an Ethereum contract.
   630  type RootChainIRaw struct {
   631  	Contract *RootChainI // Generic contract binding to access the raw methods on
   632  }
   633  
   634  // RootChainICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   635  type RootChainICallerRaw struct {
   636  	Contract *RootChainICaller // Generic read-only contract binding to access the raw methods on
   637  }
   638  
   639  // RootChainITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   640  type RootChainITransactorRaw struct {
   641  	Contract *RootChainITransactor // Generic write-only contract binding to access the raw methods on
   642  }
   643  
   644  // NewRootChainI creates a new instance of RootChainI, bound to a specific deployed contract.
   645  func NewRootChainI(address common.Address, backend bind.ContractBackend) (*RootChainI, error) {
   646  	contract, err := bindRootChainI(address, backend, backend, backend)
   647  	if err != nil {
   648  		return nil, err
   649  	}
   650  	return &RootChainI{RootChainICaller: RootChainICaller{contract: contract}, RootChainITransactor: RootChainITransactor{contract: contract}, RootChainIFilterer: RootChainIFilterer{contract: contract}}, nil
   651  }
   652  
   653  // NewRootChainICaller creates a new read-only instance of RootChainI, bound to a specific deployed contract.
   654  func NewRootChainICaller(address common.Address, caller bind.ContractCaller) (*RootChainICaller, error) {
   655  	contract, err := bindRootChainI(address, caller, nil, nil)
   656  	if err != nil {
   657  		return nil, err
   658  	}
   659  	return &RootChainICaller{contract: contract}, nil
   660  }
   661  
   662  // NewRootChainITransactor creates a new write-only instance of RootChainI, bound to a specific deployed contract.
   663  func NewRootChainITransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainITransactor, error) {
   664  	contract, err := bindRootChainI(address, nil, transactor, nil)
   665  	if err != nil {
   666  		return nil, err
   667  	}
   668  	return &RootChainITransactor{contract: contract}, nil
   669  }
   670  
   671  // NewRootChainIFilterer creates a new log filterer instance of RootChainI, bound to a specific deployed contract.
   672  func NewRootChainIFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainIFilterer, error) {
   673  	contract, err := bindRootChainI(address, nil, nil, filterer)
   674  	if err != nil {
   675  		return nil, err
   676  	}
   677  	return &RootChainIFilterer{contract: contract}, nil
   678  }
   679  
   680  // bindRootChainI binds a generic wrapper to an already deployed contract.
   681  func bindRootChainI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   682  	parsed, err := abi.JSON(strings.NewReader(RootChainIABI))
   683  	if err != nil {
   684  		return nil, err
   685  	}
   686  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   687  }
   688  
   689  // Call invokes the (constant) contract method with params as input values and
   690  // sets the output to result. The result type might be a single field for simple
   691  // returns, a slice of interfaces for anonymous returns and a struct for named
   692  // returns.
   693  func (_RootChainI *RootChainIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   694  	return _RootChainI.Contract.RootChainICaller.contract.Call(opts, result, method, params...)
   695  }
   696  
   697  // Transfer initiates a plain transaction to move funds to the contract, calling
   698  // its default method if one is available.
   699  func (_RootChainI *RootChainIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   700  	return _RootChainI.Contract.RootChainITransactor.contract.Transfer(opts)
   701  }
   702  
   703  // Transact invokes the (paid) contract method with params as input values.
   704  func (_RootChainI *RootChainIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   705  	return _RootChainI.Contract.RootChainITransactor.contract.Transact(opts, method, params...)
   706  }
   707  
   708  // Call invokes the (constant) contract method with params as input values and
   709  // sets the output to result. The result type might be a single field for simple
   710  // returns, a slice of interfaces for anonymous returns and a struct for named
   711  // returns.
   712  func (_RootChainI *RootChainICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   713  	return _RootChainI.Contract.contract.Call(opts, result, method, params...)
   714  }
   715  
   716  // Transfer initiates a plain transaction to move funds to the contract, calling
   717  // its default method if one is available.
   718  func (_RootChainI *RootChainITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   719  	return _RootChainI.Contract.contract.Transfer(opts)
   720  }
   721  
   722  // Transact invokes the (paid) contract method with params as input values.
   723  func (_RootChainI *RootChainITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   724  	return _RootChainI.Contract.contract.Transact(opts, method, params...)
   725  }
   726  
   727  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
   728  //
   729  // Solidity: function currentFork() constant returns(uint256)
   730  func (_RootChainI *RootChainICaller) CurrentFork(opts *bind.CallOpts) (*big.Int, error) {
   731  	var (
   732  		ret0 = new(*big.Int)
   733  	)
   734  	out := ret0
   735  	err := _RootChainI.contract.Call(opts, out, "currentFork")
   736  	return *ret0, err
   737  }
   738  
   739  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
   740  //
   741  // Solidity: function currentFork() constant returns(uint256)
   742  func (_RootChainI *RootChainISession) CurrentFork() (*big.Int, error) {
   743  	return _RootChainI.Contract.CurrentFork(&_RootChainI.CallOpts)
   744  }
   745  
   746  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
   747  //
   748  // Solidity: function currentFork() constant returns(uint256)
   749  func (_RootChainI *RootChainICallerSession) CurrentFork() (*big.Int, error) {
   750  	return _RootChainI.Contract.CurrentFork(&_RootChainI.CallOpts)
   751  }
   752  
   753  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
   754  //
   755  // Solidity: function isRootChain() constant returns(bool)
   756  func (_RootChainI *RootChainICaller) IsRootChain(opts *bind.CallOpts) (bool, error) {
   757  	var (
   758  		ret0 = new(bool)
   759  	)
   760  	out := ret0
   761  	err := _RootChainI.contract.Call(opts, out, "isRootChain")
   762  	return *ret0, err
   763  }
   764  
   765  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
   766  //
   767  // Solidity: function isRootChain() constant returns(bool)
   768  func (_RootChainI *RootChainISession) IsRootChain() (bool, error) {
   769  	return _RootChainI.Contract.IsRootChain(&_RootChainI.CallOpts)
   770  }
   771  
   772  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
   773  //
   774  // Solidity: function isRootChain() constant returns(bool)
   775  func (_RootChainI *RootChainICallerSession) IsRootChain() (bool, error) {
   776  	return _RootChainI.Contract.IsRootChain(&_RootChainI.CallOpts)
   777  }
   778  
   779  // LastEpoch is a free data retrieval call binding the contract method 0x11e4c914.
   780  //
   781  // Solidity: function lastEpoch(uint256 forkNumber) constant returns(uint256)
   782  func (_RootChainI *RootChainICaller) LastEpoch(opts *bind.CallOpts, forkNumber *big.Int) (*big.Int, error) {
   783  	var (
   784  		ret0 = new(*big.Int)
   785  	)
   786  	out := ret0
   787  	err := _RootChainI.contract.Call(opts, out, "lastEpoch", forkNumber)
   788  	return *ret0, err
   789  }
   790  
   791  // LastEpoch is a free data retrieval call binding the contract method 0x11e4c914.
   792  //
   793  // Solidity: function lastEpoch(uint256 forkNumber) constant returns(uint256)
   794  func (_RootChainI *RootChainISession) LastEpoch(forkNumber *big.Int) (*big.Int, error) {
   795  	return _RootChainI.Contract.LastEpoch(&_RootChainI.CallOpts, forkNumber)
   796  }
   797  
   798  // LastEpoch is a free data retrieval call binding the contract method 0x11e4c914.
   799  //
   800  // Solidity: function lastEpoch(uint256 forkNumber) constant returns(uint256)
   801  func (_RootChainI *RootChainICallerSession) LastEpoch(forkNumber *big.Int) (*big.Int, error) {
   802  	return _RootChainI.Contract.LastEpoch(&_RootChainI.CallOpts, forkNumber)
   803  }
   804  
   805  // Operator is a free data retrieval call binding the contract method 0x570ca735.
   806  //
   807  // Solidity: function operator() constant returns(address)
   808  func (_RootChainI *RootChainICaller) Operator(opts *bind.CallOpts) (common.Address, error) {
   809  	var (
   810  		ret0 = new(common.Address)
   811  	)
   812  	out := ret0
   813  	err := _RootChainI.contract.Call(opts, out, "operator")
   814  	return *ret0, err
   815  }
   816  
   817  // Operator is a free data retrieval call binding the contract method 0x570ca735.
   818  //
   819  // Solidity: function operator() constant returns(address)
   820  func (_RootChainI *RootChainISession) Operator() (common.Address, error) {
   821  	return _RootChainI.Contract.Operator(&_RootChainI.CallOpts)
   822  }
   823  
   824  // Operator is a free data retrieval call binding the contract method 0x570ca735.
   825  //
   826  // Solidity: function operator() constant returns(address)
   827  func (_RootChainI *RootChainICallerSession) Operator() (common.Address, error) {
   828  	return _RootChainI.Contract.Operator(&_RootChainI.CallOpts)
   829  }
   830  
   831  // RootChainRegistryABI is the input ABI used to generate the binding from.
   832  const RootChainRegistryABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seigManager\",\"type\":\"address\"}],\"name\":\"deployCoinage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"numRootChains\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seigManager\",\"type\":\"address\"}],\"name\":\"registerAndDeployCoinage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seigManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"commissionRate\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isCommissionRateNegative\",\"type\":\"bool\"}],\"name\":\"registerAndDeployCoinageAndSetCommissionRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"rootchainByIndex\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"rootchains\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"unregister\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
   833  
   834  // RootChainRegistryFuncSigs maps the 4-byte function signature to its string representation.
   835  var RootChainRegistryFuncSigs = map[string]string{
   836  	"85108604": "deployCoinage(address,address)",
   837  	"8f32d59b": "isOwner()",
   838  	"b2b604d0": "numRootChains()",
   839  	"8da5cb5b": "owner()",
   840  	"4420e486": "register(address)",
   841  	"bcb1a71e": "registerAndDeployCoinage(address,address)",
   842  	"3eb2a66c": "registerAndDeployCoinageAndSetCommissionRate(address,address,uint256,bool)",
   843  	"715018a6": "renounceOwnership()",
   844  	"821f602c": "rootchainByIndex(uint256)",
   845  	"02a15299": "rootchains(address)",
   846  	"f2fde38b": "transferOwnership(address)",
   847  	"2ec2c246": "unregister(address)",
   848  }
   849  
   850  // RootChainRegistryBin is the compiled bytecode used for deploying new contracts.
   851  var RootChainRegistryBin = "0x608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b610b5e806100796000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063851086041161007157806385108604146101c05780638da5cb5b146101ee5780638f32d59b146101f6578063b2b604d0146101fe578063bcb1a71e14610218578063f2fde38b14610246576100b4565b806302a15299146100b95780632ec2c246146100f35780633eb2a66c146101195780634420e48614610157578063715018a61461017d578063821f602c14610187575b600080fd5b6100df600480360360208110156100cf57600080fd5b50356001600160a01b031661026c565b604080519115158252519081900360200190f35b6100df6004803603602081101561010957600080fd5b50356001600160a01b031661028a565b6100df6004803603608081101561012f57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135151561032e565b6100df6004803603602081101561016d57600080fd5b50356001600160a01b031661043a565b610185610510565b005b6101a46004803603602081101561019d57600080fd5b50356105b3565b604080516001600160a01b039092168252519081900360200190f35b6100df600480360360408110156101d657600080fd5b506001600160a01b03813581169160200135166105ce565b6101a46106a6565b6100df6106b5565b6102066106d9565b60408051918252519081900360200190f35b6100df6004803603604081101561022e57600080fd5b506001600160a01b03813581169160200135166106df565b6101856004803603602081101561025c57600080fd5b50356001600160a01b03166107d4565b6001600160a01b031660009081526001602052604090205460ff1690565b60006102946106b5565b6102e5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03821660009081526001602052604090205460ff1661030a57600080fd5b6001600160a01b039091166000908152600160205260409020805460ff1916905590565b6000846103396106b5565b806103b95750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561038257600080fd5b505afa158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b50516001600160a01b0316145b6103f45760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b6103fd86610839565b61040657600080fd5b610410868661091b565b61041957600080fd5b610425868686866109a8565b61042e57600080fd5b50600195945050505050565b6000816104456106b5565b806104c55750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561048e57600080fd5b505afa1580156104a2573d6000803e3d6000fd5b505050506040513d60208110156104b857600080fd5b50516001600160a01b0316145b6105005760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b61050983610839565b9392505050565b6105186106b5565b610569576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000908152600360205260409020546001600160a01b031690565b6000826105d96106b5565b806106595750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561062257600080fd5b505afa158015610636573d6000803e3d6000fd5b505050506040513d602081101561064c57600080fd5b50516001600160a01b0316145b6106945760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b61069e848461091b565b949350505050565b6000546001600160a01b031690565b600080546001600160a01b03166106ca610a38565b6001600160a01b031614905090565b60025490565b6000826106ea6106b5565b8061076a5750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561073357600080fd5b505afa158015610747573d6000803e3d6000fd5b505050506040513d602081101561075d57600080fd5b50516001600160a01b0316145b6107a55760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b6107ae84610839565b6107b757600080fd5b6107c1848461091b565b6107ca57600080fd5b5060019392505050565b6107dc6106b5565b61082d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61083681610a3c565b50565b6001600160a01b03811660009081526001602052604081205460ff161561085f57600080fd5b816001600160a01b031663420bb4b86040518163ffffffff1660e01b815260040160206040518083038186803b15801561089857600080fd5b505afa1580156108ac573d6000803e3d6000fd5b505050506040513d60208110156108c257600080fd5b50516108cd57600080fd5b506001600160a01b03166000818152600160208181526040808420805460ff191684179055600280548552600390925290922080546001600160a01b03191690931790925580548201905590565b6000816001600160a01b031663833a774f846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050506040513d602081101561099f57600080fd5b50519392505050565b6040805163211276b360e11b81526001600160a01b0386811660048301526024820185905283151560448301529151600092861691634224ed6691606480830192602092919082900301818787803b158015610a0357600080fd5b505af1158015610a17573d6000803e3d6000fd5b505050506040513d6020811015610a2d57600080fd5b505195945050505050565b3390565b6001600160a01b038116610a815760405162461bcd60e51b8152600401808060200182810382526026815260200180610add6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737373656e646572206973206e656974686572206f70657261746f72206e6f72206f70657261746f72a265627a7a72315820c2d60bfe96bb4663b748cdbc2620c53b9a65806673ef97d3301d083a07c6ad7964736f6c634300050c0032"
   852  
   853  // DeployRootChainRegistry deploys a new Ethereum contract, binding an instance of RootChainRegistry to it.
   854  func DeployRootChainRegistry(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RootChainRegistry, error) {
   855  	parsed, err := abi.JSON(strings.NewReader(RootChainRegistryABI))
   856  	if err != nil {
   857  		return common.Address{}, nil, nil, err
   858  	}
   859  
   860  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RootChainRegistryBin), backend)
   861  	if err != nil {
   862  		return common.Address{}, nil, nil, err
   863  	}
   864  	return address, tx, &RootChainRegistry{RootChainRegistryCaller: RootChainRegistryCaller{contract: contract}, RootChainRegistryTransactor: RootChainRegistryTransactor{contract: contract}, RootChainRegistryFilterer: RootChainRegistryFilterer{contract: contract}}, nil
   865  }
   866  
   867  // RootChainRegistry is an auto generated Go binding around an Ethereum contract.
   868  type RootChainRegistry struct {
   869  	RootChainRegistryCaller     // Read-only binding to the contract
   870  	RootChainRegistryTransactor // Write-only binding to the contract
   871  	RootChainRegistryFilterer   // Log filterer for contract events
   872  }
   873  
   874  // RootChainRegistryCaller is an auto generated read-only Go binding around an Ethereum contract.
   875  type RootChainRegistryCaller struct {
   876  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   877  }
   878  
   879  // RootChainRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract.
   880  type RootChainRegistryTransactor struct {
   881  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   882  }
   883  
   884  // RootChainRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   885  type RootChainRegistryFilterer struct {
   886  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   887  }
   888  
   889  // RootChainRegistrySession is an auto generated Go binding around an Ethereum contract,
   890  // with pre-set call and transact options.
   891  type RootChainRegistrySession struct {
   892  	Contract     *RootChainRegistry // Generic contract binding to set the session for
   893  	CallOpts     bind.CallOpts      // Call options to use throughout this session
   894  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   895  }
   896  
   897  // RootChainRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   898  // with pre-set call options.
   899  type RootChainRegistryCallerSession struct {
   900  	Contract *RootChainRegistryCaller // Generic contract caller binding to set the session for
   901  	CallOpts bind.CallOpts            // Call options to use throughout this session
   902  }
   903  
   904  // RootChainRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   905  // with pre-set transact options.
   906  type RootChainRegistryTransactorSession struct {
   907  	Contract     *RootChainRegistryTransactor // Generic contract transactor binding to set the session for
   908  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
   909  }
   910  
   911  // RootChainRegistryRaw is an auto generated low-level Go binding around an Ethereum contract.
   912  type RootChainRegistryRaw struct {
   913  	Contract *RootChainRegistry // Generic contract binding to access the raw methods on
   914  }
   915  
   916  // RootChainRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   917  type RootChainRegistryCallerRaw struct {
   918  	Contract *RootChainRegistryCaller // Generic read-only contract binding to access the raw methods on
   919  }
   920  
   921  // RootChainRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   922  type RootChainRegistryTransactorRaw struct {
   923  	Contract *RootChainRegistryTransactor // Generic write-only contract binding to access the raw methods on
   924  }
   925  
   926  // NewRootChainRegistry creates a new instance of RootChainRegistry, bound to a specific deployed contract.
   927  func NewRootChainRegistry(address common.Address, backend bind.ContractBackend) (*RootChainRegistry, error) {
   928  	contract, err := bindRootChainRegistry(address, backend, backend, backend)
   929  	if err != nil {
   930  		return nil, err
   931  	}
   932  	return &RootChainRegistry{RootChainRegistryCaller: RootChainRegistryCaller{contract: contract}, RootChainRegistryTransactor: RootChainRegistryTransactor{contract: contract}, RootChainRegistryFilterer: RootChainRegistryFilterer{contract: contract}}, nil
   933  }
   934  
   935  // NewRootChainRegistryCaller creates a new read-only instance of RootChainRegistry, bound to a specific deployed contract.
   936  func NewRootChainRegistryCaller(address common.Address, caller bind.ContractCaller) (*RootChainRegistryCaller, error) {
   937  	contract, err := bindRootChainRegistry(address, caller, nil, nil)
   938  	if err != nil {
   939  		return nil, err
   940  	}
   941  	return &RootChainRegistryCaller{contract: contract}, nil
   942  }
   943  
   944  // NewRootChainRegistryTransactor creates a new write-only instance of RootChainRegistry, bound to a specific deployed contract.
   945  func NewRootChainRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainRegistryTransactor, error) {
   946  	contract, err := bindRootChainRegistry(address, nil, transactor, nil)
   947  	if err != nil {
   948  		return nil, err
   949  	}
   950  	return &RootChainRegistryTransactor{contract: contract}, nil
   951  }
   952  
   953  // NewRootChainRegistryFilterer creates a new log filterer instance of RootChainRegistry, bound to a specific deployed contract.
   954  func NewRootChainRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainRegistryFilterer, error) {
   955  	contract, err := bindRootChainRegistry(address, nil, nil, filterer)
   956  	if err != nil {
   957  		return nil, err
   958  	}
   959  	return &RootChainRegistryFilterer{contract: contract}, nil
   960  }
   961  
   962  // bindRootChainRegistry binds a generic wrapper to an already deployed contract.
   963  func bindRootChainRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   964  	parsed, err := abi.JSON(strings.NewReader(RootChainRegistryABI))
   965  	if err != nil {
   966  		return nil, err
   967  	}
   968  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   969  }
   970  
   971  // Call invokes the (constant) contract method with params as input values and
   972  // sets the output to result. The result type might be a single field for simple
   973  // returns, a slice of interfaces for anonymous returns and a struct for named
   974  // returns.
   975  func (_RootChainRegistry *RootChainRegistryRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   976  	return _RootChainRegistry.Contract.RootChainRegistryCaller.contract.Call(opts, result, method, params...)
   977  }
   978  
   979  // Transfer initiates a plain transaction to move funds to the contract, calling
   980  // its default method if one is available.
   981  func (_RootChainRegistry *RootChainRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   982  	return _RootChainRegistry.Contract.RootChainRegistryTransactor.contract.Transfer(opts)
   983  }
   984  
   985  // Transact invokes the (paid) contract method with params as input values.
   986  func (_RootChainRegistry *RootChainRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   987  	return _RootChainRegistry.Contract.RootChainRegistryTransactor.contract.Transact(opts, method, params...)
   988  }
   989  
   990  // Call invokes the (constant) contract method with params as input values and
   991  // sets the output to result. The result type might be a single field for simple
   992  // returns, a slice of interfaces for anonymous returns and a struct for named
   993  // returns.
   994  func (_RootChainRegistry *RootChainRegistryCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   995  	return _RootChainRegistry.Contract.contract.Call(opts, result, method, params...)
   996  }
   997  
   998  // Transfer initiates a plain transaction to move funds to the contract, calling
   999  // its default method if one is available.
  1000  func (_RootChainRegistry *RootChainRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1001  	return _RootChainRegistry.Contract.contract.Transfer(opts)
  1002  }
  1003  
  1004  // Transact invokes the (paid) contract method with params as input values.
  1005  func (_RootChainRegistry *RootChainRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1006  	return _RootChainRegistry.Contract.contract.Transact(opts, method, params...)
  1007  }
  1008  
  1009  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1010  //
  1011  // Solidity: function isOwner() constant returns(bool)
  1012  func (_RootChainRegistry *RootChainRegistryCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  1013  	var (
  1014  		ret0 = new(bool)
  1015  	)
  1016  	out := ret0
  1017  	err := _RootChainRegistry.contract.Call(opts, out, "isOwner")
  1018  	return *ret0, err
  1019  }
  1020  
  1021  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1022  //
  1023  // Solidity: function isOwner() constant returns(bool)
  1024  func (_RootChainRegistry *RootChainRegistrySession) IsOwner() (bool, error) {
  1025  	return _RootChainRegistry.Contract.IsOwner(&_RootChainRegistry.CallOpts)
  1026  }
  1027  
  1028  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1029  //
  1030  // Solidity: function isOwner() constant returns(bool)
  1031  func (_RootChainRegistry *RootChainRegistryCallerSession) IsOwner() (bool, error) {
  1032  	return _RootChainRegistry.Contract.IsOwner(&_RootChainRegistry.CallOpts)
  1033  }
  1034  
  1035  // NumRootChains is a free data retrieval call binding the contract method 0xb2b604d0.
  1036  //
  1037  // Solidity: function numRootChains() constant returns(uint256)
  1038  func (_RootChainRegistry *RootChainRegistryCaller) NumRootChains(opts *bind.CallOpts) (*big.Int, error) {
  1039  	var (
  1040  		ret0 = new(*big.Int)
  1041  	)
  1042  	out := ret0
  1043  	err := _RootChainRegistry.contract.Call(opts, out, "numRootChains")
  1044  	return *ret0, err
  1045  }
  1046  
  1047  // NumRootChains is a free data retrieval call binding the contract method 0xb2b604d0.
  1048  //
  1049  // Solidity: function numRootChains() constant returns(uint256)
  1050  func (_RootChainRegistry *RootChainRegistrySession) NumRootChains() (*big.Int, error) {
  1051  	return _RootChainRegistry.Contract.NumRootChains(&_RootChainRegistry.CallOpts)
  1052  }
  1053  
  1054  // NumRootChains is a free data retrieval call binding the contract method 0xb2b604d0.
  1055  //
  1056  // Solidity: function numRootChains() constant returns(uint256)
  1057  func (_RootChainRegistry *RootChainRegistryCallerSession) NumRootChains() (*big.Int, error) {
  1058  	return _RootChainRegistry.Contract.NumRootChains(&_RootChainRegistry.CallOpts)
  1059  }
  1060  
  1061  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1062  //
  1063  // Solidity: function owner() constant returns(address)
  1064  func (_RootChainRegistry *RootChainRegistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  1065  	var (
  1066  		ret0 = new(common.Address)
  1067  	)
  1068  	out := ret0
  1069  	err := _RootChainRegistry.contract.Call(opts, out, "owner")
  1070  	return *ret0, err
  1071  }
  1072  
  1073  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1074  //
  1075  // Solidity: function owner() constant returns(address)
  1076  func (_RootChainRegistry *RootChainRegistrySession) Owner() (common.Address, error) {
  1077  	return _RootChainRegistry.Contract.Owner(&_RootChainRegistry.CallOpts)
  1078  }
  1079  
  1080  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1081  //
  1082  // Solidity: function owner() constant returns(address)
  1083  func (_RootChainRegistry *RootChainRegistryCallerSession) Owner() (common.Address, error) {
  1084  	return _RootChainRegistry.Contract.Owner(&_RootChainRegistry.CallOpts)
  1085  }
  1086  
  1087  // RootchainByIndex is a free data retrieval call binding the contract method 0x821f602c.
  1088  //
  1089  // Solidity: function rootchainByIndex(uint256 index) constant returns(address)
  1090  func (_RootChainRegistry *RootChainRegistryCaller) RootchainByIndex(opts *bind.CallOpts, index *big.Int) (common.Address, error) {
  1091  	var (
  1092  		ret0 = new(common.Address)
  1093  	)
  1094  	out := ret0
  1095  	err := _RootChainRegistry.contract.Call(opts, out, "rootchainByIndex", index)
  1096  	return *ret0, err
  1097  }
  1098  
  1099  // RootchainByIndex is a free data retrieval call binding the contract method 0x821f602c.
  1100  //
  1101  // Solidity: function rootchainByIndex(uint256 index) constant returns(address)
  1102  func (_RootChainRegistry *RootChainRegistrySession) RootchainByIndex(index *big.Int) (common.Address, error) {
  1103  	return _RootChainRegistry.Contract.RootchainByIndex(&_RootChainRegistry.CallOpts, index)
  1104  }
  1105  
  1106  // RootchainByIndex is a free data retrieval call binding the contract method 0x821f602c.
  1107  //
  1108  // Solidity: function rootchainByIndex(uint256 index) constant returns(address)
  1109  func (_RootChainRegistry *RootChainRegistryCallerSession) RootchainByIndex(index *big.Int) (common.Address, error) {
  1110  	return _RootChainRegistry.Contract.RootchainByIndex(&_RootChainRegistry.CallOpts, index)
  1111  }
  1112  
  1113  // Rootchains is a free data retrieval call binding the contract method 0x02a15299.
  1114  //
  1115  // Solidity: function rootchains(address rootchain) constant returns(bool)
  1116  func (_RootChainRegistry *RootChainRegistryCaller) Rootchains(opts *bind.CallOpts, rootchain common.Address) (bool, error) {
  1117  	var (
  1118  		ret0 = new(bool)
  1119  	)
  1120  	out := ret0
  1121  	err := _RootChainRegistry.contract.Call(opts, out, "rootchains", rootchain)
  1122  	return *ret0, err
  1123  }
  1124  
  1125  // Rootchains is a free data retrieval call binding the contract method 0x02a15299.
  1126  //
  1127  // Solidity: function rootchains(address rootchain) constant returns(bool)
  1128  func (_RootChainRegistry *RootChainRegistrySession) Rootchains(rootchain common.Address) (bool, error) {
  1129  	return _RootChainRegistry.Contract.Rootchains(&_RootChainRegistry.CallOpts, rootchain)
  1130  }
  1131  
  1132  // Rootchains is a free data retrieval call binding the contract method 0x02a15299.
  1133  //
  1134  // Solidity: function rootchains(address rootchain) constant returns(bool)
  1135  func (_RootChainRegistry *RootChainRegistryCallerSession) Rootchains(rootchain common.Address) (bool, error) {
  1136  	return _RootChainRegistry.Contract.Rootchains(&_RootChainRegistry.CallOpts, rootchain)
  1137  }
  1138  
  1139  // DeployCoinage is a paid mutator transaction binding the contract method 0x85108604.
  1140  //
  1141  // Solidity: function deployCoinage(address rootchain, address seigManager) returns(bool)
  1142  func (_RootChainRegistry *RootChainRegistryTransactor) DeployCoinage(opts *bind.TransactOpts, rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1143  	return _RootChainRegistry.contract.Transact(opts, "deployCoinage", rootchain, seigManager)
  1144  }
  1145  
  1146  // DeployCoinage is a paid mutator transaction binding the contract method 0x85108604.
  1147  //
  1148  // Solidity: function deployCoinage(address rootchain, address seigManager) returns(bool)
  1149  func (_RootChainRegistry *RootChainRegistrySession) DeployCoinage(rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1150  	return _RootChainRegistry.Contract.DeployCoinage(&_RootChainRegistry.TransactOpts, rootchain, seigManager)
  1151  }
  1152  
  1153  // DeployCoinage is a paid mutator transaction binding the contract method 0x85108604.
  1154  //
  1155  // Solidity: function deployCoinage(address rootchain, address seigManager) returns(bool)
  1156  func (_RootChainRegistry *RootChainRegistryTransactorSession) DeployCoinage(rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1157  	return _RootChainRegistry.Contract.DeployCoinage(&_RootChainRegistry.TransactOpts, rootchain, seigManager)
  1158  }
  1159  
  1160  // Register is a paid mutator transaction binding the contract method 0x4420e486.
  1161  //
  1162  // Solidity: function register(address rootchain) returns(bool)
  1163  func (_RootChainRegistry *RootChainRegistryTransactor) Register(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
  1164  	return _RootChainRegistry.contract.Transact(opts, "register", rootchain)
  1165  }
  1166  
  1167  // Register is a paid mutator transaction binding the contract method 0x4420e486.
  1168  //
  1169  // Solidity: function register(address rootchain) returns(bool)
  1170  func (_RootChainRegistry *RootChainRegistrySession) Register(rootchain common.Address) (*types.Transaction, error) {
  1171  	return _RootChainRegistry.Contract.Register(&_RootChainRegistry.TransactOpts, rootchain)
  1172  }
  1173  
  1174  // Register is a paid mutator transaction binding the contract method 0x4420e486.
  1175  //
  1176  // Solidity: function register(address rootchain) returns(bool)
  1177  func (_RootChainRegistry *RootChainRegistryTransactorSession) Register(rootchain common.Address) (*types.Transaction, error) {
  1178  	return _RootChainRegistry.Contract.Register(&_RootChainRegistry.TransactOpts, rootchain)
  1179  }
  1180  
  1181  // RegisterAndDeployCoinage is a paid mutator transaction binding the contract method 0xbcb1a71e.
  1182  //
  1183  // Solidity: function registerAndDeployCoinage(address rootchain, address seigManager) returns(bool)
  1184  func (_RootChainRegistry *RootChainRegistryTransactor) RegisterAndDeployCoinage(opts *bind.TransactOpts, rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1185  	return _RootChainRegistry.contract.Transact(opts, "registerAndDeployCoinage", rootchain, seigManager)
  1186  }
  1187  
  1188  // RegisterAndDeployCoinage is a paid mutator transaction binding the contract method 0xbcb1a71e.
  1189  //
  1190  // Solidity: function registerAndDeployCoinage(address rootchain, address seigManager) returns(bool)
  1191  func (_RootChainRegistry *RootChainRegistrySession) RegisterAndDeployCoinage(rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1192  	return _RootChainRegistry.Contract.RegisterAndDeployCoinage(&_RootChainRegistry.TransactOpts, rootchain, seigManager)
  1193  }
  1194  
  1195  // RegisterAndDeployCoinage is a paid mutator transaction binding the contract method 0xbcb1a71e.
  1196  //
  1197  // Solidity: function registerAndDeployCoinage(address rootchain, address seigManager) returns(bool)
  1198  func (_RootChainRegistry *RootChainRegistryTransactorSession) RegisterAndDeployCoinage(rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1199  	return _RootChainRegistry.Contract.RegisterAndDeployCoinage(&_RootChainRegistry.TransactOpts, rootchain, seigManager)
  1200  }
  1201  
  1202  // RegisterAndDeployCoinageAndSetCommissionRate is a paid mutator transaction binding the contract method 0x3eb2a66c.
  1203  //
  1204  // Solidity: function registerAndDeployCoinageAndSetCommissionRate(address rootchain, address seigManager, uint256 commissionRate, bool isCommissionRateNegative) returns(bool)
  1205  func (_RootChainRegistry *RootChainRegistryTransactor) RegisterAndDeployCoinageAndSetCommissionRate(opts *bind.TransactOpts, rootchain common.Address, seigManager common.Address, commissionRate *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  1206  	return _RootChainRegistry.contract.Transact(opts, "registerAndDeployCoinageAndSetCommissionRate", rootchain, seigManager, commissionRate, isCommissionRateNegative)
  1207  }
  1208  
  1209  // RegisterAndDeployCoinageAndSetCommissionRate is a paid mutator transaction binding the contract method 0x3eb2a66c.
  1210  //
  1211  // Solidity: function registerAndDeployCoinageAndSetCommissionRate(address rootchain, address seigManager, uint256 commissionRate, bool isCommissionRateNegative) returns(bool)
  1212  func (_RootChainRegistry *RootChainRegistrySession) RegisterAndDeployCoinageAndSetCommissionRate(rootchain common.Address, seigManager common.Address, commissionRate *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  1213  	return _RootChainRegistry.Contract.RegisterAndDeployCoinageAndSetCommissionRate(&_RootChainRegistry.TransactOpts, rootchain, seigManager, commissionRate, isCommissionRateNegative)
  1214  }
  1215  
  1216  // RegisterAndDeployCoinageAndSetCommissionRate is a paid mutator transaction binding the contract method 0x3eb2a66c.
  1217  //
  1218  // Solidity: function registerAndDeployCoinageAndSetCommissionRate(address rootchain, address seigManager, uint256 commissionRate, bool isCommissionRateNegative) returns(bool)
  1219  func (_RootChainRegistry *RootChainRegistryTransactorSession) RegisterAndDeployCoinageAndSetCommissionRate(rootchain common.Address, seigManager common.Address, commissionRate *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  1220  	return _RootChainRegistry.Contract.RegisterAndDeployCoinageAndSetCommissionRate(&_RootChainRegistry.TransactOpts, rootchain, seigManager, commissionRate, isCommissionRateNegative)
  1221  }
  1222  
  1223  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1224  //
  1225  // Solidity: function renounceOwnership() returns()
  1226  func (_RootChainRegistry *RootChainRegistryTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  1227  	return _RootChainRegistry.contract.Transact(opts, "renounceOwnership")
  1228  }
  1229  
  1230  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1231  //
  1232  // Solidity: function renounceOwnership() returns()
  1233  func (_RootChainRegistry *RootChainRegistrySession) RenounceOwnership() (*types.Transaction, error) {
  1234  	return _RootChainRegistry.Contract.RenounceOwnership(&_RootChainRegistry.TransactOpts)
  1235  }
  1236  
  1237  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1238  //
  1239  // Solidity: function renounceOwnership() returns()
  1240  func (_RootChainRegistry *RootChainRegistryTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  1241  	return _RootChainRegistry.Contract.RenounceOwnership(&_RootChainRegistry.TransactOpts)
  1242  }
  1243  
  1244  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1245  //
  1246  // Solidity: function transferOwnership(address newOwner) returns()
  1247  func (_RootChainRegistry *RootChainRegistryTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  1248  	return _RootChainRegistry.contract.Transact(opts, "transferOwnership", newOwner)
  1249  }
  1250  
  1251  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1252  //
  1253  // Solidity: function transferOwnership(address newOwner) returns()
  1254  func (_RootChainRegistry *RootChainRegistrySession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1255  	return _RootChainRegistry.Contract.TransferOwnership(&_RootChainRegistry.TransactOpts, newOwner)
  1256  }
  1257  
  1258  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1259  //
  1260  // Solidity: function transferOwnership(address newOwner) returns()
  1261  func (_RootChainRegistry *RootChainRegistryTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1262  	return _RootChainRegistry.Contract.TransferOwnership(&_RootChainRegistry.TransactOpts, newOwner)
  1263  }
  1264  
  1265  // Unregister is a paid mutator transaction binding the contract method 0x2ec2c246.
  1266  //
  1267  // Solidity: function unregister(address rootchain) returns(bool)
  1268  func (_RootChainRegistry *RootChainRegistryTransactor) Unregister(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
  1269  	return _RootChainRegistry.contract.Transact(opts, "unregister", rootchain)
  1270  }
  1271  
  1272  // Unregister is a paid mutator transaction binding the contract method 0x2ec2c246.
  1273  //
  1274  // Solidity: function unregister(address rootchain) returns(bool)
  1275  func (_RootChainRegistry *RootChainRegistrySession) Unregister(rootchain common.Address) (*types.Transaction, error) {
  1276  	return _RootChainRegistry.Contract.Unregister(&_RootChainRegistry.TransactOpts, rootchain)
  1277  }
  1278  
  1279  // Unregister is a paid mutator transaction binding the contract method 0x2ec2c246.
  1280  //
  1281  // Solidity: function unregister(address rootchain) returns(bool)
  1282  func (_RootChainRegistry *RootChainRegistryTransactorSession) Unregister(rootchain common.Address) (*types.Transaction, error) {
  1283  	return _RootChainRegistry.Contract.Unregister(&_RootChainRegistry.TransactOpts, rootchain)
  1284  }
  1285  
  1286  // RootChainRegistryOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the RootChainRegistry contract.
  1287  type RootChainRegistryOwnershipTransferredIterator struct {
  1288  	Event *RootChainRegistryOwnershipTransferred // Event containing the contract specifics and raw log
  1289  
  1290  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1291  	event    string              // Event name to use for unpacking event data
  1292  
  1293  	logs chan types.Log        // Log channel receiving the found contract events
  1294  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1295  	done bool                  // Whether the subscription completed delivering logs
  1296  	fail error                 // Occurred error to stop iteration
  1297  }
  1298  
  1299  // Next advances the iterator to the subsequent event, returning whether there
  1300  // are any more events found. In case of a retrieval or parsing error, false is
  1301  // returned and Error() can be queried for the exact failure.
  1302  func (it *RootChainRegistryOwnershipTransferredIterator) Next() bool {
  1303  	// If the iterator failed, stop iterating
  1304  	if it.fail != nil {
  1305  		return false
  1306  	}
  1307  	// If the iterator completed, deliver directly whatever's available
  1308  	if it.done {
  1309  		select {
  1310  		case log := <-it.logs:
  1311  			it.Event = new(RootChainRegistryOwnershipTransferred)
  1312  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1313  				it.fail = err
  1314  				return false
  1315  			}
  1316  			it.Event.Raw = log
  1317  			return true
  1318  
  1319  		default:
  1320  			return false
  1321  		}
  1322  	}
  1323  	// Iterator still in progress, wait for either a data or an error event
  1324  	select {
  1325  	case log := <-it.logs:
  1326  		it.Event = new(RootChainRegistryOwnershipTransferred)
  1327  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1328  			it.fail = err
  1329  			return false
  1330  		}
  1331  		it.Event.Raw = log
  1332  		return true
  1333  
  1334  	case err := <-it.sub.Err():
  1335  		it.done = true
  1336  		it.fail = err
  1337  		return it.Next()
  1338  	}
  1339  }
  1340  
  1341  // Error returns any retrieval or parsing error occurred during filtering.
  1342  func (it *RootChainRegistryOwnershipTransferredIterator) Error() error {
  1343  	return it.fail
  1344  }
  1345  
  1346  // Close terminates the iteration process, releasing any pending underlying
  1347  // resources.
  1348  func (it *RootChainRegistryOwnershipTransferredIterator) Close() error {
  1349  	it.sub.Unsubscribe()
  1350  	return nil
  1351  }
  1352  
  1353  // RootChainRegistryOwnershipTransferred represents a OwnershipTransferred event raised by the RootChainRegistry contract.
  1354  type RootChainRegistryOwnershipTransferred struct {
  1355  	PreviousOwner common.Address
  1356  	NewOwner      common.Address
  1357  	Raw           types.Log // Blockchain specific contextual infos
  1358  }
  1359  
  1360  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1361  //
  1362  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1363  func (_RootChainRegistry *RootChainRegistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*RootChainRegistryOwnershipTransferredIterator, error) {
  1364  
  1365  	var previousOwnerRule []interface{}
  1366  	for _, previousOwnerItem := range previousOwner {
  1367  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  1368  	}
  1369  	var newOwnerRule []interface{}
  1370  	for _, newOwnerItem := range newOwner {
  1371  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  1372  	}
  1373  
  1374  	logs, sub, err := _RootChainRegistry.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  1375  	if err != nil {
  1376  		return nil, err
  1377  	}
  1378  	return &RootChainRegistryOwnershipTransferredIterator{contract: _RootChainRegistry.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  1379  }
  1380  
  1381  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1382  //
  1383  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1384  func (_RootChainRegistry *RootChainRegistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *RootChainRegistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  1385  
  1386  	var previousOwnerRule []interface{}
  1387  	for _, previousOwnerItem := range previousOwner {
  1388  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  1389  	}
  1390  	var newOwnerRule []interface{}
  1391  	for _, newOwnerItem := range newOwner {
  1392  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  1393  	}
  1394  
  1395  	logs, sub, err := _RootChainRegistry.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  1396  	if err != nil {
  1397  		return nil, err
  1398  	}
  1399  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1400  		defer sub.Unsubscribe()
  1401  		for {
  1402  			select {
  1403  			case log := <-logs:
  1404  				// New log arrived, parse the event and forward to the user
  1405  				event := new(RootChainRegistryOwnershipTransferred)
  1406  				if err := _RootChainRegistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  1407  					return err
  1408  				}
  1409  				event.Raw = log
  1410  
  1411  				select {
  1412  				case sink <- event:
  1413  				case err := <-sub.Err():
  1414  					return err
  1415  				case <-quit:
  1416  					return nil
  1417  				}
  1418  			case err := <-sub.Err():
  1419  				return err
  1420  			case <-quit:
  1421  				return nil
  1422  			}
  1423  		}
  1424  	}), nil
  1425  }
  1426  
  1427  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1428  //
  1429  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1430  func (_RootChainRegistry *RootChainRegistryFilterer) ParseOwnershipTransferred(log types.Log) (*RootChainRegistryOwnershipTransferred, error) {
  1431  	event := new(RootChainRegistryOwnershipTransferred)
  1432  	if err := _RootChainRegistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  1433  		return nil, err
  1434  	}
  1435  	return event, nil
  1436  }
  1437  
  1438  // RootChainRegistryIABI is the input ABI used to generate the binding from.
  1439  const RootChainRegistryIABI = "[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seigManager\",\"type\":\"address\"}],\"name\":\"deployCoinage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"numRootChains\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seigManager\",\"type\":\"address\"}],\"name\":\"registerAndDeployCoinage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"rootchainByIndex\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"rootchains\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"unregister\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  1440  
  1441  // RootChainRegistryIFuncSigs maps the 4-byte function signature to its string representation.
  1442  var RootChainRegistryIFuncSigs = map[string]string{
  1443  	"85108604": "deployCoinage(address,address)",
  1444  	"b2b604d0": "numRootChains()",
  1445  	"4420e486": "register(address)",
  1446  	"bcb1a71e": "registerAndDeployCoinage(address,address)",
  1447  	"821f602c": "rootchainByIndex(uint256)",
  1448  	"02a15299": "rootchains(address)",
  1449  	"2ec2c246": "unregister(address)",
  1450  }
  1451  
  1452  // RootChainRegistryI is an auto generated Go binding around an Ethereum contract.
  1453  type RootChainRegistryI struct {
  1454  	RootChainRegistryICaller     // Read-only binding to the contract
  1455  	RootChainRegistryITransactor // Write-only binding to the contract
  1456  	RootChainRegistryIFilterer   // Log filterer for contract events
  1457  }
  1458  
  1459  // RootChainRegistryICaller is an auto generated read-only Go binding around an Ethereum contract.
  1460  type RootChainRegistryICaller struct {
  1461  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1462  }
  1463  
  1464  // RootChainRegistryITransactor is an auto generated write-only Go binding around an Ethereum contract.
  1465  type RootChainRegistryITransactor struct {
  1466  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1467  }
  1468  
  1469  // RootChainRegistryIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1470  type RootChainRegistryIFilterer struct {
  1471  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1472  }
  1473  
  1474  // RootChainRegistryISession is an auto generated Go binding around an Ethereum contract,
  1475  // with pre-set call and transact options.
  1476  type RootChainRegistryISession struct {
  1477  	Contract     *RootChainRegistryI // Generic contract binding to set the session for
  1478  	CallOpts     bind.CallOpts       // Call options to use throughout this session
  1479  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  1480  }
  1481  
  1482  // RootChainRegistryICallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1483  // with pre-set call options.
  1484  type RootChainRegistryICallerSession struct {
  1485  	Contract *RootChainRegistryICaller // Generic contract caller binding to set the session for
  1486  	CallOpts bind.CallOpts             // Call options to use throughout this session
  1487  }
  1488  
  1489  // RootChainRegistryITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1490  // with pre-set transact options.
  1491  type RootChainRegistryITransactorSession struct {
  1492  	Contract     *RootChainRegistryITransactor // Generic contract transactor binding to set the session for
  1493  	TransactOpts bind.TransactOpts             // Transaction auth options to use throughout this session
  1494  }
  1495  
  1496  // RootChainRegistryIRaw is an auto generated low-level Go binding around an Ethereum contract.
  1497  type RootChainRegistryIRaw struct {
  1498  	Contract *RootChainRegistryI // Generic contract binding to access the raw methods on
  1499  }
  1500  
  1501  // RootChainRegistryICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1502  type RootChainRegistryICallerRaw struct {
  1503  	Contract *RootChainRegistryICaller // Generic read-only contract binding to access the raw methods on
  1504  }
  1505  
  1506  // RootChainRegistryITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1507  type RootChainRegistryITransactorRaw struct {
  1508  	Contract *RootChainRegistryITransactor // Generic write-only contract binding to access the raw methods on
  1509  }
  1510  
  1511  // NewRootChainRegistryI creates a new instance of RootChainRegistryI, bound to a specific deployed contract.
  1512  func NewRootChainRegistryI(address common.Address, backend bind.ContractBackend) (*RootChainRegistryI, error) {
  1513  	contract, err := bindRootChainRegistryI(address, backend, backend, backend)
  1514  	if err != nil {
  1515  		return nil, err
  1516  	}
  1517  	return &RootChainRegistryI{RootChainRegistryICaller: RootChainRegistryICaller{contract: contract}, RootChainRegistryITransactor: RootChainRegistryITransactor{contract: contract}, RootChainRegistryIFilterer: RootChainRegistryIFilterer{contract: contract}}, nil
  1518  }
  1519  
  1520  // NewRootChainRegistryICaller creates a new read-only instance of RootChainRegistryI, bound to a specific deployed contract.
  1521  func NewRootChainRegistryICaller(address common.Address, caller bind.ContractCaller) (*RootChainRegistryICaller, error) {
  1522  	contract, err := bindRootChainRegistryI(address, caller, nil, nil)
  1523  	if err != nil {
  1524  		return nil, err
  1525  	}
  1526  	return &RootChainRegistryICaller{contract: contract}, nil
  1527  }
  1528  
  1529  // NewRootChainRegistryITransactor creates a new write-only instance of RootChainRegistryI, bound to a specific deployed contract.
  1530  func NewRootChainRegistryITransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainRegistryITransactor, error) {
  1531  	contract, err := bindRootChainRegistryI(address, nil, transactor, nil)
  1532  	if err != nil {
  1533  		return nil, err
  1534  	}
  1535  	return &RootChainRegistryITransactor{contract: contract}, nil
  1536  }
  1537  
  1538  // NewRootChainRegistryIFilterer creates a new log filterer instance of RootChainRegistryI, bound to a specific deployed contract.
  1539  func NewRootChainRegistryIFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainRegistryIFilterer, error) {
  1540  	contract, err := bindRootChainRegistryI(address, nil, nil, filterer)
  1541  	if err != nil {
  1542  		return nil, err
  1543  	}
  1544  	return &RootChainRegistryIFilterer{contract: contract}, nil
  1545  }
  1546  
  1547  // bindRootChainRegistryI binds a generic wrapper to an already deployed contract.
  1548  func bindRootChainRegistryI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1549  	parsed, err := abi.JSON(strings.NewReader(RootChainRegistryIABI))
  1550  	if err != nil {
  1551  		return nil, err
  1552  	}
  1553  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1554  }
  1555  
  1556  // Call invokes the (constant) contract method with params as input values and
  1557  // sets the output to result. The result type might be a single field for simple
  1558  // returns, a slice of interfaces for anonymous returns and a struct for named
  1559  // returns.
  1560  func (_RootChainRegistryI *RootChainRegistryIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1561  	return _RootChainRegistryI.Contract.RootChainRegistryICaller.contract.Call(opts, result, method, params...)
  1562  }
  1563  
  1564  // Transfer initiates a plain transaction to move funds to the contract, calling
  1565  // its default method if one is available.
  1566  func (_RootChainRegistryI *RootChainRegistryIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1567  	return _RootChainRegistryI.Contract.RootChainRegistryITransactor.contract.Transfer(opts)
  1568  }
  1569  
  1570  // Transact invokes the (paid) contract method with params as input values.
  1571  func (_RootChainRegistryI *RootChainRegistryIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1572  	return _RootChainRegistryI.Contract.RootChainRegistryITransactor.contract.Transact(opts, method, params...)
  1573  }
  1574  
  1575  // Call invokes the (constant) contract method with params as input values and
  1576  // sets the output to result. The result type might be a single field for simple
  1577  // returns, a slice of interfaces for anonymous returns and a struct for named
  1578  // returns.
  1579  func (_RootChainRegistryI *RootChainRegistryICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1580  	return _RootChainRegistryI.Contract.contract.Call(opts, result, method, params...)
  1581  }
  1582  
  1583  // Transfer initiates a plain transaction to move funds to the contract, calling
  1584  // its default method if one is available.
  1585  func (_RootChainRegistryI *RootChainRegistryITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1586  	return _RootChainRegistryI.Contract.contract.Transfer(opts)
  1587  }
  1588  
  1589  // Transact invokes the (paid) contract method with params as input values.
  1590  func (_RootChainRegistryI *RootChainRegistryITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1591  	return _RootChainRegistryI.Contract.contract.Transact(opts, method, params...)
  1592  }
  1593  
  1594  // NumRootChains is a free data retrieval call binding the contract method 0xb2b604d0.
  1595  //
  1596  // Solidity: function numRootChains() constant returns(uint256)
  1597  func (_RootChainRegistryI *RootChainRegistryICaller) NumRootChains(opts *bind.CallOpts) (*big.Int, error) {
  1598  	var (
  1599  		ret0 = new(*big.Int)
  1600  	)
  1601  	out := ret0
  1602  	err := _RootChainRegistryI.contract.Call(opts, out, "numRootChains")
  1603  	return *ret0, err
  1604  }
  1605  
  1606  // NumRootChains is a free data retrieval call binding the contract method 0xb2b604d0.
  1607  //
  1608  // Solidity: function numRootChains() constant returns(uint256)
  1609  func (_RootChainRegistryI *RootChainRegistryISession) NumRootChains() (*big.Int, error) {
  1610  	return _RootChainRegistryI.Contract.NumRootChains(&_RootChainRegistryI.CallOpts)
  1611  }
  1612  
  1613  // NumRootChains is a free data retrieval call binding the contract method 0xb2b604d0.
  1614  //
  1615  // Solidity: function numRootChains() constant returns(uint256)
  1616  func (_RootChainRegistryI *RootChainRegistryICallerSession) NumRootChains() (*big.Int, error) {
  1617  	return _RootChainRegistryI.Contract.NumRootChains(&_RootChainRegistryI.CallOpts)
  1618  }
  1619  
  1620  // RootchainByIndex is a free data retrieval call binding the contract method 0x821f602c.
  1621  //
  1622  // Solidity: function rootchainByIndex(uint256 index) constant returns(address)
  1623  func (_RootChainRegistryI *RootChainRegistryICaller) RootchainByIndex(opts *bind.CallOpts, index *big.Int) (common.Address, error) {
  1624  	var (
  1625  		ret0 = new(common.Address)
  1626  	)
  1627  	out := ret0
  1628  	err := _RootChainRegistryI.contract.Call(opts, out, "rootchainByIndex", index)
  1629  	return *ret0, err
  1630  }
  1631  
  1632  // RootchainByIndex is a free data retrieval call binding the contract method 0x821f602c.
  1633  //
  1634  // Solidity: function rootchainByIndex(uint256 index) constant returns(address)
  1635  func (_RootChainRegistryI *RootChainRegistryISession) RootchainByIndex(index *big.Int) (common.Address, error) {
  1636  	return _RootChainRegistryI.Contract.RootchainByIndex(&_RootChainRegistryI.CallOpts, index)
  1637  }
  1638  
  1639  // RootchainByIndex is a free data retrieval call binding the contract method 0x821f602c.
  1640  //
  1641  // Solidity: function rootchainByIndex(uint256 index) constant returns(address)
  1642  func (_RootChainRegistryI *RootChainRegistryICallerSession) RootchainByIndex(index *big.Int) (common.Address, error) {
  1643  	return _RootChainRegistryI.Contract.RootchainByIndex(&_RootChainRegistryI.CallOpts, index)
  1644  }
  1645  
  1646  // Rootchains is a free data retrieval call binding the contract method 0x02a15299.
  1647  //
  1648  // Solidity: function rootchains(address rootchain) constant returns(bool)
  1649  func (_RootChainRegistryI *RootChainRegistryICaller) Rootchains(opts *bind.CallOpts, rootchain common.Address) (bool, error) {
  1650  	var (
  1651  		ret0 = new(bool)
  1652  	)
  1653  	out := ret0
  1654  	err := _RootChainRegistryI.contract.Call(opts, out, "rootchains", rootchain)
  1655  	return *ret0, err
  1656  }
  1657  
  1658  // Rootchains is a free data retrieval call binding the contract method 0x02a15299.
  1659  //
  1660  // Solidity: function rootchains(address rootchain) constant returns(bool)
  1661  func (_RootChainRegistryI *RootChainRegistryISession) Rootchains(rootchain common.Address) (bool, error) {
  1662  	return _RootChainRegistryI.Contract.Rootchains(&_RootChainRegistryI.CallOpts, rootchain)
  1663  }
  1664  
  1665  // Rootchains is a free data retrieval call binding the contract method 0x02a15299.
  1666  //
  1667  // Solidity: function rootchains(address rootchain) constant returns(bool)
  1668  func (_RootChainRegistryI *RootChainRegistryICallerSession) Rootchains(rootchain common.Address) (bool, error) {
  1669  	return _RootChainRegistryI.Contract.Rootchains(&_RootChainRegistryI.CallOpts, rootchain)
  1670  }
  1671  
  1672  // DeployCoinage is a paid mutator transaction binding the contract method 0x85108604.
  1673  //
  1674  // Solidity: function deployCoinage(address rootchain, address seigManager) returns(bool)
  1675  func (_RootChainRegistryI *RootChainRegistryITransactor) DeployCoinage(opts *bind.TransactOpts, rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1676  	return _RootChainRegistryI.contract.Transact(opts, "deployCoinage", rootchain, seigManager)
  1677  }
  1678  
  1679  // DeployCoinage is a paid mutator transaction binding the contract method 0x85108604.
  1680  //
  1681  // Solidity: function deployCoinage(address rootchain, address seigManager) returns(bool)
  1682  func (_RootChainRegistryI *RootChainRegistryISession) DeployCoinage(rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1683  	return _RootChainRegistryI.Contract.DeployCoinage(&_RootChainRegistryI.TransactOpts, rootchain, seigManager)
  1684  }
  1685  
  1686  // DeployCoinage is a paid mutator transaction binding the contract method 0x85108604.
  1687  //
  1688  // Solidity: function deployCoinage(address rootchain, address seigManager) returns(bool)
  1689  func (_RootChainRegistryI *RootChainRegistryITransactorSession) DeployCoinage(rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1690  	return _RootChainRegistryI.Contract.DeployCoinage(&_RootChainRegistryI.TransactOpts, rootchain, seigManager)
  1691  }
  1692  
  1693  // Register is a paid mutator transaction binding the contract method 0x4420e486.
  1694  //
  1695  // Solidity: function register(address rootchain) returns(bool)
  1696  func (_RootChainRegistryI *RootChainRegistryITransactor) Register(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
  1697  	return _RootChainRegistryI.contract.Transact(opts, "register", rootchain)
  1698  }
  1699  
  1700  // Register is a paid mutator transaction binding the contract method 0x4420e486.
  1701  //
  1702  // Solidity: function register(address rootchain) returns(bool)
  1703  func (_RootChainRegistryI *RootChainRegistryISession) Register(rootchain common.Address) (*types.Transaction, error) {
  1704  	return _RootChainRegistryI.Contract.Register(&_RootChainRegistryI.TransactOpts, rootchain)
  1705  }
  1706  
  1707  // Register is a paid mutator transaction binding the contract method 0x4420e486.
  1708  //
  1709  // Solidity: function register(address rootchain) returns(bool)
  1710  func (_RootChainRegistryI *RootChainRegistryITransactorSession) Register(rootchain common.Address) (*types.Transaction, error) {
  1711  	return _RootChainRegistryI.Contract.Register(&_RootChainRegistryI.TransactOpts, rootchain)
  1712  }
  1713  
  1714  // RegisterAndDeployCoinage is a paid mutator transaction binding the contract method 0xbcb1a71e.
  1715  //
  1716  // Solidity: function registerAndDeployCoinage(address rootchain, address seigManager) returns(bool)
  1717  func (_RootChainRegistryI *RootChainRegistryITransactor) RegisterAndDeployCoinage(opts *bind.TransactOpts, rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1718  	return _RootChainRegistryI.contract.Transact(opts, "registerAndDeployCoinage", rootchain, seigManager)
  1719  }
  1720  
  1721  // RegisterAndDeployCoinage is a paid mutator transaction binding the contract method 0xbcb1a71e.
  1722  //
  1723  // Solidity: function registerAndDeployCoinage(address rootchain, address seigManager) returns(bool)
  1724  func (_RootChainRegistryI *RootChainRegistryISession) RegisterAndDeployCoinage(rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1725  	return _RootChainRegistryI.Contract.RegisterAndDeployCoinage(&_RootChainRegistryI.TransactOpts, rootchain, seigManager)
  1726  }
  1727  
  1728  // RegisterAndDeployCoinage is a paid mutator transaction binding the contract method 0xbcb1a71e.
  1729  //
  1730  // Solidity: function registerAndDeployCoinage(address rootchain, address seigManager) returns(bool)
  1731  func (_RootChainRegistryI *RootChainRegistryITransactorSession) RegisterAndDeployCoinage(rootchain common.Address, seigManager common.Address) (*types.Transaction, error) {
  1732  	return _RootChainRegistryI.Contract.RegisterAndDeployCoinage(&_RootChainRegistryI.TransactOpts, rootchain, seigManager)
  1733  }
  1734  
  1735  // Unregister is a paid mutator transaction binding the contract method 0x2ec2c246.
  1736  //
  1737  // Solidity: function unregister(address rootchain) returns(bool)
  1738  func (_RootChainRegistryI *RootChainRegistryITransactor) Unregister(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
  1739  	return _RootChainRegistryI.contract.Transact(opts, "unregister", rootchain)
  1740  }
  1741  
  1742  // Unregister is a paid mutator transaction binding the contract method 0x2ec2c246.
  1743  //
  1744  // Solidity: function unregister(address rootchain) returns(bool)
  1745  func (_RootChainRegistryI *RootChainRegistryISession) Unregister(rootchain common.Address) (*types.Transaction, error) {
  1746  	return _RootChainRegistryI.Contract.Unregister(&_RootChainRegistryI.TransactOpts, rootchain)
  1747  }
  1748  
  1749  // Unregister is a paid mutator transaction binding the contract method 0x2ec2c246.
  1750  //
  1751  // Solidity: function unregister(address rootchain) returns(bool)
  1752  func (_RootChainRegistryI *RootChainRegistryITransactorSession) Unregister(rootchain common.Address) (*types.Transaction, error) {
  1753  	return _RootChainRegistryI.Contract.Unregister(&_RootChainRegistryI.TransactOpts, rootchain)
  1754  }
  1755  
  1756  // SeigManagerIABI is the input ABI used to generate the binding from.
  1757  const SeigManagerIABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"DEFAULT_FACTOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"additionalTotBurnAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"coinages\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"commissionRates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"deployCoinage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"depositManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"lastCommitBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastSeigBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"onCommit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onDeposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onWithdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pausedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"powerton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"commission\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isCommissionRateNegative\",\"type\":\"bool\"}],\"name\":\"setCommissionRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"stakeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tot\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"uncomittedStakeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"unpausedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"wton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  1758  
  1759  // SeigManagerIFuncSigs maps the 4-byte function signature to its string representation.
  1760  var SeigManagerIFuncSigs = map[string]string{
  1761  	"8bf91dc4": "DEFAULT_FACTOR()",
  1762  	"48c8577e": "additionalTotBurnAmount(address,address,uint256)",
  1763  	"4c063c19": "coinages(address)",
  1764  	"7b056c1b": "commissionRates(address)",
  1765  	"833a774f": "deployCoinage(address)",
  1766  	"6c7ac9d8": "depositManager()",
  1767  	"c59f1046": "lastCommitBlock(address)",
  1768  	"f35c89e8": "lastSeigBlock()",
  1769  	"359c4d59": "onCommit()",
  1770  	"412c6d50": "onDeposit(address,address,uint256)",
  1771  	"4a393149": "onTransfer(address,address,uint256)",
  1772  	"f850ffaa": "onWithdraw(address,address,uint256)",
  1773  	"32053c99": "pausedBlock()",
  1774  	"3e832e1d": "powerton()",
  1775  	"7b103999": "registry()",
  1776  	"5f40a349": "seigPerBlock()",
  1777  	"4224ed66": "setCommissionRate(address,uint256,bool)",
  1778  	"ce4cb876": "stakeOf(address,address)",
  1779  	"cc48b947": "ton()",
  1780  	"a16d6aa7": "tot()",
  1781  	"fa9789c8": "uncomittedStakeOf(address,address)",
  1782  	"1cc47890": "unpausedBlock()",
  1783  	"8d62d949": "wton()",
  1784  }
  1785  
  1786  // SeigManagerI is an auto generated Go binding around an Ethereum contract.
  1787  type SeigManagerI struct {
  1788  	SeigManagerICaller     // Read-only binding to the contract
  1789  	SeigManagerITransactor // Write-only binding to the contract
  1790  	SeigManagerIFilterer   // Log filterer for contract events
  1791  }
  1792  
  1793  // SeigManagerICaller is an auto generated read-only Go binding around an Ethereum contract.
  1794  type SeigManagerICaller struct {
  1795  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1796  }
  1797  
  1798  // SeigManagerITransactor is an auto generated write-only Go binding around an Ethereum contract.
  1799  type SeigManagerITransactor struct {
  1800  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1801  }
  1802  
  1803  // SeigManagerIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1804  type SeigManagerIFilterer struct {
  1805  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1806  }
  1807  
  1808  // SeigManagerISession is an auto generated Go binding around an Ethereum contract,
  1809  // with pre-set call and transact options.
  1810  type SeigManagerISession struct {
  1811  	Contract     *SeigManagerI     // Generic contract binding to set the session for
  1812  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1813  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1814  }
  1815  
  1816  // SeigManagerICallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1817  // with pre-set call options.
  1818  type SeigManagerICallerSession struct {
  1819  	Contract *SeigManagerICaller // Generic contract caller binding to set the session for
  1820  	CallOpts bind.CallOpts       // Call options to use throughout this session
  1821  }
  1822  
  1823  // SeigManagerITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1824  // with pre-set transact options.
  1825  type SeigManagerITransactorSession struct {
  1826  	Contract     *SeigManagerITransactor // Generic contract transactor binding to set the session for
  1827  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  1828  }
  1829  
  1830  // SeigManagerIRaw is an auto generated low-level Go binding around an Ethereum contract.
  1831  type SeigManagerIRaw struct {
  1832  	Contract *SeigManagerI // Generic contract binding to access the raw methods on
  1833  }
  1834  
  1835  // SeigManagerICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1836  type SeigManagerICallerRaw struct {
  1837  	Contract *SeigManagerICaller // Generic read-only contract binding to access the raw methods on
  1838  }
  1839  
  1840  // SeigManagerITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1841  type SeigManagerITransactorRaw struct {
  1842  	Contract *SeigManagerITransactor // Generic write-only contract binding to access the raw methods on
  1843  }
  1844  
  1845  // NewSeigManagerI creates a new instance of SeigManagerI, bound to a specific deployed contract.
  1846  func NewSeigManagerI(address common.Address, backend bind.ContractBackend) (*SeigManagerI, error) {
  1847  	contract, err := bindSeigManagerI(address, backend, backend, backend)
  1848  	if err != nil {
  1849  		return nil, err
  1850  	}
  1851  	return &SeigManagerI{SeigManagerICaller: SeigManagerICaller{contract: contract}, SeigManagerITransactor: SeigManagerITransactor{contract: contract}, SeigManagerIFilterer: SeigManagerIFilterer{contract: contract}}, nil
  1852  }
  1853  
  1854  // NewSeigManagerICaller creates a new read-only instance of SeigManagerI, bound to a specific deployed contract.
  1855  func NewSeigManagerICaller(address common.Address, caller bind.ContractCaller) (*SeigManagerICaller, error) {
  1856  	contract, err := bindSeigManagerI(address, caller, nil, nil)
  1857  	if err != nil {
  1858  		return nil, err
  1859  	}
  1860  	return &SeigManagerICaller{contract: contract}, nil
  1861  }
  1862  
  1863  // NewSeigManagerITransactor creates a new write-only instance of SeigManagerI, bound to a specific deployed contract.
  1864  func NewSeigManagerITransactor(address common.Address, transactor bind.ContractTransactor) (*SeigManagerITransactor, error) {
  1865  	contract, err := bindSeigManagerI(address, nil, transactor, nil)
  1866  	if err != nil {
  1867  		return nil, err
  1868  	}
  1869  	return &SeigManagerITransactor{contract: contract}, nil
  1870  }
  1871  
  1872  // NewSeigManagerIFilterer creates a new log filterer instance of SeigManagerI, bound to a specific deployed contract.
  1873  func NewSeigManagerIFilterer(address common.Address, filterer bind.ContractFilterer) (*SeigManagerIFilterer, error) {
  1874  	contract, err := bindSeigManagerI(address, nil, nil, filterer)
  1875  	if err != nil {
  1876  		return nil, err
  1877  	}
  1878  	return &SeigManagerIFilterer{contract: contract}, nil
  1879  }
  1880  
  1881  // bindSeigManagerI binds a generic wrapper to an already deployed contract.
  1882  func bindSeigManagerI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1883  	parsed, err := abi.JSON(strings.NewReader(SeigManagerIABI))
  1884  	if err != nil {
  1885  		return nil, err
  1886  	}
  1887  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1888  }
  1889  
  1890  // Call invokes the (constant) contract method with params as input values and
  1891  // sets the output to result. The result type might be a single field for simple
  1892  // returns, a slice of interfaces for anonymous returns and a struct for named
  1893  // returns.
  1894  func (_SeigManagerI *SeigManagerIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1895  	return _SeigManagerI.Contract.SeigManagerICaller.contract.Call(opts, result, method, params...)
  1896  }
  1897  
  1898  // Transfer initiates a plain transaction to move funds to the contract, calling
  1899  // its default method if one is available.
  1900  func (_SeigManagerI *SeigManagerIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1901  	return _SeigManagerI.Contract.SeigManagerITransactor.contract.Transfer(opts)
  1902  }
  1903  
  1904  // Transact invokes the (paid) contract method with params as input values.
  1905  func (_SeigManagerI *SeigManagerIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1906  	return _SeigManagerI.Contract.SeigManagerITransactor.contract.Transact(opts, method, params...)
  1907  }
  1908  
  1909  // Call invokes the (constant) contract method with params as input values and
  1910  // sets the output to result. The result type might be a single field for simple
  1911  // returns, a slice of interfaces for anonymous returns and a struct for named
  1912  // returns.
  1913  func (_SeigManagerI *SeigManagerICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1914  	return _SeigManagerI.Contract.contract.Call(opts, result, method, params...)
  1915  }
  1916  
  1917  // Transfer initiates a plain transaction to move funds to the contract, calling
  1918  // its default method if one is available.
  1919  func (_SeigManagerI *SeigManagerITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1920  	return _SeigManagerI.Contract.contract.Transfer(opts)
  1921  }
  1922  
  1923  // Transact invokes the (paid) contract method with params as input values.
  1924  func (_SeigManagerI *SeigManagerITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1925  	return _SeigManagerI.Contract.contract.Transact(opts, method, params...)
  1926  }
  1927  
  1928  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
  1929  //
  1930  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
  1931  func (_SeigManagerI *SeigManagerICaller) DEFAULTFACTOR(opts *bind.CallOpts) (*big.Int, error) {
  1932  	var (
  1933  		ret0 = new(*big.Int)
  1934  	)
  1935  	out := ret0
  1936  	err := _SeigManagerI.contract.Call(opts, out, "DEFAULT_FACTOR")
  1937  	return *ret0, err
  1938  }
  1939  
  1940  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
  1941  //
  1942  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
  1943  func (_SeigManagerI *SeigManagerISession) DEFAULTFACTOR() (*big.Int, error) {
  1944  	return _SeigManagerI.Contract.DEFAULTFACTOR(&_SeigManagerI.CallOpts)
  1945  }
  1946  
  1947  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
  1948  //
  1949  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
  1950  func (_SeigManagerI *SeigManagerICallerSession) DEFAULTFACTOR() (*big.Int, error) {
  1951  	return _SeigManagerI.Contract.DEFAULTFACTOR(&_SeigManagerI.CallOpts)
  1952  }
  1953  
  1954  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
  1955  //
  1956  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
  1957  func (_SeigManagerI *SeigManagerICaller) AdditionalTotBurnAmount(opts *bind.CallOpts, rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
  1958  	var (
  1959  		ret0 = new(*big.Int)
  1960  	)
  1961  	out := ret0
  1962  	err := _SeigManagerI.contract.Call(opts, out, "additionalTotBurnAmount", rootchain, account, amount)
  1963  	return *ret0, err
  1964  }
  1965  
  1966  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
  1967  //
  1968  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
  1969  func (_SeigManagerI *SeigManagerISession) AdditionalTotBurnAmount(rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
  1970  	return _SeigManagerI.Contract.AdditionalTotBurnAmount(&_SeigManagerI.CallOpts, rootchain, account, amount)
  1971  }
  1972  
  1973  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
  1974  //
  1975  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
  1976  func (_SeigManagerI *SeigManagerICallerSession) AdditionalTotBurnAmount(rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
  1977  	return _SeigManagerI.Contract.AdditionalTotBurnAmount(&_SeigManagerI.CallOpts, rootchain, account, amount)
  1978  }
  1979  
  1980  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
  1981  //
  1982  // Solidity: function coinages(address rootchain) constant returns(address)
  1983  func (_SeigManagerI *SeigManagerICaller) Coinages(opts *bind.CallOpts, rootchain common.Address) (common.Address, error) {
  1984  	var (
  1985  		ret0 = new(common.Address)
  1986  	)
  1987  	out := ret0
  1988  	err := _SeigManagerI.contract.Call(opts, out, "coinages", rootchain)
  1989  	return *ret0, err
  1990  }
  1991  
  1992  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
  1993  //
  1994  // Solidity: function coinages(address rootchain) constant returns(address)
  1995  func (_SeigManagerI *SeigManagerISession) Coinages(rootchain common.Address) (common.Address, error) {
  1996  	return _SeigManagerI.Contract.Coinages(&_SeigManagerI.CallOpts, rootchain)
  1997  }
  1998  
  1999  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
  2000  //
  2001  // Solidity: function coinages(address rootchain) constant returns(address)
  2002  func (_SeigManagerI *SeigManagerICallerSession) Coinages(rootchain common.Address) (common.Address, error) {
  2003  	return _SeigManagerI.Contract.Coinages(&_SeigManagerI.CallOpts, rootchain)
  2004  }
  2005  
  2006  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
  2007  //
  2008  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
  2009  func (_SeigManagerI *SeigManagerICaller) CommissionRates(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
  2010  	var (
  2011  		ret0 = new(*big.Int)
  2012  	)
  2013  	out := ret0
  2014  	err := _SeigManagerI.contract.Call(opts, out, "commissionRates", rootchain)
  2015  	return *ret0, err
  2016  }
  2017  
  2018  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
  2019  //
  2020  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
  2021  func (_SeigManagerI *SeigManagerISession) CommissionRates(rootchain common.Address) (*big.Int, error) {
  2022  	return _SeigManagerI.Contract.CommissionRates(&_SeigManagerI.CallOpts, rootchain)
  2023  }
  2024  
  2025  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
  2026  //
  2027  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
  2028  func (_SeigManagerI *SeigManagerICallerSession) CommissionRates(rootchain common.Address) (*big.Int, error) {
  2029  	return _SeigManagerI.Contract.CommissionRates(&_SeigManagerI.CallOpts, rootchain)
  2030  }
  2031  
  2032  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
  2033  //
  2034  // Solidity: function depositManager() constant returns(address)
  2035  func (_SeigManagerI *SeigManagerICaller) DepositManager(opts *bind.CallOpts) (common.Address, error) {
  2036  	var (
  2037  		ret0 = new(common.Address)
  2038  	)
  2039  	out := ret0
  2040  	err := _SeigManagerI.contract.Call(opts, out, "depositManager")
  2041  	return *ret0, err
  2042  }
  2043  
  2044  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
  2045  //
  2046  // Solidity: function depositManager() constant returns(address)
  2047  func (_SeigManagerI *SeigManagerISession) DepositManager() (common.Address, error) {
  2048  	return _SeigManagerI.Contract.DepositManager(&_SeigManagerI.CallOpts)
  2049  }
  2050  
  2051  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
  2052  //
  2053  // Solidity: function depositManager() constant returns(address)
  2054  func (_SeigManagerI *SeigManagerICallerSession) DepositManager() (common.Address, error) {
  2055  	return _SeigManagerI.Contract.DepositManager(&_SeigManagerI.CallOpts)
  2056  }
  2057  
  2058  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
  2059  //
  2060  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
  2061  func (_SeigManagerI *SeigManagerICaller) LastCommitBlock(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
  2062  	var (
  2063  		ret0 = new(*big.Int)
  2064  	)
  2065  	out := ret0
  2066  	err := _SeigManagerI.contract.Call(opts, out, "lastCommitBlock", rootchain)
  2067  	return *ret0, err
  2068  }
  2069  
  2070  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
  2071  //
  2072  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
  2073  func (_SeigManagerI *SeigManagerISession) LastCommitBlock(rootchain common.Address) (*big.Int, error) {
  2074  	return _SeigManagerI.Contract.LastCommitBlock(&_SeigManagerI.CallOpts, rootchain)
  2075  }
  2076  
  2077  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
  2078  //
  2079  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
  2080  func (_SeigManagerI *SeigManagerICallerSession) LastCommitBlock(rootchain common.Address) (*big.Int, error) {
  2081  	return _SeigManagerI.Contract.LastCommitBlock(&_SeigManagerI.CallOpts, rootchain)
  2082  }
  2083  
  2084  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
  2085  //
  2086  // Solidity: function lastSeigBlock() constant returns(uint256)
  2087  func (_SeigManagerI *SeigManagerICaller) LastSeigBlock(opts *bind.CallOpts) (*big.Int, error) {
  2088  	var (
  2089  		ret0 = new(*big.Int)
  2090  	)
  2091  	out := ret0
  2092  	err := _SeigManagerI.contract.Call(opts, out, "lastSeigBlock")
  2093  	return *ret0, err
  2094  }
  2095  
  2096  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
  2097  //
  2098  // Solidity: function lastSeigBlock() constant returns(uint256)
  2099  func (_SeigManagerI *SeigManagerISession) LastSeigBlock() (*big.Int, error) {
  2100  	return _SeigManagerI.Contract.LastSeigBlock(&_SeigManagerI.CallOpts)
  2101  }
  2102  
  2103  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
  2104  //
  2105  // Solidity: function lastSeigBlock() constant returns(uint256)
  2106  func (_SeigManagerI *SeigManagerICallerSession) LastSeigBlock() (*big.Int, error) {
  2107  	return _SeigManagerI.Contract.LastSeigBlock(&_SeigManagerI.CallOpts)
  2108  }
  2109  
  2110  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
  2111  //
  2112  // Solidity: function pausedBlock() constant returns(uint256)
  2113  func (_SeigManagerI *SeigManagerICaller) PausedBlock(opts *bind.CallOpts) (*big.Int, error) {
  2114  	var (
  2115  		ret0 = new(*big.Int)
  2116  	)
  2117  	out := ret0
  2118  	err := _SeigManagerI.contract.Call(opts, out, "pausedBlock")
  2119  	return *ret0, err
  2120  }
  2121  
  2122  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
  2123  //
  2124  // Solidity: function pausedBlock() constant returns(uint256)
  2125  func (_SeigManagerI *SeigManagerISession) PausedBlock() (*big.Int, error) {
  2126  	return _SeigManagerI.Contract.PausedBlock(&_SeigManagerI.CallOpts)
  2127  }
  2128  
  2129  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
  2130  //
  2131  // Solidity: function pausedBlock() constant returns(uint256)
  2132  func (_SeigManagerI *SeigManagerICallerSession) PausedBlock() (*big.Int, error) {
  2133  	return _SeigManagerI.Contract.PausedBlock(&_SeigManagerI.CallOpts)
  2134  }
  2135  
  2136  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
  2137  //
  2138  // Solidity: function powerton() constant returns(address)
  2139  func (_SeigManagerI *SeigManagerICaller) Powerton(opts *bind.CallOpts) (common.Address, error) {
  2140  	var (
  2141  		ret0 = new(common.Address)
  2142  	)
  2143  	out := ret0
  2144  	err := _SeigManagerI.contract.Call(opts, out, "powerton")
  2145  	return *ret0, err
  2146  }
  2147  
  2148  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
  2149  //
  2150  // Solidity: function powerton() constant returns(address)
  2151  func (_SeigManagerI *SeigManagerISession) Powerton() (common.Address, error) {
  2152  	return _SeigManagerI.Contract.Powerton(&_SeigManagerI.CallOpts)
  2153  }
  2154  
  2155  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
  2156  //
  2157  // Solidity: function powerton() constant returns(address)
  2158  func (_SeigManagerI *SeigManagerICallerSession) Powerton() (common.Address, error) {
  2159  	return _SeigManagerI.Contract.Powerton(&_SeigManagerI.CallOpts)
  2160  }
  2161  
  2162  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  2163  //
  2164  // Solidity: function registry() constant returns(address)
  2165  func (_SeigManagerI *SeigManagerICaller) Registry(opts *bind.CallOpts) (common.Address, error) {
  2166  	var (
  2167  		ret0 = new(common.Address)
  2168  	)
  2169  	out := ret0
  2170  	err := _SeigManagerI.contract.Call(opts, out, "registry")
  2171  	return *ret0, err
  2172  }
  2173  
  2174  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  2175  //
  2176  // Solidity: function registry() constant returns(address)
  2177  func (_SeigManagerI *SeigManagerISession) Registry() (common.Address, error) {
  2178  	return _SeigManagerI.Contract.Registry(&_SeigManagerI.CallOpts)
  2179  }
  2180  
  2181  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  2182  //
  2183  // Solidity: function registry() constant returns(address)
  2184  func (_SeigManagerI *SeigManagerICallerSession) Registry() (common.Address, error) {
  2185  	return _SeigManagerI.Contract.Registry(&_SeigManagerI.CallOpts)
  2186  }
  2187  
  2188  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
  2189  //
  2190  // Solidity: function seigPerBlock() constant returns(uint256)
  2191  func (_SeigManagerI *SeigManagerICaller) SeigPerBlock(opts *bind.CallOpts) (*big.Int, error) {
  2192  	var (
  2193  		ret0 = new(*big.Int)
  2194  	)
  2195  	out := ret0
  2196  	err := _SeigManagerI.contract.Call(opts, out, "seigPerBlock")
  2197  	return *ret0, err
  2198  }
  2199  
  2200  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
  2201  //
  2202  // Solidity: function seigPerBlock() constant returns(uint256)
  2203  func (_SeigManagerI *SeigManagerISession) SeigPerBlock() (*big.Int, error) {
  2204  	return _SeigManagerI.Contract.SeigPerBlock(&_SeigManagerI.CallOpts)
  2205  }
  2206  
  2207  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
  2208  //
  2209  // Solidity: function seigPerBlock() constant returns(uint256)
  2210  func (_SeigManagerI *SeigManagerICallerSession) SeigPerBlock() (*big.Int, error) {
  2211  	return _SeigManagerI.Contract.SeigPerBlock(&_SeigManagerI.CallOpts)
  2212  }
  2213  
  2214  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
  2215  //
  2216  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
  2217  func (_SeigManagerI *SeigManagerICaller) StakeOf(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  2218  	var (
  2219  		ret0 = new(*big.Int)
  2220  	)
  2221  	out := ret0
  2222  	err := _SeigManagerI.contract.Call(opts, out, "stakeOf", rootchain, account)
  2223  	return *ret0, err
  2224  }
  2225  
  2226  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
  2227  //
  2228  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
  2229  func (_SeigManagerI *SeigManagerISession) StakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
  2230  	return _SeigManagerI.Contract.StakeOf(&_SeigManagerI.CallOpts, rootchain, account)
  2231  }
  2232  
  2233  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
  2234  //
  2235  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
  2236  func (_SeigManagerI *SeigManagerICallerSession) StakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
  2237  	return _SeigManagerI.Contract.StakeOf(&_SeigManagerI.CallOpts, rootchain, account)
  2238  }
  2239  
  2240  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
  2241  //
  2242  // Solidity: function ton() constant returns(address)
  2243  func (_SeigManagerI *SeigManagerICaller) Ton(opts *bind.CallOpts) (common.Address, error) {
  2244  	var (
  2245  		ret0 = new(common.Address)
  2246  	)
  2247  	out := ret0
  2248  	err := _SeigManagerI.contract.Call(opts, out, "ton")
  2249  	return *ret0, err
  2250  }
  2251  
  2252  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
  2253  //
  2254  // Solidity: function ton() constant returns(address)
  2255  func (_SeigManagerI *SeigManagerISession) Ton() (common.Address, error) {
  2256  	return _SeigManagerI.Contract.Ton(&_SeigManagerI.CallOpts)
  2257  }
  2258  
  2259  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
  2260  //
  2261  // Solidity: function ton() constant returns(address)
  2262  func (_SeigManagerI *SeigManagerICallerSession) Ton() (common.Address, error) {
  2263  	return _SeigManagerI.Contract.Ton(&_SeigManagerI.CallOpts)
  2264  }
  2265  
  2266  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
  2267  //
  2268  // Solidity: function tot() constant returns(address)
  2269  func (_SeigManagerI *SeigManagerICaller) Tot(opts *bind.CallOpts) (common.Address, error) {
  2270  	var (
  2271  		ret0 = new(common.Address)
  2272  	)
  2273  	out := ret0
  2274  	err := _SeigManagerI.contract.Call(opts, out, "tot")
  2275  	return *ret0, err
  2276  }
  2277  
  2278  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
  2279  //
  2280  // Solidity: function tot() constant returns(address)
  2281  func (_SeigManagerI *SeigManagerISession) Tot() (common.Address, error) {
  2282  	return _SeigManagerI.Contract.Tot(&_SeigManagerI.CallOpts)
  2283  }
  2284  
  2285  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
  2286  //
  2287  // Solidity: function tot() constant returns(address)
  2288  func (_SeigManagerI *SeigManagerICallerSession) Tot() (common.Address, error) {
  2289  	return _SeigManagerI.Contract.Tot(&_SeigManagerI.CallOpts)
  2290  }
  2291  
  2292  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
  2293  //
  2294  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
  2295  func (_SeigManagerI *SeigManagerICaller) UncomittedStakeOf(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  2296  	var (
  2297  		ret0 = new(*big.Int)
  2298  	)
  2299  	out := ret0
  2300  	err := _SeigManagerI.contract.Call(opts, out, "uncomittedStakeOf", rootchain, account)
  2301  	return *ret0, err
  2302  }
  2303  
  2304  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
  2305  //
  2306  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
  2307  func (_SeigManagerI *SeigManagerISession) UncomittedStakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
  2308  	return _SeigManagerI.Contract.UncomittedStakeOf(&_SeigManagerI.CallOpts, rootchain, account)
  2309  }
  2310  
  2311  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
  2312  //
  2313  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
  2314  func (_SeigManagerI *SeigManagerICallerSession) UncomittedStakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
  2315  	return _SeigManagerI.Contract.UncomittedStakeOf(&_SeigManagerI.CallOpts, rootchain, account)
  2316  }
  2317  
  2318  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
  2319  //
  2320  // Solidity: function unpausedBlock() constant returns(uint256)
  2321  func (_SeigManagerI *SeigManagerICaller) UnpausedBlock(opts *bind.CallOpts) (*big.Int, error) {
  2322  	var (
  2323  		ret0 = new(*big.Int)
  2324  	)
  2325  	out := ret0
  2326  	err := _SeigManagerI.contract.Call(opts, out, "unpausedBlock")
  2327  	return *ret0, err
  2328  }
  2329  
  2330  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
  2331  //
  2332  // Solidity: function unpausedBlock() constant returns(uint256)
  2333  func (_SeigManagerI *SeigManagerISession) UnpausedBlock() (*big.Int, error) {
  2334  	return _SeigManagerI.Contract.UnpausedBlock(&_SeigManagerI.CallOpts)
  2335  }
  2336  
  2337  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
  2338  //
  2339  // Solidity: function unpausedBlock() constant returns(uint256)
  2340  func (_SeigManagerI *SeigManagerICallerSession) UnpausedBlock() (*big.Int, error) {
  2341  	return _SeigManagerI.Contract.UnpausedBlock(&_SeigManagerI.CallOpts)
  2342  }
  2343  
  2344  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  2345  //
  2346  // Solidity: function wton() constant returns(address)
  2347  func (_SeigManagerI *SeigManagerICaller) Wton(opts *bind.CallOpts) (common.Address, error) {
  2348  	var (
  2349  		ret0 = new(common.Address)
  2350  	)
  2351  	out := ret0
  2352  	err := _SeigManagerI.contract.Call(opts, out, "wton")
  2353  	return *ret0, err
  2354  }
  2355  
  2356  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  2357  //
  2358  // Solidity: function wton() constant returns(address)
  2359  func (_SeigManagerI *SeigManagerISession) Wton() (common.Address, error) {
  2360  	return _SeigManagerI.Contract.Wton(&_SeigManagerI.CallOpts)
  2361  }
  2362  
  2363  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  2364  //
  2365  // Solidity: function wton() constant returns(address)
  2366  func (_SeigManagerI *SeigManagerICallerSession) Wton() (common.Address, error) {
  2367  	return _SeigManagerI.Contract.Wton(&_SeigManagerI.CallOpts)
  2368  }
  2369  
  2370  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
  2371  //
  2372  // Solidity: function deployCoinage(address rootchain) returns(bool)
  2373  func (_SeigManagerI *SeigManagerITransactor) DeployCoinage(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
  2374  	return _SeigManagerI.contract.Transact(opts, "deployCoinage", rootchain)
  2375  }
  2376  
  2377  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
  2378  //
  2379  // Solidity: function deployCoinage(address rootchain) returns(bool)
  2380  func (_SeigManagerI *SeigManagerISession) DeployCoinage(rootchain common.Address) (*types.Transaction, error) {
  2381  	return _SeigManagerI.Contract.DeployCoinage(&_SeigManagerI.TransactOpts, rootchain)
  2382  }
  2383  
  2384  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
  2385  //
  2386  // Solidity: function deployCoinage(address rootchain) returns(bool)
  2387  func (_SeigManagerI *SeigManagerITransactorSession) DeployCoinage(rootchain common.Address) (*types.Transaction, error) {
  2388  	return _SeigManagerI.Contract.DeployCoinage(&_SeigManagerI.TransactOpts, rootchain)
  2389  }
  2390  
  2391  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
  2392  //
  2393  // Solidity: function onCommit() returns(bool)
  2394  func (_SeigManagerI *SeigManagerITransactor) OnCommit(opts *bind.TransactOpts) (*types.Transaction, error) {
  2395  	return _SeigManagerI.contract.Transact(opts, "onCommit")
  2396  }
  2397  
  2398  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
  2399  //
  2400  // Solidity: function onCommit() returns(bool)
  2401  func (_SeigManagerI *SeigManagerISession) OnCommit() (*types.Transaction, error) {
  2402  	return _SeigManagerI.Contract.OnCommit(&_SeigManagerI.TransactOpts)
  2403  }
  2404  
  2405  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
  2406  //
  2407  // Solidity: function onCommit() returns(bool)
  2408  func (_SeigManagerI *SeigManagerITransactorSession) OnCommit() (*types.Transaction, error) {
  2409  	return _SeigManagerI.Contract.OnCommit(&_SeigManagerI.TransactOpts)
  2410  }
  2411  
  2412  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
  2413  //
  2414  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
  2415  func (_SeigManagerI *SeigManagerITransactor) OnDeposit(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  2416  	return _SeigManagerI.contract.Transact(opts, "onDeposit", rootchain, account, amount)
  2417  }
  2418  
  2419  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
  2420  //
  2421  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
  2422  func (_SeigManagerI *SeigManagerISession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  2423  	return _SeigManagerI.Contract.OnDeposit(&_SeigManagerI.TransactOpts, rootchain, account, amount)
  2424  }
  2425  
  2426  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
  2427  //
  2428  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
  2429  func (_SeigManagerI *SeigManagerITransactorSession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  2430  	return _SeigManagerI.Contract.OnDeposit(&_SeigManagerI.TransactOpts, rootchain, account, amount)
  2431  }
  2432  
  2433  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  2434  //
  2435  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
  2436  func (_SeigManagerI *SeigManagerITransactor) OnTransfer(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2437  	return _SeigManagerI.contract.Transact(opts, "onTransfer", sender, recipient, amount)
  2438  }
  2439  
  2440  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  2441  //
  2442  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
  2443  func (_SeigManagerI *SeigManagerISession) OnTransfer(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2444  	return _SeigManagerI.Contract.OnTransfer(&_SeigManagerI.TransactOpts, sender, recipient, amount)
  2445  }
  2446  
  2447  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  2448  //
  2449  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
  2450  func (_SeigManagerI *SeigManagerITransactorSession) OnTransfer(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2451  	return _SeigManagerI.Contract.OnTransfer(&_SeigManagerI.TransactOpts, sender, recipient, amount)
  2452  }
  2453  
  2454  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
  2455  //
  2456  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
  2457  func (_SeigManagerI *SeigManagerITransactor) OnWithdraw(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  2458  	return _SeigManagerI.contract.Transact(opts, "onWithdraw", rootchain, account, amount)
  2459  }
  2460  
  2461  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
  2462  //
  2463  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
  2464  func (_SeigManagerI *SeigManagerISession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  2465  	return _SeigManagerI.Contract.OnWithdraw(&_SeigManagerI.TransactOpts, rootchain, account, amount)
  2466  }
  2467  
  2468  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
  2469  //
  2470  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
  2471  func (_SeigManagerI *SeigManagerITransactorSession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  2472  	return _SeigManagerI.Contract.OnWithdraw(&_SeigManagerI.TransactOpts, rootchain, account, amount)
  2473  }
  2474  
  2475  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
  2476  //
  2477  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
  2478  func (_SeigManagerI *SeigManagerITransactor) SetCommissionRate(opts *bind.TransactOpts, rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  2479  	return _SeigManagerI.contract.Transact(opts, "setCommissionRate", rootchain, commission, isCommissionRateNegative)
  2480  }
  2481  
  2482  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
  2483  //
  2484  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
  2485  func (_SeigManagerI *SeigManagerISession) SetCommissionRate(rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  2486  	return _SeigManagerI.Contract.SetCommissionRate(&_SeigManagerI.TransactOpts, rootchain, commission, isCommissionRateNegative)
  2487  }
  2488  
  2489  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
  2490  //
  2491  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
  2492  func (_SeigManagerI *SeigManagerITransactorSession) SetCommissionRate(rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  2493  	return _SeigManagerI.Contract.SetCommissionRate(&_SeigManagerI.TransactOpts, rootchain, commission, isCommissionRateNegative)
  2494  }