1package users23import "gno.land/p/nt/bptree/rotree/v0"45// ResolveName returns the latest UserData of a specific user by name or alias6func ResolveName(name string) (data *UserData, isCurrent bool) {7 raw := nameStore.Get(name)8 if raw == nil {9 return nil, false10 }1112 data = raw.(*UserData)13 if data.deleted {14 return nil, false15 }1617 return data, name == data.username18}1920// ResolveAddress returns the latest UserData of a specific user by address21func ResolveAddress(addr address) *UserData {22 raw := addressStore.Get(addr.String())23 if raw == nil {24 return nil25 }2627 data := raw.(*UserData)28 if data.deleted {29 return nil30 }3132 return data33}3435// ResolveAny tries to resolve any given string to *UserData36// If the input is not found in the registry in any form, nil is returned37func ResolveAny(input string) (*UserData, bool) {38 addr := address(input)39 if addr.IsValid() {40 return ResolveAddress(addr), true41 }4243 return ResolveName(input)44}4546// GetReadonlyAddrStore exposes the address store in readonly mode47func GetReadonlyAddrStore() *rotree.ReadOnlyTree {48 return rotree.Wrap(addressStore, makeUserDataSafe)49}5051// GetReadOnlyNameStore exposes the name store in readonly mode52func GetReadOnlyNameStore() *rotree.ReadOnlyTree {53 return rotree.Wrap(nameStore, makeUserDataSafe)54}5556func makeUserDataSafe(data any) any {57 cpy := new(UserData)58 *cpy = *(data.(*UserData))59 if cpy.deleted {60 return nil61 }6263 // Note: when requesting data from this AVL tree, (exists bool) will be true64 // Even if the data is "deleted". This is currently unavoidable65 return cpy66}67AddControllerAtGenesis(interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, addr string)
Canonicalize(name string) string
Controllers() [].uverse.address
GetReadonlyAddrStore() *gno.land/p/nt/bptree/rotree/v0.ReadOnlyTree
GetReadOnlyNameStore() *gno.land/p/nt/bptree/rotree/v0.ReadOnlyTree
IsCanonicalTaken(name string) (existing string, taken bool)
IsController(addr string) bool
IsNameTaken(name string) bool
NewErrNotWhitelisted(int, caller interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}) struct{Caller string}
ProposeControllerAdditionAndRemoval(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, toAdd string, toRemove string) struct{title string; description string; executor gno.land/r/gov/dao.Executor; filter gno.land/r/gov/dao.Filter}
ProposeControllerRemoval(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, addr string) struct{title string; description string; executor gno.land/r/gov/dao.Executor; filter gno.land/r/gov/dao.Filter}
ProposeDeleteUser(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, addr string) struct{title string; description string; executor gno.land/r/gov/dao.Executor; filter gno.land/r/gov/dao.Filter}
ProposeNewController(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, addr string) struct{title string; description string; executor gno.land/r/gov/dao.Executor; filter gno.land/r/gov/dao.Filter}
ProposeRegisterUser(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, addr string) struct{title string; description string; executor gno.land/r/gov/dao.Executor; filter gno.land/r/gov/dao.Filter}
ProposeUpdateName(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, addr string, newName string) struct{title string; description string; executor gno.land/r/gov/dao.Executor; filter gno.land/r/gov/dao.Filter}
RegisterUser(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, address_XXX string) interface {Error func() string}
RegisterUserIgnoreCanonical(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, name string, address_XXX string) interface {Error func() string}
Render(string) string
ResolveAddress(addr string) *gno.land/r/sys/users.UserData
ResolveAny(input string) (*gno.land/r/sys/users.UserData, bool)
ResolveName(name string) (data *gno.land/r/sys/users.UserData, isCurrent bool)
Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.
vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.