from typing import Any

from typing import overload

import osmium.osm

class File:
    has_multiple_object_versions: bool
    @overload
    def __init__(self, filename: str) -> None: ...
    @overload
    def __init__(self, filename: str, format: str) -> None: ...
    def parse_format(self, arg0: str) -> None: ...

class Header:
    has_multiple_object_versions: bool
    def __init__(self) -> None: ...
    def add_box(self, box: osmium.osm.Box) -> Header: ...
    def box(self) -> osmium.osm.Box: ...
    def get(self, key: str, default: str = ...) -> str: ...
    def set(self, key: str, value: str) -> None: ...

class Reader:
    @overload
    def __init__(self, filename: str) -> None: ...
    @overload
    def __init__(self, filename: str, types: osmium.osm.osm_entity_bits) -> None: ...
    def close(self) -> None: ...
    def eof(self) -> bool: ...
    def header(self) -> Header: ...

class Writer:
    @overload
    def __init__(self, filename: str) -> None: ...
    @overload
    def __init__(self, ffile: File) -> None: ...
    @overload
    def __init__(self, filename: str, header: Header) -> None: ...
    @overload
    def __init__(self, ffile: File, header: Header) -> None: ...
    def close(self) -> int: ...
