# suma_ulsa/networking/__init__.pyi

from typing import Any, Dict, List, Optional

class SubnetCalculator:
    def __init__(self, ip: str, subnet_quantity: int) -> None: ...
    
    @property
    def ip(self) -> str: ...
    
    @property
    def subnet_quantity(self) -> int: ...
    
    @property
    def hosts_per_subnet(self) -> int: ...
    
    @property
    def network_class(self) -> str: ...
    
    @property
    def subnet_mask(self) -> str: ...
    
    @property
    def new_subnet_mask(self) -> str: ...
    
    @property
    def network_jump(self) -> str: ...
    
    def summary(self) -> str: ...
    
    def print_summary(self) -> None: ...
    
    def print_table(self) -> None: ...
    
    def subnets_table(self) -> str: ...
    
    def get_rows(self) -> List['SubnetRow']: ...
    
    def get_row(self, subnet_number: int) -> 'SubnetRow': ...
    
    def to_dict(self) -> Dict[str, Any]: ...
    
    def to_json(self) -> str: ...
    
    def to_csv(self) -> str: ...
    
    def to_yaml(self) -> str: ...
    
    def to_xml(self) -> str: ...
    
    def to_markdown(self) -> str: ...
    
    def export_to_file(self, filename: str, format: str) -> None: ...
    
    def __str__(self) -> str: ...
    
    def __repr__(self) -> str: ...

class SubnetRow:
    @property
    def subred(self) -> int: ...
    
    @property
    def direccion_red(self) -> str: ...
    
    @property
    def primera_ip(self) -> str: ...
    
    @property
    def ultima_ip(self) -> str: ...
    
    @property
    def broadcast(self) -> str: ...
    
    def to_dict(self) -> Dict[str, Any]: ...
    
    def to_pretty_string(self) -> str: ...
    
    def to_json(self) -> str: ...
    
    def to_csv(self) -> str: ...
    
    def to_yaml(self) -> str: ...
    
    def __str__(self) -> str: ...
    
    def __repr__(self) -> str: ...

def create_subnet_calculator(ip: str, subnet_quantity: int) -> SubnetCalculator: ...

# Constantes y tipos adicionales para mejor tipado
IPAddress = str
SubnetMask = str
NetworkClass = str

# Formatos de exportación soportados
ExportFormat = str  # "json", "csv", "yaml", "yml", "xml", "md", "markdown", "txt", "text"