Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}