impl.gno

0.96 Kb ยท 48 lines
 1package impl
 2
 3import (
 4	"std"
 5
 6	"gno.land/r/gov/dao/v3/memberstore"
 7)
 8
 9var govDAO *GovDAO = NewGovDAO()
10var law *Law
11var gRealm = std.CurrentRealm()
12
13func init() {
14	law = &Law{
15		Supermajority: 66,
16	}
17}
18
19func Render(in string) string {
20	return govDAO.Render(gRealm.PkgPath(), in)
21}
22
23// AddMember allows T1 and T2 members to freely add T3 members using their invitation points.
24func AddMember(addr std.Address) {
25	caller := std.OriginCaller()
26	m, t := memberstore.Get().GetMember(caller)
27	if m == nil {
28		panic("caller is not a member")
29	}
30
31	if t != memberstore.T1 || t != memberstore.T2 {
32		panic("caller is not on T1 or T2. To add members, propose them through proposals")
33	}
34
35	m.RemoveInvitationPoint()
36
37	if err := memberstore.Get().SetMember(memberstore.T3, addr, memberByTier(memberstore.T3)); err != nil {
38		panic(err.Error())
39	}
40}
41
42func GetInstance() *GovDAO {
43	if std.CurrentRealm().PkgPath() != "gno.land/r/gov/dao/v3/loader" {
44		panic("not allowed")
45	}
46
47	return govDAO
48}