use world_id_core::requests::{
ProofRequest as CoreProofRequest, ProofResponse as CoreProofResponse,
};
use crate::error::WalletKitError;
#[derive(Debug, Clone, uniffi::Object)]
pub struct ProofRequest(pub(crate) CoreProofRequest);
#[uniffi::export]
impl ProofRequest {
#[uniffi::constructor]
pub fn from_json(json: &str) -> Result<Self, WalletKitError> {
let core_request: CoreProofRequest =
serde_json::from_str(json).map_err(|e| WalletKitError::Generic {
error: format!("invalid proof request json: {e}"),
})?;
Ok(Self(core_request))
}
pub fn to_json(&self) -> Result<String, WalletKitError> {
serde_json::to_string(&self.0).map_err(|e| WalletKitError::Generic {
error: format!("critical unexpected error serializing to json: {e}"),
})
}
#[must_use]
pub fn id(&self) -> String {
self.0.id.clone()
}
#[must_use]
pub const fn version(&self) -> u8 {
self.0.version as u8
}
}
#[derive(Debug, Clone, uniffi::Object)]
pub struct ProofResponse(pub CoreProofResponse);
#[uniffi::export]
impl ProofResponse {
pub fn to_json(&self) -> Result<String, WalletKitError> {
serde_json::to_string(&self.0).map_err(|e| WalletKitError::Generic {
error: format!("critical unexpected error serializing to json: {e}"),
})
}
#[must_use]
pub fn id(&self) -> String {
self.0.id.clone()
}
#[must_use]
pub const fn version(&self) -> u8 {
self.0.version as u8
}
#[must_use]
pub fn error(&self) -> Option<String> {
self.0.error.clone()
}
}
impl ProofResponse {
#[must_use]
pub fn into_inner(self) -> CoreProofResponse {
self.0
}
}
impl From<CoreProofRequest> for ProofRequest {
fn from(core_request: CoreProofRequest) -> Self {
Self(core_request)
}
}
impl From<CoreProofResponse> for ProofResponse {
fn from(core_response: CoreProofResponse) -> Self {
Self(core_response)
}
}