starknet_rust_providers/sequencer/models/
contract_addresses.rs

1use serde::Deserialize;
2
3use super::L1Address;
4
5#[derive(Debug, Deserialize)]
6#[serde(rename_all = "PascalCase")]
7#[cfg_attr(feature = "no_unknown_fields", serde(deny_unknown_fields))]
8pub struct ContractAddresses {
9    pub starknet: L1Address,
10    pub gps_statement_verifier: L1Address,
11}
12
13#[cfg(test)]
14mod tests {
15    use super::*;
16    use core::str::FromStr;
17
18    #[test]
19    #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
20    fn test_contract_addresses_deser() {
21        // curl -X GET https://alpha4.starknet.io/feeder_gateway/get_contract_addresses
22        let raw = r#"{"Starknet": "0xde29d060D45901Fb19ED6C6e959EB22d8626708e", "GpsStatementVerifier": "0xAB43bA48c9edF4C2C4bB01237348D1D7B28ef168"}"#;
23        let ca: ContractAddresses = serde_json::from_str(raw).unwrap();
24        assert_eq!(
25            ca.starknet,
26            L1Address::from_str("0xde29d060D45901Fb19ED6C6e959EB22d8626708e").unwrap()
27        );
28        assert_eq!(
29            ca.gps_statement_verifier,
30            L1Address::from_str("0xAB43bA48c9edF4C2C4bB01237348D1D7B28ef168").unwrap()
31        );
32    }
33}