# fmt: off
from typing import Any

from .descriptor_props import CompositeProperty as CompositeProperty
from .descriptor_props import ConcreteInheritedProperty as ConcreteInheritedProperty
from .descriptor_props import SynonymProperty as SynonymProperty
from .interfaces import PropComparator
from .interfaces import StrategizedProperty
from .relationships import RelationshipProperty as RelationshipProperty
from .. import util
# fmt: on

class ColumnProperty(StrategizedProperty):
    strategy_wildcard_key: str = ...
    inherit_cache: bool = ...
    columns: Any = ...
    group: Any = ...
    deferred: Any = ...
    raiseload: Any = ...
    instrument: Any = ...
    comparator_factory: Any = ...
    descriptor: Any = ...
    active_history: Any = ...
    expire_on_flush: Any = ...
    info: Any = ...
    doc: Any = ...
    strategy_key: Any = ...
    def __init__(self, *columns: Any, **kwargs: Any) -> None: ...
    def __clause_element__(self): ...
    @property
    def expression(self): ...
    def instrument_class(self, mapper: Any) -> None: ...
    def do_init(self) -> None: ...
    def copy(self): ...
    def merge(
        self,
        session: Any,
        source_state: Any,
        source_dict: Any,
        dest_state: Any,
        dest_dict: Any,
        load: Any,
        _recursive: Any,
        _resolve_conflict_map: Any,
    ) -> None: ...
    class Comparator(util.MemoizedSlots, PropComparator):
        def _memoized_method___clause_element__(self): ...
        def operate(self, op: Any, *other: Any, **kwargs: Any): ...
        def reverse_operate(self, op: Any, other: Any, **kwargs: Any): ...
