from _typeshed import Incomplete
from collections.abc import KeysView
from pydicom.sr._cid_dict import name_for_cid as name_for_cid
from pydicom.sr.coding import Code as Code
from typing import Any

cid_for_name: Incomplete
CIDValueType = dict[str, tuple[str, list[int]]]
ConceptsType = dict[str, CIDValueType]
SnomedMappingType = dict[str, dict[str, str]]

class Collection:
    repr_format: str
    def __init__(self, name: str) -> None: ...
    @property
    def concepts(self) -> dict[str, Code]: ...
    def __contains__(self, item: str | Code) -> bool: ...
    def __dir__(self) -> list[str]: ...
    def dir(self, *filters: str) -> list[str]: ...
    def __getattr__(self, name: str) -> Code: ...
    @property
    def is_cid(self) -> bool: ...
    @property
    def name(self) -> str: ...
    @property
    def scheme_designator(self) -> str: ...
    def trait_names(self) -> list[str]: ...

class Concepts:
    def __init__(self, collections: list[Collection]) -> None: ...
    @property
    def collections(self) -> KeysView[str]: ...
    def __getattr__(self, name: str) -> Any: ...
    def schemes(self) -> list[str]: ...
    def CIDs(self) -> list[str]: ...

codes: Incomplete
