from typing import Any, Callable, Optional

class Filter:
    creation_counter: int = ...
    field_class: Any = ...
    field_name: Any = ...
    lookup_expr: Any = ...
    distinct: Any = ...
    exclude: Any = ...
    extra: Any = ...
    def __init__(
        self,
        field_name: Optional[Any] = ...,
        lookup_expr: str = ...,
        *,
        label: Optional[Any] = ...,
        method: Optional[Any] = ...,
        distinct: bool = ...,
        exclude: bool = ...,
        **kwargs: Any
    ) -> None: ...
    def get_method(self, qs: Any): ...
    method: Callable = ...
    label: Any = ...
    @property
    def field(self): ...
    def filter(self, qs: Any, value: Any): ...

class CharFilter(Filter):
    field_class: Any = ...

class BooleanFilter(Filter):
    field_class: Any = ...

class ChoiceFilter(Filter):
    field_class: Any = ...
    null_value: Any = ...
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...
    def filter(self, qs: Any, value: Any): ...

class TypedChoiceFilter(Filter):
    field_class: Any = ...

class UUIDFilter(Filter):
    field_class: Any = ...

class MultipleChoiceFilter(Filter):
    field_class: Any = ...
    always_filter: bool = ...
    conjoined: Any = ...
    null_value: Any = ...
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...
    def is_noop(self, qs: Any, value: Any): ...
    def filter(self, qs: Any, value: Any): ...
    def get_filter_predicate(self, v: Any): ...

class TypedMultipleChoiceFilter(MultipleChoiceFilter):
    field_class: Any = ...

class DateFilter(Filter):
    field_class: Any = ...

class DateTimeFilter(Filter):
    field_class: Any = ...

class IsoDateTimeFilter(DateTimeFilter):
    field_class: Any = ...

class TimeFilter(Filter):
    field_class: Any = ...

class DurationFilter(Filter):
    field_class: Any = ...

class QuerySetRequestMixin:
    queryset: Any = ...
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...
    def get_request(self): ...
    def get_queryset(self, request: Any): ...
    @property
    def field(self): ...

class ModelChoiceFilter(QuerySetRequestMixin, ChoiceFilter):
    field_class: Any = ...
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...

class ModelMultipleChoiceFilter(QuerySetRequestMixin, MultipleChoiceFilter):
    field_class: Any = ...

class NumberFilter(Filter):
    field_class: Any = ...

class NumericRangeFilter(Filter):
    field_class: Any = ...
    lookup_expr: str = ...
    def filter(self, qs: Any, value: Any): ...

class RangeFilter(Filter):
    field_class: Any = ...
    lookup_expr: str = ...
    def filter(self, qs: Any, value: Any): ...

class DateRangeFilter(ChoiceFilter):
    choices: Any = ...
    filters: Any = ...
    def __init__(
        self,
        choices: Optional[Any] = ...,
        filters: Optional[Any] = ...,
        *args: Any,
        **kwargs: Any
    ) -> None: ...
    def filter(self, qs: Any, value: Any): ...

class DateFromToRangeFilter(RangeFilter):
    field_class: Any = ...

class DateTimeFromToRangeFilter(RangeFilter):
    field_class: Any = ...

class IsoDateTimeFromToRangeFilter(RangeFilter):
    field_class: Any = ...

class TimeRangeFilter(RangeFilter):
    field_class: Any = ...

class AllValuesFilter(ChoiceFilter):
    @property
    def field(self): ...

class AllValuesMultipleFilter(MultipleChoiceFilter):
    @property
    def field(self): ...

class BaseCSVFilter(Filter):
    base_field_class: Any = ...
    field_class: Any = ...
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...

class BaseInFilter(BaseCSVFilter):
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...

class BaseRangeFilter(BaseCSVFilter):
    base_field_class: Any = ...
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...

class LookupChoiceFilter(Filter):
    field_class: Any = ...
    outer_class: Any = ...
    empty_label: Any = ...
    lookup_choices: Any = ...
    def __init__(
        self,
        field_name: Optional[Any] = ...,
        lookup_choices: Optional[Any] = ...,
        field_class: Optional[Any] = ...,
        **kwargs: Any
    ) -> None: ...
    @classmethod
    def normalize_lookup(cls, lookup: Any): ...
    def get_lookup_choices(self): ...
    @property
    def field(self): ...
    lookup_expr: Any = ...
    def filter(self, qs: Any, lookup: Any): ...

class OrderingFilter(BaseCSVFilter, ChoiceFilter):
    descending_fmt: Any = ...
    param_map: Any = ...
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...
    def get_ordering_value(self, param: Any): ...
    def filter(self, qs: Any, value: Any): ...
    @classmethod
    def normalize_fields(cls, fields: Any): ...
    def build_choices(self, fields: Any, labels: Any): ...

class FilterMethod:
    f: Any = ...
    def __init__(self, filter_instance: Any) -> None: ...
    def __call__(self, qs: Any, value: Any): ...
    @property
    def method(self): ...
