from . import Timestamp as Timestamp
from _typeshed import Incomplete
from enum import Enum
from typing import List, Optional

force_trace: bool

class TraceStatus(str, Enum):
    PENDING: str
    OK: str
    FAIL: str

class TraceWrapper:
    log: Incomplete
    class_obj: Incomplete
    tracer: Incomplete
    tracing_obj: Incomplete
    def __init__(self, class_obj: object, tracer: object, tracing_obj: List[str]) -> None: ...
    def __getattr__(self, attr_name): ...

class Trace:
    log: Incomplete
    id: Incomplete
    parent: Incomplete
    name: Incomplete
    timestamp: Incomplete
    def __init__(self, name: str, id: Optional[str] = ..., parent: Optional[str] = ...) -> None: ...
    @property
    def status(self) -> str: ...
    @staticmethod
    def trace_check(jsonrpc_elemt: dict, name: str) -> Optional['Trace']: ...
    @staticmethod
    def trace_list_check(jsonrpc_elemts: list, name: str) -> Optional[List['Trace']]: ...
    def tracing(self, name: Optional[str] = ...): ...
    def __enter__(self): ...
    def __exit__(self, exc_type, exc_val, exc_tb) -> None: ...
    def get_child(self) -> Trace: ...
    def send_pending(self, name: Optional[str] = ...): ...
    def send_ok(self, name: Optional[str] = ...): ...
    def send_failed(self, name: Optional[str] = ...): ...
