1package item23import (4 "chain"5 "strconv"6 "strings"78 "gno.land/p/akkadia/beta/accesscontrol"9 "gno.land/p/nt/bptree/v0"10 "gno.land/r/akkadia/beta/admin"11)1213const (14 SetListLimitEvent = "SetListLimit"15 SetMinterRealmEvent = "SetMinterRealm"16 UnsetMinterRealmEvent = "UnsetMinterRealm"17)1819var (20 listLimit int = 100 // Max items per ListByOwner page21 minterRealms *bptree.BPTree22)2324func SetListLimit(cur realm, limit int) {25 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)26 if limit < 1 {27 panic("limit must be at least 1")28 }2930 oldLimit := listLimit31 listLimit = limit3233 chain.Emit(34 SetListLimitEvent,35 "oldLimit", strconv.Itoa(oldLimit),36 "newLimit", strconv.Itoa(limit),37 )38}3940func GetListLimit() int {41 return listLimit42}4344func SetMinterRealm(cur realm, pkgPath string) {45 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)46 addr := minterRealmAddress(pkgPath)47 minterRealms.Set(addr.String(), true)48 chain.Emit(49 SetMinterRealmEvent,50 "pkgPath", pkgPath,51 "address", addr.String(),52 )53}5455func UnsetMinterRealm(cur realm, pkgPath string) {56 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)57 addr := minterRealmAddress(pkgPath)58 if !minterRealms.Has(addr.String()) {59 panic("package path is not a minter realm")60 }61 minterRealms.Remove(addr.String())62 chain.Emit(63 UnsetMinterRealmEvent,64 "pkgPath", pkgPath,65 "address", addr.String(),66 )67}6869func IsMinterRealm(addr address) bool {70 return minterRealms.Has(addr.String())71}7273func minterRealmAddress(pkgPath string) address {74 if pkgPath == "" {75 panic("package path is required")76 }77 if !strings.HasPrefix(pkgPath, "gno.land/r/") || pkgPath == "gno.land/r/" {78 panic("invalid package path")79 }80 return chain.PackageAddress(pkgPath)81}82BalanceOf(owner string, tokenID string) int64
Burn(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}, from string, tokenID string, amount int64)
BurnFromRealm(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}, from string, tokenID string, amount int64)
GetListLimit() int
GetOwnedCount(owner string) int
IsApprovedForAll(owner string, operator string) bool
IsMinterRealm(addr string) bool
ListByOwner(owner string, page int, count int) []map[string]string
Render(iURL string) string
SafeMint(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}, recipient string, tokenID string, amount int64)
SafeMintFromRealm(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}, recipient string, tokenID string, amount int64)
SafeTransferFrom(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}, from string, to string, tokenID string, amount int64)
SetApprovalForAll(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}, operator string, approved bool)
SetListLimit(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}, limit int)
SetMinterRealm(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}, pkgPath string)
TotalSupply(tokenID string) int64
UnsetMinterRealm(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}, pkgPath string)
Uri() string
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.