use rgb::ContractId;
use crate::contract::{IssuerWrapper, SchemaWrapper};
use crate::persistence::ContractStateRead;
#[derive(Clone, PartialEq, Eq, Debug, Display, Error, From)]
#[display(inner)]
pub enum LinkError {
MultipleValues,
NoValue,
ValueMismatch,
Invalid,
}
pub trait LinkableSchemaWrapper<S: ContractStateRead>: SchemaWrapper<S> {
fn link_to(&self) -> Result<Option<ContractId>, LinkError>;
fn link_from(&self) -> Result<Option<ContractId>, LinkError>;
}
pub trait LinkableIssuerWrapper: IssuerWrapper {
type Wrapper<S: ContractStateRead>: LinkableSchemaWrapper<S>;
}