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 .attachments.attachments_request_builder import AttachmentsRequestBuilder
    from .attachments_batch_create.attachments_batch_create_request_builder import AttachmentsBatchCreateRequestBuilder
    from .attachment_folders.attachment_folders_request_builder import AttachmentFoldersRequestBuilder
    from .budgets.budgets_request_builder import BudgetsRequestBuilder
    from .budgets_contracts_link.budgets_contracts_link_request_builder import BudgetsContractsLinkRequestBuilder
    from .budgets_import.budgets_import_request_builder import BudgetsImportRequestBuilder
    from .change_orders.change_orders_request_builder import ChangeOrdersRequestBuilder
    from .contracts.contracts_request_builder import ContractsRequestBuilder
    from .cost_items.cost_items_request_builder import CostItemsRequestBuilder
    from .cost_items_attach.cost_items_attach_request_builder import CostItemsAttachRequestBuilder
    from .cost_items_batch_create.cost_items_batch_create_request_builder import CostItemsBatchCreateRequestBuilder
    from .cost_items_detach.cost_items_detach_request_builder import CostItemsDetachRequestBuilder
    from .documents.documents_request_builder import DocumentsRequestBuilder
    from .expenses.expenses_request_builder import ExpensesRequestBuilder
    from .main_contracts.main_contracts_request_builder import MainContractsRequestBuilder
    from .payments.payments_request_builder import PaymentsRequestBuilder
    from .payment_items.payment_items_request_builder import PaymentItemsRequestBuilder
    from .performance_tracking_items.performance_tracking_items_request_builder import PerformanceTrackingItemsRequestBuilder
    from .performance_tracking_item_instances.performance_tracking_item_instances_request_builder import PerformanceTrackingItemInstancesRequestBuilder
    from .properties.properties_request_builder import PropertiesRequestBuilder
    from .property_values_batch_update.property_values_batch_update_request_builder import PropertyValuesBatchUpdateRequestBuilder
    from .schedule_of_values.schedule_of_values_request_builder import ScheduleOfValuesRequestBuilder
    from .segments.segments_request_builder import SegmentsRequestBuilder
    from .segment_values.segment_values_request_builder import SegmentValuesRequestBuilder
    from .taxes.taxes_request_builder import TaxesRequestBuilder
    from .templates.templates_request_builder import TemplatesRequestBuilder
    from .time_sheets.time_sheets_request_builder import TimeSheetsRequestBuilder
    from .workflows.workflows_request_builder import WorkflowsRequestBuilder

