use std::str::FromStr;
use alloy::signers::{
Signer as _,
local::{LocalSignerError, PrivateKeySigner},
};
use secrecy::{ExposeSecret as _, SecretString};
use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
#[non_exhaustive]
pub struct PrivateKeySignerConfig {
pub private_key: SecretString,
pub chain_id: Option<u64>,
}
impl PrivateKeySignerConfig {
pub fn into_signer(self) -> Result<PrivateKeySigner, LocalSignerError> {
PrivateKeySigner::from_str(self.private_key.expose_secret())
.map(|signer| signer.with_chain_id(self.chain_id))
}
}