"""Outlook MSG reader package.

This package provides reusable, non-printing APIs for reading
Outlook Item (.msg) files via the underlying Compound File Binary (CFB) container.
"""

from .reader import MsgError, MsgReader, StorageLayout
from .mapi_message import (
    ATTACH_METHOD_BY_VALUE,
    ATTACH_METHOD_EMBEDDED,
    ATTACH_METHOD_STORAGE,
    DEFAULT_PROPERTY_FLAGS,
    MapiAttachment,
    MapiAttachment as MutableMapiAttachment,
    MapiMessage,
    MapiNamedProperty,
    MapiProperty,
    MapiRecipient,
    PS_MAPI,
    PS_PUBLIC_STRINGS,
    RECIPIENT_TYPE_BCC,
    RECIPIENT_TYPE_CC,
    RECIPIENT_TYPE_TO,
    STORE_UNICODE_OK,
)
from .property_id import PropertyId
from .property_tags import CommonMessagePropertyId
from .property_types import PropertyTypeCode
from .types import (
    ATTACHMENT_STORAGE_PREFIX,
    EMBEDDED_MESSAGE_STORAGE_NAME,
    MAX_ATTACHMENT_STORAGES,
    MAX_RECIPIENT_STORAGES,
    NAMED_PROPERTY_MAPPING_STORAGE_NAME,
    PROPERTY_STREAM_NAME,
    PROPERTY_VALUE_STREAM_PREFIX,
    PROPATTR_MANDATORY,
    PROPATTR_READABLE,
    PROPATTR_WRITABLE,
    RECIPIENT_STORAGE_PREFIX,
    PropertyEntryFixedLength,
    PropertyStreamHeaderSubobject,
    PropertyStreamHeaderTopLevel,
)
from .writer import (
    ATTACHMENT_ROLE,
    CUSTOM_ATTACHMENT_ROLE,
    EMBEDDED_MESSAGE_ROLE,
    GENERIC_ROLE,
    MESSAGE_ROLE,
    NAMED_PROPERTY_MAPPING_ROLE,
    RECIPIENT_ROLE,
    MsgDocument,
    MsgStorage,
    MsgStream,
    MsgWriter,
)

__all__ = [
    "MsgError",
    "MsgReader",
    "MapiAttachment",
    "MapiMessage",
    "MapiProperty",
    "MapiNamedProperty",
    "MapiRecipient",
    "MutableMapiAttachment",
    "PropertyId",
    "CommonMessagePropertyId",
    "PropertyTypeCode",
    "StorageLayout",
    "MsgDocument",
    "MsgStorage",
    "MsgStream",
    "MsgWriter",
    "PropertyStreamHeaderTopLevel",
    "PropertyStreamHeaderSubobject",
    "PropertyEntryFixedLength",
    "MESSAGE_ROLE",
    "RECIPIENT_ROLE",
    "ATTACHMENT_ROLE",
    "EMBEDDED_MESSAGE_ROLE",
    "NAMED_PROPERTY_MAPPING_ROLE",
    "CUSTOM_ATTACHMENT_ROLE",
    "GENERIC_ROLE",
    "PS_MAPI",
    "PS_PUBLIC_STRINGS",
    "STORE_UNICODE_OK",
    "DEFAULT_PROPERTY_FLAGS",
    "RECIPIENT_TYPE_TO",
    "RECIPIENT_TYPE_CC",
    "RECIPIENT_TYPE_BCC",
    "ATTACH_METHOD_BY_VALUE",
    "ATTACH_METHOD_EMBEDDED",
    "ATTACH_METHOD_STORAGE",
    "PROPERTY_STREAM_NAME",
    "PROPERTY_VALUE_STREAM_PREFIX",
    "RECIPIENT_STORAGE_PREFIX",
    "ATTACHMENT_STORAGE_PREFIX",
    "EMBEDDED_MESSAGE_STORAGE_NAME",
    "NAMED_PROPERTY_MAPPING_STORAGE_NAME",
    "MAX_RECIPIENT_STORAGES",
    "MAX_ATTACHMENT_STORAGES",
    "PROPATTR_MANDATORY",
    "PROPATTR_READABLE",
    "PROPATTR_WRITABLE",
]
