from typing import Any, Generic, List, Optional, Sequence, TypeVar

from django.db.models.fields import Field
from .mixins import CheckFieldDefaultMixin

_T = TypeVar("_T", bound=Field)

class ArrayField(CheckFieldDefaultMixin, Field, Generic[_T]):
    empty_strings_allowed: bool = ...
    default_error_messages: Any = ...
    base_field: Any = ...
    size: Any = ...
    default_validators: Any = ...
    from_db_value: Any = ...
    def __init__(self, base_field: _T, size: Optional[int] = ..., **kwargs: Any) -> None: ...
    @property
    def description(self): ...
    def get_transform(self, name: Any): ...
    def __set__(self, instance, value: Sequence[_T]) -> None: ...
    def __get__(self, instance, owner) -> List[_T]: ...
