#![allow(non_snake_case, non_camel_case_types, non_upper_case_globals, clashing_extern_declarations, clippy::all)]
#[link(name = "windows")]
extern "system" {}
pub type INDClosedCaptionDataReceivedEventArgs = *mut ::core::ffi::c_void;
pub type INDCustomData = *mut ::core::ffi::c_void;
pub type INDDownloadEngine = *mut ::core::ffi::c_void;
pub type INDDownloadEngineNotifier = *mut ::core::ffi::c_void;
pub type INDLicenseFetchCompletedEventArgs = *mut ::core::ffi::c_void;
pub type INDLicenseFetchDescriptor = *mut ::core::ffi::c_void;
pub type INDLicenseFetchResult = *mut ::core::ffi::c_void;
pub type INDMessenger = *mut ::core::ffi::c_void;
pub type INDProximityDetectionCompletedEventArgs = *mut ::core::ffi::c_void;
pub type INDRegistrationCompletedEventArgs = *mut ::core::ffi::c_void;
pub type INDSendResult = *mut ::core::ffi::c_void;
pub type INDStartResult = *mut ::core::ffi::c_void;
pub type INDStorageFileHelper = *mut ::core::ffi::c_void;
pub type INDStreamParser = *mut ::core::ffi::c_void;
pub type INDStreamParserNotifier = *mut ::core::ffi::c_void;
pub type INDTransmitterProperties = *mut ::core::ffi::c_void;
pub type IPlayReadyDomain = *mut ::core::ffi::c_void;
pub type IPlayReadyLicense = *mut ::core::ffi::c_void;
pub type IPlayReadyLicenseAcquisitionServiceRequest = *mut ::core::ffi::c_void;
pub type IPlayReadyLicenseSession = *mut ::core::ffi::c_void;
pub type IPlayReadyLicenseSession2 = *mut ::core::ffi::c_void;
pub type IPlayReadySecureStopServiceRequest = *mut ::core::ffi::c_void;
pub type IPlayReadyServiceRequest = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct NDCertificateFeature(pub i32);
impl NDCertificateFeature {
    pub const Transmitter: Self = Self(1i32);
    pub const Receiver: Self = Self(2i32);
    pub const SharedCertificate: Self = Self(3i32);
    pub const SecureClock: Self = Self(4i32);
    pub const AntiRollBackClock: Self = Self(5i32);
    pub const CRLS: Self = Self(9i32);
    pub const PlayReady3Features: Self = Self(13i32);
}
impl ::core::marker::Copy for NDCertificateFeature {}
impl ::core::clone::Clone for NDCertificateFeature {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct NDCertificatePlatformID(pub i32);
impl NDCertificatePlatformID {
    pub const Windows: Self = Self(0i32);
    pub const OSX: Self = Self(1i32);
    pub const WindowsOnARM: Self = Self(2i32);
    pub const WindowsMobile7: Self = Self(5i32);
    pub const iOSOnARM: Self = Self(6i32);
    pub const XBoxOnPPC: Self = Self(7i32);
    pub const WindowsPhone8OnARM: Self = Self(8i32);
    pub const WindowsPhone8OnX86: Self = Self(9i32);
    pub const XboxOne: Self = Self(10i32);
    pub const AndroidOnARM: Self = Self(11i32);
    pub const WindowsPhone81OnARM: Self = Self(12i32);
    pub const WindowsPhone81OnX86: Self = Self(13i32);
}
impl ::core::marker::Copy for NDCertificatePlatformID {}
impl ::core::clone::Clone for NDCertificatePlatformID {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct NDCertificateType(pub i32);
impl NDCertificateType {
    pub const Unknown: Self = Self(0i32);
    pub const PC: Self = Self(1i32);
    pub const Device: Self = Self(2i32);
    pub const Domain: Self = Self(3i32);
    pub const Issuer: Self = Self(4i32);
    pub const CrlSigner: Self = Self(5i32);
    pub const Service: Self = Self(6i32);
    pub const Silverlight: Self = Self(7i32);
    pub const Application: Self = Self(8i32);
    pub const Metering: Self = Self(9i32);
    pub const KeyFileSigner: Self = Self(10i32);
    pub const Server: Self = Self(11i32);
    pub const LicenseSigner: Self = Self(12i32);
}
impl ::core::marker::Copy for NDCertificateType {}
impl ::core::clone::Clone for NDCertificateType {
    fn clone(&self) -> Self {
        *self
    }
}
pub type NDClient = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct NDClosedCaptionFormat(pub i32);
impl NDClosedCaptionFormat {
    pub const ATSC: Self = Self(0i32);
    pub const SCTE20: Self = Self(1i32);
    pub const Unknown: Self = Self(2i32);
}
impl ::core::marker::Copy for NDClosedCaptionFormat {}
impl ::core::clone::Clone for NDClosedCaptionFormat {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct NDContentIDType(pub i32);
impl NDContentIDType {
    pub const KeyID: Self = Self(1i32);
    pub const PlayReadyObject: Self = Self(2i32);
    pub const Custom: Self = Self(3i32);
}
impl ::core::marker::Copy for NDContentIDType {}
impl ::core::clone::Clone for NDContentIDType {
    fn clone(&self) -> Self {
        *self
    }
}
pub type NDCustomData = *mut ::core::ffi::c_void;
pub type NDDownloadEngineNotifier = *mut ::core::ffi::c_void;
pub type NDLicenseFetchDescriptor = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct NDMediaStreamType(pub i32);
impl NDMediaStreamType {
    pub const Audio: Self = Self(1i32);
    pub const Video: Self = Self(2i32);
}
impl ::core::marker::Copy for NDMediaStreamType {}
impl ::core::clone::Clone for NDMediaStreamType {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct NDProximityDetectionType(pub i32);
impl NDProximityDetectionType {
    pub const UDP: Self = Self(1i32);
    pub const TCP: Self = Self(2i32);
    pub const TransportAgnostic: Self = Self(4i32);
}
impl ::core::marker::Copy for NDProximityDetectionType {}
impl ::core::clone::Clone for NDProximityDetectionType {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct NDStartAsyncOptions(pub i32);
impl NDStartAsyncOptions {
    pub const MutualAuthentication: Self = Self(1i32);
    pub const WaitForLicenseDescriptor: Self = Self(2i32);
}
impl ::core::marker::Copy for NDStartAsyncOptions {}
impl ::core::clone::Clone for NDStartAsyncOptions {
    fn clone(&self) -> Self {
        *self
    }
}
pub type NDStorageFileHelper = *mut ::core::ffi::c_void;
pub type NDStreamParserNotifier = *mut ::core::ffi::c_void;
pub type NDTCPMessenger = *mut ::core::ffi::c_void;
pub type PlayReadyContentHeader = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct PlayReadyDecryptorSetup(pub i32);
impl PlayReadyDecryptorSetup {
    pub const Uninitialized: Self = Self(0i32);
    pub const OnDemand: Self = Self(1i32);
}
impl ::core::marker::Copy for PlayReadyDecryptorSetup {}
impl ::core::clone::Clone for PlayReadyDecryptorSetup {
    fn clone(&self) -> Self {
        *self
    }
}
pub type PlayReadyDomain = *mut ::core::ffi::c_void;
pub type PlayReadyDomainIterable = *mut ::core::ffi::c_void;
pub type PlayReadyDomainIterator = *mut ::core::ffi::c_void;
pub type PlayReadyDomainJoinServiceRequest = *mut ::core::ffi::c_void;
pub type PlayReadyDomainLeaveServiceRequest = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct PlayReadyEncryptionAlgorithm(pub i32);
impl PlayReadyEncryptionAlgorithm {
    pub const Unprotected: Self = Self(0i32);
    pub const Aes128Ctr: Self = Self(1i32);
    pub const Cocktail: Self = Self(4i32);
    pub const Aes128Cbc: Self = Self(5i32);
    pub const Unspecified: Self = Self(65535i32);
    pub const Uninitialized: Self = Self(2147483647i32);
}
impl ::core::marker::Copy for PlayReadyEncryptionAlgorithm {}
impl ::core::clone::Clone for PlayReadyEncryptionAlgorithm {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct PlayReadyHardwareDRMFeatures(pub i32);
impl PlayReadyHardwareDRMFeatures {
    pub const HardwareDRM: Self = Self(1i32);
    pub const HEVC: Self = Self(2i32);
    pub const Aes128Cbc: Self = Self(3i32);
}
impl ::core::marker::Copy for PlayReadyHardwareDRMFeatures {}
impl ::core::clone::Clone for PlayReadyHardwareDRMFeatures {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct PlayReadyITADataFormat(pub i32);
impl PlayReadyITADataFormat {
    pub const SerializedProperties: Self = Self(0i32);
    pub const SerializedProperties_WithContentProtectionWrapper: Self = Self(1i32);
}
impl ::core::marker::Copy for PlayReadyITADataFormat {}
impl ::core::clone::Clone for PlayReadyITADataFormat {
    fn clone(&self) -> Self {
        *self
    }
}
pub type PlayReadyITADataGenerator = *mut ::core::ffi::c_void;
pub type PlayReadyIndividualizationServiceRequest = *mut ::core::ffi::c_void;
pub type PlayReadyLicense = *mut ::core::ffi::c_void;
pub type PlayReadyLicenseAcquisitionServiceRequest = *mut ::core::ffi::c_void;
pub type PlayReadyLicenseIterable = *mut ::core::ffi::c_void;
pub type PlayReadyLicenseIterator = *mut ::core::ffi::c_void;
pub type PlayReadyLicenseSession = *mut ::core::ffi::c_void;
pub type PlayReadyMeteringReportServiceRequest = *mut ::core::ffi::c_void;
pub type PlayReadyRevocationServiceRequest = *mut ::core::ffi::c_void;
pub type PlayReadySecureStopIterable = *mut ::core::ffi::c_void;
pub type PlayReadySecureStopIterator = *mut ::core::ffi::c_void;
pub type PlayReadySecureStopServiceRequest = *mut ::core::ffi::c_void;
pub type PlayReadySoapMessage = *mut ::core::ffi::c_void;
