pub trait ControllerProxyInterface: Send + Sync {
type BindResponseFut: Future<Output = Result<ControllerBindResult, Error>> + Send;
type RebindResponseFut: Future<Output = Result<ControllerRebindResult, Error>> + Send;
type UnbindChildrenResponseFut: Future<Output = Result<ControllerUnbindChildrenResult, Error>> + Send;
type ScheduleUnbindResponseFut: Future<Output = Result<ControllerScheduleUnbindResult, Error>> + Send;
type GetTopologicalPathResponseFut: Future<Output = Result<ControllerGetTopologicalPathResult, Error>> + Send;
// Required methods
fn connect_to_device_fidl(&self, server: Channel) -> Result<(), Error>;
fn connect_to_controller(
&self,
server: ServerEnd<ControllerMarker>,
) -> Result<(), Error>;
fn bind(&self, driver: &str) -> Self::BindResponseFut;
fn rebind(&self, driver: &str) -> Self::RebindResponseFut;
fn unbind_children(&self) -> Self::UnbindChildrenResponseFut;
fn schedule_unbind(&self) -> Self::ScheduleUnbindResponseFut;
fn get_topological_path(&self) -> Self::GetTopologicalPathResponseFut;
}