const TotalSupply, CurveSupply, PoolSeed, VirtualUgnot0, VirtualToken0, GraduationThreshold, FeeBPS, CreatorFeeShareBPS, ProtocolFeeShareBPS, CreateBondUgnot, BondRefundBuyers, BondRefundMinRaised, BondRefundMaxHeights, AntiSnipeHeights, AntiSnipeMaxBuyBPS, StatusCurve, StatusGraduated, MaxTradeHistory, TradeSideBuy, TradeSideSell, TradeSideOpen, DenomUgnot, GnoswapFeeTier, GnoswapTickSpacing, GnoswapMinTick, GnoswapMaxTick, GnoswapMaxFeeWugnot, ListFeeGns
1const (
2 // Token economics
3 TotalSupply int64 = 1_000_000_000
4 CurveSupply int64 = 800_000_000 // sold on bonding curve
5 // PoolSeed is legacy: graduation seeds LP with ALL remaining tokens
6 // (TotalSupply - RealSold), not a fixed 200M reserve.
7 PoolSeed int64 = 200_000_000
8
9 // Virtual constant-product seed (Pump-style).
10 // Max net raise when selling full CurveSupply:
11 // R = VirtualUgnot0 * CurveSupply / (VirtualToken0 - CurveSupply)
12 // Source defaults (VU0=30e6, VT0~1.073e9 -> R~87.9e6) suit local tests / 50 GNOT.
13 // Sapphire prepare-v13 scales VU0 + keeps VT0 so threshold 10_000 GNOT is reachable
14 // before sold-out, with ~P_curve ~ P_pool at graduate (~20% tokens -> LP).
15 VirtualUgnot0 int64 = 3_500_000_000 // 30 GNOT virtual (tests)
16 VirtualToken0 int64 = 1_073_000_191 // virtual token side
17
18 // Graduation when net ugnot raised into the curve reaches this.
19 // Must stay BELOW max raise from exhausting CurveSupply (see Virtual*).
20 // Sapphire prepare-v13 patches to 10_000 GNOT and retunes VirtualUgnot0.
21 GraduationThreshold int64 = 10_000_000_000
22
23 // Fees: 1.20% total. Of the fee: 40% creator, 40% protocol, 20% LP/k remainder.
24 FeeBPS int64 = 120
25 CreatorFeeShareBPS int64 = 4000
26 ProtocolFeeShareBPS int64 = 4000
27
28 // Fallback create bond for unit tests / if bond realm unavailable.
29 // Production pad uses createbond.CurrentBondUgnot() (see bond package).
30 // Sapphire normal bond = 2 GNOT; promo ~ $20 in ugnot set on bond.StartPromo.
31 CreateBondUgnot int64 = 2_000_000
32 BondRefundBuyers int = 5
33 BondRefundMinRaised int64 = 100_000_000 // >=5 GNOT raised
34 BondRefundMaxHeights int64 = 100_000
35
36 // Anti-snipe: first N heights, max cumulative tokens per address (BPS of TotalSupply).
37 AntiSnipeHeights int64 = 30
38 AntiSnipeMaxBuyBPS int64 = 300 // 5% per address in window
39
40 // Status
41 StatusCurve = 0
42 StatusGraduated = 1
43
44 // Trade history ring buffer.
45 MaxTradeHistory = 128
46 // Trade sides stored in history
47 TradeSideBuy = 0
48 TradeSideSell = 1
49 TradeSideOpen = 2 // initial listing mark
50
51 DenomUgnot = "ugnot"
52
53 // --- Gnoswap auto-list (Sapphire) ---
54 // Curve collateral is WUGNOT (Buy TransferFrom). At graduate, pad already holds
55 // raised WUGNOT for LP - no realm self-wrap needed.
56 // CreatePool fee is fixed in GNS (typically 100e6 = 100 GNS):
57 // Fee = pre-funded GNS on pad OR surplus WUGNOT (fees retained) ExactOut -> GNS
58 GnoswapFeeTier uint32 = 3000 // 0.3% meme tier
59 GnoswapTickSpacing int32 = 60
60 GnoswapMinTick int32 = -887272
61 GnoswapMaxTick int32 = 887272
62 // Max WUGNOT used as ExactOut maxIn for fee buy (ceiling / slippage).
63 // Prefer pre-funding >=100 GNS on pad so LP depth stays = raised.
64 GnoswapMaxFeeWugnot int64 = 1_500_000_000 // 1500 GNOT
65
66 // Create-time GNS list fee escrow (padv20+).
67 // Creator must Transfer >= ListFeeGns free GNS to pad before Create.
68 // Locked per-launch until Gnoswap list consumes it, or ClaimListFee refunds creator.
69 // Matches typical gnspool.GetPoolCreationFee() (100 GNS, 6 decimals).
70 ListFeeGns int64 = 100_000_000
71)