1use alloy::providers::{
2 fillers::{
3 BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller,
4 },
5 network::EthereumWallet,
6 Identity, ProviderBuilder, RootProvider, WsConnect,
7};
8use alloy::signers::local::PrivateKeySigner;
9use alloy::transports::{RpcError, TransportErrorKind};
10use std::str::FromStr;
11use url::Url;
12
13pub type SdkProvider = FillProvider<
14 JoinFill<
15 Identity,
16 JoinFill<GasFiller, JoinFill<BlobGasFiller, JoinFill<NonceFiller, ChainIdFiller>>>,
17 >,
18 RootProvider,
19>;
20
21pub type SdkSigner = FillProvider<
22 JoinFill<
23 JoinFill<
24 Identity,
25 JoinFill<GasFiller, JoinFill<BlobGasFiller, JoinFill<NonceFiller, ChainIdFiller>>>,
26 >,
27 WalletFiller<EthereumWallet>,
28 >,
29 RootProvider,
30>;
31
32pub fn get_signer(key: &str, rpc_url: &str) -> SdkSigner {
33 let signer = PrivateKeySigner::from_str(key).expect("wrong key ");
34 let wallet = EthereumWallet::from(signer);
35 let url = Url::parse(rpc_url).expect("Wrong rpc url");
36 ProviderBuilder::new().wallet(wallet.clone()).on_http(url)
37}
38
39pub fn get_provider(rpc_url: &str) -> SdkProvider {
40 let url = Url::parse(rpc_url).expect("Wrong rpc url");
41 ProviderBuilder::new().on_http(url)
42}
43
44#[allow(clippy::type_complexity)]
45pub async fn get_ws_provider(rpc_url: &str) -> Result<RootProvider, RpcError<TransportErrorKind>> {
46 let ws = WsConnect::new(rpc_url);
47 ProviderBuilder::new()
48 .disable_recommended_fillers()
49 .on_ws(ws)
50 .await
51}
52
53pub const NEW_PUBKEY_REGISTRATION_EVENT: &str =
55 "NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))";
56
57pub const OPERATOR_SOCKET_UPDATE: &str = "OperatorSocketUpdate(bytes32,string)";