# -*- coding: utf-8 -*-

"""
    apimaticcalculatorlatest

    This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
"""

from apimaticcalculatorlatest.decorators import lazy_property
from apimaticcalculatorlatest.configuration import Configuration
from apimaticcalculatorlatest.controllers.product_controller import ProductController
from apimaticcalculatorlatest.controllers.los_pricing_controller import LOSPricingController
from apimaticcalculatorlatest.controllers.messaging_controller import MessagingController
from apimaticcalculatorlatest.controllers.property_managers_controller import PropertyManagersController
from apimaticcalculatorlatest.controllers.request_to_book_controller import RequestToBookController
from apimaticcalculatorlatest.controllers.images_controller import ImagesController
from apimaticcalculatorlatest.controllers.fee_and_tax_mandatory_at_the_property_level_controller import FeeAndTaxMandatoryAtThePropertyLevelController
from apimaticcalculatorlatest.controllers.yields_controller import YieldsController
from apimaticcalculatorlatest.controllers.fee_and_tax_controller import FeeAndTaxController
from apimaticcalculatorlatest.controllers.validation_controller import ValidationController
from apimaticcalculatorlatest.controllers.push_notification_controller import PushNotificationController
from apimaticcalculatorlatest.controllers.rates_and_availability_controller import RatesAndAvailabilityController
from apimaticcalculatorlatest.controllers.reservation_notifications_controller import ReservationNotificationsController
from apimaticcalculatorlatest.controllers.testing_of_message_api_calls_controller import TestingOfMessageAPICallsController
from apimaticcalculatorlatest.controllers.authorization_controller import AuthorizationController


class ApimaticcalculatorlatestClient(object):

    config = Configuration

    @lazy_property
    def product(self):
        return ProductController()

    @lazy_property
    def los_pricing(self):
        return LOSPricingController()

    @lazy_property
    def messaging(self):
        return MessagingController()

    @lazy_property
    def property_managers(self):
        return PropertyManagersController()

    @lazy_property
    def request_to_book(self):
        return RequestToBookController()

    @lazy_property
    def images(self):
        return ImagesController()

    @lazy_property
    def fee_and_tax_mandatory_at_the_property_level(self):
        return FeeAndTaxMandatoryAtThePropertyLevelController()

    @lazy_property
    def yields(self):
        return YieldsController()

    @lazy_property
    def fee_and_tax(self):
        return FeeAndTaxController()

    @lazy_property
    def validation(self):
        return ValidationController()

    @lazy_property
    def push_notification(self):
        return PushNotificationController()

    @lazy_property
    def rates_and_availability(self):
        return RatesAndAvailabilityController()

    @lazy_property
    def reservation_notifications(self):
        return ReservationNotificationsController()

    @lazy_property
    def testing_of_message_api_calls(self):
        return TestingOfMessageAPICallsController()

    @lazy_property
    def authorization(self):
        return AuthorizationController()


    def __init__(self,
                 jwt=None):
        if jwt is not None:
            Configuration.jwt = jwt