class WithContainerItemRequestBuilder(BaseRequestBuilder):
    """
    Builds and executes requests for operations under /cost/v1/containers/{containerId}
    """
    def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
        """
        Instantiates a new WithContainerItemRequestBuilder 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}/cost/v1/containers/{containerId}", path_parameters)
    
    @property
    def attachment_folders(self) -> AttachmentFoldersRequestBuilder:
        """
        The attachmentFolders property
        """
        from .attachment_folders.attachment_folders_request_builder import AttachmentFoldersRequestBuilder

        return AttachmentFoldersRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def attachments(self) -> AttachmentsRequestBuilder:
        """
        The attachments property
        """
        from .attachments.attachments_request_builder import AttachmentsRequestBuilder

        return AttachmentsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def attachments_batch_create(self) -> AttachmentsBatchCreateRequestBuilder:
        """
        The attachmentsBatchCreate property
        """
        from .attachments_batch_create.attachments_batch_create_request_builder import AttachmentsBatchCreateRequestBuilder

        return AttachmentsBatchCreateRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def budgets(self) -> BudgetsRequestBuilder:
        """
        The budgets property
        """
        from .budgets.budgets_request_builder import BudgetsRequestBuilder

        return BudgetsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def budgets_contracts_link(self) -> BudgetsContractsLinkRequestBuilder:
        """
        The budgetsContractsLink property
        """
        from .budgets_contracts_link.budgets_contracts_link_request_builder import BudgetsContractsLinkRequestBuilder

        return BudgetsContractsLinkRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def budgets_import(self) -> BudgetsImportRequestBuilder:
        """
        The budgetsImport property
        """
        from .budgets_import.budgets_import_request_builder import BudgetsImportRequestBuilder

        return BudgetsImportRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def change_orders(self) -> ChangeOrdersRequestBuilder:
        """
        The changeOrders property
        """
        from .change_orders.change_orders_request_builder import ChangeOrdersRequestBuilder

        return ChangeOrdersRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def contracts(self) -> ContractsRequestBuilder:
        """
        The contracts property
        """
        from .contracts.contracts_request_builder import ContractsRequestBuilder

        return ContractsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def cost_items(self) -> CostItemsRequestBuilder:
        """
        The costItems property
        """
        from .cost_items.cost_items_request_builder import CostItemsRequestBuilder

        return CostItemsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def cost_items_attach(self) -> CostItemsAttachRequestBuilder:
        """
        The costItemsAttach property
        """
        from .cost_items_attach.cost_items_attach_request_builder import CostItemsAttachRequestBuilder

        return CostItemsAttachRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def cost_items_batch_create(self) -> CostItemsBatchCreateRequestBuilder:
        """
        The costItemsBatchCreate property
        """
        from .cost_items_batch_create.cost_items_batch_create_request_builder import CostItemsBatchCreateRequestBuilder

        return CostItemsBatchCreateRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def cost_items_detach(self) -> CostItemsDetachRequestBuilder:
        """
        The costItemsDetach property
        """
        from .cost_items_detach.cost_items_detach_request_builder import CostItemsDetachRequestBuilder

        return CostItemsDetachRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def documents(self) -> DocumentsRequestBuilder:
        """
        The documents property
        """
        from .documents.documents_request_builder import DocumentsRequestBuilder

        return DocumentsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def expenses(self) -> ExpensesRequestBuilder:
        """
        The expenses property
        """
        from .expenses.expenses_request_builder import ExpensesRequestBuilder

        return ExpensesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def main_contracts(self) -> MainContractsRequestBuilder:
        """
        The mainContracts property
        """
        from .main_contracts.main_contracts_request_builder import MainContractsRequestBuilder

        return MainContractsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def payment_items(self) -> PaymentItemsRequestBuilder:
        """
        The paymentItems property
        """
        from .payment_items.payment_items_request_builder import PaymentItemsRequestBuilder

        return PaymentItemsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def payments(self) -> PaymentsRequestBuilder:
        """
        The payments property
        """
        from .payments.payments_request_builder import PaymentsRequestBuilder

        return PaymentsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def performance_tracking_item_instances(self) -> PerformanceTrackingItemInstancesRequestBuilder:
        """
        The performanceTrackingItemInstances property
        """
        from .performance_tracking_item_instances.performance_tracking_item_instances_request_builder import PerformanceTrackingItemInstancesRequestBuilder

        return PerformanceTrackingItemInstancesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def performance_tracking_items(self) -> PerformanceTrackingItemsRequestBuilder:
        """
        The performanceTrackingItems property
        """
        from .performance_tracking_items.performance_tracking_items_request_builder import PerformanceTrackingItemsRequestBuilder

        return PerformanceTrackingItemsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def properties(self) -> PropertiesRequestBuilder:
        """
        The properties property
        """
        from .properties.properties_request_builder import PropertiesRequestBuilder

        return PropertiesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def property_values_batch_update(self) -> PropertyValuesBatchUpdateRequestBuilder:
        """
        The propertyValuesBatchUpdate property
        """
        from .property_values_batch_update.property_values_batch_update_request_builder import PropertyValuesBatchUpdateRequestBuilder

        return PropertyValuesBatchUpdateRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def schedule_of_values(self) -> ScheduleOfValuesRequestBuilder:
        """
        The scheduleOfValues property
        """
        from .schedule_of_values.schedule_of_values_request_builder import ScheduleOfValuesRequestBuilder

        return ScheduleOfValuesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def segment_values(self) -> SegmentValuesRequestBuilder:
        """
        The segmentValues property
        """
        from .segment_values.segment_values_request_builder import SegmentValuesRequestBuilder

        return SegmentValuesRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def segments(self) -> SegmentsRequestBuilder:
        """
        The segments property
        """
        from .segments.segments_request_builder import SegmentsRequestBuilder

        return SegmentsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def taxes(self) -> TaxesRequestBuilder:
        """
        The taxes property
        """
        from .taxes.taxes_request_builder import TaxesRequestBuilder

        return TaxesRequestBuilder(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 time_sheets(self) -> TimeSheetsRequestBuilder:
        """
        The timeSheets property
        """
        from .time_sheets.time_sheets_request_builder import TimeSheetsRequestBuilder

        return TimeSheetsRequestBuilder(self.request_adapter, self.path_parameters)
    
    @property
    def workflows(self) -> WorkflowsRequestBuilder:
        """
        The workflows property
        """
        from .workflows.workflows_request_builder import WorkflowsRequestBuilder

        return WorkflowsRequestBuilder(self.request_adapter, self.path_parameters)
    

