from __future__ import annotations
from collections.abc import Callable
from kiota_abstractions.base_request_builder import BaseRequestBuilder
from kiota_abstractions.get_path_parameters import get_path_parameters
from kiota_abstractions.request_adapter import RequestAdapter
from typing import Any, Optional, TYPE_CHECKING, Union

if TYPE_CHECKING:
    from .admin.admin_request_builder import AdminRequestBuilder
    from .assets.assets_request_builder import AssetsRequestBuilder
    from .autospecs.autospecs_request_builder import AutospecsRequestBuilder
    from .files.files_request_builder import FilesRequestBuilder
    from .forms.forms_request_builder import FormsRequestBuilder
    from .index.index_request_builder import IndexRequestBuilder
    from .issues.issues_request_builder import IssuesRequestBuilder
    from .locations.locations_request_builder import LocationsRequestBuilder
    from .packages.packages_request_builder import PackagesRequestBuilder
    from .photos.photos_request_builder import PhotosRequestBuilder
    from .rcm.rcm_request_builder import RcmRequestBuilder
    from .reviews.reviews_request_builder import ReviewsRequestBuilder
    from .rfis.rfis_request_builder import RfisRequestBuilder
    from .sheets.sheets_request_builder import SheetsRequestBuilder
    from .submittals.submittals_request_builder import SubmittalsRequestBuilder
    from .takeoff.takeoff_request_builder import TakeoffRequestBuilder
    from .transmittals.transmittals_request_builder import TransmittalsRequestBuilder

class ConstructionRequestBuilder(BaseRequestBuilder):
    """
    Builds and executes requests for operations under /construction
    """
    def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
        """
        Instantiates a new ConstructionRequestBuilder and sets the default values.
        param path_parameters: The raw url or the url-template parameters for the request.
        param request_adapter: The request adapter to use to execute the requests.
        Returns: None
        """
        super().__init__(request_adapter, "{+baseurl}/construction", path_parameters)
    
    @property
    def admin(self) -> AdminRequestBuilder:
        """
        The admin property
        """
        from .admin.admin_request_builder import AdminRequestBuilder

        return AdminRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def assets(self) -> AssetsRequestBuilder:
        """
        The assets property
        """
        from .assets.assets_request_builder import AssetsRequestBuilder

        return AssetsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def autospecs(self) -> AutospecsRequestBuilder:
        """
        The autospecs property
        """
        from .autospecs.autospecs_request_builder import AutospecsRequestBuilder

        return AutospecsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def files(self) -> FilesRequestBuilder:
        """
        The files property
        """
        from .files.files_request_builder import FilesRequestBuilder

        return FilesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def forms(self) -> FormsRequestBuilder:
        """
        The forms property
        """
        from .forms.forms_request_builder import FormsRequestBuilder

        return FormsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def index(self) -> IndexRequestBuilder:
        """
        The index property
        """
        from .index.index_request_builder import IndexRequestBuilder

        return IndexRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def issues(self) -> IssuesRequestBuilder:
        """
        The issues property
        """
        from .issues.issues_request_builder import IssuesRequestBuilder

        return IssuesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def locations(self) -> LocationsRequestBuilder:
        """
        The locations property
        """
        from .locations.locations_request_builder import LocationsRequestBuilder

        return LocationsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def packages(self) -> PackagesRequestBuilder:
        """
        The packages property
        """
        from .packages.packages_request_builder import PackagesRequestBuilder

        return PackagesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def photos(self) -> PhotosRequestBuilder:
        """
        The photos property
        """
        from .photos.photos_request_builder import PhotosRequestBuilder

        return PhotosRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def rcm(self) -> RcmRequestBuilder:
        """
        The rcm property
        """
        from .rcm.rcm_request_builder import RcmRequestBuilder

        return RcmRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def reviews(self) -> ReviewsRequestBuilder:
        """
        The reviews property
        """
        from .reviews.reviews_request_builder import ReviewsRequestBuilder

        return ReviewsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def rfis(self) -> RfisRequestBuilder:
        """
        The rfis property
        """
        from .rfis.rfis_request_builder import RfisRequestBuilder

        return RfisRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def sheets(self) -> SheetsRequestBuilder:
        """
        The sheets property
        """
        from .sheets.sheets_request_builder import SheetsRequestBuilder

        return SheetsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def submittals(self) -> SubmittalsRequestBuilder:
        """
        The submittals property
        """
        from .submittals.submittals_request_builder import SubmittalsRequestBuilder

        return SubmittalsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def takeoff(self) -> TakeoffRequestBuilder:
        """
        The takeoff property
        """
        from .takeoff.takeoff_request_builder import TakeoffRequestBuilder

        return TakeoffRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def transmittals(self) -> TransmittalsRequestBuilder:
        """
        The transmittals property
        """
        from .transmittals.transmittals_request_builder import TransmittalsRequestBuilder

        return TransmittalsRequestBuilder(self.request_adapter, self.path_parameters)
    

