streak_api/consts.rs
1use solana_program::{pubkey, pubkey::Pubkey};
2
3/// Authority for `Initialize`. Replace with your deploy multisig before mainnet.
4pub const ADMIN_ADDRESS: Pubkey = pubkey!("6asgn8Vq8KKSQx4wm5zVfEfB76wqGVpEpWxajGkbQ8yr");
5
6/// Signs executor-gated admin instructions. Replace before production.
7pub const EXECUTOR_ADDRESS: Pubkey =
8 pubkey!("3B1WXgrV68V6ayymC7C8eVoCMeqeJLR7HWXkxfQxLUeF");
9
10/// Basis points denominator (100%).
11pub const MAX_BPS: u16 = 10_000;
12
13/// PDA seed for the `Treasury` account.
14pub const TREASURY: &[u8] = b"treasury";
15
16/// PDA seed for `UserTicket` accounts.
17/// Full seeds: [USER_TICKET, user_pubkey, series_id_le2, period_le8]
18pub const USER_TICKET: &[u8] = b"ticket";
19
20/// Ticket revenue split to daily pool (BPS).
21pub const TICKET_DAILY_BPS: u16 = 7000;
22
23/// Ticket revenue split to weekly pool (BPS).
24pub const TICKET_WEEKLY_BPS: u16 = 1500;
25
26/// Ticket revenue split to buyback reserve (BPS).
27pub const TICKET_BUYBACK_BPS: u16 = 1000;
28
29/// Share of *trading fee* revenue routed to weekly jackpot accrual (BPS).
30pub const TRADING_FEE_WEEKLY_BPS: u16 = 4000;
31/// Share of *trading fee* revenue routed to stability reserve (BPS).
32pub const TRADING_FEE_STABILITY_BPS: u16 = 6000;
33
34/// Ticket revenue split to team (BPS).
35pub const TICKET_TEAM_BPS: u16 = 500;
36
37/// SPL USDC recipient for team-fee legs.
38pub const FEE_COLLECTOR: Pubkey = pubkey!("FEeB92JDVmVuuoaoTjKyfDPPrLTWPGg2EJTrY3TmTx3T");
39
40/// SPL USDC mint.
41/// Devnet: GAmHPNMcgh9BTpe3DWirqMwvYCeDskE2im6fUhZyukJp (custom devnet USDC)
42/// Mainnet: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (Circle mainnet)
43pub const USDC_MAINNET_MINT: Pubkey = pubkey!("GAmHPNMcgh9BTpe3DWirqMwvYCeDskE2im6fUhZyukJp");
44
45/// Duration of each 5-minute market bucket in seconds.
46/// `open_ts = period * MARKET_BUCKET_SECS`, `close_ts = open_ts + MARKET_BUCKET_SECS`.
47pub const MARKET_BUCKET_SECS: i64 = 300;
48
49/// Fixed cost of one prediction (1 USDC). Server debits `user_balances.tickets` by this amount.
50pub const TICKET_PRICE_MICROS: u64 = 1_000_000;
51
52/// `AdminDisburseFromTreasury.pool` — bet-round winner; treasury counters unchanged.
53pub const DISBURSE_POOL_NONE: u8 = 0;
54/// `AdminDisburseFromTreasury.pool` — debit `Treasury.daily_jackpot`.
55pub const DISBURSE_POOL_DAILY: u8 = 1;
56/// `AdminDisburseFromTreasury.pool` — debit `Treasury.weekly_jackpot`.
57pub const DISBURSE_POOL_WEEKLY: u8 = 2;