HomeOverviewValsValidatorsGovGovernanceIBCRelayersN/AInfraInfra
/
powered by GATA HUB

r/gnoswap/position/v1

Gno.land

Realm
Files17
Lines of code2,395excluding tests
Functions1exported
Storage53.5 KB5.35 GNOT deposit
DeployedSep 16, 2026block 77,266

Realm

Pathgno.land/r/gnoswap/position/v1
Accountg1uv30lrgamp…e4ty6e8y
Deployerg1q5tjjv3kks…h8xfsk04
TransactionBFF90BAA75…8D45717E
assert.gno116 lines
1package position
2
3import (
4 "errors"
5 "time"
6
7 u256 "gno.land/p/gnoswap/uint256/v1"
8 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}
FunctionParametersReturnsKind
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)}-
1–1 of 1

N/A

Loading calls…
Calls0from 0 accounts
FunctionCallerStatusBlockAge

None