1package gns23import (4 gnsmath "gno.land/p/gnoswap/gnsmath/v1"5 ufmt "gno.land/p/nt/ufmt/v0"6)78// validYear validates that year is within halving period range (1-12).9// Returns error if year is outside the valid range.10func validYear(year int64) error {11 if year < HALVING_START_YEAR || year > HALVING_END_YEAR {12 return makeErrorWithDetails(errInvalidYear, ufmt.Sprintf("year: %d", year))13 }1415 return nil16}1718// validEmissionAmount validates that the emission amount does not exceed maximum.19// Returns error if minting the amount would exceed MAX_EMISSION_AMOUNT.20func validEmissionAmount(amount int64) error {21 if amount < 0 {22 return makeErrorWithDetails(errInvalidEmissionAmount, ufmt.Sprintf("emission amount cannot be negative: %d", amount))23 }2425 if gnsmath.SafeAddInt64(amount, MintedEmissionAmount()) > MAX_EMISSION_AMOUNT {26 return makeErrorWithDetails(errTooManyEmission, ufmt.Sprintf("too many emission amount: %d", amount))27 }2829 return nil30}3132// i64Min returns the smaller of two int64 values.33func i64Min(x, y int64) int64 {34 if x < y {35 return x36 }37 return y38}39Allowance(owner string, spender string) int64
Approve(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}, spender string, amount int64)
BalanceOf(owner string) int64
CalculateMintGnsAmount(fromTimestamp int64, toTimestamp int64) int64
Decimals() int
GetAmountPerSecondPerHalvingYear(year int64) int64
GetCurrentYear() int64
GetEmissionAccumulatedAmountByTimestamp(timestamp int64) int64
GetEmissionAmountPerSecondByTimestamp(timestamp int64) int64
GetEmissionAmountPerSecondInRange(fromTime int64, toTime int64) ([]int64, []int64)
GetEmissionCreatedHeight() int64
GetEmissionEndTimestamp() int64
GetEmissionLeftAmountByTimestamp(timestamp int64) int64
GetEmissionStartTimestamp() int64
GetHalvingAmountsPerYear(year int64) int64
GetHalvingInfo() *gno.land/r/gnoswap/gns.HalvingData
GetHalvingYear(timestamp int64) int64
GetHalvingYearEndTimestamp(year int64) int64
GetHalvingYearInfo(timestamp int64) (int64, int64, int64)
GetHalvingYearLeftAmount(year int64) int64
GetHalvingYearMaxAmount(year int64) int64
GetHalvingYearMintedAmount(year int64) int64
GetHalvingYearStartTimestamp(year int64) int64
GetInitialMintAmount() int64
GetMaxEmissionAmount() int64
GetMaximumSupply() int64
InitEmissionState(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}, createdHeight int64, startTimestamp int64)
IsEmissionActive() bool
IsEmissionEnded() bool
IsEmissionInitialized() bool
KnownAccounts() int
LastMintedTimestamp() int64
LeftEmissionAmount() int64
MintedEmissionAmount() int64
MintGns(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}, address string) int64
Name() string
NewEmissionState(createdHeight int64, startTimestamp int64) *gno.land/r/gnoswap/gns.EmissionState
NewHalvingData(startTimestamp int64) *gno.land/r/gnoswap/gns.HalvingData
Render(path string) string
Symbol() string
TotalSupply() int64
Transfer(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}, to string, amount int64)
TransferFrom(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, amount int64)
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.