package frostfs import ( "fmt" "git.frostfs.info/TrueCloudLab/frostfs-contract/rpcclient/frostfs" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/event" "github.com/nspcc-dev/neo-go/pkg/core/state" "github.com/nspcc-dev/neo-go/pkg/util" ) // Withdraw structure of frostfs.Withdraw notification from mainnet chain. type Withdraw struct { IDValue []byte AmountValue int64 // Fixed8 UserValue util.Uint160 } // MorphEvent implements Neo:Morph Event interface. func (Withdraw) MorphEvent() {} // ID is a withdraw transaction hash. func (w Withdraw) ID() []byte { return w.IDValue } // User returns withdraw receiver script hash from main net. func (w Withdraw) User() util.Uint160 { return w.UserValue } // Amount of the withdraw assets. func (w Withdraw) Amount() int64 { return w.AmountValue } // ParseWithdraw notification into withdraw structure. func ParseWithdraw(e *state.ContainedNotificationEvent) (event.Event, error) { var we frostfs.WithdrawEvent if err := we.FromStackItem(e.Item); err != nil { return nil, fmt.Errorf("parse frostfs.WithdrawEvent: %w", err) } return Withdraw{ IDValue: we.TxHash[:], AmountValue: we.Amount.Int64(), UserValue: we.User, }, nil }