use crate::{Object,SessionItem,SiLink,SiLinkable};
use glib::{prelude::*,translate::*};
glib::wrapper! {
    #[doc(alias = "WpSiAcquisition")]
    pub struct SiAcquisition(Interface<ffi::WpSiAcquisition, ffi::WpSiAcquisitionInterface>) @requires SessionItem, Object;
    match fn {
        type_ => || ffi::wp_si_acquisition_get_type(),
    }
}
impl SiAcquisition {
        pub const NONE: Option<&'static SiAcquisition> = None;
    
}
mod sealed {
    pub trait Sealed {}
    impl<T: super::IsA<super::SiAcquisition>> Sealed for T {}
}
pub trait SiAcquisitionExt: IsA<SiAcquisition> + sealed::Sealed + 'static {
    #[doc(alias = "wp_si_acquisition_release")]
    fn release(&self, acquisitor: &impl IsA<SiLink>, item: &impl IsA<SiLinkable>) {
        unsafe {
            ffi::wp_si_acquisition_release(self.as_ref().to_glib_none().0, acquisitor.as_ref().to_glib_none().0, item.as_ref().to_glib_none().0);
        }
    }
}
impl<O: IsA<SiAcquisition>> SiAcquisitionExt for O {}