forked from TrueCloudLab/neoneo-go
rpcclient/nep11: make DivisibleWriter part reusable
Same rationale as for BaseWriter or nep17.TokenWriter, otherwise it's hard to build on top of plain Divisible structure.
This commit is contained in:
parent
b590d4ca04
commit
bb47d971dc
1 changed files with 13 additions and 6 deletions
|
@ -16,10 +16,17 @@ type DivisibleReader struct {
|
|||
BaseReader
|
||||
}
|
||||
|
||||
// Divisible is a state-changing interface for divisible NEP-11 contract.
|
||||
// DivisibleWriter is a state-changing interface for divisible NEP-11 contract.
|
||||
// It's mostly useful not directly, but as a reusable layer for higher-level
|
||||
// structures.
|
||||
type DivisibleWriter struct {
|
||||
BaseWriter
|
||||
}
|
||||
|
||||
// Divisible is a full reader interface for divisible NEP-11 contract.
|
||||
type Divisible struct {
|
||||
DivisibleReader
|
||||
BaseWriter
|
||||
DivisibleWriter
|
||||
}
|
||||
|
||||
// OwnerIterator is used for iterating over OwnerOf (for divisible NFTs) results.
|
||||
|
@ -38,7 +45,7 @@ func NewDivisibleReader(invoker Invoker, hash util.Uint160) *DivisibleReader {
|
|||
// NewDivisible creates an instance of Divisible for a contract
|
||||
// with the given hash using the given actor.
|
||||
func NewDivisible(actor Actor, hash util.Uint160) *Divisible {
|
||||
return &Divisible{*NewDivisibleReader(actor, hash), BaseWriter{hash, actor}}
|
||||
return &Divisible{*NewDivisibleReader(actor, hash), DivisibleWriter{BaseWriter{hash, actor}}}
|
||||
}
|
||||
|
||||
// OwnerOf returns returns an iterator that allows to walk through all owners of
|
||||
|
@ -72,7 +79,7 @@ func (t *DivisibleReader) BalanceOfD(owner util.Uint160, token []byte) (*big.Int
|
|||
// method call using the given parameters and checks for this call result,
|
||||
// failing the transaction if it's not true. The returned values are transaction
|
||||
// hash, its ValidUntilBlock value and an error if any.
|
||||
func (t *Divisible) TransferD(from util.Uint160, to util.Uint160, amount *big.Int, id []byte, data interface{}) (util.Uint256, uint32, error) {
|
||||
func (t *DivisibleWriter) TransferD(from util.Uint160, to util.Uint160, amount *big.Int, id []byte, data interface{}) (util.Uint256, uint32, error) {
|
||||
script, err := t.transferScript(from, to, amount, id, data)
|
||||
if err != nil {
|
||||
return util.Uint256{}, 0, err
|
||||
|
@ -85,7 +92,7 @@ func (t *Divisible) TransferD(from util.Uint160, to util.Uint160, amount *big.In
|
|||
// `transfer` method call using the given parameters and checks for this call
|
||||
// result, failing the transaction if it's not true. This transaction is signed,
|
||||
// but not sent to the network, instead it's returned to the caller.
|
||||
func (t *Divisible) TransferDTransaction(from util.Uint160, to util.Uint160, amount *big.Int, id []byte, data interface{}) (*transaction.Transaction, error) {
|
||||
func (t *DivisibleWriter) TransferDTransaction(from util.Uint160, to util.Uint160, amount *big.Int, id []byte, data interface{}) (*transaction.Transaction, error) {
|
||||
script, err := t.transferScript(from, to, amount, id, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -98,7 +105,7 @@ func (t *Divisible) TransferDTransaction(from util.Uint160, to util.Uint160, amo
|
|||
// `transfer` method call using the given parameters and checks for this call
|
||||
// result, failing the transaction if it's not true. This transaction is not
|
||||
// signed and just returned to the caller.
|
||||
func (t *Divisible) TransferDUnsigned(from util.Uint160, to util.Uint160, amount *big.Int, id []byte, data interface{}) (*transaction.Transaction, error) {
|
||||
func (t *DivisibleWriter) TransferDUnsigned(from util.Uint160, to util.Uint160, amount *big.Int, id []byte, data interface{}) (*transaction.Transaction, error) {
|
||||
script, err := t.transferScript(from, to, amount, id, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
Loading…
Reference in a new issue