use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::error::Result;
#[derive(Debug, Serialize, Deserialize)]
pub struct CredentialOfferResponse {
pub auto_issue: bool,
pub auto_offer: bool,
pub connection_id: String,
pub created_at: String,
pub credential_definition_id: String,
pub credential_exchange_id: String,
pub credential_offer: Value,
pub credential_offer_dict: Value,
pub credential_proposal_dict: Value,
pub initiator: String,
pub role: String,
pub schema_id: String,
pub state: String,
pub thread_id: String,
pub updated_at: String,
}
pub struct CredentialOfferOptions {
pub connection_id: String,
pub cred_def_id: String,
pub keys: Vec<String>,
pub values: Vec<String>,
}
#[async_trait]
pub trait CredentialModule {
async fn send_offer(&self, options: CredentialOfferOptions) -> Result<CredentialOfferResponse>;
}