pub trait CredentialProtocol {
fn create_credential_issuance_listener(
&mut self,
address: impl Into<Address> + Send,
schema: CredentialSchema,
trust_policy: impl TrustPolicy
) -> Result<()>;
fn acquire_credential(
&mut self,
issuer_route: Route,
issuer_id: &ProfileIdentifier,
schema: CredentialSchema,
values: Vec<CredentialAttribute>
) -> Result<Credential>;
fn present_credential(
&mut self,
worker_route: Route,
credential: Credential,
reveal_attributes: Vec<String>
) -> Result<()>;
fn verify_credential(
&mut self,
address: impl Into<Address> + Send,
issuer_id: &ProfileIdentifier,
schema: CredentialSchema,
attributes_values: Vec<CredentialAttribute>
) -> Result<bool>;
}