eigen_common/
lib.rs

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
53/// Emitted when a new pubkey is registered
54pub 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)";