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 instructions: `AdminPayout`. 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/// Ticket revenue split to team (BPS).
30pub const TICKET_TEAM_BPS: u16 = 500;
31
32/// SPL USDC recipient for team-fee legs.
33pub const FEE_COLLECTOR: Pubkey = pubkey!("FEeB92JDVmVuuoaoTjKyfDPPrLTWPGg2EJTrY3TmTx3T");
34
35/// SPL USDC mint.
36/// Devnet: GAmHPNMcgh9BTpe3DWirqMwvYCeDskE2im6fUhZyukJp (custom devnet USDC)
37/// Mainnet: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (Circle mainnet)
38pub const USDC_MAINNET_MINT: Pubkey = pubkey!("GAmHPNMcgh9BTpe3DWirqMwvYCeDskE2im6fUhZyukJp");
39
40/// Duration of each 5-minute market bucket in seconds.
41/// `open_ts = period * MARKET_BUCKET_SECS`, `close_ts = open_ts + MARKET_BUCKET_SECS`.
42pub const MARKET_BUCKET_SECS: i64 = 300;
43
44/// Fixed cost to place one bet, in µUSDC (6 decimals).
45/// 1 ticket = 1 USDC. `User.balance` must be ≥ this before calling `PlaceBet`.
46pub const TICKET_PRICE_MICROS: u64 = 1_000_000;