eigen_common/
lib.rs

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