wallet_standard/experimental/
decrypt.rsuse async_trait::async_trait;
use serde::Deserialize;
use serde::Serialize;
use typed_builder::TypedBuilder;
use crate::WalletResult;
pub const EXPERIMENTAL_DECRYPT: &str = "experimental:decrypt";
pub trait ExperimentalDecryptOutput {
fn cleartext(&self) -> Vec<u8>;
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, TypedBuilder)]
#[serde(rename_all = "camelCase")]
pub struct ExperimentalDecryptProps {
#[builder(setter(into))]
cipher: String,
#[builder(setter(into))]
#[serde(with = "serde_bytes")]
public_key: Vec<u8>,
#[builder(setter(into))]
#[serde(with = "serde_bytes")]
pub cipher_text: Vec<u8>,
#[builder(setter(into))]
#[serde(with = "serde_bytes")]
pub nonce: Vec<u8>,
#[builder(default, setter(into, strip_option))]
padding: Option<u8>,
}
#[async_trait(?Send)]
pub trait WalletExperimentalDecrypt {
type Output: ExperimentalDecryptOutput;
async fn decrypt_many(
&self,
props: Vec<ExperimentalDecryptProps>,
) -> WalletResult<Vec<Self::Output>>;
async fn decrypt(&self, props: ExperimentalDecryptProps) -> WalletResult<Self::Output>;
}