event_info.gno
1.70 Kb · 48 lines
1package staker
2
3import (
4 i256 "gno.land/p/gnoswap/int256/v1"
5 u256 "gno.land/p/gnoswap/uint256/v1"
6 "gno.land/p/gnoswap/utils/v1"
7)
8
9type tickCrossEventInfo struct {
10 tickID int32
11 stakedLiquidityGross *u256.Uint
12 stakedLiquidityDelta *i256.Int
13 outsideAccumulation *u256.Uint
14}
15
16// ToString serializes tick-cross information as a compact JSON object for event emission.
17// - t: Tick ID
18// - slg: Staked Liquidity Gross
19// - sld: Staked Liquidity Delta
20// - oa: Outside Accumulation
21//
22// Returns:
23// - json: JSON object string containing the tick ID and the three encoded liquidity/accumulation values.
24func (t *tickCrossEventInfo) ToString() string {
25 return "{\"t\":" + utils.FormatInt(t.tickID) +
26 ",\"slg\":\"" + t.stakedLiquidityGross.ToString() + "\"" +
27 ",\"sld\":\"" + t.stakedLiquidityDelta.ToString() + "\"" +
28 ",\"oa\":\"" + t.outsideAccumulation.ToString() + "\"}"
29}
30
31// NewTickCrossEventInfo captures the values emitted when a swap crosses a tick.
32//
33// Parameters:
34// - tickID: Tick index crossed during the swap.
35// - stakedLiquidityGross: Total staked liquidity at the crossed tick.
36// - stakedLiquidityDelta: Net staked liquidity change applied at the crossed tick.
37// - outsideAccumulation: Reward-ratio accumulation outside the crossed tick.
38//
39// Returns:
40// - info: Event payload containing the supplied tick-cross values.
41func NewTickCrossEventInfo(tickID int32, stakedLiquidityGross *u256.Uint, stakedLiquidityDelta *i256.Int, outsideAccumulation *u256.Uint) *tickCrossEventInfo {
42 return &tickCrossEventInfo{
43 tickID: tickID,
44 stakedLiquidityGross: stakedLiquidityGross,
45 stakedLiquidityDelta: stakedLiquidityDelta,
46 outsideAccumulation: outsideAccumulation,
47 }
48}