# Generated by cstruct-stubgen
from typing import BinaryIO, Literal, TypeAlias, overload

import dissect.cstruct as __cs__

class _c_ddf(__cs__.cstruct):
    DDF_HEADER_SIGNATURE: Literal[3725712913] = ...
    DDF_HEADER_CLOSED: Literal[0] = ...
    DDF_HEADER_OPENED_MASK: Literal[15] = ...
    DDF_HEADER_OPEN_ANCHOR: Literal[255] = ...
    DDF_HEADER_ANCHOR: Literal[0] = ...
    DDF_HEADER_PRIMARY: Literal[1] = ...
    DDF_HEADER_SECONDARY: Literal[2] = ...
    DDF_CONTROLLER_DATA_SIGNATURE: Literal[2903576849] = ...
    DDF_PDR_SIGNATURE: Literal[572662306] = ...
    DDF_PDE_GUID_FORCE: Literal[1] = ...
    DDF_PDE_PARTICIPATING: Literal[2] = ...
    DDF_PDE_GLOBAL_SPARE: Literal[4] = ...
    DDF_PDE_CONFIG_SPARE: Literal[8] = ...
    DDF_PDE_FOREIGN: Literal[16] = ...
    DDF_PDE_LEGACY: Literal[32] = ...
    DDF_PDE_TYPE_MASK: Literal[61440] = ...
    DDF_PDE_UNKNOWN: Literal[0] = ...
    DDF_PDE_SCSI: Literal[4096] = ...
    DDF_PDE_SAS: Literal[8192] = ...
    DDF_PDE_SATA: Literal[12288] = ...
    DDF_PDE_FC: Literal[16384] = ...
    DDF_PDE_ONLINE: Literal[1] = ...
    DDF_PDE_FAILED: Literal[2] = ...
    DDF_PDE_REBUILD: Literal[4] = ...
    DDF_PDE_TRANSITION: Literal[8] = ...
    DDF_PDE_PFA: Literal[16] = ...
    DDF_PDE_UNRECOVERED: Literal[32] = ...
    DDF_PDE_MISSING: Literal[64] = ...
    DDF_VD_RECORD_SIGNATURE: Literal[3722304989] = ...
    DDF_VDE_SHARED: Literal[1] = ...
    DDF_VDE_ENFORCE_GROUP: Literal[2] = ...
    DDF_VDE_UNICODE_NAME: Literal[4] = ...
    DDF_VDE_OWNER_ID_VALID: Literal[8] = ...
    DDF_VDE_OPTIMAL: Literal[0] = ...
    DDF_VDE_DEGRADED: Literal[1] = ...
    DDF_VDE_DELETED: Literal[2] = ...
    DDF_VDE_MISSING: Literal[3] = ...
    DDF_VDE_FAILED: Literal[4] = ...
    DDF_VDE_PARTIAL: Literal[5] = ...
    DDF_VDE_OFFLINE: Literal[6] = ...
    DDF_VDE_STATE_MASK: Literal[7] = ...
    DDF_VDE_MORPH: Literal[8] = ...
    DDF_VDE_DIRTY: Literal[16] = ...
    DDF_VDE_UNINTIALIZED: Literal[0] = ...
    DDF_VDE_INIT_QUICK: Literal[1] = ...
    DDF_VDE_INIT_FULL: Literal[2] = ...
    DDF_VDE_INIT_MASK: Literal[3] = ...
    DDF_VDE_UACCESS_RW: Literal[0] = ...
    DDF_VDE_UACCESS_RO: Literal[128] = ...
    DDF_VDE_UACCESS_BLOCKED: Literal[192] = ...
    DDF_VDE_UACCESS_MASK: Literal[192] = ...
    DDF_VDCR_SIGNATURE: Literal[4008636142] = ...
    DDF_VDCR_RAID0: Literal[0] = ...
    DDF_VDCR_RAID1: Literal[1] = ...
    DDF_VDCR_RAID3: Literal[3] = ...
    DDF_VDCR_RAID4: Literal[4] = ...
    DDF_VDCR_RAID5: Literal[5] = ...
    DDF_VDCR_RAID6: Literal[6] = ...
    DDF_VDCR_RAID1E: Literal[17] = ...
    DDF_VDCR_SINGLE: Literal[15] = ...
    DDF_VDCR_CONCAT: Literal[31] = ...
    DDF_VDCR_RAID5E: Literal[21] = ...
    DDF_VDCR_RAID5EE: Literal[37] = ...
    DDF_VDCR_RAID0_SIMPLE: Literal[0] = ...
    DDF_VDCR_RAID1_SIMPLE: Literal[0] = ...
    DDF_VDCR_RAID1_MULTI: Literal[1] = ...
    DDF_VDCR_RAID3_0: Literal[0] = ...
    DDF_VDCR_RAID3_N: Literal[1] = ...
    DDF_VDCR_RAID4_0: Literal[0] = ...
    DDF_VDCR_RAID4_N: Literal[1] = ...
    DDF_VDCR_RAID5_0_RESTART: Literal[0] = ...
    DDF_VDCR_RAID6_0_RESTART: Literal[1] = ...
    DDF_VDCR_RAID5_N_RESTART: Literal[2] = ...
    DDF_VDCR_RAID5_N_CONTINUE: Literal[3] = ...
    DDF_VDCR_RAID1E_ADJACENT: Literal[0] = ...
    DDF_VDCR_RAID1E_OFFSET: Literal[1] = ...
    DDF_VDCR_2STRIPED: Literal[0] = ...
    DDF_VDCR_2MIRRORED: Literal[1] = ...
    DDF_VDCR_2CONCAT: Literal[2] = ...
    DDF_VDCR_2SPANNED: Literal[3] = ...
    DDF_VDCR_CACHE_WB: Literal[1] = ...
    DDF_VDCR_CACHE_WB_ADAPTIVE: Literal[2] = ...
    DDF_VDCR_CACHE_RA: Literal[4] = ...
    DDF_VDCR_CACHE_RA_ADAPTIVE: Literal[8] = ...
    DDF_VDCR_CACHE_WCACHE_NOBATTERY: Literal[16] = ...
    DDF_VDCR_CACHE_WCACHE_ALLOW: Literal[32] = ...
    DDF_VDCR_CACHE_RCACHE_ALLOW: Literal[64] = ...
    DDF_VDCR_CACHE_VENDOR: Literal[128] = ...
    DDF_VUCR_SIGNATURE: Literal[2290649224] = ...
    DDF_SA_SIGNATURE: Literal[1431655765] = ...
    DDF_SAR_TYPE_DEDICATED: Literal[1] = ...
    DDF_SAR_TYPE_REVERTIBLE: Literal[2] = ...
    DDF_SAR_TYPE_ACTIVE: Literal[4] = ...
    DDF_SAR_TYPE_ENCL_AFFINITY: Literal[8] = ...
    DDF_PDD_SIGNATURE: Literal[858993459] = ...
    DDF_PDD_FORCED_REF: Literal[1] = ...
    DDF_PDD_FORCED_GUID: Literal[1] = ...
    DDF_BBML_SIGNATURE: Literal[2880286988] = ...
    DDF_VENDOR_LOG_SIGNATURE: Literal[31190768] = ...
    class DDF_Header(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        DDF_Header_GUID: __cs__.CharArray
        DDF_rev: __cs__.CharArray
        Sequence_Number: _c_ddf.uint32
        TimeStamp: _c_ddf.uint32
        Open_Flag: _c_ddf.uint8
        Foreign_Flag: _c_ddf.uint8
        Disk_Grouping: _c_ddf.uint8
        Reserved1: __cs__.CharArray
        Header_Ext: __cs__.Array[_c_ddf.uint8]
        Primary_Header_LBA: _c_ddf.uint64
        Secondary_Header_LBA: _c_ddf.uint64
        Header_Type: _c_ddf.uint8
        Reserved2: __cs__.CharArray
        Workspace_Length: _c_ddf.uint32
        Workspace_LBA: _c_ddf.uint64
        Max_PD_Entries: _c_ddf.uint16
        Max_VD_Entries: _c_ddf.uint16
        Max_Partitions: _c_ddf.uint16
        Configuration_Record_Length: _c_ddf.uint16
        Max_Primary_Element_Entries: _c_ddf.uint16
        Max_Mapped_Block_Entries: _c_ddf.uint32
        Reserved3: __cs__.CharArray
        Controller_Data_Section: _c_ddf.uint32
        Controller_Data_Section_Length: _c_ddf.uint32
        Physical_Disk_Records_Section: _c_ddf.uint32
        Physical_Disk_Records_Section_Length: _c_ddf.uint32
        Virtual_Disk_Records_Section: _c_ddf.uint32
        Virtual_Disk_Records_Section_Length: _c_ddf.uint32
        Configuration_Records_Section: _c_ddf.uint32
        Configuration_Records_Section_Length: _c_ddf.uint32
        Physical_Disk_Data_Section: _c_ddf.uint32
        Physical_Disk_Data_Section_Length: _c_ddf.uint32
        BBM_Log_Section: _c_ddf.uint32
        BBM_Log_Section_Length: _c_ddf.uint32
        Diagnostic_Space_Section: _c_ddf.uint32
        Diagnostic_Space_Section_Length: _c_ddf.uint32
        Vendor_Specific_Logs_Section: _c_ddf.uint32
        Vendor_Specific_Logs_Section_Length: _c_ddf.uint32
        Reserved4: __cs__.CharArray
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            DDF_Header_GUID: __cs__.CharArray | None = ...,
            DDF_rev: __cs__.CharArray | None = ...,
            Sequence_Number: _c_ddf.uint32 | None = ...,
            TimeStamp: _c_ddf.uint32 | None = ...,
            Open_Flag: _c_ddf.uint8 | None = ...,
            Foreign_Flag: _c_ddf.uint8 | None = ...,
            Disk_Grouping: _c_ddf.uint8 | None = ...,
            Reserved1: __cs__.CharArray | None = ...,
            Header_Ext: __cs__.Array[_c_ddf.uint8] | None = ...,
            Primary_Header_LBA: _c_ddf.uint64 | None = ...,
            Secondary_Header_LBA: _c_ddf.uint64 | None = ...,
            Header_Type: _c_ddf.uint8 | None = ...,
            Reserved2: __cs__.CharArray | None = ...,
            Workspace_Length: _c_ddf.uint32 | None = ...,
            Workspace_LBA: _c_ddf.uint64 | None = ...,
            Max_PD_Entries: _c_ddf.uint16 | None = ...,
            Max_VD_Entries: _c_ddf.uint16 | None = ...,
            Max_Partitions: _c_ddf.uint16 | None = ...,
            Configuration_Record_Length: _c_ddf.uint16 | None = ...,
            Max_Primary_Element_Entries: _c_ddf.uint16 | None = ...,
            Max_Mapped_Block_Entries: _c_ddf.uint32 | None = ...,
            Reserved3: __cs__.CharArray | None = ...,
            Controller_Data_Section: _c_ddf.uint32 | None = ...,
            Controller_Data_Section_Length: _c_ddf.uint32 | None = ...,
            Physical_Disk_Records_Section: _c_ddf.uint32 | None = ...,
            Physical_Disk_Records_Section_Length: _c_ddf.uint32 | None = ...,
            Virtual_Disk_Records_Section: _c_ddf.uint32 | None = ...,
            Virtual_Disk_Records_Section_Length: _c_ddf.uint32 | None = ...,
            Configuration_Records_Section: _c_ddf.uint32 | None = ...,
            Configuration_Records_Section_Length: _c_ddf.uint32 | None = ...,
            Physical_Disk_Data_Section: _c_ddf.uint32 | None = ...,
            Physical_Disk_Data_Section_Length: _c_ddf.uint32 | None = ...,
            BBM_Log_Section: _c_ddf.uint32 | None = ...,
            BBM_Log_Section_Length: _c_ddf.uint32 | None = ...,
            Diagnostic_Space_Section: _c_ddf.uint32 | None = ...,
            Diagnostic_Space_Section_Length: _c_ddf.uint32 | None = ...,
            Vendor_Specific_Logs_Section: _c_ddf.uint32 | None = ...,
            Vendor_Specific_Logs_Section_Length: _c_ddf.uint32 | None = ...,
            Reserved4: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Controller_Data(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        Controller_GUID: __cs__.CharArray
        Controller_Type: __cs__.CharArray
        Product_ID: __cs__.CharArray
        Reserved: __cs__.CharArray
        Vendor_Unique_Controller_Data: __cs__.CharArray
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            Controller_GUID: __cs__.CharArray | None = ...,
            Controller_Type: __cs__.CharArray | None = ...,
            Product_ID: __cs__.CharArray | None = ...,
            Reserved: __cs__.CharArray | None = ...,
            Vendor_Unique_Controller_Data: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Physical_Disk_Entry(__cs__.Structure):
        PD_GUID: __cs__.CharArray
        PD_Reference: _c_ddf.uint32
        PD_Type: _c_ddf.uint16
        PD_State: _c_ddf.uint16
        Configured_Size: _c_ddf.uint64
        Path_Information: __cs__.CharArray
        Block_Size: _c_ddf.uint16
        Reserved: __cs__.CharArray
        @overload
        def __init__(
            self,
            PD_GUID: __cs__.CharArray | None = ...,
            PD_Reference: _c_ddf.uint32 | None = ...,
            PD_Type: _c_ddf.uint16 | None = ...,
            PD_State: _c_ddf.uint16 | None = ...,
            Configured_Size: _c_ddf.uint64 | None = ...,
            Path_Information: __cs__.CharArray | None = ...,
            Block_Size: _c_ddf.uint16 | None = ...,
            Reserved: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Physical_Disk_Records(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        Populated_PDEs: _c_ddf.uint16
        Max_PDE_Supported: _c_ddf.uint16
        Reserved: __cs__.CharArray
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            Populated_PDEs: _c_ddf.uint16 | None = ...,
            Max_PDE_Supported: _c_ddf.uint16 | None = ...,
            Reserved: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Virtual_Disk_Entry(__cs__.Structure):
        VD_GUID: __cs__.CharArray
        VD_Number: _c_ddf.uint16
        Reserved1: __cs__.CharArray
        VD_Type: _c_ddf.uint32
        VD_State: _c_ddf.uint8
        Init_State: _c_ddf.uint8
        Partially_Optimal_Drive_Failures_Remaining: _c_ddf.uint8
        Reserved2: __cs__.CharArray
        VD_Name: __cs__.CharArray
        @overload
        def __init__(
            self,
            VD_GUID: __cs__.CharArray | None = ...,
            VD_Number: _c_ddf.uint16 | None = ...,
            Reserved1: __cs__.CharArray | None = ...,
            VD_Type: _c_ddf.uint32 | None = ...,
            VD_State: _c_ddf.uint8 | None = ...,
            Init_State: _c_ddf.uint8 | None = ...,
            Partially_Optimal_Drive_Failures_Remaining: _c_ddf.uint8 | None = ...,
            Reserved2: __cs__.CharArray | None = ...,
            VD_Name: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Virtual_Disk_Records(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        Populated_VDEs: _c_ddf.uint16
        Max_VDE_Supported: _c_ddf.uint16
        Reserved: __cs__.CharArray
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            Populated_VDEs: _c_ddf.uint16 | None = ...,
            Max_VDE_Supported: _c_ddf.uint16 | None = ...,
            Reserved: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class VD_Configuration_Record(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        VD_GUID: __cs__.CharArray
        Timestamp: _c_ddf.uint32
        Sequence_Number: _c_ddf.uint32
        Reserved1: __cs__.CharArray
        Primary_Element_Count: _c_ddf.uint16
        Strip_Size: _c_ddf.uint8
        Primary_RAID_Level: _c_ddf.uint8
        RAID_Level_Qualifier: _c_ddf.uint8
        Secondary_Element_Count: _c_ddf.uint8
        Secondary_Element_Seq: _c_ddf.uint8
        Secondary_RAID_Level: _c_ddf.uint8
        Block_Count: _c_ddf.uint64
        VD_Size: _c_ddf.uint64
        Block_Size: _c_ddf.uint16
        Rotate_Parity_Count: _c_ddf.uint8
        Reserved2: __cs__.CharArray
        Associated_Spares: __cs__.CharArray
        Cache_Policies_And_Parameters: _c_ddf.uint64
        BG_Rate: _c_ddf.uint8
        Reserved3: __cs__.CharArray
        MDF_Parity_Disks: _c_ddf.uint8
        MDF_Parity_Generator_Polynomial: _c_ddf.uint16
        Reserved4: __cs__.CharArray
        MDF_Constant_Generation_Method: _c_ddf.uint8
        Reserved5: __cs__.CharArray
        Reserved6: __cs__.CharArray
        V0: __cs__.CharArray
        V1: __cs__.CharArray
        V2: __cs__.CharArray
        V3: __cs__.CharArray
        Vendor_Specific_Scratch_Space: __cs__.CharArray
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            VD_GUID: __cs__.CharArray | None = ...,
            Timestamp: _c_ddf.uint32 | None = ...,
            Sequence_Number: _c_ddf.uint32 | None = ...,
            Reserved1: __cs__.CharArray | None = ...,
            Primary_Element_Count: _c_ddf.uint16 | None = ...,
            Strip_Size: _c_ddf.uint8 | None = ...,
            Primary_RAID_Level: _c_ddf.uint8 | None = ...,
            RAID_Level_Qualifier: _c_ddf.uint8 | None = ...,
            Secondary_Element_Count: _c_ddf.uint8 | None = ...,
            Secondary_Element_Seq: _c_ddf.uint8 | None = ...,
            Secondary_RAID_Level: _c_ddf.uint8 | None = ...,
            Block_Count: _c_ddf.uint64 | None = ...,
            VD_Size: _c_ddf.uint64 | None = ...,
            Block_Size: _c_ddf.uint16 | None = ...,
            Rotate_Parity_Count: _c_ddf.uint8 | None = ...,
            Reserved2: __cs__.CharArray | None = ...,
            Associated_Spares: __cs__.CharArray | None = ...,
            Cache_Policies_And_Parameters: _c_ddf.uint64 | None = ...,
            BG_Rate: _c_ddf.uint8 | None = ...,
            Reserved3: __cs__.CharArray | None = ...,
            MDF_Parity_Disks: _c_ddf.uint8 | None = ...,
            MDF_Parity_Generator_Polynomial: _c_ddf.uint16 | None = ...,
            Reserved4: __cs__.CharArray | None = ...,
            MDF_Constant_Generation_Method: _c_ddf.uint8 | None = ...,
            Reserved5: __cs__.CharArray | None = ...,
            Reserved6: __cs__.CharArray | None = ...,
            V0: __cs__.CharArray | None = ...,
            V1: __cs__.CharArray | None = ...,
            V2: __cs__.CharArray | None = ...,
            V3: __cs__.CharArray | None = ...,
            Vendor_Specific_Scratch_Space: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class VU_Configuration_Record(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        VD_GUID: __cs__.CharArray
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            VD_GUID: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Spare_Assignment_Entry(__cs__.Structure):
        VD_GUID: __cs__.CharArray
        Secondary_Element: _c_ddf.uint16
        Reserved: __cs__.CharArray
        @overload
        def __init__(
            self,
            VD_GUID: __cs__.CharArray | None = ...,
            Secondary_Element: _c_ddf.uint16 | None = ...,
            Reserved: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Spare_Assignment_Record(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        Timestamp: _c_ddf.uint32
        Reserved1: __cs__.CharArray
        Spare_Type: _c_ddf.uint8
        Populated_SAEs: _c_ddf.uint16
        Max_SAE_Supported: _c_ddf.uint16
        Reserved2: __cs__.CharArray
        class Spare_Assignment_Entry(__cs__.Structure):
            VD_GUID: __cs__.CharArray
            Secondary_Element: _c_ddf.uint16
            Reserved: __cs__.CharArray
            @overload
            def __init__(
                self,
                VD_GUID: __cs__.CharArray | None = ...,
                Secondary_Element: _c_ddf.uint16 | None = ...,
                Reserved: __cs__.CharArray | None = ...,
            ): ...
            @overload
            def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

        Spare_Assignment_Entries: __cs__.Array[Spare_Assignment_Entry]
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            Timestamp: _c_ddf.uint32 | None = ...,
            Reserved1: __cs__.CharArray | None = ...,
            Spare_Type: _c_ddf.uint8 | None = ...,
            Populated_SAEs: _c_ddf.uint16 | None = ...,
            Max_SAE_Supported: _c_ddf.uint16 | None = ...,
            Reserved2: __cs__.CharArray | None = ...,
            Spare_Assignment_Entries: __cs__.Array[Spare_Assignment_Entry] | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Physical_Disk_Data(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        PD_GUID: __cs__.CharArray
        PD_Reference: _c_ddf.uint32
        Forced_Ref_Flag: _c_ddf.uint8
        Forced_PD_GUID_Flag: _c_ddf.uint8
        Vendor_Specific_Scratch_Space: __cs__.CharArray
        Reserved: __cs__.CharArray
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            PD_GUID: __cs__.CharArray | None = ...,
            PD_Reference: _c_ddf.uint32 | None = ...,
            Forced_Ref_Flag: _c_ddf.uint8 | None = ...,
            Forced_PD_GUID_Flag: _c_ddf.uint8 | None = ...,
            Vendor_Specific_Scratch_Space: __cs__.CharArray | None = ...,
            Reserved: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Mapped_Block_Entry(__cs__.Structure):
        Defective_Block_Start: _c_ddf.uint64
        Spare_Block_Offset: _c_ddf.uint32
        Remapped_Marked_Count: _c_ddf.uint16
        Reserved: __cs__.CharArray
        @overload
        def __init__(
            self,
            Defective_Block_Start: _c_ddf.uint64 | None = ...,
            Spare_Block_Offset: _c_ddf.uint32 | None = ...,
            Remapped_Marked_Count: _c_ddf.uint16 | None = ...,
            Reserved: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Bad_Block_Management_Log(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        Entry_Count: _c_ddf.uint32
        Reserved_Spare_Block_Count: _c_ddf.uint32
        Reserved: __cs__.CharArray
        First_Spare_LBA: _c_ddf.uint64
        class Mapped_Block_Entry(__cs__.Structure):
            Defective_Block_Start: _c_ddf.uint64
            Spare_Block_Offset: _c_ddf.uint32
            Remapped_Marked_Count: _c_ddf.uint16
            Reserved: __cs__.CharArray
            @overload
            def __init__(
                self,
                Defective_Block_Start: _c_ddf.uint64 | None = ...,
                Spare_Block_Offset: _c_ddf.uint32 | None = ...,
                Remapped_Marked_Count: _c_ddf.uint16 | None = ...,
                Reserved: __cs__.CharArray | None = ...,
            ): ...
            @overload
            def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

        Mapped_Block_Entries: __cs__.Array[Mapped_Block_Entry]
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            Entry_Count: _c_ddf.uint32 | None = ...,
            Reserved_Spare_Block_Count: _c_ddf.uint32 | None = ...,
            Reserved: __cs__.CharArray | None = ...,
            First_Spare_LBA: _c_ddf.uint64 | None = ...,
            Mapped_Block_Entries: __cs__.Array[Mapped_Block_Entry] | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

    class Vendor_Specific_Log(__cs__.Structure):
        Signature: _c_ddf.uint32
        CRC: _c_ddf.uint32
        Log_Owner: __cs__.CharArray
        Reserved: __cs__.CharArray
        @overload
        def __init__(
            self,
            Signature: _c_ddf.uint32 | None = ...,
            CRC: _c_ddf.uint32 | None = ...,
            Log_Owner: __cs__.CharArray | None = ...,
            Reserved: __cs__.CharArray | None = ...,
        ): ...
        @overload
        def __init__(self, fh: bytes | memoryview | bytearray | BinaryIO, /): ...

# Technically `c_ddf` is an instance of `_c_ddf`, but then we can't use it in type hints
c_ddf: TypeAlias = _c_ddf
