from typing import Any as _Any

import sqlalchemy.types as sqltypes

from ...sql import expression

def Any(other, arrexpr, operator=...): ...
def All(other, arrexpr, operator=...): ...

class array(expression.ClauseList, expression.ColumnElement):
    __visit_name__: str
    stringify_dialect: str
    inherit_cache: bool
    type: _Any
    def __init__(self, clauses, **kw) -> None: ...
    def self_group(self, against: _Any | None = ...): ...

CONTAINS: _Any
CONTAINED_BY: _Any
OVERLAP: _Any

class ARRAY(sqltypes.ARRAY):
    class Comparator(sqltypes.ARRAY.Comparator):
        def contains(self, other, **kwargs): ...
        def contained_by(self, other): ...
        def overlap(self, other): ...
    comparator_factory: _Any
    item_type: _Any
    as_tuple: _Any
    dimensions: _Any
    zero_indexes: _Any
    def __init__(self, item_type, as_tuple: bool = ..., dimensions: _Any | None = ..., zero_indexes: bool = ...) -> None: ...
    @property
    def hashable(self): ...
    @property
    def python_type(self): ...
    def compare_values(self, x, y): ...
    def bind_expression(self, bindvalue): ...
    def bind_processor(self, dialect): ...
    def result_processor(self, dialect, coltype): ...
