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 .items.items_request_builder import ItemsRequestBuilder
    from .items_next_custom_identifier.items_next_custom_identifier_request_builder import ItemsNextCustomIdentifierRequestBuilder
    from .items_validate_custom_identifier.items_validate_custom_identifier_request_builder import ItemsValidateCustomIdentifierRequestBuilder
    from .item_types.item_types_request_builder import ItemTypesRequestBuilder
    from .metadata.metadata_request_builder import MetadataRequestBuilder
    from .packages.packages_request_builder import PackagesRequestBuilder
    from .responses.responses_request_builder import ResponsesRequestBuilder
    from .settings.settings_request_builder import SettingsRequestBuilder
    from .specs.specs_request_builder import SpecsRequestBuilder
    from .templates.templates_request_builder import TemplatesRequestBuilder
    from .users.users_request_builder import UsersRequestBuilder

class WithProjectItemRequestBuilder(BaseRequestBuilder):
    """
    Builds and executes requests for operations under /construction/submittals/v2/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/submittals/v2/projects/{projectId}", path_parameters)
    
    @property
    def item_types(self) -> ItemTypesRequestBuilder:
        """
        The itemTypes property
        """
        from .item_types.item_types_request_builder import ItemTypesRequestBuilder

        return ItemTypesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def items(self) -> ItemsRequestBuilder:
        """
        The items property
        """
        from .items.items_request_builder import ItemsRequestBuilder

        return ItemsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def items_next_custom_identifier(self) -> ItemsNextCustomIdentifierRequestBuilder:
        """
        The itemsNextCustomIdentifier property
        """
        from .items_next_custom_identifier.items_next_custom_identifier_request_builder import ItemsNextCustomIdentifierRequestBuilder

        return ItemsNextCustomIdentifierRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def items_validate_custom_identifier(self) -> ItemsValidateCustomIdentifierRequestBuilder:
        """
        The itemsValidateCustomIdentifier property
        """
        from .items_validate_custom_identifier.items_validate_custom_identifier_request_builder import ItemsValidateCustomIdentifierRequestBuilder

        return ItemsValidateCustomIdentifierRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def metadata(self) -> MetadataRequestBuilder:
        """
        The metadata property
        """
        from .metadata.metadata_request_builder import MetadataRequestBuilder

        return MetadataRequestBuilder(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 responses(self) -> ResponsesRequestBuilder:
        """
        The responses property
        """
        from .responses.responses_request_builder import ResponsesRequestBuilder

        return ResponsesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def settings(self) -> SettingsRequestBuilder:
        """
        The settings property
        """
        from .settings.settings_request_builder import SettingsRequestBuilder

        return SettingsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def specs(self) -> SpecsRequestBuilder:
        """
        The specs property
        """
        from .specs.specs_request_builder import SpecsRequestBuilder

        return SpecsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def templates(self) -> TemplatesRequestBuilder:
        """
        The templates property
        """
        from .templates.templates_request_builder import TemplatesRequestBuilder

        return TemplatesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def users(self) -> UsersRequestBuilder:
        """
        The users property
        """
        from .users.users_request_builder import UsersRequestBuilder

        return UsersRequestBuilder(self.request_adapter, self.path_parameters)
    

