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

class LuenbergerObserver(pydrake.systems.framework.LeafSystem):
    def __init__(self, observed_system: pydrake.systems.framework.System, observed_system_context: pydrake.systems.framework.Context, observer_gain: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]) -> None: ...
    def L(self) -> numpy.ndarray[numpy.float64[m, n]]: ...
    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) -> numpy.ndarray[numpy.float64[m, n]]: ...

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: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]) -> None: ...
    def L(self) -> numpy.ndarray[numpy.float64[m, n]]: ...
    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) -> numpy.ndarray[numpy.float64[m, n]]: ...

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: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]) -> None: ...
    def L(self) -> numpy.ndarray[numpy.float64[m, n]]: ...
    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) -> numpy.ndarray[numpy.float64[m, n]]: ...

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: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]) -> None: ...
    def L(self) -> numpy.ndarray[numpy.float64[m, n]]: ...
    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) -> numpy.ndarray[numpy.float64[m, n]]: ...

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: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]) -> None: ...
    def L(self) -> numpy.ndarray[numpy.float64[m, n]]: ...
    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) -> numpy.ndarray[numpy.float64[m, n]]: ...

def DiscreteTimeSteadyStateKalmanFilter(A: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous], C: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous], W: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous], V: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]) -> numpy.ndarray[numpy.float64[m, n]]: ...
def SteadyStateKalmanFilter(A: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous], C: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous], W: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous], V: numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]) -> numpy.ndarray[numpy.float64[m, n]]: ...
