1use std::{env, rc::Rc};
2
3use secp256k1::{All, Secp256k1};
4
5use crate::{sender::Sender, Chain, Deployment};
6
7pub fn get_env_vars() -> (String, String, String, bool) {
8 let propose_on_multisig =
9 env::var("PROPOSE_ON_MULTISIG").unwrap_or_else(|_| "false".to_string());
10 let store_path = env::var("STORE").unwrap();
11 let chain = env::var("CHAIN").unwrap();
12 let deployment = env::var("DEPLOYMENT").unwrap();
13
14 (
15 store_path,
16 chain,
17 deployment,
18 propose_on_multisig.parse::<bool>().unwrap(),
19 )
20}
21
22pub async fn get_configuration() -> anyhow::Result<(Deployment, Rc<Sender<All>>)> {
23 let secp = Secp256k1::new();
24 let (store_path, chain_id, deployment_id, propose_on_multisig) = get_env_vars();
25
26 let chain = Chain::new(&chain_id, &store_path).await?;
27 let network = chain.network().await?;
28 let config = Deployment::new(deployment_id, network, propose_on_multisig).await?;
30
31 let sender = Rc::new(Sender::new(config.clone(), secp)?);
32 Ok((config, sender))
33}