Skip to content

Commit 5a50a5b

Browse files
committed
define contract instance type
1 parent 7ad9097 commit 5a50a5b

File tree

2 files changed

+35
-11
lines changed

2 files changed

+35
-11
lines changed

accounts/abi/bind/lib.go

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ import (
2525
"github.com/ethereum/go-ethereum/event"
2626
)
2727

28+
// ContractInstance provides means to interact with
29+
// a deployed contract.
30+
type ContractInstance interface {
31+
Address() common.Address
32+
Backend() ContractBackend
33+
}
34+
2835
func DeployContract2(opts *TransactOpts, bytecode []byte, input []byte, backend ContractBackend) (common.Address, *types.Transaction, error) {
2936
c := NewBoundContract(common.Address{}, abi.ABI{}, backend, backend, backend)
3037
tx, err := c.transact(opts, nil, append(bytecode, input...))
@@ -35,41 +42,49 @@ func DeployContract2(opts *TransactOpts, bytecode []byte, input []byte, backend
3542
return address, tx, nil
3643
}
3744

38-
func Call2[T any](opts *CallOpts, addr common.Address, input []byte, backend ContractBackend, unpack func([]byte) (T, error)) (arg T, err error) {
45+
func Call2[T any](instance ContractInstance, opts *CallOpts, input []byte, unpack func([]byte) (T, error)) (arg T, err error) {
3946
var data []byte
40-
data, err = CallRaw(opts, addr, input, backend)
47+
data, err = CallRaw(instance, opts, input)
4148
if err != nil {
4249
return
4350
}
4451
return unpack(data)
4552
}
4653

47-
func CallRaw(opts *CallOpts, addr common.Address, input []byte, backend ContractBackend) ([]byte, error) {
48-
c := NewBoundContract(addr, abi.ABI{}, backend, backend, backend)
54+
func CallRaw(instance ContractInstance, opts *CallOpts, input []byte) ([]byte, error) {
55+
backend := instance.Backend()
56+
c := NewBoundContract(instance.Address(), abi.ABI{}, backend, backend, backend)
4957
return c.call(opts, input)
5058
}
5159

52-
func Transact2(opts *TransactOpts, addr common.Address, input []byte, backend ContractBackend) (*types.Transaction, error) {
60+
func Transact2(instance ContractInstance, opts *TransactOpts, input []byte) (*types.Transaction, error) {
61+
var (
62+
addr = instance.Address()
63+
backend = instance.Backend()
64+
)
5365
c := NewBoundContract(addr, abi.ABI{}, backend, backend, backend)
5466
return c.transact(opts, &addr, input)
5567
}
5668

57-
func Transfer2(opts *TransactOpts, addr common.Address, backend ContractBackend) (*types.Transaction, error) {
58-
c := NewBoundContract(addr, abi.ABI{}, backend, backend, backend)
69+
func Transfer2(instance ContractInstance, opts *TransactOpts) (*types.Transaction, error) {
70+
backend := instance.Backend()
71+
c := NewBoundContract(instance.Address(), abi.ABI{}, backend, backend, backend)
5972
return c.Transfer(opts)
6073
}
6174

62-
func FilterLogs[T any](opts *FilterOpts, addr common.Address, backend ContractBackend, eventID common.Hash, unpack func(types.Log) (*T, error), topics ...[]any) (*EventIterator[T], error) {
63-
c := NewBoundContract(addr, abi.ABI{}, backend, backend, backend)
75+
func FilterLogs[T any](instance ContractInstance, opts *FilterOpts, eventID common.Hash, unpack func(types.Log) (*T, error), topics ...[]any) (*EventIterator[T], error) {
76+
backend := instance.Backend()
77+
c := NewBoundContract(instance.Address(), abi.ABI{}, backend, backend, backend)
6478
logs, sub, err := c.filterLogs(opts, eventID, topics...)
6579
if err != nil {
6680
return nil, err
6781
}
6882
return &EventIterator[T]{unpack: unpack, logs: logs, sub: sub}, nil
6983
}
7084

71-
func WatchLogs[T any](opts *WatchOpts, addr common.Address, backend ContractBackend, eventID common.Hash, unpack func(types.Log) (*T, error), sink chan<- *T, topics ...[]any) (event.Subscription, error) {
72-
c := NewBoundContract(addr, abi.ABI{}, backend, backend, backend)
85+
func WatchLogs[T any](instance ContractInstance, opts *WatchOpts, eventID common.Hash, unpack func(types.Log) (*T, error), sink chan<- *T, topics ...[]any) (event.Subscription, error) {
86+
backend := instance.Backend()
87+
c := NewBoundContract(instance.Address(), abi.ABI{}, backend, backend, backend)
7388
logs, sub, err := c.watchLogs(opts, eventID, topics...)
7489
if err != nil {
7590
return nil, err

accounts/abi/bind/template2.go

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)