// @generated by tools/generate_api_shims.py; do not edit by hand.
#![allow(clippy::missing_errors_doc)]
#![allow(clippy::must_use_candidate)]
#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]

/// C# type: `T:LibreMetaverse.Imaging.ITextureCodec`.
pub trait ITextureCodec {
    /// C# member: `M:LibreMetaverse.Imaging.ITextureCodec.Decode(System.IO.Stream)`.
    fn decode(
        &self,
        stream: Box<dyn libremetaverse_types::compat::ReadWrite + Send>,
    ) -> Result<libremetaverse_imaging::ManagedImage, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Imaging.ITextureCodec.Decode(System.IO.Stream)",
        )
    }
}

/// C# type: `T:LibreMetaverse.Imaging.ManagedImage`.
pub struct ManagedImage {
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Alpha`.
    pub alpha: Vec<u8>,
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Blue`.
    pub blue: Vec<u8>,
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Bump`.
    pub bump: Vec<u8>,
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Channels`.
    pub channels: libremetaverse_imaging::ManagedImageImageChannels,
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Green`.
    pub green: Vec<u8>,
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Height`.
    pub height: i32,
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Red`.
    pub red: Vec<u8>,
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Width`.
    pub width: i32,
    data: Vec<u8>,
}
impl ManagedImage {
    /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.#ctor(System.Int32,System.Int32,LibreMetaverse.Imaging.ManagedImage.ImageChannels)`.
    pub fn new(
        width: i32,
        height: i32,
        channels: libremetaverse_imaging::ManagedImageImageChannels,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Imaging.ManagedImage.#ctor(System.Int32,System.Int32,LibreMetaverse.Imaging.ManagedImage.ImageChannels)",
        )
    }
    /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.Clear`.
    pub fn clear(&mut self) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented("M:LibreMetaverse.Imaging.ManagedImage.Clear")
    }
    /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.Clone`.
    pub fn clone(&self) -> Result<libremetaverse_imaging::ManagedImage, crate::Error> {
        libremetaverse_types::not_implemented("M:LibreMetaverse.Imaging.ManagedImage.Clone")
    }
    /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ConvertChannels(LibreMetaverse.Imaging.ManagedImage.ImageChannels)`.
    pub fn convert_channels(
        &mut self,
        channels: libremetaverse_imaging::ManagedImageImageChannels,
    ) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Imaging.ManagedImage.ConvertChannels(LibreMetaverse.Imaging.ManagedImage.ImageChannels)",
        )
    }
    /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ExportRaw`.
    pub fn export_raw(&self) -> Result<Vec<u8>, crate::Error> {
        libremetaverse_types::not_implemented("M:LibreMetaverse.Imaging.ManagedImage.ExportRaw")
    }
    /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ResizeBilinear(System.Int32,System.Int32)`.
    pub fn resize_bilinear(&mut self, width: i32, height: i32) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Imaging.ManagedImage.ResizeBilinear(System.Int32,System.Int32)",
        )
    }
    /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ResizeNearestNeighbor(System.Int32,System.Int32)`.
    pub fn resize_nearest_neighbor(&mut self, width: i32, height: i32) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.Imaging.ManagedImage.ResizeNearestNeighbor(System.Int32,System.Int32)",
        )
    }
}

/// C# type: `T:LibreMetaverse.Imaging.ManagedImage.ImageChannels`.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[repr(transparent)]
pub struct ManagedImageImageChannels(pub i32);
impl ManagedImageImageChannels {
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Alpha`.
    pub const ALPHA: Self = Self(4);
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Bump`.
    pub const BUMP: Self = Self(8);
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Color`.
    pub const COLOR: Self = Self(2);
    /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Gray`.
    pub const GRAY: Self = Self(1);
}
