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()
37 .wallet(wallet.clone())
38 .connect_http(url)
39}
40
41pub fn get_provider(rpc_url: &str) -> SdkProvider {
42 let url = Url::parse(rpc_url).expect("Wrong rpc url");
43 ProviderBuilder::new().connect_http(url)
44}
45
46#[allow(clippy::type_complexity)]
47pub async fn get_ws_provider(rpc_url: &str) -> Result<RootProvider, RpcError<TransportErrorKind>> {
48 let ws = WsConnect::new(rpc_url);
49 ProviderBuilder::new()
50 .disable_recommended_fillers()
51 .connect_ws(ws)
52 .await
53}
54
55pub const NEW_PUBKEY_REGISTRATION_EVENT: &str =
57 "NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))";
58
59pub const OPERATOR_SOCKET_UPDATE: &str = "OperatorSocketUpdate(bytes32,string)";