github.com/mavryk-network/mvgo@v1.19.9/internal/compose/alpha/task/finalize_unstake.go (about) 1 // Copyright (c) 2024 Blockwatch Data Inc. 2 // Author: alex@blockwatch.cc, abdul@blockwatch.cc 3 4 package task 5 6 import ( 7 "github.com/mavryk-network/mvgo/codec" 8 "github.com/mavryk-network/mvgo/internal/compose" 9 "github.com/mavryk-network/mvgo/internal/compose/alpha" 10 "github.com/mavryk-network/mvgo/rpc" 11 "github.com/mavryk-network/mvgo/signer" 12 13 "github.com/pkg/errors" 14 ) 15 16 var _ alpha.TaskBuilder = (*FinalizeUnstakeTask)(nil) 17 18 func init() { 19 alpha.RegisterTask("finalize_unstake", NewFinalizeUnstakeTask) 20 } 21 22 type FinalizeUnstakeTask struct { 23 BaseTask 24 } 25 26 func NewFinalizeUnstakeTask() alpha.TaskBuilder { 27 return &FinalizeUnstakeTask{} 28 } 29 30 func (t *FinalizeUnstakeTask) Type() string { 31 return "finalize_unstake" 32 } 33 34 func (t *FinalizeUnstakeTask) Build(ctx compose.Context, task alpha.Task) (*codec.Op, *rpc.CallOptions, error) { 35 if err := t.parse(ctx, task); err != nil { 36 return nil, nil, errors.Wrap(err, "parse") 37 } 38 opts := rpc.NewCallOptions() 39 opts.Signer = signer.NewFromKey(t.Key) 40 op := codec.NewOp(). 41 WithSource(t.Source). 42 WithFinalizeUnstake() 43 return op, opts, nil 44 } 45 46 func (t *FinalizeUnstakeTask) Validate(ctx compose.Context, task alpha.Task) error { 47 return t.parse(ctx, task) 48 } 49 50 func (t *FinalizeUnstakeTask) parse(ctx compose.Context, task alpha.Task) (err error) { 51 return t.BaseTask.parse(ctx, task) 52 }