"""
Yango Tech Grocery API Client

A Python client library for interacting with the Yango Tech Grocery API.
"""

__version__ = '1.1.0'
__author__ = 'Yango Tech'
__email__ = 'tech@yango.com'

from .base_client import BaseYangoClient
from .client import YangoClient
from .client_prices import YangoPricesClient
from .client_third_party_logistics import YangoThirdPartyLogisticsClient
from .constants import LOYALTY_PAYMENT_METHODS, REAL_MONEY_PAYMENT_METHODS
from .exceptions import YangoException, YangoRequestError

# Import main schema classes for convenience
from .schema import (
    AttributeTranslations,
    Point,
    YangoAddress,
    YangoCustomAttributes,
    YangoDeliveryAddress,
    YangoDeliveryProperties,
    YangoDeliverySlot,
    YangoDiscountRecord,
    YangoGetReceiptResponse,
    YangoMediaPosition,
    YangoMediaType,
    YangoNomenclatureType,
    YangoOrderCart,
    YangoOrderDetails,
    YangoOrderEvent,
    YangoOrderEventQueryResponse,
    YangoOrderEventType,
    YangoOrderPickingState,
    YangoOrderRecord,
    YangoOrderState,
    YangoOrderStateQuery,
    YangoPaymentMethod,
    YangoPriceData,
    YangoPriceListData,
    YangoPriceListStatus,
    YangoPriceListUpdateData,
    YangoProductData,
    YangoProductMedia,
    YangoProductStatus,
    YangoProductVat,
    YangoReceiptClient,
    YangoReceiptClientFullName,
    YangoReceiptItemPayment,
    YangoReceiptItemVat,
    YangoReceiptNotProductItem,
    YangoReceiptOrder,
    YangoReceiptPaymentAmount,
    YangoReceiptProductItem,
    YangoReceiptRecord,
    YangoReceiptStore,
    YangoReceiptType,
    YangoShoppingCartItem,
    YangoStateChangeEventData,
    YangoStockData,
    YangoStockUpdateMode,
    YangoStoreLocation,
    YangoStorePriceLinkData,
    YangoStoreRecord,
    YangoThirdPartyLogisticsDeliveryCancelled,
    YangoThirdPartyLogisticsDeliveryCourierInfo,
    YangoThirdPartyLogisticsDeliveryCourierName,
    YangoThirdPartyLogisticsDeliveryCourierPosition,
    YangoThirdPartyLogisticsDeliveryCreated,
    YangoThirdPartyLogisticsDeliveryEvent,
    YangoThirdPartyLogisticsDeliveryEvents,
    YangoThirdPartyLogisticsDeliveryItem,
    YangoThirdPartyLogisticsDeliveryLocation,
    YangoThirdPartyLogisticsDeliveryStatus,
    YangoThirdPartyLogisticsDeliveryType,
    YangoTypeAccounting,
)

__all__ = [
    # Main client classes
    'YangoClient',
    'BaseYangoClient',
    'YangoPricesClient',
    'YangoThirdPartyLogisticsClient',
    # Constants
    'LOYALTY_PAYMENT_METHODS',
    'REAL_MONEY_PAYMENT_METHODS',
    # Exceptions
    'YangoException',
    'YangoRequestError',
    # Schema classes
    'AttributeTranslations',
    'Point',
    'YangoAddress',
    'YangoCustomAttributes',
    'YangoDeliveryAddress',
    'YangoDeliveryProperties',
    'YangoDeliverySlot',
    'YangoDiscountRecord',
    'YangoGetReceiptResponse',
    'YangoMediaPosition',
    'YangoMediaType',
    'YangoNomenclatureType',
    'YangoOrderCart',
    'YangoOrderDetails',
    'YangoOrderEvent',
    'YangoOrderEventQueryResponse',
    'YangoOrderEventType',
    'YangoOrderPickingState',
    'YangoOrderRecord',
    'YangoOrderState',
    'YangoOrderStateQuery',
    'YangoPaymentMethod',
    'YangoPriceData',
    'YangoPriceListData',
    'YangoPriceListStatus',
    'YangoPriceListUpdateData',
    'YangoProductData',
    'YangoProductMedia',
    'YangoProductStatus',
    'YangoProductVat',
    'YangoReceiptClient',
    'YangoReceiptClientFullName',
    'YangoReceiptItemPayment',
    'YangoReceiptItemVat',
    'YangoReceiptNotProductItem',
    'YangoReceiptOrder',
    'YangoReceiptPaymentAmount',
    'YangoReceiptProductItem',
    'YangoReceiptRecord',
    'YangoReceiptStore',
    'YangoReceiptType',
    'YangoShoppingCartItem',
    'YangoStateChangeEventData',
    'YangoStockData',
    'YangoStockUpdateMode',
    'YangoStoreLocation',
    'YangoStorePriceLinkData',
    'YangoStoreRecord',
    'YangoThirdPartyLogisticsDeliveryCancelled',
    'YangoThirdPartyLogisticsDeliveryCourierInfo',
    'YangoThirdPartyLogisticsDeliveryCourierName',
    'YangoThirdPartyLogisticsDeliveryCourierPosition',
    'YangoThirdPartyLogisticsDeliveryCreated',
    'YangoThirdPartyLogisticsDeliveryEvent',
    'YangoThirdPartyLogisticsDeliveryEvents',
    'YangoThirdPartyLogisticsDeliveryItem',
    'YangoThirdPartyLogisticsDeliveryLocation',
    'YangoThirdPartyLogisticsDeliveryStatus',
    'YangoThirdPartyLogisticsDeliveryType',
    'YangoTypeAccounting',
]
