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}