from _typeshed import Incomplete
from typing import Final

# TODO: Add POSIX constants and check their aviability (see psutil_posix_add_constants)
RLIM_INFINITY: Final[int]
RLIMIT_AS: Final[int]
RLIMIT_CORE: Final[int]
RLIMIT_CPU: Final[int]
RLIMIT_DATA: Final[int]
RLIMIT_FSIZE: Final[int]
RLIMIT_LOCKS: Final[int]
RLIMIT_MEMLOCK: Final[int]
RLIMIT_MSGQUEUE: Final[int]
RLIMIT_NICE: Final[int]
RLIMIT_NOFILE: Final[int]
RLIMIT_NPROC: Final[int]
RLIMIT_RSS: Final[int]
RLIMIT_RTPRIO: Final[int]
RLIMIT_RTTIME: Final[int]
RLIMIT_SIGPENDING: Final[int]
RLIMIT_STACK: Final[int]

def getpagesize() -> int: ...
def net_if_addrs(): ...
def net_if_flags(nic_name: str, /) -> list[str]: ...
def net_if_is_running(nic_name: str, /) -> bool: ...
def net_if_mtu(nic_name: str, /) -> int: ...
def proc_priority_get(pid: int, /) -> int: ...
def proc_priority_set(pid: int, priority: int, /) -> None: ...
def users() -> list[tuple[Incomplete, ...]]: ...

version: int
DUPLEX_FULL: int
DUPLEX_HALF: int
DUPLEX_UNKNOWN: int

def proc_ioprio_get(pid: int, /): ...
def proc_ioprio_set(*args, **kwargs): ...
def proc_cpu_affinity_get(pid: int, /): ...
def proc_cpu_affinity_set(*args, **kwargs): ...
def disk_partitions(mtab_path: str, /): ...
def net_if_duplex_speed(nic_name: str, /): ...
def linux_sysinfo() -> tuple[int, int, int, int, int, int, int]: ...
def check_pid_range(pid: int, /) -> None: ...
def set_debug(value: bool, /) -> None: ...
