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 .asset_statuses.asset_statuses_request_builder import AssetStatusesRequestBuilder
    from .asset_statuses_batch_get.asset_statuses_batch_get_request_builder import AssetStatusesBatchGetRequestBuilder
    from .categories.categories_request_builder import CategoriesRequestBuilder
    from .categories_batch_get.categories_batch_get_request_builder import CategoriesBatchGetRequestBuilder
    from .category_status_step_sets.category_status_step_sets_request_builder import CategoryStatusStepSetsRequestBuilder
    from .custom_attributes.custom_attributes_request_builder import CustomAttributesRequestBuilder
    from .custom_attributes_batch_get.custom_attributes_batch_get_request_builder import CustomAttributesBatchGetRequestBuilder
    from .status_step_sets.status_step_sets_request_builder import StatusStepSetsRequestBuilder
    from .status_step_sets_batch_get.status_step_sets_batch_get_request_builder import StatusStepSetsBatchGetRequestBuilder

class WithProjectItemRequestBuilder(BaseRequestBuilder):
    """
    Builds and executes requests for operations under /construction/assets/v1/projects/{projectId}
    """
    def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
        """
        Instantiates a new WithProjectItemRequestBuilder 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/assets/v1/projects/{projectId}", path_parameters)
    
    @property
    def asset_statuses(self) -> AssetStatusesRequestBuilder:
        """
        The assetStatuses property
        """
        from .asset_statuses.asset_statuses_request_builder import AssetStatusesRequestBuilder

        return AssetStatusesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def asset_statuses_batch_get(self) -> AssetStatusesBatchGetRequestBuilder:
        """
        The assetStatusesBatchGet property
        """
        from .asset_statuses_batch_get.asset_statuses_batch_get_request_builder import AssetStatusesBatchGetRequestBuilder

        return AssetStatusesBatchGetRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def categories(self) -> CategoriesRequestBuilder:
        """
        The categories property
        """
        from .categories.categories_request_builder import CategoriesRequestBuilder

        return CategoriesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def categories_batch_get(self) -> CategoriesBatchGetRequestBuilder:
        """
        The categoriesBatchGet property
        """
        from .categories_batch_get.categories_batch_get_request_builder import CategoriesBatchGetRequestBuilder

        return CategoriesBatchGetRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def category_status_step_sets(self) -> CategoryStatusStepSetsRequestBuilder:
        """
        The categoryStatusStepSets property
        """
        from .category_status_step_sets.category_status_step_sets_request_builder import CategoryStatusStepSetsRequestBuilder

        return CategoryStatusStepSetsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def custom_attributes(self) -> CustomAttributesRequestBuilder:
        """
        The customAttributes property
        """
        from .custom_attributes.custom_attributes_request_builder import CustomAttributesRequestBuilder

        return CustomAttributesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def custom_attributes_batch_get(self) -> CustomAttributesBatchGetRequestBuilder:
        """
        The customAttributesBatchGet property
        """
        from .custom_attributes_batch_get.custom_attributes_batch_get_request_builder import CustomAttributesBatchGetRequestBuilder

        return CustomAttributesBatchGetRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def status_step_sets(self) -> StatusStepSetsRequestBuilder:
        """
        The statusStepSets property
        """
        from .status_step_sets.status_step_sets_request_builder import StatusStepSetsRequestBuilder

        return StatusStepSetsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def status_step_sets_batch_get(self) -> StatusStepSetsBatchGetRequestBuilder:
        """
        The statusStepSetsBatchGet property
        """
        from .status_step_sets_batch_get.status_step_sets_batch_get_request_builder import StatusStepSetsBatchGetRequestBuilder

        return StatusStepSetsBatchGetRequestBuilder(self.request_adapter, self.path_parameters)
    

