# This file was generated by liblab | https://liblab.com/

from __future__ import annotations
from .utils.json_map import JsonMap
from .base import BaseModel
from .extra_charges_dto_list_charge_dto import ExtraChargesDtoListChargeDto


@JsonMap({})
class PriceDataDtoListChargeDto(BaseModel):
    """The price components of this product or selection of products.
    'base' and 'extra_charges' are returned only when explicitly requested (via 'extras=extra_charges').


    :param base: The base price. Does not include any extra charges., defaults to None
    :type base: float, optional
    :param book: The price that will be charged by Booking.com., defaults to None
    :type book: float, optional
    :param total: The total price. Includes all extra charges., defaults to None
    :type total: float, optional
    :param extra_charges: The charge breakdown. Includes taxes and fees., defaults to None
    :type extra_charges: ExtraChargesDtoListChargeDto, optional
    """

    def __init__(
        self,
        base: float = None,
        book: float = None,
        total: float = None,
        extra_charges: ExtraChargesDtoListChargeDto = None,
    ):
        if base is not None:
            self.base = base
        if book is not None:
            self.book = book
        if total is not None:
            self.total = total
        if extra_charges is not None:
            self.extra_charges = self._define_object(
                extra_charges, ExtraChargesDtoListChargeDto
            )
