from __future__ import annotations

from typing import Any, Optional

from ..fluid.profiler import cuda_profiler as cuda_profiler
from ..fluid.profiler import profiler as profiler
from ..fluid.profiler import reset_profiler as reset_profiler
from ..fluid.profiler import start_profiler as start_profiler
from ..fluid.profiler import stop_profiler as stop_profiler

class ProfilerOptions:
    options: Any = ...
    def __init__(self, options: Optional[Any] = ...) -> None: ...
    def with_state(self, state: Any): ...
    def __getitem__(self, name: Any): ...

class Profiler:
    profiler_options: Any = ...
    batch_id: int = ...
    enabled: Any = ...
    def __init__(self, enabled: bool = ..., options: Optional[Any] = ...) -> None: ...
    previous_profiler: Any = ...
    def __enter__(self): ...
    def __exit__(self, exception_type: Any, exception_value: Any, traceback: Any) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def reset(self) -> None: ...
    def record_step(self, change_profiler_status: bool = ...) -> None: ...

def get_profiler(): ...
