from _typeshed import Incomplete
from collections.abc import Callable as Callable, Iterable
from pydicom import config as config
from pydicom.charset import convert_encodings as convert_encodings, default_encoding as default_encoding, encode_string as encode_string
from pydicom.dataelem import DataElement as DataElement, RawDataElement as RawDataElement, convert_raw_data_element as convert_raw_data_element
from pydicom.dataset import Dataset as Dataset, FileMetaDataset as FileMetaDataset, validate_file_meta as validate_file_meta
from pydicom.filebase import DicomBytesIO as DicomBytesIO, DicomFile as DicomFile, DicomIO as DicomIO, WriteableBuffer as WriteableBuffer
from pydicom.fileutil import PathType as PathType, buffer_remaining as buffer_remaining, path_from_pathlike as path_from_pathlike, read_buffer as read_buffer, reset_buffer_position as reset_buffer_position
from pydicom.misc import warn_and_log as warn_and_log
from pydicom.multival import MultiValue as MultiValue
from pydicom.tag import BaseTag as BaseTag, ItemDelimiterTag as ItemDelimiterTag, ItemTag as ItemTag, SequenceDelimiterTag as SequenceDelimiterTag, Tag as Tag, tag_in_exception as tag_in_exception
from pydicom.uid import DeflatedExplicitVRLittleEndian as DeflatedExplicitVRLittleEndian, ExplicitVRBigEndian as ExplicitVRBigEndian, ImplicitVRLittleEndian as ImplicitVRLittleEndian, UID as UID
from pydicom.valuerep import AMBIGUOUS_VR as AMBIGUOUS_VR, CUSTOMIZABLE_CHARSET_VR as CUSTOMIZABLE_CHARSET_VR, DA as DA, DSclass as DSclass, DT as DT, EXPLICIT_VR_LENGTH_32 as EXPLICIT_VR_LENGTH_32, IS as IS, PersonName as PersonName, TM as TM, VR as VR
from pydicom.values import convert_numbers as convert_numbers
from typing import Any, BinaryIO

def correct_ambiguous_vr_element(elem: DataElement | RawDataElement, ds: Dataset, is_little_endian: bool, ancestors: list[Dataset] | None = None) -> DataElement | RawDataElement: ...
def correct_ambiguous_vr(ds: Dataset, is_little_endian: bool, ancestors: list[Dataset] | None = None) -> Dataset: ...
def write_numbers(fp: DicomIO, elem: DataElement, struct_format: str) -> None: ...
def write_OBvalue(fp: DicomIO, elem: DataElement) -> None: ...
def write_OWvalue(fp: DicomIO, elem: DataElement) -> None: ...
def write_UI(fp: DicomIO, elem: DataElement) -> None: ...
def multi_string(val: str | Iterable[str]) -> str: ...
def write_PN(fp: DicomIO, elem: DataElement, encodings: list[str] | None = None) -> None: ...
def write_string(fp: DicomIO, elem: DataElement, padding: str = ' ') -> None: ...
def write_text(fp: DicomIO, elem: DataElement, encodings: list[str] | None = None) -> None: ...
def write_number_string(fp: DicomIO, elem: DataElement) -> None: ...
def write_DA(fp: DicomIO, elem: DataElement) -> None: ...
def write_DT(fp: DicomIO, elem: DataElement) -> None: ...
def write_TM(fp: DicomIO, elem: DataElement) -> None: ...
def write_data_element(fp: DicomIO, elem: DataElement | RawDataElement, encodings: str | list[str] | None = None) -> None: ...
EncodingType = tuple[bool | None, bool | None]

def write_dataset(fp: DicomIO, dataset: Dataset, parent_encoding: str | list[str] = ...) -> int: ...
def write_sequence(fp: DicomIO, elem: DataElement, encodings: list[str]) -> None: ...
def write_sequence_item(fp: DicomIO, dataset: Dataset, encodings: list[str]) -> None: ...
def write_UN(fp: DicomIO, elem: DataElement) -> None: ...
def write_ATvalue(fp: DicomIO, elem: DataElement) -> None: ...
def write_file_meta_info(fp: DicomIO, file_meta: FileMetaDataset, enforce_standard: bool = True) -> None: ...
def dcmwrite(filename: PathType | BinaryIO | WriteableBuffer, dataset: Dataset, __write_like_original: bool | None = None, /, *, implicit_vr: bool | None = None, little_endian: bool | None = None, enforce_file_format: bool = False, force_encoding: bool = False, overwrite: bool = True, **kwargs: Any) -> None: ...

writers: Incomplete
