prop_requests.gno

package memberstore

import (
	"chain/runtime"

	"gno.land/p/nt/avl/v0"

	"gno.land/r/gov/dao"
)

func NewChangeTiersRequest(tiers map[string]Tier) dao.ProposalRequest {
	if len(tiers) == 0 {
		panic("tiers list is empty")
	}

	member, _ := Get().GetMember(runtime.OriginCaller())
	if member == nil {
		panic("proposer is not a member")
	}

	newTiers := TiersByName{avl.NewTree()}
	for name, tier := range tiers {
		newTiers.Set(name, tier)
	}

	callback := func(cur realm) error {
		setTiers(newTiers)

		return nil
	}

	e := dao.NewSimpleExecutor(callback, "New set of tiers proposed.")

	return dao.NewProposalRequest("Change Tiers Proposal", "This proposal is looking to change the existing Tiers in memberstore", e)
}