PathrockNetwork Gno Explorer
HomeBlocksTransactionsRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/gnoswap/position/v1

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
v1
Namespace
gnoswap / position
Files
17 (README)(gnomod.toml)
Exported functions
1
Module
gno.land/r/gnoswap/position/v1
gno
0.9

Files (17)

  • README.mdmarkdown
  • gnomod.tomltoml
  • assert.gnogno
  • burn.gnogno
  • doc.gnogno
  • errors.gnogno
  • getter.gnogno
  • init.gnogno
  • instance.gnogno
  • liquidity_management.gnogno
  • manager.gnogno
  • mint.gnogno
  • position.gnogno
  • render.gnogno
  • reposition.gnogno
  • type.gnogno
  • utils.gnogno
  • assert.gnogno
    1package position23import (4	"errors"5	"time"67	u256 "gno.land/p/gnoswap/uint256/v1"8

    Functions

    • NewPositionV1(positionStore interface {GetPosition func(uint64) (gno.land/r/gnoswap/position.Position, bool); GetPositionNextID func() uint64; GetPositions func() *gno.land/p/nt/bptree/v0.BPTree; HasPosition func(uint64) bool; HasPositionNextIDStoreKey func() bool; HasPositionsStoreKey func() bool; RemovePosition func(int, .uverse.realm, uint64) .uverse.error; SetPosition func(int, .uverse.realm, uint64, gno.land/r/gnoswap/position.Position) .uverse.error; SetPositionNextID func(int, .uverse.realm, uint64) .uverse.error; SetPositions func(int, .uverse.realm, *gno.land/p/nt/bptree/v0.BPTree) .uverse.error}, accessor interface {Approve func(int, .uverse.realm, .uverse.address, gno.land/p/nt/grc721/v0.TokenID) .uverse.error; Burn func(int, .uverse.realm, gno.land/p/nt/grc721/v0.TokenID); Exists func(gno.land/p/nt/grc721/v0.TokenID) bool; Mint func(int, .uverse.realm, .uverse.address, gno.land/p/nt/grc721/v0.TokenID) gno.land/p/nt/grc721/v0.TokenID; OwnerOf func(gno.land/p/nt/grc721/v0.TokenID) (.uverse.address, .uverse.error); TotalSupply func() int64}) interface {CollectFee func(int, .uverse.realm, uint64) (uint64, string, string, string, string, string); DecreaseLiquidity func(int, .uverse.realm, uint64, string, string, string, int64) (uint64, string, string, string, string, string, string); GetPositionFeeGrowthInside0LastX128 func(uint64) (string, .uverse.error); GetPositionFeeGrowthInside1LastX128 func(uint64) (string, .uverse.error); GetPositionFeeGrowthInsideLastX128 func(uint64) (string, string, .uverse.error); GetPositionLiquidity func(uint64) (string, .uverse.error); GetPositionOperator func(uint64) (.uverse.address, .uverse.error); GetPositionOwner func(uint64) (.uverse.address, .uverse.error); GetPositionPoolKey func(uint64) (string, .uverse.error); GetPositionTickLower func(uint64) (int32, .uverse.error); GetPositionTickUpper func(uint64) (int32, .uverse.error); GetPositionTicks func(uint64) (int32, int32, .uverse.error); GetPositionTokenBalances func(uint64) (int64, int64, .uverse.error); GetPositionTokensOwed func(uint64) (int64, int64, .uverse.error); GetPositionTokensOwed0 func(uint64) (int64, .uverse.error); GetPositionTokensOwed1 func(uint64) (int64, .uverse.error); GetPositions func() *gno.land/p/nt/bptree/rotree/v0.ReadOnlyTree; GetUnclaimedFee func(uint64) (*gno.land/p/gnoswap/uint256/v1.Uint, *gno.land/p/gnoswap/uint256/v1.Uint, .uverse.error); IncreaseLiquidity func(int, .uverse.realm, uint64, string, string, string, string, int64) (uint64, string, string, string, string); IsBurned func(uint64) (bool, .uverse.error); IsInRange func(uint64) (bool, .uverse.error); Mint func(int, .uverse.realm, string, string, uint32, int32, int32, string, string, string, string, int64, .uverse.address, string) (uint64, string, string, string); Render func(string) string; Reposition func(int, .uverse.realm, uint64, int32, int32, string, string, string, string, int64) (uint64, string, int32, int32, string, string); SetPositionOperator func(int, .uverse.realm, uint64, .uverse.address)}

    Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

    Rendered

    RenderedRawgnoweb ↗
    This realm does not provide renderable output (vm/qrender → NoRenderDeclError). View on gnoweb ↗

    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.

    ufmt "gno.land/p/nt/ufmt/v0"
    9
    10 prbac "gno.land/p/gnoswap/rbac/v1"
    11 "gno.land/r/gnoswap/access/v1"
    12)
    13
    14// assertIsNotExpired panics if the deadline is expired.
    15func assertIsNotExpired(deadline int64) {
    16 now := time.Now().Unix()
    17
    18 if now > deadline {
    19 panic(makeErrorWithDetails(
    20 errExpired,
    21 ufmt.Sprintf("transaction too old, now(%d) > deadline(%d)", now, deadline),
    22 ))
    23 }
    24}
    25
    26// assertValidNumberString panics if the input string does not represent a valid integer.
    27func assertValidNumberString(input string) {
    28 if len(input) == 0 {
    29 panic(newErrorWithDetail(errInvalidInput, "input is empty"))
    30 }
    31
    32 bytes := []byte(input)
    33 for i, b := range bytes {
    34 if i == 0 && b == '-' {
    35 continue // Allow if the first character is a negative sign (-)
    36 }
    37 if b < '0' || b > '9' {
    38 panic(newErrorWithDetail(
    39 errInvalidInput,
    40 ufmt.Sprintf("input string : %s", input)))
    41 }
    42 }
    43}
    44
    45// assertValidLiquidityAmount panics if the liquidity amount is zero.
    46func assertValidLiquidityAmount(liquidity string) {
    47 if u256.MustFromDecimal(liquidity).IsZero() {
    48 panic(newErrorWithDetail(
    49 errZeroLiquidity,
    50 ufmt.Sprintf("liquidity amount must be greater than 0, got %s", liquidity),
    51 ))
    52 }
    53}
    54
    55// assertExistsPosition panics if the position does not exist.
    56func assertExistsPosition(p *positionV1, positionId uint64) {
    57 if !p.exists(positionId) {
    58 panic(newErrorWithDetail(
    59 errPositionDoesNotExist,
    60 ufmt.Sprintf("position with position ID(%d) doesn't exist", positionId),
    61 ))
    62 }
    63}
    64
    65// assertIsOwnerForToken panics if caller is not the owner of the position.
    66func assertIsOwnerForToken(p *positionV1, positionId uint64, caller address) {
    67 assertExistsPosition(p, positionId)
    68
    69 if !p.isOwner(positionId, caller) {
    70 panic(newErrorWithDetail(
    71 errNoPermission,
    72 ufmt.Sprintf("caller(%s) is not owner of positionId(%d)", caller, positionId),
    73 ))
    74 }
    75}
    76
    77// assertIsOwnerOrOperatorForToken panics if caller is not the owner or operator of the position.
    78func assertIsOwnerOrOperatorForToken(p *positionV1, positionId uint64, caller address) {
    79 assertExistsPosition(p, positionId)
    80
    81 if !p.isOwnerOrOperator(positionId, caller) {
    82 panic(newErrorWithDetail(
    83 errNoPermission,
    84 ufmt.Sprintf("caller(%s) is not owner or approved operator of positionId(%d)", caller, positionId),
    85 ))
    86 }
    87}
    88
    89// assertEqualsAddress panics if addresses are invalid or not equal.
    90func assertEqualsAddress(prevAddr, otherAddr address) {
    91 access.AssertIsValidAddress(prevAddr)
    92 access.AssertIsValidAddress(otherAddr)
    93
    94 if prevAddr != otherAddr {
    95 panic(newErrorWithDetail(
    96 errInvalidAddress,
    97 ufmt.Sprintf("(%s, %s)", prevAddr, otherAddr),
    98 ))
    99 }
    100}
    101
    102// assertValidOperatorAddress validates operator address.
    103// Empty address is allowed (for operator removal), but non-empty addresses must be valid.
    104func assertValidOperatorAddress(operator address) {
    105 if operator != address("") && !operator.IsValid() {
    106 panic(newErrorWithDetail(errInvalidAddress, ufmt.Sprintf("operator(%s)", operator)))
    107 }
    108}
    109
    110// assertIsNotMintToStaker panics if the mintTo address is staker.
    111func assertIsNotMintToStaker(mintTo address) {
    112 stakerAddr := access.MustGetAddress(prbac.ROLE_STAKER.String())
    113 if mintTo == stakerAddr {
    114 panic(errors.New(errCannotMintToStaker))
    115 }
    116}
    117