package requests

import (
	"errors"

	"github.com/status-im/status-go/eth-node/types"
	"github.com/status-im/status-go/protocol/common/shard"
)

type SetCommunityShard struct {
	CommunityID types.HexBytes  `json:"communityId"`
	Shard       *shard.Shard    `json:"shard,omitempty"`
	PrivateKey  *types.HexBytes `json:"privateKey,omitempty"`
}

func (s *SetCommunityShard) Validate() error {
	if s == nil {
		return errors.New("invalid request")
	}
	if s.Shard != nil {
		// TODO: for now only MainStatusShard(16) is accepted
		if s.Shard.Cluster != shard.MainStatusShardCluster {
			return errors.New("invalid shard cluster")
		}
		if s.Shard.Index > 1023 {
			return errors.New("invalid shard index. Only 0-1023 is allowed")
		}
	}
	return nil
}