import json

from _typeshed import Incomplete
from prov.constants import *
from prov.model import Identifier as Identifier
from prov.model import Literal as Literal
from prov.model import Namespace as Namespace
from prov.model import ProvBundle as ProvBundle
from prov.model import ProvDocument as ProvDocument
from prov.model import first as first
from prov.model import parse_xsd_datetime as parse_xsd_datetime
from prov.serializers import Error as Error
from prov.serializers import Serializer as Serializer

logger: Incomplete

class ProvJSONException(Error): ...

class AnonymousIDGenerator:
    def __init__(self) -> None: ...
    def get_anon_id(self, obj, local_prefix: str = ...): ...

LITERAL_XSDTYPE_MAP: Incomplete

class ProvJSONSerializer(Serializer):
    def serialize(self, stream, **kwargs) -> None: ...
    def deserialize(self, stream, **kwargs): ...

class ProvJSONEncoder(json.JSONEncoder):
    def default(self, o): ...

class ProvJSONDecoder(json.JSONDecoder):
    def decode(self, s, *args, **kwargs): ...

def valid_qualified_name(bundle, value): ...
def encode_json_document(document): ...
def encode_json_container(bundle): ...
def decode_json_document(content, document) -> None: ...
def decode_json_container(jc, bundle) -> None: ...
def encode_json_representation(value): ...
def decode_json_representation(literal, bundle): ...
def literal_json_representation(literal): ...
