from itertools import combinations
from typing import Any, Self
class Subset:
    _rank_binary = ...
    _rank_lex = ...
    _rank_graycode = ...
    _subset = ...
    _superset = ...
    def __new__(cls, subset, superset) -> Self:
        ...
    
    def __eq__(self, other) -> bool:
        ...
    
    def iterate_binary(self, k) -> Subset:
        ...
    
    def next_binary(self) -> Subset:
        ...
    
    def prev_binary(self) -> Subset:
        ...
    
    def next_lexicographic(self) -> Subset:
        ...
    
    def prev_lexicographic(self) -> Subset:
        ...
    
    def iterate_graycode(self, k) -> Subset:
        ...
    
    def next_gray(self) -> Subset:
        ...
    
    def prev_gray(self) -> Subset:
        ...
    
    @property
    def rank_binary(self) -> int:
        ...
    
    @property
    def rank_lexicographic(self) -> int:
        ...
    
    @property
    def rank_gray(self) -> int:
        ...
    
    @property
    def subset(self) -> None:
        ...
    
    @property
    def size(self) -> int:
        ...
    
    @property
    def superset(self) -> None:
        ...
    
    @property
    def superset_size(self) -> int:
        ...
    
    @property
    def cardinality(self) -> Any:
        ...
    
    @classmethod
    def subset_from_bitlist(cls, super_set, bitlist) -> Subset:
        ...
    
    @classmethod
    def bitlist_from_subset(cls, subset, superset) -> str:
        ...
    
    @classmethod
    def unrank_binary(cls, rank, superset) -> Subset:
        ...
    
    @classmethod
    def unrank_gray(cls, rank, superset) -> Subset:
        ...
    
    @classmethod
    def subset_indices(cls, subset, superset) -> list[Any]:
        ...
    


def ksubsets(superset, k) -> combinations[Any]:
    ...

