getter.gno
4.85 Kb ยท 150 lines
1package position
2
3import (
4 u256 "gno.land/p/gnoswap/uint256"
5 "gno.land/p/nt/ufmt"
6)
7
8// GetPositionCount returns the total number of positions.
9func GetPositionCount() int {
10 return getImplementation().GetPositionCount()
11}
12
13// GetPositionIDs returns a paginated list of position IDs.
14func GetPositionIDs(offset, count int) []uint64 {
15 return getImplementation().GetPositionIDs(offset, count)
16}
17
18// GetPosition returns the position data for a given position ID.
19func GetPosition(positionId uint64) (Position, error) {
20 position, ok := getImplementation().GetPosition(positionId)
21 if !ok {
22 return Position{}, ufmt.Errorf("position %d not found", positionId)
23 }
24
25 return clonePosition(position), nil
26}
27
28// IsBurned returns whether a position has been burned.
29func IsBurned(positionId uint64) bool {
30 return getImplementation().IsBurned(positionId)
31}
32
33// IsInRange returns whether a position's ticks are within the current price range.
34func IsInRange(positionId uint64) bool {
35 return getImplementation().IsInRange(positionId)
36}
37
38// GetPositionTokenBalances returns the token0 balance of a position.
39func GetPositionTokenBalances(positionId uint64) (string, string) {
40 position, err := GetPosition(positionId)
41 if err != nil {
42 return "", ""
43 }
44
45 return position.Token0Balance().ToString(), position.Token1Balance().ToString()
46}
47
48func GetPositionToken0Balance(positionId uint64) *u256.Uint {
49 position, err := GetPosition(positionId)
50 if err != nil {
51 return u256.Zero()
52 }
53
54 return position.Token0Balance().Clone()
55}
56
57func GetPositionToken1Balance(positionId uint64) *u256.Uint {
58 position, err := GetPosition(positionId)
59 if err != nil {
60 return u256.Zero()
61 }
62
63 return position.Token1Balance().Clone()
64}
65
66// GetPositionFeeGrowthInside0LastX128 returns the last recorded fee growth inside for token0.
67func GetPositionFeeGrowthInside0LastX128(positionId uint64) *u256.Uint {
68 return getImplementation().GetPositionFeeGrowthInside0LastX128(positionId).Clone()
69}
70
71// GetPositionFeeGrowthInside1LastX128 returns the last recorded fee growth inside for token1.
72func GetPositionFeeGrowthInside1LastX128(positionId uint64) *u256.Uint {
73 return getImplementation().GetPositionFeeGrowthInside1LastX128(positionId).Clone()
74}
75
76// GetPositionFeeGrowthInsideLastX128 returns the last recorded fee growth inside for both tokens.
77func GetPositionFeeGrowthInsideLastX128(positionId uint64) (*u256.Uint, *u256.Uint) {
78 position, err := GetPosition(positionId)
79 if err != nil {
80 return u256.Zero(), u256.Zero()
81 }
82
83 return position.FeeGrowthInside0LastX128().Clone(), position.FeeGrowthInside1LastX128().Clone()
84}
85
86// GetPositionLiquidity returns the liquidity amount of a position.
87func GetPositionLiquidity(positionId uint64) *u256.Uint {
88 return getImplementation().GetPositionLiquidity(positionId).Clone()
89}
90
91// GetPositionOperator returns the operator address of a position.
92func GetPositionOperator(positionId uint64) address {
93 return getImplementation().GetPositionOperator(positionId)
94}
95
96// GetPositionPoolKey returns the pool key of a position.
97func GetPositionPoolKey(positionId uint64) string {
98 return getImplementation().GetPositionPoolKey(positionId)
99}
100
101// GetPositionTickLower returns the lower tick of a position.
102func GetPositionTickLower(positionId uint64) int32 {
103 return getImplementation().GetPositionTickLower(positionId)
104}
105
106// GetPositionTickUpper returns the upper tick of a position.
107func GetPositionTickUpper(positionId uint64) int32 {
108 return getImplementation().GetPositionTickUpper(positionId)
109}
110
111// GetPositionTicks returns the lower and upper ticks of a position.
112func GetPositionTicks(positionId uint64) (int32, int32) {
113 position, err := GetPosition(positionId)
114 if err != nil {
115 return 0, 0
116 }
117
118 return position.TickLower(), position.TickUpper()
119}
120
121// GetPositionTokensOwed0 returns the amount of token0 owed to a position.
122func GetPositionTokensOwed0(positionId uint64) *u256.Uint {
123 return getImplementation().GetPositionTokensOwed0(positionId).Clone()
124}
125
126// GetPositionTokensOwed1 returns the amount of token1 owed to a position.
127func GetPositionTokensOwed1(positionId uint64) *u256.Uint {
128 return getImplementation().GetPositionTokensOwed1(positionId).Clone()
129}
130
131// GetPositionTokensOwed returns the amount of tokens owed to a position.
132func GetPositionTokensOwed(positionId uint64) (*u256.Uint, *u256.Uint) {
133 position, err := GetPosition(positionId)
134 if err != nil {
135 return u256.Zero(), u256.Zero()
136 }
137
138 return position.TokensOwed0().Clone(), position.TokensOwed1().Clone()
139}
140
141// GetUnclaimedFee returns the unclaimed fees for both tokens of a position.
142func GetUnclaimedFee(positionId uint64) (*u256.Uint, *u256.Uint) {
143 unclaimedFee0, unclaimedFee1 := getImplementation().GetUnclaimedFee(positionId)
144 return unclaimedFee0.Clone(), unclaimedFee1.Clone()
145}
146
147// GetPositionOwner returns the owner address of a position NFT.
148func GetPositionOwner(positionId uint64) address {
149 return getImplementation().GetPositionOwner(positionId)
150}