1use bullet_exchange_interface::schema::{Schema, SchemaFile, trim};
2use bullet_exchange_interface::transaction::Transaction;
3
4fn main() {
5 let filter_variants = |name: &str, variant: &str| match name {
6 "Transaction" => variant == "V0",
7 "RuntimeCall" => matches!(variant, "Exchange" | "Bank"),
8 "CallMessage" => matches!(variant, "Keeper" | "TransferWithMemo"),
9 "KeeperAction" => matches!(
10 variant,
11 "UpdateOraclePrices" | "UpdateMarkPrices" | "UpdateOraclePricesWithPythProofs"
12 ),
13 "UniquenessData" => variant == "Generation",
14 _ => panic!("'{name}::{variant}' is unknown"),
15 };
16
17 let our_schema = Schema::of_single_type::<Transaction>().unwrap();
18 let remote: SchemaFile = serde_json::from_str(include_str!("schema.json")).unwrap();
19
20 let left = trim(&our_schema, &filter_variants);
21 let right = trim(&remote.schema, &filter_variants);
22
23 let left = serde_json::to_string_pretty(&left).unwrap();
24 let right = serde_json::to_string_pretty(&right).unwrap();
25 let mut faults = 0usize;
26 for (l, r) in left.lines().zip(right.lines()) {
27 if l != r {
28 faults = faults.saturating_add(1);
29 println!("< {r}");
30 println!("> {l}");
31 if faults >= 10 {
32 break;
33 }
34 } else {
35 println!(" {l}");
36 }
37 }
38 assert_eq!(left, right);
39}