1package common23import (4 "gno.land/r/gnoswap/access/v1"5)67// RegisterInitializer registers the versioned common implementation initializer8// and activates the implementation returned by it.9//10// Parameters:11// - cur: Current realm context; callers use cross(cur) when crossing into this realm.12// - initializer: callback invoked with discriminator 0 and the propagated13// implementation realm, returning the version's ICommon implementation14func RegisterInitializer(cur realm, initializer func(_ int, rlm realm) ICommon) {15 initializerFunc := func(_ int, rlm realm, _ any) any {16 access.AssertIsRlmCurrent(0, rlm)1718 return initializer(0, rlm)19 }2021 err := versionManager.RegisterInitializer(0, cur, initializerFunc)22 if err != nil {23 panic(err)24 }2526 err = updateImplementation()27 if err != nil {28 panic(err)29 }30}3132// UpgradeImpl changes the active common implementation package and refreshes33// the cached implementation.34//35// Parameters:36// - cur: Current realm context; callers use cross(cur) when crossing into this realm.37// - packagePath: fully qualified package path of the replacement implementation38func UpgradeImpl(cur realm, packagePath string) {39 prev := cur.Previous()40 access.AssertIsAdminOrGovernance(prev.Address())4142 err := versionManager.ChangeImplementation(0, cur, packagePath)43 if err != nil {44 panic(err)45 }4647 err = updateImplementation()48 if err != nil {49 panic(err)50 }51}5253// GetImplementationPackagePath returns the package path of the currently54// selected common implementation.55//56// Returns:57// - packagePath: fully qualified current implementation package path58func GetImplementationPackagePath() string {59 return versionManager.GetCurrentPackagePath()60}61Allowance(tokenKey string, owner string, spender string) int64
Approve(int, rlm 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}, tokenKey string, spender string, amount int64) interface {Error func() string}
AssertIsNotHandleNativeCoin()
BalanceOf(tokenKey string, addr string) int64
GetImplementationPackagePath() string
IsRegistered(tokenKey string) interface {Error func() string}
MustRegistered(tokenKeys ...string)
RegisterInitializer(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}, initializer func(int, .uverse.realm) gno.land/r/gnoswap/common.ICommon)
Render(path string) string
SafeGRC20Approve(int, rlm 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}, tokenKey string, spender string, amount int64)
SafeGRC20Transfer(int, rlm 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}, tokenKey string, to string, amount int64)
SafeGRC20TransferFrom(int, rlm 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}, tokenKey string, from string, to string, amount int64)
TotalSupply(tokenKey string) int64
Transfer(int, rlm 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}, tokenKey string, to string, amount int64) interface {Error func() string}
TransferFrom(int, rlm 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}, tokenKey string, from string, to string, amount int64) interface {Error func() string}
UpgradeImpl(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}, packagePath string)
ValidateRegistered(tokenKeys ...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.