getter.gno
27.26 Kb · 701 lines
1package pool
2
3import (
4 rotree "gno.land/p/nt/bptree/rotree/v0"
5)
6
7// GetPools returns a read-only view of every pool, keyed by pool path.
8// Reading an entry yields a clone, so the view cannot mutate realm state.
9// Returns:
10// - *rotree.ReadOnlyTree: Read-only tree keyed by canonical pool path; each
11// entry is cloned before it is exposed.
12func GetPools() *rotree.ReadOnlyTree {
13 return getImplementation().GetPools()
14}
15
16// ExistsPoolPath checks if a pool exists at the given path.
17// Parameters:
18// - poolPath: Canonical pool path identifying the pool to check.
19//
20// Returns:
21// - bool: True when a pool is registered at poolPath; false otherwise.
22func ExistsPoolPath(poolPath string) bool {
23 return getImplementation().ExistsPoolPath(poolPath)
24}
25
26// GetBalances returns the balances of the pool.
27// Parameters:
28// - poolPath: Canonical pool path identifying the pool whose balances are read.
29//
30// Returns:
31// - int64: Current token0 balance held by the pool, in token base units.
32// - int64: Current token1 balance held by the pool, in token base units.
33// - error: Non-nil when poolPath does not identify an existing pool.
34func GetBalances(poolPath string) (int64, int64, error) {
35 bal0, err := getImplementation().GetBalanceToken0(poolPath)
36 if err != nil {
37 return 0, 0, err
38 }
39 bal1, err := getImplementation().GetBalanceToken1(poolPath)
40 if err != nil {
41 return 0, 0, err
42 }
43 return bal0, bal1, nil
44}
45
46// GetBalanceToken0 returns the balance of token0 in the pool.
47// Parameters:
48// - poolPath: Canonical pool path identifying the pool to query.
49//
50// Returns:
51// - int64: Current token0 balance held by the pool, in token base units.
52// - error: Non-nil when poolPath does not identify an existing pool.
53func GetBalanceToken0(poolPath string) (int64, error) {
54 return getImplementation().GetBalanceToken0(poolPath)
55}
56
57// GetBalanceToken1 returns the balance of token1 in the pool.
58// Parameters:
59// - poolPath: Canonical pool path identifying the pool to query.
60//
61// Returns:
62// - int64: Current token1 balance held by the pool, in token base units.
63// - error: Non-nil when poolPath does not identify an existing pool.
64func GetBalanceToken1(poolPath string) (int64, error) {
65 return getImplementation().GetBalanceToken1(poolPath)
66}
67
68// GetFee returns the fee tier of the pool.
69// Parameters:
70// - poolPath: Canonical pool path identifying the pool whose fee tier is read.
71//
72// Returns:
73// - uint32: Configured fee tier for the pool.
74// - error: Non-nil when poolPath does not identify an existing pool.
75func GetFee(poolPath string) (uint32, error) {
76 return getImplementation().GetFee(poolPath)
77}
78
79// GetFeeAmountTickSpacings returns all fee tier to tick spacing mappings.
80// Returns:
81// - map[uint32]int32: Copy of the configured fee-tier-to-tick-spacing mapping.
82func GetFeeAmountTickSpacings() map[uint32]int32 {
83 return cloneFeeAmountTickSpacings(getImplementation().GetFeeAmountTickSpacings())
84}
85
86// GetFeeAmountTickSpacing returns the tick spacing for a given fee tier.
87// Parameters:
88// - fee: Fee tier whose supported tick spacing is requested.
89//
90// Returns:
91// - spacing: Tick spacing configured for fee.
92// - err: Non-nil when fee is not one of the supported fee tiers.
93func GetFeeAmountTickSpacing(fee uint32) (spacing int32, err error) {
94 return getImplementation().GetFeeAmountTickSpacing(fee)
95}
96
97// GetFeeGrowthGlobal0X128 returns the global fee growth for token0.
98// Parameters:
99// - poolPath: Canonical pool path identifying the pool to query.
100//
101// Returns:
102// - string: Token0 global fee growth, serialized as a base-10 X128 accumulator.
103// - error: Non-nil when poolPath does not identify an existing pool.
104func GetFeeGrowthGlobal0X128(poolPath string) (string, error) {
105 feeGrowth, err := getImplementation().GetFeeGrowthGlobal0X128(poolPath)
106 if err != nil {
107 return "", err
108 }
109 return feeGrowth.ToString(), nil
110}
111
112// GetFeeGrowthGlobal1X128 returns the global fee growth for token1.
113// Parameters:
114// - poolPath: Canonical pool path identifying the pool to query.
115//
116// Returns:
117// - string: Token1 global fee growth, serialized as a base-10 X128 accumulator.
118// - error: Non-nil when poolPath does not identify an existing pool.
119func GetFeeGrowthGlobal1X128(poolPath string) (string, error) {
120 feeGrowth, err := getImplementation().GetFeeGrowthGlobal1X128(poolPath)
121 if err != nil {
122 return "", err
123 }
124 return feeGrowth.ToString(), nil
125}
126
127// GetFeeGrowthGlobalX128 returns the global fee growth for both tokens.
128// Parameters:
129// - poolPath: Canonical pool path identifying the pool to query.
130//
131// Returns:
132// - string: Token0 global fee growth, serialized as a base-10 X128 accumulator.
133// - string: Token1 global fee growth, serialized as a base-10 X128 accumulator.
134// - error: Non-nil when poolPath does not identify an existing pool.
135func GetFeeGrowthGlobalX128(poolPath string) (string, string, error) {
136 fg0, fg1, err := getImplementation().GetFeeGrowthGlobalX128(poolPath)
137 if err != nil {
138 return "", "", err
139 }
140 return fg0.ToString(), fg1.ToString(), nil
141}
142
143// GetLiquidity returns the current liquidity in the pool.
144// Parameters:
145// - poolPath: Canonical pool path identifying the pool whose liquidity is read.
146//
147// Returns:
148// - string: Current pool liquidity, serialized as a base-10 unsigned integer.
149// - error: Non-nil when poolPath does not identify an existing pool.
150func GetLiquidity(poolPath string) (string, error) {
151 liquidity, err := getImplementation().GetLiquidity(poolPath)
152 if err != nil {
153 return "", err
154 }
155 return liquidity.ToString(), nil
156}
157
158// GetPoolCreationFee returns the current pool creation fee.
159// Returns:
160// - int64: Pool creation fee charged when a new pool is created, in configured
161// native-token base units.
162func GetPoolCreationFee() int64 {
163 return getImplementation().GetPoolCreationFee()
164}
165
166// GetPositionFeeGrowthInside0LastX128 returns the last recorded fee growth inside for token0.
167// Parameters:
168// - poolPath: Canonical pool path identifying the pool containing the position.
169// - key: Position key identifying the position within the pool.
170//
171// Returns:
172// - string: Position's last token0 fee-growth-inside accumulator, serialized
173// as a base-10 X128 value.
174// - error: Non-nil when the pool or position key cannot be found.
175func GetPositionFeeGrowthInside0LastX128(poolPath, key string) (string, error) {
176 return getImplementation().GetPositionFeeGrowthInside0LastX128(poolPath, key)
177}
178
179// GetPositionFeeGrowthInside1LastX128 returns the last recorded fee growth inside for token1.
180// Parameters:
181// - poolPath: Canonical pool path identifying the pool containing the position.
182// - key: Position key identifying the position within the pool.
183//
184// Returns:
185// - string: Position's last token1 fee-growth-inside accumulator, serialized
186// as a base-10 X128 value.
187// - error: Non-nil when the pool or position key cannot be found.
188func GetPositionFeeGrowthInside1LastX128(poolPath, key string) (string, error) {
189 return getImplementation().GetPositionFeeGrowthInside1LastX128(poolPath, key)
190}
191
192// GetPositionFeeGrowthInsideLastX128 returns the last recorded fee growth inside for both tokens.
193// Parameters:
194// - poolPath: Canonical pool path identifying the pool containing the position.
195// - key: Position key identifying the position within the pool.
196//
197// Returns:
198// - string: Position's last token0 fee-growth-inside accumulator, serialized
199// as a base-10 X128 value.
200// - string: Position's last token1 fee-growth-inside accumulator, serialized
201// as a base-10 X128 value.
202// - error: Non-nil when the pool or position key cannot be found.
203func GetPositionFeeGrowthInsideLastX128(poolPath, key string) (string, string, error) {
204 return getImplementation().GetPositionFeeGrowthInsideLastX128(poolPath, key)
205}
206
207// GetPoolPositions returns a read-only view of a pool's positions, keyed by
208// position key. nil is returned when the pool does not exist.
209// Parameters:
210// - poolPath: Canonical pool path identifying the pool whose positions are read.
211//
212// Returns:
213// - *rotree.ReadOnlyTree: Read-only tree keyed by position key; nil when the
214// pool does not exist.
215func GetPoolPositions(poolPath string) *rotree.ReadOnlyTree {
216 return getImplementation().GetPoolPositions(poolPath)
217}
218
219// GetPositionLiquidity returns the liquidity of a position.
220// Parameters:
221// - poolPath: Canonical pool path identifying the pool containing the position.
222// - key: Position key identifying the position within the pool.
223//
224// Returns:
225// - string: Position liquidity, serialized as a base-10 unsigned integer.
226// - error: Non-nil when the pool or position key cannot be found.
227func GetPositionLiquidity(poolPath, key string) (string, error) {
228 return getImplementation().GetPositionLiquidity(poolPath, key)
229}
230
231// GetPositionTokensOwed0 returns the amount of token0 owed to a position.
232// Parameters:
233// - poolPath: Canonical pool path identifying the pool containing the position.
234// - key: Position key identifying the position within the pool.
235//
236// Returns:
237// - int64: Amount of token0 owed to the position, in token base units.
238// - error: Non-nil when the pool or position key cannot be found.
239func GetPositionTokensOwed0(poolPath, key string) (int64, error) {
240 return getImplementation().GetPositionTokensOwed0(poolPath, key)
241}
242
243// GetPositionTokensOwed1 returns the amount of token1 owed to a position.
244// Parameters:
245// - poolPath: Canonical pool path identifying the pool containing the position.
246// - key: Position key identifying the position within the pool.
247//
248// Returns:
249// - int64: Amount of token1 owed to the position, in token base units.
250// - error: Non-nil when the pool or position key cannot be found.
251func GetPositionTokensOwed1(poolPath, key string) (int64, error) {
252 return getImplementation().GetPositionTokensOwed1(poolPath, key)
253}
254
255// GetPositionTokensOwedInfos returns the amount of tokens owed for both tokens.
256// Parameters:
257// - poolPath: Canonical pool path identifying the pool containing the position.
258// - key: Position key identifying the position within the pool.
259//
260// Returns:
261// - int64: Amount of token0 owed to the position, in token base units.
262// - int64: Amount of token1 owed to the position, in token base units.
263// - error: Non-nil when the pool or position key cannot be found.
264func GetPositionTokensOwed(poolPath, key string) (int64, int64, error) {
265 tokensOwed0, err := getImplementation().GetPositionTokensOwed0(poolPath, key)
266 if err != nil {
267 return 0, 0, err
268 }
269 tokensOwed1, err := getImplementation().GetPositionTokensOwed1(poolPath, key)
270 if err != nil {
271 return 0, 0, err
272 }
273 return tokensOwed0, tokensOwed1, nil
274}
275
276// GetProtocolFeesToken0 returns accumulated protocol fees for token0.
277// Parameters:
278// - poolPath: Canonical pool path identifying the pool whose fees are read.
279//
280// Returns:
281// - int64: Accumulated protocol fee for token0, in token base units.
282// - error: Non-nil when poolPath does not identify an existing pool.
283func GetProtocolFeesToken0(poolPath string) (int64, error) {
284 return getImplementation().GetProtocolFeesToken0(poolPath)
285}
286
287// GetProtocolFeesToken1 returns accumulated protocol fees for token1.
288// Parameters:
289// - poolPath: Canonical pool path identifying the pool whose fees are read.
290//
291// Returns:
292// - int64: Accumulated protocol fee for token1, in token base units.
293// - error: Non-nil when poolPath does not identify an existing pool.
294func GetProtocolFeesToken1(poolPath string) (int64, error) {
295 return getImplementation().GetProtocolFeesToken1(poolPath)
296}
297
298// GetProtocolFeesTokens returns the accumulated protocol fees for both tokens.
299// Parameters:
300// - poolPath: Canonical pool path identifying the pool whose fees are read.
301//
302// Returns:
303// - int64: Accumulated protocol fee for token0, in token base units.
304// - int64: Accumulated protocol fee for token1, in token base units.
305// - error: Non-nil when poolPath does not identify an existing pool.
306func GetProtocolFeesTokens(poolPath string) (int64, int64, error) {
307 fees0, err := getImplementation().GetProtocolFeesToken0(poolPath)
308 if err != nil {
309 return 0, 0, err
310 }
311 fees1, err := getImplementation().GetProtocolFeesToken1(poolPath)
312 if err != nil {
313 return 0, 0, err
314 }
315 return fees0, fees1, nil
316}
317
318// GetSlot0FeeProtocol returns the protocol fee rate from slot0.
319// Parameters:
320// - poolPath: Canonical pool path identifying the pool to query.
321//
322// Returns:
323// - uint8: Packed protocol-fee denominator configuration from slot0; token0
324// occupies the low nibble and token1 the high nibble.
325// - error: Non-nil when poolPath does not identify an existing pool.
326func GetSlot0FeeProtocol(poolPath string) (uint8, error) {
327 return getImplementation().GetSlot0FeeProtocol(poolPath)
328}
329
330// GetSlot0SqrtPriceX96 returns the current sqrt price from slot0.
331// Parameters:
332// - poolPath: Canonical pool path identifying the pool to query.
333//
334// Returns:
335// - string: Current square-root price in Q64.96 fixed-point form, serialized
336// as a base-10 unsigned integer.
337// - error: Non-nil when poolPath does not identify an existing pool.
338func GetSlot0SqrtPriceX96(poolPath string) (string, error) {
339 sqrtPriceX96, err := getImplementation().GetSlot0SqrtPriceX96(poolPath)
340 if err != nil {
341 return "", err
342 }
343 return sqrtPriceX96.ToString(), nil
344}
345
346// GetSlot0Tick returns the current tick from slot0.
347// Parameters:
348// - poolPath: Canonical pool path identifying the pool to query.
349//
350// Returns:
351// - int32: Current active tick index stored in slot0.
352// - error: Non-nil when poolPath does not identify an existing pool.
353func GetSlot0Tick(poolPath string) (int32, error) {
354 return getImplementation().GetSlot0Tick(poolPath)
355}
356
357// GetSlot0Unlocked reports whether the pool is currently unlocked.
358// Parameters:
359// - poolPath: Canonical pool path identifying the pool to query.
360//
361// Returns:
362// - bool: True when the pool is not holding its reentrancy lock; false when
363// the pool is currently locked.
364// - error: Non-nil when poolPath does not identify an existing pool.
365func GetSlot0Unlocked(poolPath string) (bool, error) {
366 return getImplementation().GetSlot0Unlocked(poolPath)
367}
368
369// GetSlot0 returns a safe copy of the pool's slot0 (sqrt price, tick,
370// protocol fee, lock state, and oracle cursor/capacity metadata).
371// The clone happens here, at the proxy boundary, so every implementation
372// version can return its internal Slot0 by value without each one having to
373// remember to defend against callers mutating the shared sqrtPriceX96.
374// Parameters:
375// - poolPath: Canonical pool path identifying the pool to query.
376//
377// Returns:
378// - Slot0: Copy of the pool's slot0 state, including price, tick, protocol
379// fee, lock, and observation metadata; panics if the pool is missing.
380func GetSlot0(poolPath string) Slot0 {
381 slot0 := getImplementation().GetSlot0(poolPath)
382 return slot0.Clone()
383}
384
385// GetObservationAt returns a safe copy of the observation stored at index.
386// An in-range but uninitialized slot returns the zero observation, matching
387// Uniswap V3's fixed observation-array getter.
388//
389// ref: uniswap v3 IUniswapV3PoolState.observations(uint256 index)
390// Parameters:
391// - poolPath: Canonical pool path identifying the pool containing the observation.
392// - index: Zero-based observation-array index; values at or above the fixed
393// cardinality bound return an error.
394//
395// Returns:
396// - Observation: Observation at index, or the zero observation when the slot
397// is in range but has never been written.
398// - error: Non-nil when the pool is missing or index is out of range.
399func GetObservationAt(poolPath string, index uint16) (Observation, error) {
400 observation, err := getImplementation().GetObservationAt(poolPath, index)
401 if err != nil {
402 return Observation{}, err
403 }
404
405 return observation, nil
406}
407
408// Observe returns the tick and seconds-per-liquidity cumulatives for each
409// requested lookback, matching Uniswap V3's observe(uint32[] secondsAgos).
410// Parameters:
411// - poolPath: Canonical pool path whose oracle history is queried.
412// - secondsAgos: Lookback intervals in seconds; one cumulative pair is returned
413// for each value, in the same order.
414//
415// Returns:
416// - []int64: Tick cumulative values corresponding to each requested lookback.
417// - []string: Seconds-per-liquidity cumulative X128 values, serialized as
418// base-10 strings, corresponding to each lookback.
419// - error: Non-nil when pool or observation data cannot be read.
420func Observe(poolPath string, secondsAgos []uint32) ([]int64, []string, error) {
421 tickCumulatives, secondsPerLiquidityCumulativeX128s, err := getImplementation().Observe(
422 poolPath,
423 cloneUint32Slice(secondsAgos),
424 )
425 if err != nil {
426 return nil, nil, err
427 }
428
429 return cloneInt64Slice(tickCumulatives), cloneStringSlice(secondsPerLiquidityCumulativeX128s), nil
430}
431
432// SnapshotCumulativesInside returns the tick, seconds-per-liquidity, and
433// seconds cumulatives accrued while the pool price was inside
434// [tickLower, tickUpper). Both boundary ticks must be initialized.
435//
436// Snapshots are only comparable across an interval during which a position in
437// the range existed, matching Uniswap V3's snapshotCumulativesInside.
438// Parameters:
439// - poolPath: Canonical pool path whose oracle snapshot is queried.
440// - tickLower: Lower inclusive tick boundary of the position range.
441// - tickUpper: Upper exclusive tick boundary of the position range; both
442// boundary ticks must be initialized.
443//
444// Returns:
445// - int64: Tick cumulative accrued while the price was inside the range.
446// - string: Seconds-per-liquidity-inside X128 accumulator, serialized as a
447// base-10 string.
448// - uint32: Seconds accrued while the price was inside the range.
449// - error: Non-nil when the pool, observations, or initialized boundaries are
450// unavailable.
451func SnapshotCumulativesInside(
452 poolPath string,
453 tickLower int32,
454 tickUpper int32,
455) (int64, string, uint32, error) {
456 tickCumulativeInside, secondsPerLiquidityInsideX128, secondsInside, err := getImplementation().SnapshotCumulativesInside(
457 poolPath,
458 tickLower,
459 tickUpper,
460 )
461 if err != nil {
462 return 0, "", 0, err
463 }
464
465 return tickCumulativeInside, secondsPerLiquidityInsideX128.ToString(), secondsInside, nil
466}
467
468// GetTickCumulativeOutside returns the tick cumulative value outside a tick.
469// Parameters:
470// - poolPath: Canonical pool path identifying the pool containing the tick.
471// - tick: Tick index whose outside tick cumulative is requested.
472//
473// Returns:
474// - int64: Tick cumulative recorded outside tick.
475// - error: Non-nil when the pool or tick is not found.
476func GetTickCumulativeOutside(poolPath string, tick int32) (int64, error) {
477 return getImplementation().GetTickCumulativeOutside(poolPath, tick)
478}
479
480// GetTickFeeGrowthOutside0X128 returns fee growth outside for token0 at a tick.
481// Parameters:
482// - poolPath: Canonical pool path identifying the pool containing the tick.
483// - tick: Tick index whose outside fee growth is requested.
484//
485// Returns:
486// - string: Token0 fee growth outside tick, serialized as a base-10 X128
487// accumulator.
488// - error: Non-nil when the pool or tick is not found.
489func GetTickFeeGrowthOutside0X128(poolPath string, tick int32) (string, error) {
490 return getImplementation().GetTickFeeGrowthOutside0X128(poolPath, tick)
491}
492
493// GetTickFeeGrowthOutside1X128 returns fee growth outside for token1 at a tick.
494// Parameters:
495// - poolPath: Canonical pool path identifying the pool containing the tick.
496// - tick: Tick index whose outside fee growth is requested.
497//
498// Returns:
499// - string: Token1 fee growth outside tick, serialized as a base-10 X128
500// accumulator.
501// - error: Non-nil when the pool or tick is not found.
502func GetTickFeeGrowthOutside1X128(poolPath string, tick int32) (string, error) {
503 return getImplementation().GetTickFeeGrowthOutside1X128(poolPath, tick)
504}
505
506// GetTickFeeGrowthOutsideX128 returns fee growth outside for both tokens at a tick.
507// Parameters:
508// - poolPath: Canonical pool path identifying the pool containing the tick.
509// - tick: Tick index whose outside fee growth is requested.
510//
511// Returns:
512// - string: Token0 fee growth outside tick, serialized as a base-10 X128
513// accumulator.
514// - string: Token1 fee growth outside tick, serialized as a base-10 X128
515// accumulator.
516// - error: Non-nil when the pool or tick is not found.
517func GetTickFeeGrowthOutsideX128(poolPath string, tick int32) (string, string, error) {
518 return getImplementation().GetTickFeeGrowthOutsideX128(poolPath, tick)
519}
520
521// GetTickInitialized returns whether a tick is initialized.
522// Parameters:
523// - poolPath: Canonical pool path identifying the pool containing the tick.
524// - tick: Tick index whose initialization flag is requested.
525//
526// Returns:
527// - bool: True when the tick has initialized liquidity and outside accumulators.
528// - error: Non-nil when the pool or tick is not found.
529func GetTickInitialized(poolPath string, tick int32) (bool, error) {
530 return getImplementation().GetTickInitialized(poolPath, tick)
531}
532
533// GetInitializedTicksInRange returns initialized ticks within the given range.
534// Parameters:
535// - poolPath: Canonical pool path whose ticks are enumerated.
536// - tickLower: Lower inclusive tick bound for enumeration.
537// - tickUpper: Upper bound for enumeration; ticks are selected through the
538// pool's range iterator.
539//
540// Returns:
541// - []int32: Tick indices that are initialized in the requested range.
542// - error: Non-nil when poolPath does not identify an existing pool.
543func GetInitializedTicksInRange(poolPath string, tickLower, tickUpper int32) ([]int32, error) {
544 ticks, err := getImplementation().GetInitializedTicksInRange(poolPath, tickLower, tickUpper)
545 if err != nil {
546 return nil, err
547 }
548 return cloneInt32Slice(ticks), nil
549}
550
551// GetTickLiquidityGross returns the total liquidity that references a tick.
552// Parameters:
553// - poolPath: Canonical pool path identifying the pool containing the tick.
554// - tick: Tick index whose gross liquidity is requested.
555//
556// Returns:
557// - string: Gross liquidity referencing the tick, serialized as a base-10
558// unsigned integer.
559// - error: Non-nil when the pool or tick is not found.
560func GetTickLiquidityGross(poolPath string, tick int32) (string, error) {
561 return getImplementation().GetTickLiquidityGross(poolPath, tick)
562}
563
564// GetTickLiquidityNet returns the net liquidity change at a tick.
565// Parameters:
566// - poolPath: Canonical pool path identifying the pool containing the tick.
567// - tick: Tick index whose net liquidity change is requested.
568//
569// Returns:
570// - string: Signed net liquidity change at the tick, serialized as a base-10
571// integer.
572// - error: Non-nil when the pool or tick is not found.
573func GetTickLiquidityNet(poolPath string, tick int32) (string, error) {
574 return getImplementation().GetTickLiquidityNet(poolPath, tick)
575}
576
577// GetTickSecondsOutside returns seconds spent outside a tick.
578// Parameters:
579// - poolPath: Canonical pool path identifying the pool containing the tick.
580// - tick: Tick index whose outside time is requested.
581//
582// Returns:
583// - uint32: Seconds accumulated outside the tick.
584// - error: Non-nil when the pool or tick is not found.
585func GetTickSecondsOutside(poolPath string, tick int32) (uint32, error) {
586 return getImplementation().GetTickSecondsOutside(poolPath, tick)
587}
588
589// GetTickSecondsPerLiquidityOutsideX128 returns seconds per liquidity outside a tick.
590// Parameters:
591// - poolPath: Canonical pool path identifying the pool containing the tick.
592// - tick: Tick index whose outside accumulator is requested.
593//
594// Returns:
595// - string: Seconds-per-liquidity outside tick in X128 precision, serialized
596// as a base-10 unsigned integer.
597// - error: Non-nil when the pool or tick is not found.
598func GetTickSecondsPerLiquidityOutsideX128(poolPath string, tick int32) (string, error) {
599 return getImplementation().GetTickSecondsPerLiquidityOutsideX128(poolPath, tick)
600}
601
602// GetTickSpacing returns the tick spacing of the pool.
603// Parameters:
604// - poolPath: Canonical pool path identifying the pool whose spacing is read.
605//
606// Returns:
607// - int32: Tick spacing associated with the pool's fee tier.
608// - error: Non-nil when poolPath does not identify an existing pool.
609func GetTickSpacing(poolPath string) (int32, error) {
610 return getImplementation().GetTickSpacing(poolPath)
611}
612
613// GetToken0Path returns the path of token0 in the pool.
614// Parameters:
615// - poolPath: Canonical pool path identifying the pool to query.
616//
617// Returns:
618// - string: Canonical token0 contract path stored by the pool.
619// - error: Non-nil when poolPath does not identify an existing pool.
620func GetToken0Path(poolPath string) (string, error) {
621 return getImplementation().GetToken0Path(poolPath)
622}
623
624// GetToken1Path returns the path of token1 in the pool.
625// Parameters:
626// - poolPath: Canonical pool path identifying the pool to query.
627//
628// Returns:
629// - string: Canonical token1 contract path stored by the pool.
630// - error: Non-nil when poolPath does not identify an existing pool.
631func GetToken1Path(poolPath string) (string, error) {
632 return getImplementation().GetToken1Path(poolPath)
633}
634
635// GetWithdrawalFee returns the current withdrawal fee rate.
636// Returns:
637// - uint64: Withdrawal fee rate in basis points; zero means no withdrawal
638// fee is charged.
639func GetWithdrawalFee() uint64 {
640 return getImplementation().GetWithdrawalFee()
641}
642
643// OracleConsult returns the arithmetic mean tick and harmonic mean liquidity
644// over a lookback, following Uniswap V3 OracleLibrary's consult convention.
645// Parameters:
646// - poolPath: Canonical pool path whose oracle data is queried.
647// - secondsAgo: Lookback duration in seconds used to compute the time-weighted
648// values.
649//
650// Returns:
651// - int32: Arithmetic mean tick over the requested lookback.
652// - string: Harmonic mean liquidity over the lookback, serialized as a base-10
653// unsigned integer.
654// - error: Non-nil when the pool or required observation history is unavailable.
655func OracleConsult(poolPath string, secondsAgo uint32) (int32, string, error) {
656 tick, liquidity, err := getImplementation().OracleConsult(poolPath, secondsAgo)
657 if err != nil {
658 return 0, "", err
659 }
660 return tick, liquidity.ToString(), nil
661}
662
663// Structure getters
664
665// GetTickInfo returns the tick info for a given tick.
666// Parameters:
667// - poolPath: Canonical pool path identifying the pool containing the tick.
668// - tick: Tick index whose complete state is requested.
669//
670// Returns:
671// - TickInfo: Safe copy of the requested tick's liquidity and oracle/fee
672// accumulator fields.
673// - error: Non-nil when the pool or tick is not found.
674func GetTickInfo(poolPath string, tick int32) (TickInfo, error) {
675 tickInfo, err := getImplementation().GetTickInfo(poolPath, tick)
676 if err != nil {
677 return TickInfo{}, err
678 }
679
680 return tickInfo.Clone(), nil
681}
682
683// GetTickBitmaps returns the tick bitmap for a given word position.
684// Parameters:
685// - poolPath: Canonical pool path identifying the pool containing the bitmap.
686// - wordPos: Signed bitmap word position to read.
687//
688// Returns:
689// - string: Bitmap word serialized as a base-10 unsigned integer.
690// - error: Non-nil when the pool or bitmap word is not found.
691func GetTickBitmaps(poolPath string, wordPos int16) (string, error) {
692 return getImplementation().GetTickBitmaps(poolPath, wordPos)
693}
694
695// GetPendingProtocolFees returns the pending protocol fee amount per token path.
696// Returns:
697// - map[string]int64: Copy of pending protocol fees keyed by token contract path,
698// with amounts in token base units.
699func GetPendingProtocolFees() map[string]int64 {
700 return cloneStringInt64Map(getImplementation().GetPendingProtocolFees())
701}