diff --git a/chain/evm/precompiles/bank/fixed_supply_bank_erc20.abigen.go b/chain/evm/precompiles/bank/fixed_supply_bank_erc20.abigen.go new file mode 100644 index 00000000..e6a6ba5d --- /dev/null +++ b/chain/evm/precompiles/bank/fixed_supply_bank_erc20.abigen.go @@ -0,0 +1,760 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bank + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// FixedSupplyBankERC20MetaData contains all meta data concerning the FixedSupplyBankERC20 contract. +var FixedSupplyBankERC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"initial_supply_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x6080604052606460055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051611e70380380611e7083398181016040528101906100669190610677565b83838360405180602001604052805f81525060405180602001604052805f8152508160039081610096919061091a565b5080600490816100a6919061091a565b50505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337d2c2f48484846040518463ffffffff1660e01b815260040161010793929190610a40565b6020604051808303815f875af1158015610123573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101479190610ab8565b505050505f81111561016457610163338261016d60201b60201c565b5b50505050610bbf565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101dd575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016101d49190610b22565b60405180910390fd5b6101ee5f83836101f260201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102c75760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610281929190610b4a565b6020604051808303815f875af115801561029d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c19190610ab8565b5061043d565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361039c5760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac84836040518363ffffffff1660e01b8152600401610356929190610b4a565b6020604051808303815f875af1158015610372573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103969190610ab8565b5061043c565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc88484846040518463ffffffff1660e01b81526004016103fa93929190610b71565b6020604051808303815f875af1158015610416573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043a9190610ab8565b505b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161049a9190610ba6565b60405180910390a3505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610506826104c0565b810181811067ffffffffffffffff82111715610525576105246104d0565b5b80604052505050565b5f6105376104a7565b905061054382826104fd565b919050565b5f67ffffffffffffffff821115610562576105616104d0565b5b61056b826104c0565b9050602081019050919050565b5f5b8381101561059557808201518184015260208101905061057a565b5f8484015250505050565b5f6105b26105ad84610548565b61052e565b9050828152602081018484840111156105ce576105cd6104bc565b5b6105d9848285610578565b509392505050565b5f82601f8301126105f5576105f46104b8565b5b81516106058482602086016105a0565b91505092915050565b5f60ff82169050919050565b6106238161060e565b811461062d575f5ffd5b50565b5f8151905061063e8161061a565b92915050565b5f819050919050565b61065681610644565b8114610660575f5ffd5b50565b5f815190506106718161064d565b92915050565b5f5f5f5f6080858703121561068f5761068e6104b0565b5b5f85015167ffffffffffffffff8111156106ac576106ab6104b4565b5b6106b8878288016105e1565b945050602085015167ffffffffffffffff8111156106d9576106d86104b4565b5b6106e5878288016105e1565b93505060406106f687828801610630565b925050606061070787828801610663565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061076157607f821691505b6020821081036107745761077361071d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261079b565b6107e0868361079b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61081b61081661081184610644565b6107f8565b610644565b9050919050565b5f819050919050565b61083483610801565b61084861084082610822565b8484546107a7565b825550505050565b5f5f905090565b61085f610850565b61086a81848461082b565b505050565b5b8181101561088d576108825f82610857565b600181019050610870565b5050565b601f8211156108d2576108a38161077a565b6108ac8461078c565b810160208510156108bb578190505b6108cf6108c78561078c565b83018261086f565b50505b505050565b5f82821c905092915050565b5f6108f25f19846008026108d7565b1980831691505092915050565b5f61090a83836108e3565b9150826002028217905092915050565b61092382610713565b67ffffffffffffffff81111561093c5761093b6104d0565b5b610946825461074a565b610951828285610891565b5f60209050601f831160018114610982575f8415610970578287015190505b61097a85826108ff565b8655506109e1565b601f1984166109908661077a565b5f5b828110156109b757848901518255600182019150602085019450602081019050610992565b868310156109d457848901516109d0601f8916826108e3565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b5f610a0382610713565b610a0d81856109e9565b9350610a1d818560208601610578565b610a26816104c0565b840191505092915050565b610a3a8161060e565b82525050565b5f6060820190508181035f830152610a5881866109f9565b90508181036020830152610a6c81856109f9565b9050610a7b6040830184610a31565b949350505050565b5f8115159050919050565b610a9781610a83565b8114610aa1575f5ffd5b50565b5f81519050610ab281610a8e565b92915050565b5f60208284031215610acd57610acc6104b0565b5b5f610ada84828501610aa4565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b0c82610ae3565b9050919050565b610b1c81610b02565b82525050565b5f602082019050610b355f830184610b13565b92915050565b610b4481610644565b82525050565b5f604082019050610b5d5f830185610b13565b610b6a6020830184610b3b565b9392505050565b5f606082019050610b845f830186610b13565b610b916020830185610b13565b610b9e6040830184610b3b565b949350505050565b5f602082019050610bb95f830184610b3b565b92915050565b6112a480610bcc5f395ff3fe608060405234801561000f575f5ffd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f5ffd5b61009d6101fd565b6040516100aa9190610ce6565b60405180910390f35b6100cd60048036038101906100c89190610da4565b6102aa565b6040516100da9190610dfc565b60405180910390f35b6100eb6102cc565b6040516100f89190610e24565b60405180910390f35b61011b60048036038101906101169190610e3d565b61036b565b6040516101289190610dfc565b60405180910390f35b610139610399565b6040516101469190610ea8565b60405180910390f35b61016960048036038101906101649190610ec1565b610447565b6040516101769190610e24565b60405180910390f35b6101876104ea565b6040516101949190610ce6565b60405180910390f35b6101b760048036038101906101b29190610da4565b610598565b6040516101c49190610dfc565b60405180910390f35b6101e760048036038101906101e29190610eec565b6105ba565b6040516101f49190610e24565b60405180910390f35b60608060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ba21572306040518263ffffffff1660e01b815260040161025a9190610f39565b5f60405180830381865afa158015610274573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061029c919061109a565b905050809150508091505090565b5f5f6102b461063c565b90506102c1818585610643565b600191505092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e4dc2aa4306040518263ffffffff1660e01b81526004016103279190610f39565b602060405180830381865afa158015610342573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103669190611136565b905090565b5f5f61037561063c565b9050610382858285610655565b61038d8585856106e8565b60019150509392505050565b5f5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ba21572306040518263ffffffff1660e01b81526004016103f59190610f39565b5f60405180830381865afa15801561040f573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610437919061109a565b9091509050809150508091505090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7888aec30846040518363ffffffff1660e01b81526004016104a4929190611161565b602060405180830381865afa1580156104bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e39190611136565b9050919050565b60608060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ba21572306040518263ffffffff1660e01b81526004016105479190610f39565b5f60405180830381865afa158015610561573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610589919061109a565b90915050809150508091505090565b5f5f6105a261063c565b90506105af8185856106e8565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b61065083838360016107d8565b505050565b5f61066084846105ba565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106e257818110156106d3578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106ca93929190611188565b60405180910390fd5b6106e184848484035f6107d8565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610758575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161074f9190610f39565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107c8575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107bf9190610f39565b60405180910390fd5b6107d38383836109a7565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610848575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161083f9190610f39565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108b8575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016108af9190610f39565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156109a1578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109989190610e24565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a7c5760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610a369291906111bd565b6020604051808303815f875af1158015610a52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a76919061120e565b50610bf2565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b515760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac84836040518363ffffffff1660e01b8152600401610b0b9291906111bd565b6020604051808303815f875af1158015610b27573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4b919061120e565b50610bf1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc88484846040518463ffffffff1660e01b8152600401610baf93929190611239565b6020604051808303815f875af1158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef919061120e565b505b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c4f9190610e24565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c93578082015181840152602081019050610c78565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610cb882610c5c565b610cc28185610c66565b9350610cd2818560208601610c76565b610cdb81610c9e565b840191505092915050565b5f6020820190508181035f830152610cfe8184610cae565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d4082610d17565b9050919050565b610d5081610d36565b8114610d5a575f5ffd5b50565b5f81359050610d6b81610d47565b92915050565b5f819050919050565b610d8381610d71565b8114610d8d575f5ffd5b50565b5f81359050610d9e81610d7a565b92915050565b5f5f60408385031215610dba57610db9610d0f565b5b5f610dc785828601610d5d565b9250506020610dd885828601610d90565b9150509250929050565b5f8115159050919050565b610df681610de2565b82525050565b5f602082019050610e0f5f830184610ded565b92915050565b610e1e81610d71565b82525050565b5f602082019050610e375f830184610e15565b92915050565b5f5f5f60608486031215610e5457610e53610d0f565b5b5f610e6186828701610d5d565b9350506020610e7286828701610d5d565b9250506040610e8386828701610d90565b9150509250925092565b5f60ff82169050919050565b610ea281610e8d565b82525050565b5f602082019050610ebb5f830184610e99565b92915050565b5f60208284031215610ed657610ed5610d0f565b5b5f610ee384828501610d5d565b91505092915050565b5f5f60408385031215610f0257610f01610d0f565b5b5f610f0f85828601610d5d565b9250506020610f2085828601610d5d565b9150509250929050565b610f3381610d36565b82525050565b5f602082019050610f4c5f830184610f2a565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610f9082610c9e565b810181811067ffffffffffffffff82111715610faf57610fae610f5a565b5b80604052505050565b5f610fc1610d06565b9050610fcd8282610f87565b919050565b5f67ffffffffffffffff821115610fec57610feb610f5a565b5b610ff582610c9e565b9050602081019050919050565b5f61101461100f84610fd2565b610fb8565b9050828152602081018484840111156110305761102f610f56565b5b61103b848285610c76565b509392505050565b5f82601f83011261105757611056610f52565b5b8151611067848260208601611002565b91505092915050565b61107981610e8d565b8114611083575f5ffd5b50565b5f8151905061109481611070565b92915050565b5f5f5f606084860312156110b1576110b0610d0f565b5b5f84015167ffffffffffffffff8111156110ce576110cd610d13565b5b6110da86828701611043565b935050602084015167ffffffffffffffff8111156110fb576110fa610d13565b5b61110786828701611043565b925050604061111886828701611086565b9150509250925092565b5f8151905061113081610d7a565b92915050565b5f6020828403121561114b5761114a610d0f565b5b5f61115884828501611122565b91505092915050565b5f6040820190506111745f830185610f2a565b6111816020830184610f2a565b9392505050565b5f60608201905061119b5f830186610f2a565b6111a86020830185610e15565b6111b56040830184610e15565b949350505050565b5f6040820190506111d05f830185610f2a565b6111dd6020830184610e15565b9392505050565b6111ed81610de2565b81146111f7575f5ffd5b50565b5f81519050611208816111e4565b92915050565b5f6020828403121561122357611222610d0f565b5b5f611230848285016111fa565b91505092915050565b5f60608201905061124c5f830186610f2a565b6112596020830185610f2a565b6112666040830184610e15565b94935050505056fea2646970667358221220e72ce46492ce4539131ab8c7bc5f37356347b1bada6320589d941b313e79bb5c64736f6c634300081b0033", +} + +// FixedSupplyBankERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use FixedSupplyBankERC20MetaData.ABI instead. +var FixedSupplyBankERC20ABI = FixedSupplyBankERC20MetaData.ABI + +// FixedSupplyBankERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use FixedSupplyBankERC20MetaData.Bin instead. +var FixedSupplyBankERC20Bin = FixedSupplyBankERC20MetaData.Bin + +// DeployFixedSupplyBankERC20 deploys a new Ethereum contract, binding an instance of FixedSupplyBankERC20 to it. +func DeployFixedSupplyBankERC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, initial_supply_ *big.Int) (common.Address, *types.Transaction, *FixedSupplyBankERC20, error) { + parsed, err := FixedSupplyBankERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FixedSupplyBankERC20Bin), backend, name_, symbol_, decimals_, initial_supply_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &FixedSupplyBankERC20{FixedSupplyBankERC20Caller: FixedSupplyBankERC20Caller{contract: contract}, FixedSupplyBankERC20Transactor: FixedSupplyBankERC20Transactor{contract: contract}, FixedSupplyBankERC20Filterer: FixedSupplyBankERC20Filterer{contract: contract}}, nil +} + +// FixedSupplyBankERC20 is an auto generated Go binding around an Ethereum contract. +type FixedSupplyBankERC20 struct { + FixedSupplyBankERC20Caller // Read-only binding to the contract + FixedSupplyBankERC20Transactor // Write-only binding to the contract + FixedSupplyBankERC20Filterer // Log filterer for contract events +} + +// FixedSupplyBankERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type FixedSupplyBankERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FixedSupplyBankERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type FixedSupplyBankERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FixedSupplyBankERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type FixedSupplyBankERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FixedSupplyBankERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type FixedSupplyBankERC20Session struct { + Contract *FixedSupplyBankERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FixedSupplyBankERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type FixedSupplyBankERC20CallerSession struct { + Contract *FixedSupplyBankERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// FixedSupplyBankERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type FixedSupplyBankERC20TransactorSession struct { + Contract *FixedSupplyBankERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FixedSupplyBankERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type FixedSupplyBankERC20Raw struct { + Contract *FixedSupplyBankERC20 // Generic contract binding to access the raw methods on +} + +// FixedSupplyBankERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type FixedSupplyBankERC20CallerRaw struct { + Contract *FixedSupplyBankERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// FixedSupplyBankERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type FixedSupplyBankERC20TransactorRaw struct { + Contract *FixedSupplyBankERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewFixedSupplyBankERC20 creates a new instance of FixedSupplyBankERC20, bound to a specific deployed contract. +func NewFixedSupplyBankERC20(address common.Address, backend bind.ContractBackend) (*FixedSupplyBankERC20, error) { + contract, err := bindFixedSupplyBankERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &FixedSupplyBankERC20{FixedSupplyBankERC20Caller: FixedSupplyBankERC20Caller{contract: contract}, FixedSupplyBankERC20Transactor: FixedSupplyBankERC20Transactor{contract: contract}, FixedSupplyBankERC20Filterer: FixedSupplyBankERC20Filterer{contract: contract}}, nil +} + +// NewFixedSupplyBankERC20Caller creates a new read-only instance of FixedSupplyBankERC20, bound to a specific deployed contract. +func NewFixedSupplyBankERC20Caller(address common.Address, caller bind.ContractCaller) (*FixedSupplyBankERC20Caller, error) { + contract, err := bindFixedSupplyBankERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &FixedSupplyBankERC20Caller{contract: contract}, nil +} + +// NewFixedSupplyBankERC20Transactor creates a new write-only instance of FixedSupplyBankERC20, bound to a specific deployed contract. +func NewFixedSupplyBankERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*FixedSupplyBankERC20Transactor, error) { + contract, err := bindFixedSupplyBankERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &FixedSupplyBankERC20Transactor{contract: contract}, nil +} + +// NewFixedSupplyBankERC20Filterer creates a new log filterer instance of FixedSupplyBankERC20, bound to a specific deployed contract. +func NewFixedSupplyBankERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*FixedSupplyBankERC20Filterer, error) { + contract, err := bindFixedSupplyBankERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &FixedSupplyBankERC20Filterer{contract: contract}, nil +} + +// bindFixedSupplyBankERC20 binds a generic wrapper to an already deployed contract. +func bindFixedSupplyBankERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := FixedSupplyBankERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FixedSupplyBankERC20.Contract.FixedSupplyBankERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.FixedSupplyBankERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.FixedSupplyBankERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FixedSupplyBankERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _FixedSupplyBankERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _FixedSupplyBankERC20.Contract.Allowance(&_FixedSupplyBankERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _FixedSupplyBankERC20.Contract.Allowance(&_FixedSupplyBankERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _FixedSupplyBankERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _FixedSupplyBankERC20.Contract.BalanceOf(&_FixedSupplyBankERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _FixedSupplyBankERC20.Contract.BalanceOf(&_FixedSupplyBankERC20.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _FixedSupplyBankERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) Decimals() (uint8, error) { + return _FixedSupplyBankERC20.Contract.Decimals(&_FixedSupplyBankERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20CallerSession) Decimals() (uint8, error) { + return _FixedSupplyBankERC20.Contract.Decimals(&_FixedSupplyBankERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FixedSupplyBankERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) Name() (string, error) { + return _FixedSupplyBankERC20.Contract.Name(&_FixedSupplyBankERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20CallerSession) Name() (string, error) { + return _FixedSupplyBankERC20.Contract.Name(&_FixedSupplyBankERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FixedSupplyBankERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) Symbol() (string, error) { + return _FixedSupplyBankERC20.Contract.Symbol(&_FixedSupplyBankERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20CallerSession) Symbol() (string, error) { + return _FixedSupplyBankERC20.Contract.Symbol(&_FixedSupplyBankERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FixedSupplyBankERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) TotalSupply() (*big.Int, error) { + return _FixedSupplyBankERC20.Contract.TotalSupply(&_FixedSupplyBankERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20CallerSession) TotalSupply() (*big.Int, error) { + return _FixedSupplyBankERC20.Contract.TotalSupply(&_FixedSupplyBankERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.Approve(&_FixedSupplyBankERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.Approve(&_FixedSupplyBankERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.Transfer(&_FixedSupplyBankERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.Transfer(&_FixedSupplyBankERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.TransferFrom(&_FixedSupplyBankERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _FixedSupplyBankERC20.Contract.TransferFrom(&_FixedSupplyBankERC20.TransactOpts, from, to, value) +} + +// FixedSupplyBankERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the FixedSupplyBankERC20 contract. +type FixedSupplyBankERC20ApprovalIterator struct { + Event *FixedSupplyBankERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FixedSupplyBankERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FixedSupplyBankERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FixedSupplyBankERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FixedSupplyBankERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FixedSupplyBankERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FixedSupplyBankERC20Approval represents a Approval event raised by the FixedSupplyBankERC20 contract. +type FixedSupplyBankERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*FixedSupplyBankERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _FixedSupplyBankERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &FixedSupplyBankERC20ApprovalIterator{contract: _FixedSupplyBankERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *FixedSupplyBankERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _FixedSupplyBankERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FixedSupplyBankERC20Approval) + if err := _FixedSupplyBankERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Filterer) ParseApproval(log types.Log) (*FixedSupplyBankERC20Approval, error) { + event := new(FixedSupplyBankERC20Approval) + if err := _FixedSupplyBankERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FixedSupplyBankERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the FixedSupplyBankERC20 contract. +type FixedSupplyBankERC20TransferIterator struct { + Event *FixedSupplyBankERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FixedSupplyBankERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FixedSupplyBankERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FixedSupplyBankERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FixedSupplyBankERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FixedSupplyBankERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FixedSupplyBankERC20Transfer represents a Transfer event raised by the FixedSupplyBankERC20 contract. +type FixedSupplyBankERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*FixedSupplyBankERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _FixedSupplyBankERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &FixedSupplyBankERC20TransferIterator{contract: _FixedSupplyBankERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *FixedSupplyBankERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _FixedSupplyBankERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FixedSupplyBankERC20Transfer) + if err := _FixedSupplyBankERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_FixedSupplyBankERC20 *FixedSupplyBankERC20Filterer) ParseTransfer(log types.Log) (*FixedSupplyBankERC20Transfer, error) { + event := new(FixedSupplyBankERC20Transfer) + if err := _FixedSupplyBankERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/chain/evm/precompiles/bank/i_bank_module.abigen.go b/chain/evm/precompiles/bank/i_bank_module.abigen.go new file mode 100644 index 00000000..c6ba88d6 --- /dev/null +++ b/chain/evm/precompiles/bank/i_bank_module.abigen.go @@ -0,0 +1,360 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bank + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BankModuleMetaData contains all meta data concerning the BankModule contract. +var BankModuleMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"metadata\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setMetadata\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"payable\"}]", +} + +// BankModuleABI is the input ABI used to generate the binding from. +// Deprecated: Use BankModuleMetaData.ABI instead. +var BankModuleABI = BankModuleMetaData.ABI + +// BankModule is an auto generated Go binding around an Ethereum contract. +type BankModule struct { + BankModuleCaller // Read-only binding to the contract + BankModuleTransactor // Write-only binding to the contract + BankModuleFilterer // Log filterer for contract events +} + +// BankModuleCaller is an auto generated read-only Go binding around an Ethereum contract. +type BankModuleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BankModuleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type BankModuleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BankModuleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type BankModuleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BankModuleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type BankModuleSession struct { + Contract *BankModule // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BankModuleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type BankModuleCallerSession struct { + Contract *BankModuleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BankModuleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type BankModuleTransactorSession struct { + Contract *BankModuleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BankModuleRaw is an auto generated low-level Go binding around an Ethereum contract. +type BankModuleRaw struct { + Contract *BankModule // Generic contract binding to access the raw methods on +} + +// BankModuleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type BankModuleCallerRaw struct { + Contract *BankModuleCaller // Generic read-only contract binding to access the raw methods on +} + +// BankModuleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type BankModuleTransactorRaw struct { + Contract *BankModuleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBankModule creates a new instance of BankModule, bound to a specific deployed contract. +func NewBankModule(address common.Address, backend bind.ContractBackend) (*BankModule, error) { + contract, err := bindBankModule(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BankModule{BankModuleCaller: BankModuleCaller{contract: contract}, BankModuleTransactor: BankModuleTransactor{contract: contract}, BankModuleFilterer: BankModuleFilterer{contract: contract}}, nil +} + +// NewBankModuleCaller creates a new read-only instance of BankModule, bound to a specific deployed contract. +func NewBankModuleCaller(address common.Address, caller bind.ContractCaller) (*BankModuleCaller, error) { + contract, err := bindBankModule(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BankModuleCaller{contract: contract}, nil +} + +// NewBankModuleTransactor creates a new write-only instance of BankModule, bound to a specific deployed contract. +func NewBankModuleTransactor(address common.Address, transactor bind.ContractTransactor) (*BankModuleTransactor, error) { + contract, err := bindBankModule(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BankModuleTransactor{contract: contract}, nil +} + +// NewBankModuleFilterer creates a new log filterer instance of BankModule, bound to a specific deployed contract. +func NewBankModuleFilterer(address common.Address, filterer bind.ContractFilterer) (*BankModuleFilterer, error) { + contract, err := bindBankModule(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BankModuleFilterer{contract: contract}, nil +} + +// bindBankModule binds a generic wrapper to an already deployed contract. +func bindBankModule(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BankModuleMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BankModule *BankModuleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BankModule.Contract.BankModuleCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BankModule *BankModuleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BankModule.Contract.BankModuleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BankModule *BankModuleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BankModule.Contract.BankModuleTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BankModule *BankModuleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BankModule.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BankModule *BankModuleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BankModule.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BankModule *BankModuleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BankModule.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0xf7888aec. +// +// Solidity: function balanceOf(address , address ) view returns(uint256) +func (_BankModule *BankModuleCaller) BalanceOf(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { + var out []interface{} + err := _BankModule.contract.Call(opts, &out, "balanceOf", arg0, arg1) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0xf7888aec. +// +// Solidity: function balanceOf(address , address ) view returns(uint256) +func (_BankModule *BankModuleSession) BalanceOf(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _BankModule.Contract.BalanceOf(&_BankModule.CallOpts, arg0, arg1) +} + +// BalanceOf is a free data retrieval call binding the contract method 0xf7888aec. +// +// Solidity: function balanceOf(address , address ) view returns(uint256) +func (_BankModule *BankModuleCallerSession) BalanceOf(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _BankModule.Contract.BalanceOf(&_BankModule.CallOpts, arg0, arg1) +} + +// Metadata is a free data retrieval call binding the contract method 0x2ba21572. +// +// Solidity: function metadata(address ) view returns(string, string, uint8) +func (_BankModule *BankModuleCaller) Metadata(opts *bind.CallOpts, arg0 common.Address) (string, string, uint8, error) { + var out []interface{} + err := _BankModule.contract.Call(opts, &out, "metadata", arg0) + + if err != nil { + return *new(string), *new(string), *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + out1 := *abi.ConvertType(out[1], new(string)).(*string) + out2 := *abi.ConvertType(out[2], new(uint8)).(*uint8) + + return out0, out1, out2, err + +} + +// Metadata is a free data retrieval call binding the contract method 0x2ba21572. +// +// Solidity: function metadata(address ) view returns(string, string, uint8) +func (_BankModule *BankModuleSession) Metadata(arg0 common.Address) (string, string, uint8, error) { + return _BankModule.Contract.Metadata(&_BankModule.CallOpts, arg0) +} + +// Metadata is a free data retrieval call binding the contract method 0x2ba21572. +// +// Solidity: function metadata(address ) view returns(string, string, uint8) +func (_BankModule *BankModuleCallerSession) Metadata(arg0 common.Address) (string, string, uint8, error) { + return _BankModule.Contract.Metadata(&_BankModule.CallOpts, arg0) +} + +// TotalSupply is a free data retrieval call binding the contract method 0xe4dc2aa4. +// +// Solidity: function totalSupply(address ) view returns(uint256) +func (_BankModule *BankModuleCaller) TotalSupply(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BankModule.contract.Call(opts, &out, "totalSupply", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0xe4dc2aa4. +// +// Solidity: function totalSupply(address ) view returns(uint256) +func (_BankModule *BankModuleSession) TotalSupply(arg0 common.Address) (*big.Int, error) { + return _BankModule.Contract.TotalSupply(&_BankModule.CallOpts, arg0) +} + +// TotalSupply is a free data retrieval call binding the contract method 0xe4dc2aa4. +// +// Solidity: function totalSupply(address ) view returns(uint256) +func (_BankModule *BankModuleCallerSession) TotalSupply(arg0 common.Address) (*big.Int, error) { + return _BankModule.Contract.TotalSupply(&_BankModule.CallOpts, arg0) +} + +// Burn is a paid mutator transaction binding the contract method 0x9dc29fac. +// +// Solidity: function burn(address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleTransactor) Burn(opts *bind.TransactOpts, arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { + return _BankModule.contract.Transact(opts, "burn", arg0, arg1) +} + +// Burn is a paid mutator transaction binding the contract method 0x9dc29fac. +// +// Solidity: function burn(address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleSession) Burn(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { + return _BankModule.Contract.Burn(&_BankModule.TransactOpts, arg0, arg1) +} + +// Burn is a paid mutator transaction binding the contract method 0x9dc29fac. +// +// Solidity: function burn(address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleTransactorSession) Burn(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { + return _BankModule.Contract.Burn(&_BankModule.TransactOpts, arg0, arg1) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleTransactor) Mint(opts *bind.TransactOpts, arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { + return _BankModule.contract.Transact(opts, "mint", arg0, arg1) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleSession) Mint(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { + return _BankModule.Contract.Mint(&_BankModule.TransactOpts, arg0, arg1) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleTransactorSession) Mint(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { + return _BankModule.Contract.Mint(&_BankModule.TransactOpts, arg0, arg1) +} + +// SetMetadata is a paid mutator transaction binding the contract method 0x37d2c2f4. +// +// Solidity: function setMetadata(string , string , uint8 ) payable returns(bool) +func (_BankModule *BankModuleTransactor) SetMetadata(opts *bind.TransactOpts, arg0 string, arg1 string, arg2 uint8) (*types.Transaction, error) { + return _BankModule.contract.Transact(opts, "setMetadata", arg0, arg1, arg2) +} + +// SetMetadata is a paid mutator transaction binding the contract method 0x37d2c2f4. +// +// Solidity: function setMetadata(string , string , uint8 ) payable returns(bool) +func (_BankModule *BankModuleSession) SetMetadata(arg0 string, arg1 string, arg2 uint8) (*types.Transaction, error) { + return _BankModule.Contract.SetMetadata(&_BankModule.TransactOpts, arg0, arg1, arg2) +} + +// SetMetadata is a paid mutator transaction binding the contract method 0x37d2c2f4. +// +// Solidity: function setMetadata(string , string , uint8 ) payable returns(bool) +func (_BankModule *BankModuleTransactorSession) SetMetadata(arg0 string, arg1 string, arg2 uint8) (*types.Transaction, error) { + return _BankModule.Contract.SetMetadata(&_BankModule.TransactOpts, arg0, arg1, arg2) +} + +// Transfer is a paid mutator transaction binding the contract method 0xbeabacc8. +// +// Solidity: function transfer(address , address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleTransactor) Transfer(opts *bind.TransactOpts, arg0 common.Address, arg1 common.Address, arg2 *big.Int) (*types.Transaction, error) { + return _BankModule.contract.Transact(opts, "transfer", arg0, arg1, arg2) +} + +// Transfer is a paid mutator transaction binding the contract method 0xbeabacc8. +// +// Solidity: function transfer(address , address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleSession) Transfer(arg0 common.Address, arg1 common.Address, arg2 *big.Int) (*types.Transaction, error) { + return _BankModule.Contract.Transfer(&_BankModule.TransactOpts, arg0, arg1, arg2) +} + +// Transfer is a paid mutator transaction binding the contract method 0xbeabacc8. +// +// Solidity: function transfer(address , address , uint256 ) payable returns(bool) +func (_BankModule *BankModuleTransactorSession) Transfer(arg0 common.Address, arg1 common.Address, arg2 *big.Int) (*types.Transaction, error) { + return _BankModule.Contract.Transfer(&_BankModule.TransactOpts, arg0, arg1, arg2) +} diff --git a/chain/evm/precompiles/bank/mint_burn_bank_erc20.abigen.go b/chain/evm/precompiles/bank/mint_burn_bank_erc20.abigen.go new file mode 100644 index 00000000..256b0540 --- /dev/null +++ b/chain/evm/precompiles/bank/mint_burn_bank_erc20.abigen.go @@ -0,0 +1,1049 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bank + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// MintBurnBankERC20MetaData contains all meta data concerning the MintBurnBankERC20 contract. +var MintBurnBankERC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x6080604052606460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516120ea3803806120ea8339818101604052810190610066919061048d565b82828260405180602001604052805f81525060405180602001604052805f815250885f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100f8575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100ef9190610538565b60405180910390fd5b610107816101d560201b60201c565b5081600490816101179190610761565b5080600590816101279190610761565b50505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337d2c2f48484846040518463ffffffff1660e01b815260040161018893929190610887565b6020604051808303815f875af11580156101a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c891906108ff565b505050505050505061092a565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102d0826102a7565b9050919050565b6102e0816102c6565b81146102ea575f5ffd5b50565b5f815190506102fb816102d7565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61034f82610309565b810181811067ffffffffffffffff8211171561036e5761036d610319565b5b80604052505050565b5f610380610296565b905061038c8282610346565b919050565b5f67ffffffffffffffff8211156103ab576103aa610319565b5b6103b482610309565b9050602081019050919050565b5f5b838110156103de5780820151818401526020810190506103c3565b5f8484015250505050565b5f6103fb6103f684610391565b610377565b90508281526020810184848401111561041757610416610305565b5b6104228482856103c1565b509392505050565b5f82601f83011261043e5761043d610301565b5b815161044e8482602086016103e9565b91505092915050565b5f60ff82169050919050565b61046c81610457565b8114610476575f5ffd5b50565b5f8151905061048781610463565b92915050565b5f5f5f5f608085870312156104a5576104a461029f565b5b5f6104b2878288016102ed565b945050602085015167ffffffffffffffff8111156104d3576104d26102a3565b5b6104df8782880161042a565b935050604085015167ffffffffffffffff811115610500576104ff6102a3565b5b61050c8782880161042a565b925050606061051d87828801610479565b91505092959194509250565b610532816102c6565b82525050565b5f60208201905061054b5f830184610529565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061059f57607f821691505b6020821081036105b2576105b161055b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826105d9565b61061e86836105d9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61066261065d61065884610636565b61063f565b610636565b9050919050565b5f819050919050565b61067b83610648565b61068f61068782610669565b8484546105e5565b825550505050565b5f5f905090565b6106a6610697565b6106b1818484610672565b505050565b5b818110156106d4576106c95f8261069e565b6001810190506106b7565b5050565b601f821115610719576106ea816105b8565b6106f3846105ca565b81016020851015610702578190505b61071661070e856105ca565b8301826106b6565b50505b505050565b5f82821c905092915050565b5f6107395f198460080261071e565b1980831691505092915050565b5f610751838361072a565b9150826002028217905092915050565b61076a82610551565b67ffffffffffffffff81111561078357610782610319565b5b61078d8254610588565b6107988282856106d8565b5f60209050601f8311600181146107c9575f84156107b7578287015190505b6107c18582610746565b865550610828565b601f1984166107d7866105b8565b5f5b828110156107fe578489015182556001820191506020850194506020810190506107d9565b8683101561081b5784890151610817601f89168261072a565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b5f61084a82610551565b6108548185610830565b93506108648185602086016103c1565b61086d81610309565b840191505092915050565b61088181610457565b82525050565b5f6060820190508181035f83015261089f8186610840565b905081810360208301526108b38185610840565b90506108c26040830184610878565b949350505050565b5f8115159050919050565b6108de816108ca565b81146108e8575f5ffd5b50565b5f815190506108f9816108d5565b92915050565b5f602082840312156109145761091361029f565b5b5f610921848285016108eb565b91505092915050565b6117b3806109375f395ff3fe6080604052600436106100e7575f3560e01c806370a082311161008957806395d89b411161005857806395d89b41146102c9578063a9059cbb146102f3578063dd62ed3e1461032f578063f2fde38b1461036b576100e7565b806370a0823114610225578063715018a61461026157806379cc6790146102775780638da5cb5b1461029f576100e7565b806323b872dd116100c557806323b872dd1461017b578063313ce567146101b757806340c10f19146101e157806342966c68146101fd576100e7565b806306fdde03146100eb578063095ea7b31461011557806318160ddd14610151575b5f5ffd5b3480156100f6575f5ffd5b506100ff610393565b60405161010c91906111ca565b60405180910390f35b348015610120575f5ffd5b5061013b60048036038101906101369190611288565b610440565b60405161014891906112e0565b60405180910390f35b34801561015c575f5ffd5b50610165610462565b6040516101729190611308565b60405180910390f35b348015610186575f5ffd5b506101a1600480360381019061019c9190611321565b610501565b6040516101ae91906112e0565b60405180910390f35b3480156101c2575f5ffd5b506101cb61052f565b6040516101d8919061138c565b60405180910390f35b6101fb60048036038101906101f69190611288565b6105dd565b005b348015610208575f5ffd5b50610223600480360381019061021e91906113a5565b6105f3565b005b348015610230575f5ffd5b5061024b600480360381019061024691906113d0565b610607565b6040516102589190611308565b60405180910390f35b34801561026c575f5ffd5b506102756106aa565b005b348015610282575f5ffd5b5061029d60048036038101906102989190611288565b6106bd565b005b3480156102aa575f5ffd5b506102b36106dd565b6040516102c0919061140a565b60405180910390f35b3480156102d4575f5ffd5b506102dd610704565b6040516102ea91906111ca565b60405180910390f35b3480156102fe575f5ffd5b5061031960048036038101906103149190611288565b6107b2565b60405161032691906112e0565b60405180910390f35b34801561033a575f5ffd5b5061035560048036038101906103509190611423565b6107d4565b6040516103629190611308565b60405180910390f35b348015610376575f5ffd5b50610391600480360381019061038c91906113d0565b610856565b005b60608060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ba21572306040518263ffffffff1660e01b81526004016103f0919061140a565b5f60405180830381865afa15801561040a573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061043291906115a9565b905050809150508091505090565b5f5f61044a6108da565b90506104578185856108e1565b600191505092915050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e4dc2aa4306040518263ffffffff1660e01b81526004016104bd919061140a565b602060405180830381865afa1580156104d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fc9190611645565b905090565b5f5f61050b6108da565b90506105188582856108f3565b610523858585610986565b60019150509392505050565b5f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ba21572306040518263ffffffff1660e01b815260040161058b919061140a565b5f60405180830381865afa1580156105a5573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105cd91906115a9565b9091509050809150508091505090565b6105e5610a76565b6105ef8282610afd565b5050565b6106046105fe6108da565b82610b7c565b50565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7888aec30846040518363ffffffff1660e01b8152600401610664929190611670565b602060405180830381865afa15801561067f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a39190611645565b9050919050565b6106b2610a76565b6106bb5f610bfb565b565b6106cf826106c96108da565b836108f3565b6106d98282610b7c565b5050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ba21572306040518263ffffffff1660e01b8152600401610761919061140a565b5f60405180830381865afa15801561077b573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906107a391906115a9565b90915050809150508091505090565b5f5f6107bc6108da565b90506107c9818585610986565b600191505092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61085e610a76565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108ce575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108c5919061140a565b60405180910390fd5b6108d781610bfb565b50565b5f33905090565b6108ee8383836001610cbc565b505050565b5f6108fe84846107d4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109805781811015610971578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161096893929190611697565b60405180910390fd5b61097f84848484035f610cbc565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109f6575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109ed919061140a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a66575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a5d919061140a565b60405180910390fd5b610a71838383610e8b565b505050565b610a7e6108da565b73ffffffffffffffffffffffffffffffffffffffff16610a9c6106dd565b73ffffffffffffffffffffffffffffffffffffffff1614610afb57610abf6108da565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610af2919061140a565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b6d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610b64919061140a565b60405180910390fd5b610b785f8383610e8b565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bec575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610be3919061140a565b60405180910390fd5b610bf7825f83610e8b565b5050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d2c575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610d23919061140a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d9c575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610d93919061140a565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610e85578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e7c9190611308565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f605760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610f1a9291906116cc565b6020604051808303815f875af1158015610f36573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5a919061171d565b506110d6565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110355760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac84836040518363ffffffff1660e01b8152600401610fef9291906116cc565b6020604051808303815f875af115801561100b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102f919061171d565b506110d5565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc88484846040518463ffffffff1660e01b815260040161109393929190611748565b6020604051808303815f875af11580156110af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d3919061171d565b505b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111339190611308565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561117757808201518184015260208101905061115c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61119c82611140565b6111a6818561114a565b93506111b681856020860161115a565b6111bf81611182565b840191505092915050565b5f6020820190508181035f8301526111e28184611192565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611224826111fb565b9050919050565b6112348161121a565b811461123e575f5ffd5b50565b5f8135905061124f8161122b565b92915050565b5f819050919050565b61126781611255565b8114611271575f5ffd5b50565b5f813590506112828161125e565b92915050565b5f5f6040838503121561129e5761129d6111f3565b5b5f6112ab85828601611241565b92505060206112bc85828601611274565b9150509250929050565b5f8115159050919050565b6112da816112c6565b82525050565b5f6020820190506112f35f8301846112d1565b92915050565b61130281611255565b82525050565b5f60208201905061131b5f8301846112f9565b92915050565b5f5f5f60608486031215611338576113376111f3565b5b5f61134586828701611241565b935050602061135686828701611241565b925050604061136786828701611274565b9150509250925092565b5f60ff82169050919050565b61138681611371565b82525050565b5f60208201905061139f5f83018461137d565b92915050565b5f602082840312156113ba576113b96111f3565b5b5f6113c784828501611274565b91505092915050565b5f602082840312156113e5576113e46111f3565b5b5f6113f284828501611241565b91505092915050565b6114048161121a565b82525050565b5f60208201905061141d5f8301846113fb565b92915050565b5f5f60408385031215611439576114386111f3565b5b5f61144685828601611241565b925050602061145785828601611241565b9150509250929050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61149f82611182565b810181811067ffffffffffffffff821117156114be576114bd611469565b5b80604052505050565b5f6114d06111ea565b90506114dc8282611496565b919050565b5f67ffffffffffffffff8211156114fb576114fa611469565b5b61150482611182565b9050602081019050919050565b5f61152361151e846114e1565b6114c7565b90508281526020810184848401111561153f5761153e611465565b5b61154a84828561115a565b509392505050565b5f82601f83011261156657611565611461565b5b8151611576848260208601611511565b91505092915050565b61158881611371565b8114611592575f5ffd5b50565b5f815190506115a38161157f565b92915050565b5f5f5f606084860312156115c0576115bf6111f3565b5b5f84015167ffffffffffffffff8111156115dd576115dc6111f7565b5b6115e986828701611552565b935050602084015167ffffffffffffffff81111561160a576116096111f7565b5b61161686828701611552565b925050604061162786828701611595565b9150509250925092565b5f8151905061163f8161125e565b92915050565b5f6020828403121561165a576116596111f3565b5b5f61166784828501611631565b91505092915050565b5f6040820190506116835f8301856113fb565b61169060208301846113fb565b9392505050565b5f6060820190506116aa5f8301866113fb565b6116b760208301856112f9565b6116c460408301846112f9565b949350505050565b5f6040820190506116df5f8301856113fb565b6116ec60208301846112f9565b9392505050565b6116fc816112c6565b8114611706575f5ffd5b50565b5f81519050611717816116f3565b92915050565b5f60208284031215611732576117316111f3565b5b5f61173f84828501611709565b91505092915050565b5f60608201905061175b5f8301866113fb565b61176860208301856113fb565b61177560408301846112f9565b94935050505056fea2646970667358221220b1a2e489a0cc5a7021b5aabe4f8c5290df09319dc626a0722b89c23b3160138e64736f6c634300081b0033", +} + +// MintBurnBankERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use MintBurnBankERC20MetaData.ABI instead. +var MintBurnBankERC20ABI = MintBurnBankERC20MetaData.ABI + +// MintBurnBankERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MintBurnBankERC20MetaData.Bin instead. +var MintBurnBankERC20Bin = MintBurnBankERC20MetaData.Bin + +// DeployMintBurnBankERC20 deploys a new Ethereum contract, binding an instance of MintBurnBankERC20 to it. +func DeployMintBurnBankERC20(auth *bind.TransactOpts, backend bind.ContractBackend, initialOwner common.Address, name_ string, symbol_ string, decimals_ uint8) (common.Address, *types.Transaction, *MintBurnBankERC20, error) { + parsed, err := MintBurnBankERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MintBurnBankERC20Bin), backend, initialOwner, name_, symbol_, decimals_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &MintBurnBankERC20{MintBurnBankERC20Caller: MintBurnBankERC20Caller{contract: contract}, MintBurnBankERC20Transactor: MintBurnBankERC20Transactor{contract: contract}, MintBurnBankERC20Filterer: MintBurnBankERC20Filterer{contract: contract}}, nil +} + +// MintBurnBankERC20 is an auto generated Go binding around an Ethereum contract. +type MintBurnBankERC20 struct { + MintBurnBankERC20Caller // Read-only binding to the contract + MintBurnBankERC20Transactor // Write-only binding to the contract + MintBurnBankERC20Filterer // Log filterer for contract events +} + +// MintBurnBankERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type MintBurnBankERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MintBurnBankERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type MintBurnBankERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MintBurnBankERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MintBurnBankERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MintBurnBankERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MintBurnBankERC20Session struct { + Contract *MintBurnBankERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MintBurnBankERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MintBurnBankERC20CallerSession struct { + Contract *MintBurnBankERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MintBurnBankERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MintBurnBankERC20TransactorSession struct { + Contract *MintBurnBankERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MintBurnBankERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type MintBurnBankERC20Raw struct { + Contract *MintBurnBankERC20 // Generic contract binding to access the raw methods on +} + +// MintBurnBankERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MintBurnBankERC20CallerRaw struct { + Contract *MintBurnBankERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// MintBurnBankERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MintBurnBankERC20TransactorRaw struct { + Contract *MintBurnBankERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewMintBurnBankERC20 creates a new instance of MintBurnBankERC20, bound to a specific deployed contract. +func NewMintBurnBankERC20(address common.Address, backend bind.ContractBackend) (*MintBurnBankERC20, error) { + contract, err := bindMintBurnBankERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &MintBurnBankERC20{MintBurnBankERC20Caller: MintBurnBankERC20Caller{contract: contract}, MintBurnBankERC20Transactor: MintBurnBankERC20Transactor{contract: contract}, MintBurnBankERC20Filterer: MintBurnBankERC20Filterer{contract: contract}}, nil +} + +// NewMintBurnBankERC20Caller creates a new read-only instance of MintBurnBankERC20, bound to a specific deployed contract. +func NewMintBurnBankERC20Caller(address common.Address, caller bind.ContractCaller) (*MintBurnBankERC20Caller, error) { + contract, err := bindMintBurnBankERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MintBurnBankERC20Caller{contract: contract}, nil +} + +// NewMintBurnBankERC20Transactor creates a new write-only instance of MintBurnBankERC20, bound to a specific deployed contract. +func NewMintBurnBankERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*MintBurnBankERC20Transactor, error) { + contract, err := bindMintBurnBankERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MintBurnBankERC20Transactor{contract: contract}, nil +} + +// NewMintBurnBankERC20Filterer creates a new log filterer instance of MintBurnBankERC20, bound to a specific deployed contract. +func NewMintBurnBankERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*MintBurnBankERC20Filterer, error) { + contract, err := bindMintBurnBankERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MintBurnBankERC20Filterer{contract: contract}, nil +} + +// bindMintBurnBankERC20 binds a generic wrapper to an already deployed contract. +func bindMintBurnBankERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MintBurnBankERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MintBurnBankERC20 *MintBurnBankERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MintBurnBankERC20.Contract.MintBurnBankERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MintBurnBankERC20 *MintBurnBankERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.MintBurnBankERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MintBurnBankERC20 *MintBurnBankERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.MintBurnBankERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MintBurnBankERC20 *MintBurnBankERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MintBurnBankERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _MintBurnBankERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _MintBurnBankERC20.Contract.Allowance(&_MintBurnBankERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _MintBurnBankERC20.Contract.Allowance(&_MintBurnBankERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _MintBurnBankERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _MintBurnBankERC20.Contract.BalanceOf(&_MintBurnBankERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _MintBurnBankERC20.Contract.BalanceOf(&_MintBurnBankERC20.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_MintBurnBankERC20 *MintBurnBankERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _MintBurnBankERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Decimals() (uint8, error) { + return _MintBurnBankERC20.Contract.Decimals(&_MintBurnBankERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_MintBurnBankERC20 *MintBurnBankERC20CallerSession) Decimals() (uint8, error) { + return _MintBurnBankERC20.Contract.Decimals(&_MintBurnBankERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MintBurnBankERC20 *MintBurnBankERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _MintBurnBankERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Name() (string, error) { + return _MintBurnBankERC20.Contract.Name(&_MintBurnBankERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MintBurnBankERC20 *MintBurnBankERC20CallerSession) Name() (string, error) { + return _MintBurnBankERC20.Contract.Name(&_MintBurnBankERC20.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_MintBurnBankERC20 *MintBurnBankERC20Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _MintBurnBankERC20.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Owner() (common.Address, error) { + return _MintBurnBankERC20.Contract.Owner(&_MintBurnBankERC20.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_MintBurnBankERC20 *MintBurnBankERC20CallerSession) Owner() (common.Address, error) { + return _MintBurnBankERC20.Contract.Owner(&_MintBurnBankERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MintBurnBankERC20 *MintBurnBankERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _MintBurnBankERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Symbol() (string, error) { + return _MintBurnBankERC20.Contract.Symbol(&_MintBurnBankERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MintBurnBankERC20 *MintBurnBankERC20CallerSession) Symbol() (string, error) { + return _MintBurnBankERC20.Contract.Symbol(&_MintBurnBankERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MintBurnBankERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) TotalSupply() (*big.Int, error) { + return _MintBurnBankERC20.Contract.TotalSupply(&_MintBurnBankERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_MintBurnBankERC20 *MintBurnBankERC20CallerSession) TotalSupply() (*big.Int, error) { + return _MintBurnBankERC20.Contract.TotalSupply(&_MintBurnBankERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.Approve(&_MintBurnBankERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.Approve(&_MintBurnBankERC20.TransactOpts, spender, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Transactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.contract.Transact(opts, "burn", value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Burn(value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.Burn(&_MintBurnBankERC20.TransactOpts, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorSession) Burn(value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.Burn(&_MintBurnBankERC20.TransactOpts, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Transactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.contract.Transact(opts, "burnFrom", account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Session) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.BurnFrom(&_MintBurnBankERC20.TransactOpts, account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.BurnFrom(&_MintBurnBankERC20.TransactOpts, account, value) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address to, uint256 amount) payable returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Transactor) Mint(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.contract.Transact(opts, "mint", to, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address to, uint256 amount) payable returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Mint(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.Mint(&_MintBurnBankERC20.TransactOpts, to, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address to, uint256 amount) payable returns() +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorSession) Mint(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.Mint(&_MintBurnBankERC20.TransactOpts, to, amount) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MintBurnBankERC20.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Session) RenounceOwnership() (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.RenounceOwnership(&_MintBurnBankERC20.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.RenounceOwnership(&_MintBurnBankERC20.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.Transfer(&_MintBurnBankERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.Transfer(&_MintBurnBankERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.TransferFrom(&_MintBurnBankERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.TransferFrom(&_MintBurnBankERC20.TransactOpts, from, to, value) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _MintBurnBankERC20.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.TransferOwnership(&_MintBurnBankERC20.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_MintBurnBankERC20 *MintBurnBankERC20TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _MintBurnBankERC20.Contract.TransferOwnership(&_MintBurnBankERC20.TransactOpts, newOwner) +} + +// MintBurnBankERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the MintBurnBankERC20 contract. +type MintBurnBankERC20ApprovalIterator struct { + Event *MintBurnBankERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MintBurnBankERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MintBurnBankERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MintBurnBankERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MintBurnBankERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MintBurnBankERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MintBurnBankERC20Approval represents a Approval event raised by the MintBurnBankERC20 contract. +type MintBurnBankERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*MintBurnBankERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _MintBurnBankERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &MintBurnBankERC20ApprovalIterator{contract: _MintBurnBankERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *MintBurnBankERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _MintBurnBankERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MintBurnBankERC20Approval) + if err := _MintBurnBankERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) ParseApproval(log types.Log) (*MintBurnBankERC20Approval, error) { + event := new(MintBurnBankERC20Approval) + if err := _MintBurnBankERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// MintBurnBankERC20OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the MintBurnBankERC20 contract. +type MintBurnBankERC20OwnershipTransferredIterator struct { + Event *MintBurnBankERC20OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MintBurnBankERC20OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MintBurnBankERC20OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MintBurnBankERC20OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MintBurnBankERC20OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MintBurnBankERC20OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MintBurnBankERC20OwnershipTransferred represents a OwnershipTransferred event raised by the MintBurnBankERC20 contract. +type MintBurnBankERC20OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*MintBurnBankERC20OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _MintBurnBankERC20.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &MintBurnBankERC20OwnershipTransferredIterator{contract: _MintBurnBankERC20.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *MintBurnBankERC20OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _MintBurnBankERC20.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MintBurnBankERC20OwnershipTransferred) + if err := _MintBurnBankERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) ParseOwnershipTransferred(log types.Log) (*MintBurnBankERC20OwnershipTransferred, error) { + event := new(MintBurnBankERC20OwnershipTransferred) + if err := _MintBurnBankERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// MintBurnBankERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the MintBurnBankERC20 contract. +type MintBurnBankERC20TransferIterator struct { + Event *MintBurnBankERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MintBurnBankERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MintBurnBankERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MintBurnBankERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MintBurnBankERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MintBurnBankERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MintBurnBankERC20Transfer represents a Transfer event raised by the MintBurnBankERC20 contract. +type MintBurnBankERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*MintBurnBankERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _MintBurnBankERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &MintBurnBankERC20TransferIterator{contract: _MintBurnBankERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *MintBurnBankERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _MintBurnBankERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MintBurnBankERC20Transfer) + if err := _MintBurnBankERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_MintBurnBankERC20 *MintBurnBankERC20Filterer) ParseTransfer(log types.Log) (*MintBurnBankERC20Transfer, error) { + event := new(MintBurnBankERC20Transfer) + if err := _MintBurnBankERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/chain/evm/precompiles/exchange/i_exchange_module.abigen.go b/chain/evm/precompiles/exchange/i_exchange_module.abigen.go new file mode 100644 index 00000000..94d84219 --- /dev/null +++ b/chain/evm/precompiles/exchange/i_exchange_module.abigen.go @@ -0,0 +1,925 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package exchange + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// CosmosCoin is an auto generated low-level Go binding around an user-defined struct. +type CosmosCoin struct { + Amount *big.Int + Denom string +} + +// IExchangeModuleBatchCreateDerivativeLimitOrdersResponse is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleBatchCreateDerivativeLimitOrdersResponse struct { + OrderHashes []string + CreatedOrdersCids []string + FailedOrdersCids []string +} + +// IExchangeModuleBatchCreateSpotLimitOrdersResponse is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleBatchCreateSpotLimitOrdersResponse struct { + OrderHashes []string + CreatedOrdersCids []string + FailedOrdersCids []string +} + +// IExchangeModuleBatchUpdateOrdersRequest is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleBatchUpdateOrdersRequest struct { + SubaccountID string + SpotMarketIDsToCancelAll []string + SpotOrdersToCancel []IExchangeModuleOrderData + SpotOrdersToCreate []IExchangeModuleSpotOrder + DerivativeMarketIDsToCancelAll []string + DerivativeOrdersToCancel []IExchangeModuleOrderData + DerivativeOrdersToCreate []IExchangeModuleDerivativeOrder +} + +// IExchangeModuleBatchUpdateOrdersResponse is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleBatchUpdateOrdersResponse struct { + SpotCancelSuccess []bool + SpotOrderHashes []string + CreatedSpotOrdersCids []string + FailedSpotOrdersCids []string + DerivativeCancelSuccess []bool + DerivativeOrderHashes []string + CreatedDerivativeOrdersCids []string + FailedDerivativeOrdersCids []string +} + +// IExchangeModuleCreateDerivativeLimitOrderResponse is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleCreateDerivativeLimitOrderResponse struct { + OrderHash string + Cid string +} + +// IExchangeModuleCreateDerivativeMarketOrderResponse is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleCreateDerivativeMarketOrderResponse struct { + OrderHash string + Cid string + Quantity *big.Int + Price *big.Int + Fee *big.Int + Payout *big.Int + DeltaExecutionQuantity *big.Int + DeltaExecutionMargin *big.Int + DeltaExecutionPrice *big.Int + DeltaIsLong bool +} + +// IExchangeModuleCreateSpotLimitOrderResponse is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleCreateSpotLimitOrderResponse struct { + OrderHash string + Cid string +} + +// IExchangeModuleCreateSpotMarketOrderResponse is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleCreateSpotMarketOrderResponse struct { + OrderHash string + Cid string + Quantity *big.Int + Price *big.Int + Fee *big.Int +} + +// IExchangeModuleDerivativeOrder is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleDerivativeOrder struct { + MarketID string + SubaccountID string + FeeRecipient string + Price *big.Int + Quantity *big.Int + Cid string + OrderType string + Margin *big.Int + TriggerPrice *big.Int +} + +// IExchangeModuleDerivativeOrdersRequest is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleDerivativeOrdersRequest struct { + MarketID string + SubaccountID string + OrderHashes []string +} + +// IExchangeModuleDerivativePosition is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleDerivativePosition struct { + SubaccountID string + MarketID string + IsLong bool + Quantity *big.Int + EntryPrice *big.Int + Margin *big.Int + CumulativeFundingEntry *big.Int +} + +// IExchangeModuleOrderData is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleOrderData struct { + MarketID string + SubaccountID string + OrderHash string + OrderMask int32 + Cid string +} + +// IExchangeModuleSpotOrder is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleSpotOrder struct { + MarketID string + SubaccountID string + FeeRecipient string + Price *big.Int + Quantity *big.Int + Cid string + OrderType string + TriggerPrice *big.Int +} + +// IExchangeModuleSpotOrdersRequest is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleSpotOrdersRequest struct { + MarketID string + SubaccountID string + OrderHashes []string +} + +// IExchangeModuleSubaccountDepositData is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleSubaccountDepositData struct { + Denom string + AvailableBalance *big.Int + TotalBalance *big.Int +} + +// IExchangeModuleTrimmedDerivativeLimitOrder is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleTrimmedDerivativeLimitOrder struct { + Price *big.Int + Quantity *big.Int + Margin *big.Int + Fillable *big.Int + IsBuy bool + OrderHash string + Cid string +} + +// IExchangeModuleTrimmedSpotLimitOrder is an auto generated low-level Go binding around an user-defined struct. +type IExchangeModuleTrimmedSpotLimitOrder struct { + Price *big.Int + Quantity *big.Int + Fillable *big.Int + IsBuy bool + OrderHash string + Cid string +} + +// ExchangeModuleMetaData contains all meta data concerning the ExchangeModule contract. +var ExchangeModuleMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"grantee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"granter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"method\",\"type\":\"uint8\",\"internalType\":\"ExchangeTypes.MsgType\"}],\"outputs\":[{\"name\":\"allowed\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"grantee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"methods\",\"type\":\"uint8[]\",\"internalType\":\"ExchangeTypes.MsgType[]\"},{\"name\":\"spendLimit\",\"type\":\"tuple[]\",\"internalType\":\"structCosmos.Coin[]\",\"components\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"duration\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"approved\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchCancelDerivativeOrders\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.OrderData[]\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderMask\",\"type\":\"int32\",\"internalType\":\"int32\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchCancelSpotOrders\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.OrderData[]\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderMask\",\"type\":\"int32\",\"internalType\":\"int32\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchCreateDerivativeLimitOrders\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"orders\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.DerivativeOrder[]\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"feeRecipient\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderType\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"margin\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"triggerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"response\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.BatchCreateDerivativeLimitOrdersResponse\",\"components\":[{\"name\":\"orderHashes\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"createdOrdersCids\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"failedOrdersCids\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchCreateSpotLimitOrders\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"orders\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.SpotOrder[]\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"feeRecipient\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderType\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"triggerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"response\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.BatchCreateSpotLimitOrdersResponse\",\"components\":[{\"name\":\"orderHashes\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"createdOrdersCids\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"failedOrdersCids\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchUpdateOrders\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"request\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.BatchUpdateOrdersRequest\",\"components\":[{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"spotMarketIDsToCancelAll\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"spotOrdersToCancel\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.OrderData[]\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderMask\",\"type\":\"int32\",\"internalType\":\"int32\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"spotOrdersToCreate\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.SpotOrder[]\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"feeRecipient\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderType\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"triggerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"derivativeMarketIDsToCancelAll\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"derivativeOrdersToCancel\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.OrderData[]\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderMask\",\"type\":\"int32\",\"internalType\":\"int32\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"derivativeOrdersToCreate\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.DerivativeOrder[]\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"feeRecipient\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderType\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"margin\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"triggerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"response\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.BatchUpdateOrdersResponse\",\"components\":[{\"name\":\"spotCancelSuccess\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"spotOrderHashes\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"createdSpotOrdersCids\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"failedSpotOrdersCids\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"derivativeCancelSuccess\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"derivativeOrderHashes\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"createdDerivativeOrdersCids\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"failedDerivativeOrdersCids\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancelDerivativeOrder\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderMask\",\"type\":\"int32\",\"internalType\":\"int32\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancelSpotOrder\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createDerivativeLimitOrder\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"order\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.DerivativeOrder\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"feeRecipient\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderType\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"margin\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"triggerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"response\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.CreateDerivativeLimitOrderResponse\",\"components\":[{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createDerivativeMarketOrder\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"order\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.DerivativeOrder\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"feeRecipient\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderType\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"margin\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"triggerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"response\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.CreateDerivativeMarketOrderResponse\",\"components\":[{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fee\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"payout\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deltaExecutionQuantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deltaExecutionMargin\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deltaExecutionPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deltaIsLong\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createSpotLimitOrder\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"order\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.SpotOrder\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"feeRecipient\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderType\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"triggerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"response\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.CreateSpotLimitOrderResponse\",\"components\":[{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createSpotMarketOrder\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"order\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.SpotOrder\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"feeRecipient\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderType\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"triggerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"response\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.CreateSpotMarketOrderResponse\",\"components\":[{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decreasePositionMargin\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sourceSubaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"destinationSubaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"derivativeOrdersByHashes\",\"inputs\":[{\"name\":\"request\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.DerivativeOrdersRequest\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderHashes\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"outputs\":[{\"name\":\"orders\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.TrimmedDerivativeLimitOrder[]\",\"components\":[{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"margin\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fillable\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isBuy\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"externalTransfer\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sourceSubaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"destinationSubaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"increasePositionMargin\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sourceSubaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"destinationSubaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revoke\",\"inputs\":[{\"name\":\"grantee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"methods\",\"type\":\"uint8[]\",\"internalType\":\"ExchangeTypes.MsgType[]\"}],\"outputs\":[{\"name\":\"revoked\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"spotOrdersByHashes\",\"inputs\":[{\"name\":\"request\",\"type\":\"tuple\",\"internalType\":\"structIExchangeModule.SpotOrdersRequest\",\"components\":[{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"orderHashes\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"outputs\":[{\"name\":\"orders\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.TrimmedSpotLimitOrder[]\",\"components\":[{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fillable\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isBuy\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"orderHash\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"cid\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"subaccountDeposit\",\"inputs\":[{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"availableBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"totalBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"subaccountDeposits\",\"inputs\":[{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"trader\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"subaccountNonce\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"deposits\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.SubaccountDepositData[]\",\"components\":[{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"availableBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"totalBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"subaccountPositions\",\"inputs\":[{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"positions\",\"type\":\"tuple[]\",\"internalType\":\"structIExchangeModule.DerivativePosition[]\",\"components\":[{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"marketID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"isLong\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"quantity\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"entryPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"margin\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cumulativeFundingEntry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"subaccountTransfer\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sourceSubaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"destinationSubaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subaccountID\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"}]", +} + +// ExchangeModuleABI is the input ABI used to generate the binding from. +// Deprecated: Use ExchangeModuleMetaData.ABI instead. +var ExchangeModuleABI = ExchangeModuleMetaData.ABI + +// ExchangeModule is an auto generated Go binding around an Ethereum contract. +type ExchangeModule struct { + ExchangeModuleCaller // Read-only binding to the contract + ExchangeModuleTransactor // Write-only binding to the contract + ExchangeModuleFilterer // Log filterer for contract events +} + +// ExchangeModuleCaller is an auto generated read-only Go binding around an Ethereum contract. +type ExchangeModuleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExchangeModuleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ExchangeModuleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExchangeModuleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ExchangeModuleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExchangeModuleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ExchangeModuleSession struct { + Contract *ExchangeModule // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ExchangeModuleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ExchangeModuleCallerSession struct { + Contract *ExchangeModuleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ExchangeModuleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ExchangeModuleTransactorSession struct { + Contract *ExchangeModuleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ExchangeModuleRaw is an auto generated low-level Go binding around an Ethereum contract. +type ExchangeModuleRaw struct { + Contract *ExchangeModule // Generic contract binding to access the raw methods on +} + +// ExchangeModuleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ExchangeModuleCallerRaw struct { + Contract *ExchangeModuleCaller // Generic read-only contract binding to access the raw methods on +} + +// ExchangeModuleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ExchangeModuleTransactorRaw struct { + Contract *ExchangeModuleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewExchangeModule creates a new instance of ExchangeModule, bound to a specific deployed contract. +func NewExchangeModule(address common.Address, backend bind.ContractBackend) (*ExchangeModule, error) { + contract, err := bindExchangeModule(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ExchangeModule{ExchangeModuleCaller: ExchangeModuleCaller{contract: contract}, ExchangeModuleTransactor: ExchangeModuleTransactor{contract: contract}, ExchangeModuleFilterer: ExchangeModuleFilterer{contract: contract}}, nil +} + +// NewExchangeModuleCaller creates a new read-only instance of ExchangeModule, bound to a specific deployed contract. +func NewExchangeModuleCaller(address common.Address, caller bind.ContractCaller) (*ExchangeModuleCaller, error) { + contract, err := bindExchangeModule(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ExchangeModuleCaller{contract: contract}, nil +} + +// NewExchangeModuleTransactor creates a new write-only instance of ExchangeModule, bound to a specific deployed contract. +func NewExchangeModuleTransactor(address common.Address, transactor bind.ContractTransactor) (*ExchangeModuleTransactor, error) { + contract, err := bindExchangeModule(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ExchangeModuleTransactor{contract: contract}, nil +} + +// NewExchangeModuleFilterer creates a new log filterer instance of ExchangeModule, bound to a specific deployed contract. +func NewExchangeModuleFilterer(address common.Address, filterer bind.ContractFilterer) (*ExchangeModuleFilterer, error) { + contract, err := bindExchangeModule(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ExchangeModuleFilterer{contract: contract}, nil +} + +// bindExchangeModule binds a generic wrapper to an already deployed contract. +func bindExchangeModule(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ExchangeModuleMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ExchangeModule *ExchangeModuleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ExchangeModule.Contract.ExchangeModuleCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ExchangeModule *ExchangeModuleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExchangeModule.Contract.ExchangeModuleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ExchangeModule *ExchangeModuleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ExchangeModule.Contract.ExchangeModuleTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ExchangeModule *ExchangeModuleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ExchangeModule.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ExchangeModule *ExchangeModuleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExchangeModule.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ExchangeModule *ExchangeModuleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ExchangeModule.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0x27be18a8. +// +// Solidity: function allowance(address grantee, address granter, uint8 method) view returns(bool allowed) +func (_ExchangeModule *ExchangeModuleCaller) Allowance(opts *bind.CallOpts, grantee common.Address, granter common.Address, method uint8) (bool, error) { + var out []interface{} + err := _ExchangeModule.contract.Call(opts, &out, "allowance", grantee, granter, method) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0x27be18a8. +// +// Solidity: function allowance(address grantee, address granter, uint8 method) view returns(bool allowed) +func (_ExchangeModule *ExchangeModuleSession) Allowance(grantee common.Address, granter common.Address, method uint8) (bool, error) { + return _ExchangeModule.Contract.Allowance(&_ExchangeModule.CallOpts, grantee, granter, method) +} + +// Allowance is a free data retrieval call binding the contract method 0x27be18a8. +// +// Solidity: function allowance(address grantee, address granter, uint8 method) view returns(bool allowed) +func (_ExchangeModule *ExchangeModuleCallerSession) Allowance(grantee common.Address, granter common.Address, method uint8) (bool, error) { + return _ExchangeModule.Contract.Allowance(&_ExchangeModule.CallOpts, grantee, granter, method) +} + +// SubaccountDeposit is a free data retrieval call binding the contract method 0x9e96621f. +// +// Solidity: function subaccountDeposit(string subaccountID, string denom) view returns(uint256 availableBalance, uint256 totalBalance) +func (_ExchangeModule *ExchangeModuleCaller) SubaccountDeposit(opts *bind.CallOpts, subaccountID string, denom string) (struct { + AvailableBalance *big.Int + TotalBalance *big.Int +}, error) { + var out []interface{} + err := _ExchangeModule.contract.Call(opts, &out, "subaccountDeposit", subaccountID, denom) + + outstruct := new(struct { + AvailableBalance *big.Int + TotalBalance *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.AvailableBalance = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.TotalBalance = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// SubaccountDeposit is a free data retrieval call binding the contract method 0x9e96621f. +// +// Solidity: function subaccountDeposit(string subaccountID, string denom) view returns(uint256 availableBalance, uint256 totalBalance) +func (_ExchangeModule *ExchangeModuleSession) SubaccountDeposit(subaccountID string, denom string) (struct { + AvailableBalance *big.Int + TotalBalance *big.Int +}, error) { + return _ExchangeModule.Contract.SubaccountDeposit(&_ExchangeModule.CallOpts, subaccountID, denom) +} + +// SubaccountDeposit is a free data retrieval call binding the contract method 0x9e96621f. +// +// Solidity: function subaccountDeposit(string subaccountID, string denom) view returns(uint256 availableBalance, uint256 totalBalance) +func (_ExchangeModule *ExchangeModuleCallerSession) SubaccountDeposit(subaccountID string, denom string) (struct { + AvailableBalance *big.Int + TotalBalance *big.Int +}, error) { + return _ExchangeModule.Contract.SubaccountDeposit(&_ExchangeModule.CallOpts, subaccountID, denom) +} + +// SubaccountDeposits is a free data retrieval call binding the contract method 0x12433f4b. +// +// Solidity: function subaccountDeposits(string subaccountID, string trader, uint32 subaccountNonce) view returns((string,uint256,uint256)[] deposits) +func (_ExchangeModule *ExchangeModuleCaller) SubaccountDeposits(opts *bind.CallOpts, subaccountID string, trader string, subaccountNonce uint32) ([]IExchangeModuleSubaccountDepositData, error) { + var out []interface{} + err := _ExchangeModule.contract.Call(opts, &out, "subaccountDeposits", subaccountID, trader, subaccountNonce) + + if err != nil { + return *new([]IExchangeModuleSubaccountDepositData), err + } + + out0 := *abi.ConvertType(out[0], new([]IExchangeModuleSubaccountDepositData)).(*[]IExchangeModuleSubaccountDepositData) + + return out0, err + +} + +// SubaccountDeposits is a free data retrieval call binding the contract method 0x12433f4b. +// +// Solidity: function subaccountDeposits(string subaccountID, string trader, uint32 subaccountNonce) view returns((string,uint256,uint256)[] deposits) +func (_ExchangeModule *ExchangeModuleSession) SubaccountDeposits(subaccountID string, trader string, subaccountNonce uint32) ([]IExchangeModuleSubaccountDepositData, error) { + return _ExchangeModule.Contract.SubaccountDeposits(&_ExchangeModule.CallOpts, subaccountID, trader, subaccountNonce) +} + +// SubaccountDeposits is a free data retrieval call binding the contract method 0x12433f4b. +// +// Solidity: function subaccountDeposits(string subaccountID, string trader, uint32 subaccountNonce) view returns((string,uint256,uint256)[] deposits) +func (_ExchangeModule *ExchangeModuleCallerSession) SubaccountDeposits(subaccountID string, trader string, subaccountNonce uint32) ([]IExchangeModuleSubaccountDepositData, error) { + return _ExchangeModule.Contract.SubaccountDeposits(&_ExchangeModule.CallOpts, subaccountID, trader, subaccountNonce) +} + +// SubaccountPositions is a free data retrieval call binding the contract method 0x9bb15b3c. +// +// Solidity: function subaccountPositions(string subaccountID) view returns((string,string,bool,uint256,uint256,uint256,uint256)[] positions) +func (_ExchangeModule *ExchangeModuleCaller) SubaccountPositions(opts *bind.CallOpts, subaccountID string) ([]IExchangeModuleDerivativePosition, error) { + var out []interface{} + err := _ExchangeModule.contract.Call(opts, &out, "subaccountPositions", subaccountID) + + if err != nil { + return *new([]IExchangeModuleDerivativePosition), err + } + + out0 := *abi.ConvertType(out[0], new([]IExchangeModuleDerivativePosition)).(*[]IExchangeModuleDerivativePosition) + + return out0, err + +} + +// SubaccountPositions is a free data retrieval call binding the contract method 0x9bb15b3c. +// +// Solidity: function subaccountPositions(string subaccountID) view returns((string,string,bool,uint256,uint256,uint256,uint256)[] positions) +func (_ExchangeModule *ExchangeModuleSession) SubaccountPositions(subaccountID string) ([]IExchangeModuleDerivativePosition, error) { + return _ExchangeModule.Contract.SubaccountPositions(&_ExchangeModule.CallOpts, subaccountID) +} + +// SubaccountPositions is a free data retrieval call binding the contract method 0x9bb15b3c. +// +// Solidity: function subaccountPositions(string subaccountID) view returns((string,string,bool,uint256,uint256,uint256,uint256)[] positions) +func (_ExchangeModule *ExchangeModuleCallerSession) SubaccountPositions(subaccountID string) ([]IExchangeModuleDerivativePosition, error) { + return _ExchangeModule.Contract.SubaccountPositions(&_ExchangeModule.CallOpts, subaccountID) +} + +// Approve is a paid mutator transaction binding the contract method 0x28e06289. +// +// Solidity: function approve(address grantee, uint8[] methods, (uint256,string)[] spendLimit, uint256 duration) returns(bool approved) +func (_ExchangeModule *ExchangeModuleTransactor) Approve(opts *bind.TransactOpts, grantee common.Address, methods []uint8, spendLimit []CosmosCoin, duration *big.Int) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "approve", grantee, methods, spendLimit, duration) +} + +// Approve is a paid mutator transaction binding the contract method 0x28e06289. +// +// Solidity: function approve(address grantee, uint8[] methods, (uint256,string)[] spendLimit, uint256 duration) returns(bool approved) +func (_ExchangeModule *ExchangeModuleSession) Approve(grantee common.Address, methods []uint8, spendLimit []CosmosCoin, duration *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.Approve(&_ExchangeModule.TransactOpts, grantee, methods, spendLimit, duration) +} + +// Approve is a paid mutator transaction binding the contract method 0x28e06289. +// +// Solidity: function approve(address grantee, uint8[] methods, (uint256,string)[] spendLimit, uint256 duration) returns(bool approved) +func (_ExchangeModule *ExchangeModuleTransactorSession) Approve(grantee common.Address, methods []uint8, spendLimit []CosmosCoin, duration *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.Approve(&_ExchangeModule.TransactOpts, grantee, methods, spendLimit, duration) +} + +// BatchCancelDerivativeOrders is a paid mutator transaction binding the contract method 0x8b073525. +// +// Solidity: function batchCancelDerivativeOrders(address sender, (string,string,string,int32,string)[] data) returns(bool[] success) +func (_ExchangeModule *ExchangeModuleTransactor) BatchCancelDerivativeOrders(opts *bind.TransactOpts, sender common.Address, data []IExchangeModuleOrderData) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "batchCancelDerivativeOrders", sender, data) +} + +// BatchCancelDerivativeOrders is a paid mutator transaction binding the contract method 0x8b073525. +// +// Solidity: function batchCancelDerivativeOrders(address sender, (string,string,string,int32,string)[] data) returns(bool[] success) +func (_ExchangeModule *ExchangeModuleSession) BatchCancelDerivativeOrders(sender common.Address, data []IExchangeModuleOrderData) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchCancelDerivativeOrders(&_ExchangeModule.TransactOpts, sender, data) +} + +// BatchCancelDerivativeOrders is a paid mutator transaction binding the contract method 0x8b073525. +// +// Solidity: function batchCancelDerivativeOrders(address sender, (string,string,string,int32,string)[] data) returns(bool[] success) +func (_ExchangeModule *ExchangeModuleTransactorSession) BatchCancelDerivativeOrders(sender common.Address, data []IExchangeModuleOrderData) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchCancelDerivativeOrders(&_ExchangeModule.TransactOpts, sender, data) +} + +// BatchCancelSpotOrders is a paid mutator transaction binding the contract method 0x438051ab. +// +// Solidity: function batchCancelSpotOrders(address sender, (string,string,string,int32,string)[] data) returns(bool[] success) +func (_ExchangeModule *ExchangeModuleTransactor) BatchCancelSpotOrders(opts *bind.TransactOpts, sender common.Address, data []IExchangeModuleOrderData) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "batchCancelSpotOrders", sender, data) +} + +// BatchCancelSpotOrders is a paid mutator transaction binding the contract method 0x438051ab. +// +// Solidity: function batchCancelSpotOrders(address sender, (string,string,string,int32,string)[] data) returns(bool[] success) +func (_ExchangeModule *ExchangeModuleSession) BatchCancelSpotOrders(sender common.Address, data []IExchangeModuleOrderData) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchCancelSpotOrders(&_ExchangeModule.TransactOpts, sender, data) +} + +// BatchCancelSpotOrders is a paid mutator transaction binding the contract method 0x438051ab. +// +// Solidity: function batchCancelSpotOrders(address sender, (string,string,string,int32,string)[] data) returns(bool[] success) +func (_ExchangeModule *ExchangeModuleTransactorSession) BatchCancelSpotOrders(sender common.Address, data []IExchangeModuleOrderData) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchCancelSpotOrders(&_ExchangeModule.TransactOpts, sender, data) +} + +// BatchCreateDerivativeLimitOrders is a paid mutator transaction binding the contract method 0x79374eab. +// +// Solidity: function batchCreateDerivativeLimitOrders(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256)[] orders) returns((string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleTransactor) BatchCreateDerivativeLimitOrders(opts *bind.TransactOpts, sender common.Address, orders []IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "batchCreateDerivativeLimitOrders", sender, orders) +} + +// BatchCreateDerivativeLimitOrders is a paid mutator transaction binding the contract method 0x79374eab. +// +// Solidity: function batchCreateDerivativeLimitOrders(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256)[] orders) returns((string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleSession) BatchCreateDerivativeLimitOrders(sender common.Address, orders []IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchCreateDerivativeLimitOrders(&_ExchangeModule.TransactOpts, sender, orders) +} + +// BatchCreateDerivativeLimitOrders is a paid mutator transaction binding the contract method 0x79374eab. +// +// Solidity: function batchCreateDerivativeLimitOrders(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256)[] orders) returns((string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleTransactorSession) BatchCreateDerivativeLimitOrders(sender common.Address, orders []IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchCreateDerivativeLimitOrders(&_ExchangeModule.TransactOpts, sender, orders) +} + +// BatchCreateSpotLimitOrders is a paid mutator transaction binding the contract method 0x4881c7c6. +// +// Solidity: function batchCreateSpotLimitOrders(address sender, (string,string,string,uint256,uint256,string,string,uint256)[] orders) returns((string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleTransactor) BatchCreateSpotLimitOrders(opts *bind.TransactOpts, sender common.Address, orders []IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "batchCreateSpotLimitOrders", sender, orders) +} + +// BatchCreateSpotLimitOrders is a paid mutator transaction binding the contract method 0x4881c7c6. +// +// Solidity: function batchCreateSpotLimitOrders(address sender, (string,string,string,uint256,uint256,string,string,uint256)[] orders) returns((string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleSession) BatchCreateSpotLimitOrders(sender common.Address, orders []IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchCreateSpotLimitOrders(&_ExchangeModule.TransactOpts, sender, orders) +} + +// BatchCreateSpotLimitOrders is a paid mutator transaction binding the contract method 0x4881c7c6. +// +// Solidity: function batchCreateSpotLimitOrders(address sender, (string,string,string,uint256,uint256,string,string,uint256)[] orders) returns((string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleTransactorSession) BatchCreateSpotLimitOrders(sender common.Address, orders []IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchCreateSpotLimitOrders(&_ExchangeModule.TransactOpts, sender, orders) +} + +// BatchUpdateOrders is a paid mutator transaction binding the contract method 0xcb0b6590. +// +// Solidity: function batchUpdateOrders(address sender, (string,string[],(string,string,string,int32,string)[],(string,string,string,uint256,uint256,string,string,uint256)[],string[],(string,string,string,int32,string)[],(string,string,string,uint256,uint256,string,string,uint256,uint256)[]) request) returns((bool[],string[],string[],string[],bool[],string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleTransactor) BatchUpdateOrders(opts *bind.TransactOpts, sender common.Address, request IExchangeModuleBatchUpdateOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "batchUpdateOrders", sender, request) +} + +// BatchUpdateOrders is a paid mutator transaction binding the contract method 0xcb0b6590. +// +// Solidity: function batchUpdateOrders(address sender, (string,string[],(string,string,string,int32,string)[],(string,string,string,uint256,uint256,string,string,uint256)[],string[],(string,string,string,int32,string)[],(string,string,string,uint256,uint256,string,string,uint256,uint256)[]) request) returns((bool[],string[],string[],string[],bool[],string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleSession) BatchUpdateOrders(sender common.Address, request IExchangeModuleBatchUpdateOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchUpdateOrders(&_ExchangeModule.TransactOpts, sender, request) +} + +// BatchUpdateOrders is a paid mutator transaction binding the contract method 0xcb0b6590. +// +// Solidity: function batchUpdateOrders(address sender, (string,string[],(string,string,string,int32,string)[],(string,string,string,uint256,uint256,string,string,uint256)[],string[],(string,string,string,int32,string)[],(string,string,string,uint256,uint256,string,string,uint256,uint256)[]) request) returns((bool[],string[],string[],string[],bool[],string[],string[],string[]) response) +func (_ExchangeModule *ExchangeModuleTransactorSession) BatchUpdateOrders(sender common.Address, request IExchangeModuleBatchUpdateOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.Contract.BatchUpdateOrders(&_ExchangeModule.TransactOpts, sender, request) +} + +// CancelDerivativeOrder is a paid mutator transaction binding the contract method 0x44b9bf3a. +// +// Solidity: function cancelDerivativeOrder(address sender, string marketID, string subaccountID, string orderHash, int32 orderMask, string cid) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactor) CancelDerivativeOrder(opts *bind.TransactOpts, sender common.Address, marketID string, subaccountID string, orderHash string, orderMask int32, cid string) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "cancelDerivativeOrder", sender, marketID, subaccountID, orderHash, orderMask, cid) +} + +// CancelDerivativeOrder is a paid mutator transaction binding the contract method 0x44b9bf3a. +// +// Solidity: function cancelDerivativeOrder(address sender, string marketID, string subaccountID, string orderHash, int32 orderMask, string cid) returns(bool success) +func (_ExchangeModule *ExchangeModuleSession) CancelDerivativeOrder(sender common.Address, marketID string, subaccountID string, orderHash string, orderMask int32, cid string) (*types.Transaction, error) { + return _ExchangeModule.Contract.CancelDerivativeOrder(&_ExchangeModule.TransactOpts, sender, marketID, subaccountID, orderHash, orderMask, cid) +} + +// CancelDerivativeOrder is a paid mutator transaction binding the contract method 0x44b9bf3a. +// +// Solidity: function cancelDerivativeOrder(address sender, string marketID, string subaccountID, string orderHash, int32 orderMask, string cid) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactorSession) CancelDerivativeOrder(sender common.Address, marketID string, subaccountID string, orderHash string, orderMask int32, cid string) (*types.Transaction, error) { + return _ExchangeModule.Contract.CancelDerivativeOrder(&_ExchangeModule.TransactOpts, sender, marketID, subaccountID, orderHash, orderMask, cid) +} + +// CancelSpotOrder is a paid mutator transaction binding the contract method 0x25bf6b92. +// +// Solidity: function cancelSpotOrder(address sender, string marketID, string subaccountID, string orderHash, string cid) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactor) CancelSpotOrder(opts *bind.TransactOpts, sender common.Address, marketID string, subaccountID string, orderHash string, cid string) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "cancelSpotOrder", sender, marketID, subaccountID, orderHash, cid) +} + +// CancelSpotOrder is a paid mutator transaction binding the contract method 0x25bf6b92. +// +// Solidity: function cancelSpotOrder(address sender, string marketID, string subaccountID, string orderHash, string cid) returns(bool success) +func (_ExchangeModule *ExchangeModuleSession) CancelSpotOrder(sender common.Address, marketID string, subaccountID string, orderHash string, cid string) (*types.Transaction, error) { + return _ExchangeModule.Contract.CancelSpotOrder(&_ExchangeModule.TransactOpts, sender, marketID, subaccountID, orderHash, cid) +} + +// CancelSpotOrder is a paid mutator transaction binding the contract method 0x25bf6b92. +// +// Solidity: function cancelSpotOrder(address sender, string marketID, string subaccountID, string orderHash, string cid) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactorSession) CancelSpotOrder(sender common.Address, marketID string, subaccountID string, orderHash string, cid string) (*types.Transaction, error) { + return _ExchangeModule.Contract.CancelSpotOrder(&_ExchangeModule.TransactOpts, sender, marketID, subaccountID, orderHash, cid) +} + +// CreateDerivativeLimitOrder is a paid mutator transaction binding the contract method 0x20c69837. +// +// Solidity: function createDerivativeLimitOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256) order) returns((string,string) response) +func (_ExchangeModule *ExchangeModuleTransactor) CreateDerivativeLimitOrder(opts *bind.TransactOpts, sender common.Address, order IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "createDerivativeLimitOrder", sender, order) +} + +// CreateDerivativeLimitOrder is a paid mutator transaction binding the contract method 0x20c69837. +// +// Solidity: function createDerivativeLimitOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256) order) returns((string,string) response) +func (_ExchangeModule *ExchangeModuleSession) CreateDerivativeLimitOrder(sender common.Address, order IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.CreateDerivativeLimitOrder(&_ExchangeModule.TransactOpts, sender, order) +} + +// CreateDerivativeLimitOrder is a paid mutator transaction binding the contract method 0x20c69837. +// +// Solidity: function createDerivativeLimitOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256) order) returns((string,string) response) +func (_ExchangeModule *ExchangeModuleTransactorSession) CreateDerivativeLimitOrder(sender common.Address, order IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.CreateDerivativeLimitOrder(&_ExchangeModule.TransactOpts, sender, order) +} + +// CreateDerivativeMarketOrder is a paid mutator transaction binding the contract method 0xb84857a1. +// +// Solidity: function createDerivativeMarketOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256) order) returns((string,string,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool) response) +func (_ExchangeModule *ExchangeModuleTransactor) CreateDerivativeMarketOrder(opts *bind.TransactOpts, sender common.Address, order IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "createDerivativeMarketOrder", sender, order) +} + +// CreateDerivativeMarketOrder is a paid mutator transaction binding the contract method 0xb84857a1. +// +// Solidity: function createDerivativeMarketOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256) order) returns((string,string,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool) response) +func (_ExchangeModule *ExchangeModuleSession) CreateDerivativeMarketOrder(sender common.Address, order IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.CreateDerivativeMarketOrder(&_ExchangeModule.TransactOpts, sender, order) +} + +// CreateDerivativeMarketOrder is a paid mutator transaction binding the contract method 0xb84857a1. +// +// Solidity: function createDerivativeMarketOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256,uint256) order) returns((string,string,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool) response) +func (_ExchangeModule *ExchangeModuleTransactorSession) CreateDerivativeMarketOrder(sender common.Address, order IExchangeModuleDerivativeOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.CreateDerivativeMarketOrder(&_ExchangeModule.TransactOpts, sender, order) +} + +// CreateSpotLimitOrder is a paid mutator transaction binding the contract method 0xf642485e. +// +// Solidity: function createSpotLimitOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256) order) returns((string,string) response) +func (_ExchangeModule *ExchangeModuleTransactor) CreateSpotLimitOrder(opts *bind.TransactOpts, sender common.Address, order IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "createSpotLimitOrder", sender, order) +} + +// CreateSpotLimitOrder is a paid mutator transaction binding the contract method 0xf642485e. +// +// Solidity: function createSpotLimitOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256) order) returns((string,string) response) +func (_ExchangeModule *ExchangeModuleSession) CreateSpotLimitOrder(sender common.Address, order IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.CreateSpotLimitOrder(&_ExchangeModule.TransactOpts, sender, order) +} + +// CreateSpotLimitOrder is a paid mutator transaction binding the contract method 0xf642485e. +// +// Solidity: function createSpotLimitOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256) order) returns((string,string) response) +func (_ExchangeModule *ExchangeModuleTransactorSession) CreateSpotLimitOrder(sender common.Address, order IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.CreateSpotLimitOrder(&_ExchangeModule.TransactOpts, sender, order) +} + +// CreateSpotMarketOrder is a paid mutator transaction binding the contract method 0x29d3d0e4. +// +// Solidity: function createSpotMarketOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256) order) returns((string,string,uint256,uint256,uint256) response) +func (_ExchangeModule *ExchangeModuleTransactor) CreateSpotMarketOrder(opts *bind.TransactOpts, sender common.Address, order IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "createSpotMarketOrder", sender, order) +} + +// CreateSpotMarketOrder is a paid mutator transaction binding the contract method 0x29d3d0e4. +// +// Solidity: function createSpotMarketOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256) order) returns((string,string,uint256,uint256,uint256) response) +func (_ExchangeModule *ExchangeModuleSession) CreateSpotMarketOrder(sender common.Address, order IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.CreateSpotMarketOrder(&_ExchangeModule.TransactOpts, sender, order) +} + +// CreateSpotMarketOrder is a paid mutator transaction binding the contract method 0x29d3d0e4. +// +// Solidity: function createSpotMarketOrder(address sender, (string,string,string,uint256,uint256,string,string,uint256) order) returns((string,string,uint256,uint256,uint256) response) +func (_ExchangeModule *ExchangeModuleTransactorSession) CreateSpotMarketOrder(sender common.Address, order IExchangeModuleSpotOrder) (*types.Transaction, error) { + return _ExchangeModule.Contract.CreateSpotMarketOrder(&_ExchangeModule.TransactOpts, sender, order) +} + +// DecreasePositionMargin is a paid mutator transaction binding the contract method 0xaf78360b. +// +// Solidity: function decreasePositionMargin(address sender, string sourceSubaccountID, string destinationSubaccountID, string marketID, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactor) DecreasePositionMargin(opts *bind.TransactOpts, sender common.Address, sourceSubaccountID string, destinationSubaccountID string, marketID string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "decreasePositionMargin", sender, sourceSubaccountID, destinationSubaccountID, marketID, amount) +} + +// DecreasePositionMargin is a paid mutator transaction binding the contract method 0xaf78360b. +// +// Solidity: function decreasePositionMargin(address sender, string sourceSubaccountID, string destinationSubaccountID, string marketID, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleSession) DecreasePositionMargin(sender common.Address, sourceSubaccountID string, destinationSubaccountID string, marketID string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.DecreasePositionMargin(&_ExchangeModule.TransactOpts, sender, sourceSubaccountID, destinationSubaccountID, marketID, amount) +} + +// DecreasePositionMargin is a paid mutator transaction binding the contract method 0xaf78360b. +// +// Solidity: function decreasePositionMargin(address sender, string sourceSubaccountID, string destinationSubaccountID, string marketID, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactorSession) DecreasePositionMargin(sender common.Address, sourceSubaccountID string, destinationSubaccountID string, marketID string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.DecreasePositionMargin(&_ExchangeModule.TransactOpts, sender, sourceSubaccountID, destinationSubaccountID, marketID, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe441dec9. +// +// Solidity: function deposit(address sender, string subaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactor) Deposit(opts *bind.TransactOpts, sender common.Address, subaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "deposit", sender, subaccountID, denom, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe441dec9. +// +// Solidity: function deposit(address sender, string subaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleSession) Deposit(sender common.Address, subaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.Deposit(&_ExchangeModule.TransactOpts, sender, subaccountID, denom, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe441dec9. +// +// Solidity: function deposit(address sender, string subaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactorSession) Deposit(sender common.Address, subaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.Deposit(&_ExchangeModule.TransactOpts, sender, subaccountID, denom, amount) +} + +// DerivativeOrdersByHashes is a paid mutator transaction binding the contract method 0xd6673c03. +// +// Solidity: function derivativeOrdersByHashes((string,string,string[]) request) returns((uint256,uint256,uint256,uint256,bool,string,string)[] orders) +func (_ExchangeModule *ExchangeModuleTransactor) DerivativeOrdersByHashes(opts *bind.TransactOpts, request IExchangeModuleDerivativeOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "derivativeOrdersByHashes", request) +} + +// DerivativeOrdersByHashes is a paid mutator transaction binding the contract method 0xd6673c03. +// +// Solidity: function derivativeOrdersByHashes((string,string,string[]) request) returns((uint256,uint256,uint256,uint256,bool,string,string)[] orders) +func (_ExchangeModule *ExchangeModuleSession) DerivativeOrdersByHashes(request IExchangeModuleDerivativeOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.Contract.DerivativeOrdersByHashes(&_ExchangeModule.TransactOpts, request) +} + +// DerivativeOrdersByHashes is a paid mutator transaction binding the contract method 0xd6673c03. +// +// Solidity: function derivativeOrdersByHashes((string,string,string[]) request) returns((uint256,uint256,uint256,uint256,bool,string,string)[] orders) +func (_ExchangeModule *ExchangeModuleTransactorSession) DerivativeOrdersByHashes(request IExchangeModuleDerivativeOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.Contract.DerivativeOrdersByHashes(&_ExchangeModule.TransactOpts, request) +} + +// ExternalTransfer is a paid mutator transaction binding the contract method 0xc01307d2. +// +// Solidity: function externalTransfer(address sender, string sourceSubaccountID, string destinationSubaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactor) ExternalTransfer(opts *bind.TransactOpts, sender common.Address, sourceSubaccountID string, destinationSubaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "externalTransfer", sender, sourceSubaccountID, destinationSubaccountID, denom, amount) +} + +// ExternalTransfer is a paid mutator transaction binding the contract method 0xc01307d2. +// +// Solidity: function externalTransfer(address sender, string sourceSubaccountID, string destinationSubaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleSession) ExternalTransfer(sender common.Address, sourceSubaccountID string, destinationSubaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.ExternalTransfer(&_ExchangeModule.TransactOpts, sender, sourceSubaccountID, destinationSubaccountID, denom, amount) +} + +// ExternalTransfer is a paid mutator transaction binding the contract method 0xc01307d2. +// +// Solidity: function externalTransfer(address sender, string sourceSubaccountID, string destinationSubaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactorSession) ExternalTransfer(sender common.Address, sourceSubaccountID string, destinationSubaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.ExternalTransfer(&_ExchangeModule.TransactOpts, sender, sourceSubaccountID, destinationSubaccountID, denom, amount) +} + +// IncreasePositionMargin is a paid mutator transaction binding the contract method 0x8ff96af4. +// +// Solidity: function increasePositionMargin(address sender, string sourceSubaccountID, string destinationSubaccountID, string marketID, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactor) IncreasePositionMargin(opts *bind.TransactOpts, sender common.Address, sourceSubaccountID string, destinationSubaccountID string, marketID string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "increasePositionMargin", sender, sourceSubaccountID, destinationSubaccountID, marketID, amount) +} + +// IncreasePositionMargin is a paid mutator transaction binding the contract method 0x8ff96af4. +// +// Solidity: function increasePositionMargin(address sender, string sourceSubaccountID, string destinationSubaccountID, string marketID, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleSession) IncreasePositionMargin(sender common.Address, sourceSubaccountID string, destinationSubaccountID string, marketID string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.IncreasePositionMargin(&_ExchangeModule.TransactOpts, sender, sourceSubaccountID, destinationSubaccountID, marketID, amount) +} + +// IncreasePositionMargin is a paid mutator transaction binding the contract method 0x8ff96af4. +// +// Solidity: function increasePositionMargin(address sender, string sourceSubaccountID, string destinationSubaccountID, string marketID, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactorSession) IncreasePositionMargin(sender common.Address, sourceSubaccountID string, destinationSubaccountID string, marketID string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.IncreasePositionMargin(&_ExchangeModule.TransactOpts, sender, sourceSubaccountID, destinationSubaccountID, marketID, amount) +} + +// Revoke is a paid mutator transaction binding the contract method 0x3f79e2b1. +// +// Solidity: function revoke(address grantee, uint8[] methods) returns(bool revoked) +func (_ExchangeModule *ExchangeModuleTransactor) Revoke(opts *bind.TransactOpts, grantee common.Address, methods []uint8) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "revoke", grantee, methods) +} + +// Revoke is a paid mutator transaction binding the contract method 0x3f79e2b1. +// +// Solidity: function revoke(address grantee, uint8[] methods) returns(bool revoked) +func (_ExchangeModule *ExchangeModuleSession) Revoke(grantee common.Address, methods []uint8) (*types.Transaction, error) { + return _ExchangeModule.Contract.Revoke(&_ExchangeModule.TransactOpts, grantee, methods) +} + +// Revoke is a paid mutator transaction binding the contract method 0x3f79e2b1. +// +// Solidity: function revoke(address grantee, uint8[] methods) returns(bool revoked) +func (_ExchangeModule *ExchangeModuleTransactorSession) Revoke(grantee common.Address, methods []uint8) (*types.Transaction, error) { + return _ExchangeModule.Contract.Revoke(&_ExchangeModule.TransactOpts, grantee, methods) +} + +// SpotOrdersByHashes is a paid mutator transaction binding the contract method 0x57d90abb. +// +// Solidity: function spotOrdersByHashes((string,string,string[]) request) returns((uint256,uint256,uint256,bool,string,string)[] orders) +func (_ExchangeModule *ExchangeModuleTransactor) SpotOrdersByHashes(opts *bind.TransactOpts, request IExchangeModuleSpotOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "spotOrdersByHashes", request) +} + +// SpotOrdersByHashes is a paid mutator transaction binding the contract method 0x57d90abb. +// +// Solidity: function spotOrdersByHashes((string,string,string[]) request) returns((uint256,uint256,uint256,bool,string,string)[] orders) +func (_ExchangeModule *ExchangeModuleSession) SpotOrdersByHashes(request IExchangeModuleSpotOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.Contract.SpotOrdersByHashes(&_ExchangeModule.TransactOpts, request) +} + +// SpotOrdersByHashes is a paid mutator transaction binding the contract method 0x57d90abb. +// +// Solidity: function spotOrdersByHashes((string,string,string[]) request) returns((uint256,uint256,uint256,bool,string,string)[] orders) +func (_ExchangeModule *ExchangeModuleTransactorSession) SpotOrdersByHashes(request IExchangeModuleSpotOrdersRequest) (*types.Transaction, error) { + return _ExchangeModule.Contract.SpotOrdersByHashes(&_ExchangeModule.TransactOpts, request) +} + +// SubaccountTransfer is a paid mutator transaction binding the contract method 0x42eba2ed. +// +// Solidity: function subaccountTransfer(address sender, string sourceSubaccountID, string destinationSubaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactor) SubaccountTransfer(opts *bind.TransactOpts, sender common.Address, sourceSubaccountID string, destinationSubaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "subaccountTransfer", sender, sourceSubaccountID, destinationSubaccountID, denom, amount) +} + +// SubaccountTransfer is a paid mutator transaction binding the contract method 0x42eba2ed. +// +// Solidity: function subaccountTransfer(address sender, string sourceSubaccountID, string destinationSubaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleSession) SubaccountTransfer(sender common.Address, sourceSubaccountID string, destinationSubaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.SubaccountTransfer(&_ExchangeModule.TransactOpts, sender, sourceSubaccountID, destinationSubaccountID, denom, amount) +} + +// SubaccountTransfer is a paid mutator transaction binding the contract method 0x42eba2ed. +// +// Solidity: function subaccountTransfer(address sender, string sourceSubaccountID, string destinationSubaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactorSession) SubaccountTransfer(sender common.Address, sourceSubaccountID string, destinationSubaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.SubaccountTransfer(&_ExchangeModule.TransactOpts, sender, sourceSubaccountID, destinationSubaccountID, denom, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xeb28c205. +// +// Solidity: function withdraw(address sender, string subaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactor) Withdraw(opts *bind.TransactOpts, sender common.Address, subaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.contract.Transact(opts, "withdraw", sender, subaccountID, denom, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xeb28c205. +// +// Solidity: function withdraw(address sender, string subaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleSession) Withdraw(sender common.Address, subaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.Withdraw(&_ExchangeModule.TransactOpts, sender, subaccountID, denom, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xeb28c205. +// +// Solidity: function withdraw(address sender, string subaccountID, string denom, uint256 amount) returns(bool success) +func (_ExchangeModule *ExchangeModuleTransactorSession) Withdraw(sender common.Address, subaccountID string, denom string, amount *big.Int) (*types.Transaction, error) { + return _ExchangeModule.Contract.Withdraw(&_ExchangeModule.TransactOpts, sender, subaccountID, denom, amount) +} diff --git a/chain/evm/precompiles/staking/i_staking_module.abigen.go b/chain/evm/precompiles/staking/i_staking_module.abigen.go new file mode 100644 index 00000000..498c4a3d --- /dev/null +++ b/chain/evm/precompiles/staking/i_staking_module.abigen.go @@ -0,0 +1,316 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package staking + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// CosmosCoin is an auto generated low-level Go binding around an user-defined struct. +type CosmosCoin struct { + Amount *big.Int + Denom string +} + +// StakingModuleMetaData contains all meta data concerning the StakingModule contract. +var StakingModuleMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"validatorAddress\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[{\"name\":\"delegatorAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validatorAddress\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balance\",\"type\":\"tuple\",\"internalType\":\"structCosmos.Coin\",\"components\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"validatorSrcAddress\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"validatorDstAddress\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"validatorAddress\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawDelegatorRewards\",\"inputs\":[{\"name\":\"validatorAddress\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"tuple[]\",\"internalType\":\"structCosmos.Coin[]\",\"components\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"denom\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"nonpayable\"}]", +} + +// StakingModuleABI is the input ABI used to generate the binding from. +// Deprecated: Use StakingModuleMetaData.ABI instead. +var StakingModuleABI = StakingModuleMetaData.ABI + +// StakingModule is an auto generated Go binding around an Ethereum contract. +type StakingModule struct { + StakingModuleCaller // Read-only binding to the contract + StakingModuleTransactor // Write-only binding to the contract + StakingModuleFilterer // Log filterer for contract events +} + +// StakingModuleCaller is an auto generated read-only Go binding around an Ethereum contract. +type StakingModuleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StakingModuleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StakingModuleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StakingModuleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StakingModuleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StakingModuleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StakingModuleSession struct { + Contract *StakingModule // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StakingModuleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StakingModuleCallerSession struct { + Contract *StakingModuleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StakingModuleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StakingModuleTransactorSession struct { + Contract *StakingModuleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StakingModuleRaw is an auto generated low-level Go binding around an Ethereum contract. +type StakingModuleRaw struct { + Contract *StakingModule // Generic contract binding to access the raw methods on +} + +// StakingModuleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StakingModuleCallerRaw struct { + Contract *StakingModuleCaller // Generic read-only contract binding to access the raw methods on +} + +// StakingModuleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StakingModuleTransactorRaw struct { + Contract *StakingModuleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStakingModule creates a new instance of StakingModule, bound to a specific deployed contract. +func NewStakingModule(address common.Address, backend bind.ContractBackend) (*StakingModule, error) { + contract, err := bindStakingModule(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StakingModule{StakingModuleCaller: StakingModuleCaller{contract: contract}, StakingModuleTransactor: StakingModuleTransactor{contract: contract}, StakingModuleFilterer: StakingModuleFilterer{contract: contract}}, nil +} + +// NewStakingModuleCaller creates a new read-only instance of StakingModule, bound to a specific deployed contract. +func NewStakingModuleCaller(address common.Address, caller bind.ContractCaller) (*StakingModuleCaller, error) { + contract, err := bindStakingModule(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StakingModuleCaller{contract: contract}, nil +} + +// NewStakingModuleTransactor creates a new write-only instance of StakingModule, bound to a specific deployed contract. +func NewStakingModuleTransactor(address common.Address, transactor bind.ContractTransactor) (*StakingModuleTransactor, error) { + contract, err := bindStakingModule(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StakingModuleTransactor{contract: contract}, nil +} + +// NewStakingModuleFilterer creates a new log filterer instance of StakingModule, bound to a specific deployed contract. +func NewStakingModuleFilterer(address common.Address, filterer bind.ContractFilterer) (*StakingModuleFilterer, error) { + contract, err := bindStakingModule(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StakingModuleFilterer{contract: contract}, nil +} + +// bindStakingModule binds a generic wrapper to an already deployed contract. +func bindStakingModule(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StakingModuleMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StakingModule *StakingModuleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StakingModule.Contract.StakingModuleCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StakingModule *StakingModuleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StakingModule.Contract.StakingModuleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StakingModule *StakingModuleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StakingModule.Contract.StakingModuleTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StakingModule *StakingModuleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StakingModule.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StakingModule *StakingModuleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StakingModule.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StakingModule *StakingModuleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StakingModule.Contract.contract.Transact(opts, method, params...) +} + +// Delegation is a free data retrieval call binding the contract method 0x241774e6. +// +// Solidity: function delegation(address delegatorAddress, string validatorAddress) view returns(uint256 shares, (uint256,string) balance) +func (_StakingModule *StakingModuleCaller) Delegation(opts *bind.CallOpts, delegatorAddress common.Address, validatorAddress string) (struct { + Shares *big.Int + Balance CosmosCoin +}, error) { + var out []interface{} + err := _StakingModule.contract.Call(opts, &out, "delegation", delegatorAddress, validatorAddress) + + outstruct := new(struct { + Shares *big.Int + Balance CosmosCoin + }) + if err != nil { + return *outstruct, err + } + + outstruct.Shares = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Balance = *abi.ConvertType(out[1], new(CosmosCoin)).(*CosmosCoin) + + return *outstruct, err + +} + +// Delegation is a free data retrieval call binding the contract method 0x241774e6. +// +// Solidity: function delegation(address delegatorAddress, string validatorAddress) view returns(uint256 shares, (uint256,string) balance) +func (_StakingModule *StakingModuleSession) Delegation(delegatorAddress common.Address, validatorAddress string) (struct { + Shares *big.Int + Balance CosmosCoin +}, error) { + return _StakingModule.Contract.Delegation(&_StakingModule.CallOpts, delegatorAddress, validatorAddress) +} + +// Delegation is a free data retrieval call binding the contract method 0x241774e6. +// +// Solidity: function delegation(address delegatorAddress, string validatorAddress) view returns(uint256 shares, (uint256,string) balance) +func (_StakingModule *StakingModuleCallerSession) Delegation(delegatorAddress common.Address, validatorAddress string) (struct { + Shares *big.Int + Balance CosmosCoin +}, error) { + return _StakingModule.Contract.Delegation(&_StakingModule.CallOpts, delegatorAddress, validatorAddress) +} + +// Delegate is a paid mutator transaction binding the contract method 0x03f24de1. +// +// Solidity: function delegate(string validatorAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleTransactor) Delegate(opts *bind.TransactOpts, validatorAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.contract.Transact(opts, "delegate", validatorAddress, amount) +} + +// Delegate is a paid mutator transaction binding the contract method 0x03f24de1. +// +// Solidity: function delegate(string validatorAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleSession) Delegate(validatorAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.Contract.Delegate(&_StakingModule.TransactOpts, validatorAddress, amount) +} + +// Delegate is a paid mutator transaction binding the contract method 0x03f24de1. +// +// Solidity: function delegate(string validatorAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleTransactorSession) Delegate(validatorAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.Contract.Delegate(&_StakingModule.TransactOpts, validatorAddress, amount) +} + +// Redelegate is a paid mutator transaction binding the contract method 0x7dd0209d. +// +// Solidity: function redelegate(string validatorSrcAddress, string validatorDstAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleTransactor) Redelegate(opts *bind.TransactOpts, validatorSrcAddress string, validatorDstAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.contract.Transact(opts, "redelegate", validatorSrcAddress, validatorDstAddress, amount) +} + +// Redelegate is a paid mutator transaction binding the contract method 0x7dd0209d. +// +// Solidity: function redelegate(string validatorSrcAddress, string validatorDstAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleSession) Redelegate(validatorSrcAddress string, validatorDstAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.Contract.Redelegate(&_StakingModule.TransactOpts, validatorSrcAddress, validatorDstAddress, amount) +} + +// Redelegate is a paid mutator transaction binding the contract method 0x7dd0209d. +// +// Solidity: function redelegate(string validatorSrcAddress, string validatorDstAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleTransactorSession) Redelegate(validatorSrcAddress string, validatorDstAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.Contract.Redelegate(&_StakingModule.TransactOpts, validatorSrcAddress, validatorDstAddress, amount) +} + +// Undelegate is a paid mutator transaction binding the contract method 0x8dfc8897. +// +// Solidity: function undelegate(string validatorAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleTransactor) Undelegate(opts *bind.TransactOpts, validatorAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.contract.Transact(opts, "undelegate", validatorAddress, amount) +} + +// Undelegate is a paid mutator transaction binding the contract method 0x8dfc8897. +// +// Solidity: function undelegate(string validatorAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleSession) Undelegate(validatorAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.Contract.Undelegate(&_StakingModule.TransactOpts, validatorAddress, amount) +} + +// Undelegate is a paid mutator transaction binding the contract method 0x8dfc8897. +// +// Solidity: function undelegate(string validatorAddress, uint256 amount) returns(bool success) +func (_StakingModule *StakingModuleTransactorSession) Undelegate(validatorAddress string, amount *big.Int) (*types.Transaction, error) { + return _StakingModule.Contract.Undelegate(&_StakingModule.TransactOpts, validatorAddress, amount) +} + +// WithdrawDelegatorRewards is a paid mutator transaction binding the contract method 0x6636125e. +// +// Solidity: function withdrawDelegatorRewards(string validatorAddress) returns((uint256,string)[] amount) +func (_StakingModule *StakingModuleTransactor) WithdrawDelegatorRewards(opts *bind.TransactOpts, validatorAddress string) (*types.Transaction, error) { + return _StakingModule.contract.Transact(opts, "withdrawDelegatorRewards", validatorAddress) +} + +// WithdrawDelegatorRewards is a paid mutator transaction binding the contract method 0x6636125e. +// +// Solidity: function withdrawDelegatorRewards(string validatorAddress) returns((uint256,string)[] amount) +func (_StakingModule *StakingModuleSession) WithdrawDelegatorRewards(validatorAddress string) (*types.Transaction, error) { + return _StakingModule.Contract.WithdrawDelegatorRewards(&_StakingModule.TransactOpts, validatorAddress) +} + +// WithdrawDelegatorRewards is a paid mutator transaction binding the contract method 0x6636125e. +// +// Solidity: function withdrawDelegatorRewards(string validatorAddress) returns((uint256,string)[] amount) +func (_StakingModule *StakingModuleTransactorSession) WithdrawDelegatorRewards(validatorAddress string) (*types.Transaction, error) { + return _StakingModule.Contract.WithdrawDelegatorRewards(&_StakingModule.TransactOpts, validatorAddress) +}