from typing import AnyStr

from .base import Executable, DialectKWArgs
from .elements import ClauseElement
from .selectable import HasPrefixes

class UpdateBase(DialectKWArgs, HasPrefixes, Executable, ClauseElement):
    def params(self, *arg, **kw): ...
    @property
    def bind(self): ...
    def returning(self, *cols): ...
    def with_hint(self, text, selectable=..., dialect_name: AnyStr=...): ...

class ValuesBase(UpdateBase):
    def values(self, *args, **kwargs): ...
    def return_defaults(self, *cols): ...

class Insert(ValuesBase): ...
class Update(ValuesBase): ...
class Delete(UpdateBase): ...
