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: "0xb242dc031998b06772C63596Bfce091c80D4c3fA"
40                    .parse()
41                    .unwrap(),
42                fee_model: "0x46C198Fa5e0E1CCEc3652bAB9A975B9F68B7F39E"
43                    .parse()
44                    .unwrap(),
45                outcome_token: "0x1c6622bE0D8cefD48009A337CD393cAe4530fc9a"
46                    .parse()
47                    .unwrap(),
48                vault: "0x10909d11446e48551DA0366f59b9Ac9Cb9079314"
49                    .parse()
50                    .unwrap(),
51                order_book: "0x343d3f42562A8E5C794DFf8637664D2d03246FB9"
52                    .parse()
53                    .unwrap(),
54                batch_auction: "0xF6233287fb878706B191b868a5e38E1DfdfAdDf7"
55                    .parse()
56                    .unwrap(),
57                market_factory: "0xd2783195A8d4Ee2f99616c3b9048B43187951E67"
58                    .parse()
59                    .unwrap(),
60                pyth_resolver: "0xF83aE0cfd2D1546Bb4b15ecEB010C1B045d7Ddc9"
61                    .parse()
62                    .unwrap(),
63                redemption: "0x03961AcDb718D84079De1B0236a77A7a1A3df177"
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://testnet.strike.pm/api".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                fee_model: "0xBB628007734963352b1cF9094847B902b0fca9aB"
85                    .parse()
86                    .unwrap(),
87                outcome_token: "0xBd65B054a08fe0e8d26325e69B6EB6aD6dfF1516"
88                    .parse()
89                    .unwrap(),
90                vault: "0x2556E5DE92281EdA3300F044dfB9158416407eed"
91                    .parse()
92                    .unwrap(),
93                order_book: "0x074Ca415B501Bcca0020e9c312cf1F80796Ae3b1"
94                    .parse()
95                    .unwrap(),
96                batch_auction: "0xa8e9a6B62B93A4360969972Dc7300C6Be7B5f9D8"
97                    .parse()
98                    .unwrap(),
99                market_factory: "0x9c045dc57c1132e5D13b234F8e166cAaD8CE2c3D"
100                    .parse()
101                    .unwrap(),
102                pyth_resolver: "0x1B3335A22D410713A4Cd32eF8ffBEe672aD4e65d"
103                    .parse()
104                    .unwrap(),
105                redemption: "0x03961AcDb718D84079De1B0236a77A7a1A3df177"
106                    .parse()
107                    .unwrap(),
108            },
109            chain_id: 56,
110            rpc_url: "https://bsc-dataseed1.binance.org".to_string(),
111            wss_url: "wss://bsc-ws-node.nariox.org:443".to_string(),
112            indexer_url: "https://app.strike.pm/api".to_string(),
113        }
114    }
115
116    /// Custom deployment with user-provided addresses and chain ID.
117    pub fn custom(addresses: ContractAddresses, chain_id: u64) -> Self {
118        Self {
119            addresses,
120            chain_id,
121            rpc_url: String::new(),
122            wss_url: String::new(),
123            indexer_url: String::new(),
124        }
125    }
126}