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  }