import nanobind
import pydrake.systems.framework
from pydrake.common.cpp_template import LuenbergerObserver_ as LuenbergerObserver_
from typing import ClassVar

DiscreteTimeSteadyStateKalmanFilter: nanobind.nb_func
SteadyStateKalmanFilter: nanobind.nb_func

class LuenbergerObserver(pydrake.systems.framework.LeafSystem):
    def __init__(self, observed_system: pydrake.systems.framework.System, observed_system_context: pydrake.systems.framework.Context, observer_gain) -> None: ...
    def L(self, *args, **kwargs): ...
    def get_estimated_state_output_port(self) -> pydrake.systems.framework.OutputPort: ...
    def get_observed_system_input_input_port(self) -> pydrake.systems.framework.InputPort: ...
    def get_observed_system_output_input_port(self) -> pydrake.systems.framework.InputPort: ...
    def observer_gain(self, *args, **kwargs): ...

class LuenbergerObserver_𝓣AutoDiffXd𝓤(pydrake.systems.framework.LeafSystem_TAutoDiffXdU):
    _original_name: ClassVar[str] = ...
    _original_qualname: ClassVar[str] = ...
    def __init__(self, observed_system: pydrake.systems.framework.System_TAutoDiffXdU, observed_system_context: pydrake.systems.framework.Context_TAutoDiffXdU, observer_gain) -> None: ...
    def L(self, *args, **kwargs): ...
    def get_estimated_state_output_port(self) -> pydrake.systems.framework.OutputPort_TAutoDiffXdU: ...
    def get_observed_system_input_input_port(self) -> pydrake.systems.framework.InputPort_TAutoDiffXdU: ...
    def get_observed_system_output_input_port(self) -> pydrake.systems.framework.InputPort_TAutoDiffXdU: ...
    def observer_gain(self, *args, **kwargs): ...

class LuenbergerObserver_𝓣Expression𝓤(pydrake.systems.framework.LeafSystem_TExpressionU):
    _original_name: ClassVar[str] = ...
    _original_qualname: ClassVar[str] = ...
    def __init__(self, observed_system: pydrake.systems.framework.System_TExpressionU, observed_system_context: pydrake.systems.framework.Context_TExpressionU, observer_gain) -> None: ...
    def L(self, *args, **kwargs): ...
    def get_estimated_state_output_port(self) -> pydrake.systems.framework.OutputPort_TExpressionU: ...
    def get_observed_system_input_input_port(self) -> pydrake.systems.framework.InputPort_TExpressionU: ...
    def get_observed_system_output_input_port(self) -> pydrake.systems.framework.InputPort_TExpressionU: ...
    def observer_gain(self, *args, **kwargs): ...

class _TemporaryName_N5drake7systems10estimators18LuenbergerObserverINS_2ad8AutoDiffEEE(pydrake.systems.framework.LeafSystem_TAutoDiffXdU):
    _original_name: ClassVar[str] = ...
    _original_qualname: ClassVar[str] = ...
    def __init__(self, observed_system: pydrake.systems.framework.System_TAutoDiffXdU, observed_system_context: pydrake.systems.framework.Context_TAutoDiffXdU, observer_gain) -> None: ...
    def L(self, *args, **kwargs): ...
    def get_estimated_state_output_port(self) -> pydrake.systems.framework.OutputPort_TAutoDiffXdU: ...
    def get_observed_system_input_input_port(self) -> pydrake.systems.framework.InputPort_TAutoDiffXdU: ...
    def get_observed_system_output_input_port(self) -> pydrake.systems.framework.InputPort_TAutoDiffXdU: ...
    def observer_gain(self, *args, **kwargs): ...

class _TemporaryName_N5drake7systems10estimators18LuenbergerObserverINS_8symbolic10ExpressionEEE(pydrake.systems.framework.LeafSystem_TExpressionU):
    _original_name: ClassVar[str] = ...
    _original_qualname: ClassVar[str] = ...
    def __init__(self, observed_system: pydrake.systems.framework.System_TExpressionU, observed_system_context: pydrake.systems.framework.Context_TExpressionU, observer_gain) -> None: ...
    def L(self, *args, **kwargs): ...
    def get_estimated_state_output_port(self) -> pydrake.systems.framework.OutputPort_TExpressionU: ...
    def get_observed_system_input_input_port(self) -> pydrake.systems.framework.InputPort_TExpressionU: ...
    def get_observed_system_output_input_port(self) -> pydrake.systems.framework.InputPort_TExpressionU: ...
    def observer_gain(self, *args, **kwargs): ...
