Skip to main content

strike_sdk/
config.rs

1//! Chain configuration and contract addresses.
2
3use alloy::primitives::Address;
4
5/// Contract addresses for a Strike deployment.
6#[derive(Debug, Clone)]
7pub struct ContractAddresses {
8    pub usdt: Address,
9    pub fee_model: Address,
10    pub outcome_token: Address,
11    pub vault: Address,
12    pub order_book: Address,
13    pub batch_auction: Address,
14    pub market_factory: Address,
15    pub pyth_resolver: Address,
16    pub redemption: Address,
17}
18
19/// Configuration for connecting to a Strike deployment.
20#[derive(Debug, Clone)]
21pub struct StrikeConfig {
22    /// Contract addresses.
23    pub addresses: ContractAddresses,
24    /// Chain ID.
25    pub chain_id: u64,
26    /// Default HTTP RPC URL.
27    pub rpc_url: String,
28    /// Default WebSocket URL for event subscriptions.
29    pub wss_url: String,
30    /// Indexer base URL.
31    pub indexer_url: String,
32}
33
34impl StrikeConfig {
35    /// BSC Testnet deployment (chain ID 97).
36    pub fn bsc_testnet() -> Self {
37        Self {
38            addresses: ContractAddresses {
39                usdt: "0x6Cec5A83a392B90aeDB6f8f7D8A71e231883cb2f"
40                    .parse()
41                    .unwrap(),
42                fee_model: "0xC89a0BAE5c91428Fde19D07820917feBDCBf1597"
43                    .parse()
44                    .unwrap(),
45                outcome_token: "0x7e3F8454abE51CA4d6AAc932e94DF80425Fd27D0"
46                    .parse()
47                    .unwrap(),
48                vault: "0x4b5DF4104C4a2238ECa1fE8721c725Af80012bb6"
49                    .parse()
50                    .unwrap(),
51                order_book: "0xab1f925c7D97B365FCb4151fCf42d7AC528Cc830"
52                    .parse()
53                    .unwrap(),
54                batch_auction: "0x5b78902D8453821973667a7D1145b5a1208b862c"
55                    .parse()
56                    .unwrap(),
57                market_factory: "0xD1a6C60DF935595eD5BeA7Dc26623f9A5DeB117C"
58                    .parse()
59                    .unwrap(),
60                pyth_resolver: "0x6Ab6901ae588Cf7B0fb59B40c79A0bBfe944D920"
61                    .parse()
62                    .unwrap(),
63                redemption: "0xF70e37E668DDF8D9b93920887392dAfDC900e9D3"
64                    .parse()
65                    .unwrap(),
66            },
67            chain_id: 97,
68            rpc_url: "https://data-seed-prebsc-1-s1.binance.org:8545".to_string(),
69            wss_url: "wss://bsc-testnet.core.chainstack.com/e602061228197d446d43e62320004d74"
70                .to_string(),
71            indexer_url: "https://strike-indexer.fly.dev".to_string(),
72        }
73    }
74
75    /// BSC Mainnet deployment (chain ID 56).
76    ///
77    /// Note: Mainnet contracts are not yet deployed. Update addresses when available.
78    pub fn bsc_mainnet() -> Self {
79        Self {
80            addresses: ContractAddresses {
81                usdt: "0x55d398326f99059fF775485246999027B3197955"
82                    .parse()
83                    .unwrap(),
84                // Placeholder addresses — update when mainnet contracts are deployed
85                fee_model: Address::ZERO,
86                outcome_token: Address::ZERO,
87                vault: Address::ZERO,
88                order_book: Address::ZERO,
89                batch_auction: Address::ZERO,
90                market_factory: Address::ZERO,
91                pyth_resolver: Address::ZERO,
92                redemption: Address::ZERO,
93            },
94            chain_id: 56,
95            rpc_url: "https://bsc-dataseed1.binance.org".to_string(),
96            wss_url: "wss://bsc-ws-node.nariox.org:443".to_string(),
97            indexer_url: String::new(),
98        }
99    }
100
101    /// Custom deployment with user-provided addresses and chain ID.
102    pub fn custom(addresses: ContractAddresses, chain_id: u64) -> Self {
103        Self {
104            addresses,
105            chain_id,
106            rpc_url: String::new(),
107            wss_url: String::new(),
108            indexer_url: String::new(),
109        }
110    }
111}