use std::collections::BTreeMap;

use crate::cicp::Cicp;

pub trait ImageFormat {
    /// Usually checks if data start with correct magic bytes
    fn is_filetype(data: &[u8]) -> bool;
}

pub trait ImageMetadata {
    fn cicp(&self) -> Option<Cicp> {
        None
    }

    fn exif(&self) -> Vec<Vec<u8>> {
        Vec::new()
    }

    fn xmp(&self) -> Vec<Vec<u8>> {
        Vec::new()
    }

    fn key_value(&self) -> BTreeMap<String, String> {
        BTreeMap::new()
    }
}

pub trait ImageComplete: ImageMetadata + ImageFormat {}
