# fmt: off
from typing import Any
from typing import Optional

from .array import ARRAY as ARRAY
from ... import util as util
from ...sql import coercions as coercions
from ...sql import elements as elements
from ...sql import expression as expression
from ...sql import functions as functions
from ...sql import roles as roles
from ...sql import schema as schema
from ...sql.schema import ColumnCollectionConstraint as ColumnCollectionConstraint
# fmt: on

class aggregate_order_by(expression.ColumnElement):
    __visit_name__: str = ...
    stringify_dialect: str = ...
    target: Any = ...
    order_by: Any = ...
    def __init__(self, target: Any, *order_by: Any) -> None: ...
    def self_group(self, against: Optional[Any] = ...): ...
    def get_children(self, **kwargs: Any): ...

class ExcludeConstraint(ColumnCollectionConstraint):
    __visit_name__: str = ...
    where: Any = ...
    create_drop_stringify_dialect: str = ...
    operators: Any = ...
    using: Any = ...
    ops: Any = ...
    def __init__(self, *elements: Any, **kw: Any) -> None: ...
    def copy(self, target_table: Optional[Any] = ..., **kw: Any): ...

def array_agg(*arg: Any, **kw: Any): ...
