use crate::{CompressedDataEventStream, Schema, SchemaValue};
use anchor_lang::prelude::AnchorSerialize;
use spl_account_compression::Node;
pub trait ToNode {
fn to_node(&self) -> Node;
}
pub trait CompressedSchema {
fn schema() -> Schema;
fn schema_value(&self) -> SchemaValue;
}
pub trait CompressedData {
fn event_stream(&self) -> CompressedDataEventStream
where
Self: AnchorSerialize + CompressedSchema,
{
CompressedDataEventStream::Full {
data: self.schema_value(),
}
}
}
pub trait CompressedDataChunk {
const KEY: &'static str;
fn event_stream(&self) -> CompressedDataEventStream
where
Self: AnchorSerialize + CompressedSchema,
{
CompressedDataEventStream::PatchChunk {
key: Self::KEY.to_string(),
data: self.schema_value(),
}
}
}