#  Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.

from typing import Any

class DependencyProcessor:
    prop: Any
    cascade: Any
    mapper: Any
    parent: Any
    secondary: Any
    direction: Any
    post_update: Any
    passive_deletes: Any
    passive_updates: Any
    enable_typechecks: Any
    sort_key: Any
    key: Any
    def __init__(self, prop) -> None: ...
    @classmethod
    def from_relationship(cls, prop): ...
    def hasparent(self, state): ...
    def per_property_preprocessors(self, uow) -> None: ...
    def per_property_flush_actions(self, uow) -> None: ...
    def per_state_flush_actions(self, uow, states, isdelete) -> None: ...
    def presort_deletes(self, uowcommit, states): ...
    def presort_saves(self, uowcommit, states): ...
    def process_deletes(self, uowcommit, states) -> None: ...
    def process_saves(self, uowcommit, states) -> None: ...
    def prop_has_changes(self, uowcommit, states, isdelete): ...

class OneToManyDP(DependencyProcessor):
    def per_property_dependencies(
        self, uow, parent_saves, child_saves, parent_deletes, child_deletes, after_save, before_delete
    ) -> None: ...
    def per_state_dependencies(
        self, uow, save_parent, delete_parent, child_action, after_save, before_delete, isdelete, childisdelete
    ) -> None: ...
    def presort_deletes(self, uowcommit, states) -> None: ...
    def presort_saves(self, uowcommit, states) -> None: ...
    def process_deletes(self, uowcommit, states) -> None: ...
    def process_saves(self, uowcommit, states) -> None: ...

class ManyToOneDP(DependencyProcessor):
    def __init__(self, prop) -> None: ...
    def per_property_dependencies(
        self, uow, parent_saves, child_saves, parent_deletes, child_deletes, after_save, before_delete
    ) -> None: ...
    def per_state_dependencies(
        self, uow, save_parent, delete_parent, child_action, after_save, before_delete, isdelete, childisdelete
    ) -> None: ...
    def presort_deletes(self, uowcommit, states) -> None: ...
    def presort_saves(self, uowcommit, states) -> None: ...
    def process_deletes(self, uowcommit, states) -> None: ...
    def process_saves(self, uowcommit, states) -> None: ...

class DetectKeySwitch(DependencyProcessor):
    def per_property_preprocessors(self, uow) -> None: ...
    def per_property_flush_actions(self, uow) -> None: ...
    def per_state_flush_actions(self, uow, states, isdelete) -> None: ...
    def presort_deletes(self, uowcommit, states) -> None: ...
    def presort_saves(self, uow, states) -> None: ...
    def prop_has_changes(self, uow, states, isdelete): ...
    def process_deletes(self, uowcommit, states) -> None: ...
    def process_saves(self, uowcommit, states) -> None: ...

class ManyToManyDP(DependencyProcessor):
    def per_property_dependencies(
        self, uow, parent_saves, child_saves, parent_deletes, child_deletes, after_save, before_delete
    ) -> None: ...
    def per_state_dependencies(
        self, uow, save_parent, delete_parent, child_action, after_save, before_delete, isdelete, childisdelete
    ) -> None: ...
    def presort_deletes(self, uowcommit, states) -> None: ...
    def presort_saves(self, uowcommit, states) -> None: ...
    def process_deletes(self, uowcommit, states) -> None: ...
    def process_saves(self, uowcommit, states) -> None: ...
