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
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 // With VU0=30e6, VT0=1.073e9 → R≈87.9e6 (< 100 GNOT) — DO NOT set
13 // GraduationThreshold above that or markets stick when RealSold hits CurveSupply.
14 // Source default (50 GNOT) is safely under max raise. Sapphire prepare-v11
15 // retunes VirtualToken0 so threshold 100 GNOT is hit before sold-out.
16 VirtualUgnot0 int64 = 30_000_000 // 30 GNOT virtual
17 VirtualToken0 int64 = 1_020_000_000 // virtual token side
18
19 // Graduation when net ugnot raised into the curve reaches this.
20 // Must stay BELOW max raise from exhausting CurveSupply (see Virtual*).
21 // Sapphire deploy patches to 100 GNOT and retunes VirtualToken0 accordingly.
22 GraduationThreshold int64 = 100_000_000
23
24 // Fees: 1.20% total. Of the fee: 40% creator, 40% protocol, 20% LP/k remainder.
25 FeeBPS int64 = 120
26 CreatorFeeShareBPS int64 = 4000
27 ProtocolFeeShareBPS int64 = 4000
28
29 // Fallback create bond for unit tests / if bond realm unavailable.
30 // Production pad uses createbond.CurrentBondUgnot() (see bond package).
31 // Sapphire normal bond = 2 GNOT; promo ≈ $20 in ugnot set on bond.StartPromo.
32 CreateBondUgnot int64 = 2_000_000
33 BondRefundBuyers int = 5
34 BondRefundMinRaised int64 = 10_000_000 // ≥5 GNOT raised
35 BondRefundMaxHeights int64 = 100_000
36
37 // Anti-snipe: first N heights, max cumulative tokens per address (BPS of TotalSupply).
38 AntiSnipeHeights int64 = 30
39 AntiSnipeMaxBuyBPS int64 = 300 // 5% per address in window
40
41 // Status
42 StatusCurve = 0
43 StatusGraduated = 1
44
45 // Trade history ring buffer.
46 MaxTradeHistory = 256
47 // Trade sides stored in history
48 TradeSideBuy = 0
49 TradeSideSell = 1
50 TradeSideOpen = 2 // initial listing mark
51
52 DenomUgnot = "ugnot"
53
54 // --- Gnoswap auto-list (Sapphire) ---
55 // CreatePool fee is fixed in GNS (pool.GetPoolCreationFee, typically 100e6 = 100 GNS).
56 // GNOT cost of that fee MOVES with market (~10 GNOT/GNS on Sapphire probe → ~1000 GNOT/listing).
57 //
58 // Funding model (price-safe):
59 // LP = raised-sized WUGNOT (protected — never sold for fee)
60 // Fee = pre-funded GNS on pad OR surplus WUGNOT above raised (ExactOut → GNS)
61 // wugnot.Deposit is EOA-only — protocol wraps off-pad and transfers inventory in.
62 GnoswapFeeTier uint32 = 3000 // 0.3% meme tier
63 GnoswapTickSpacing int32 = 60
64 GnoswapMinTick int32 = -887272
65 GnoswapMaxTick int32 = 887272
66 // Max WUGNOT (ugnot units) allowed for ExactOut fee buy — price ceiling / slippage cap.
67 // Not tied to raised/2. At ~10 GNOT/GNS, 100 GNS needs ~1006 GNOT; 5000 leaves headroom
68 // if GNS becomes ~5× more expensive vs GNOT. Prefer pre-funding GNS to skip this path.
69 GnoswapMaxFeeWugnot int64 = 5_000_000_000 // 5000 GNOT
70)