PathrockNetwork Gno Explorer
HomeBlocksTransactionsTokensRealmsPackagesValidatorsAnalytics

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
  • liquidity_management.gnogno
    1package position23import (4	"gno.land/p/gnoswap/gnsmath/v1"5	u256 "gno.land/p/gnoswap/uint256/v1"6	ufmt "gno.land/p/nt/ufmt/v0"7	pl "gno.land/r/gnoswap/pool"8)910type AddLiquidityParams struct {11	poolKey        string     // poolPath of the pool which has the position12	tickLower      int32      // lower end of the tick range for the position13	tickUpper      int32      // upper end of the tick range for the position14	amount0Desired *u256.Uint // desired amount of token0 to be minted15	amount1Desired *u256.Uint // desired amount of token1 to be minted16	amount0Min     *u256.Uint // minimum amount of token0 to be minted17	amount1Min     *u256.Uint // minimum amount of token1 to be minted18	caller         address    // address to call the function19}2021// addLiquidity calculates liquidity amounts and mints position tokens to a pool.22func (p *positionV1) addLiquidity(_ int, rlm realm, params AddLiquidityParams) (*u256.Uint, *u256.Uint, *u256.Uint) {23	sqrtPriceX96String, err := pl.GetSlot0SqrtPriceX96(params.poolKey)24	if err != nil {25		panic(err)26	}27	sqrtPriceX96 := u256.MustFromDecimal(sqrtPriceX96String)28	sqrtRatioAX96 := gnsmath.TickMathGetSqrtRatioAtTick(params.tickLower)29	sqrtRatioBX96 := gnsmath.TickMathGetSqrtRatioAtTick(params.tickUpper)3031	liquidity := gnsmath.GetLiquidityForAmounts(32		sqrtPriceX96,33		sqrtRatioAX96,34		sqrtRatioBX96,35		params.amount0Desired,36		params.amount1Desired,37	)3839	token0, token1, fee := splitOf(params.poolKey)40	amount0Str, amount1Str := pl.Mint(41		cross(rlm),42		token0,43		token1,44		fee,45		params.tickLower,46		params.tickUpper,47		liquidity.ToString(),48		params.caller,49	)5051	amount0 := u256.MustFromDecimal(amount0Str)52	amount1 := u256.MustFromDecimal(amount1Str)5354	amount0Cond := amount0.Gte(params.amount0Min)55	amount1Cond := amount1.Gte(params.amount1Min)5657	if !(amount0Cond && amount1Cond) {58		panic(newErrorWithDetail(59			errSlippage,60			ufmt.Sprintf(61				"Price Slippage Check(amount0(%s) >= amount0Min(%s), amount1(%s) >= amount1Min(%s))",62				amount0Str, params.amount0Min.ToString(), amount1Str, params.amount1Min.ToString()),63		))64	}6566	return liquidity, amount0, amount167}68

    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 ↗

    Render unavailable

    rate limit exceeded — the render query is served by the Gnoland archive RPC.

    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.