1package skins23// The refusals of this realm, as string constants: a string costs its length4// in storage where an errors.New value costs about 1.15 KB (see the planes5// realm). A panic with a string aborts the call with the same message.6const (7 errSpoofedRealm = "gnofly: spoofed realm"8 errNotAdmin = "gnofly: caller is not an admin"9 errBadCatalog = "gnofly: corrupt catalog line"1011 errInvalidID = "gnofly: id must be 1 to 32 characters of [a-z0-9-]"12 errReservedID = "gnofly: classic is the free look of every pilot, not a skin to sell"13 errInvalidName = "gnofly: name must be 1 to 40 characters of [A-Za-z0-9 '.!-]"14 errInvalidModel = "gnofly: model must be 1 to 16 characters of [a-z0-9-]"15 errInvalidPilot = "gnofly: pilot must be none or gnome"16 errInvalidColor = "gnofly: colors must be #rrggbb in lowercase"17 errInvalidPrice = "gnofly: price must be between 1 and 1000000000000 ugnot"18 errInvalidSupply = "gnofly: max supply must be 0 (unlimited) or more"1920 errUnknownSkin = "gnofly: unknown skin"21 errSkinUnlisted = "gnofly: this skin is not for sale"22 errSoldOut = "gnofly: every copy of this skin is sold"23 errAlreadyOwned = "gnofly: this address already owns this skin"24 errNotUserCall = "gnofly: Buy must be called directly by a user (maketx call)"25 errNotMinted = "gnofly: no such skin token"26 errNotSkinOwner = "gnofly: caller does not own this skin token"27)28BalanceOf(addr string) (int64, interface {Error func() string})
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}, id int64)
Buy(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}, skinID string) int64
CatalogJSON() string
OwnerOf(tid string) (string, interface {Error func() string})
Render(path string) string
SetSkin(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}, id string, name string, model string, pilot string, body string, wing string, accent string, price int64, maxSupply int64)
SetSkinListed(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}, id string, listed bool)
SkinOf(id int64) string
SkinsOf(addr string) string
TokenMetadata(tid string) (string, interface {Error func() string})
TokenURI(tid string) (string, interface {Error func() 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.