pub trait TorProvider: Send {
// Required methods
fn update(&mut self) -> Result<Vec<TorEvent>, Error>;
fn bootstrap(&mut self) -> Result<(), Error>;
fn add_client_auth(
&mut self,
service_id: &V3OnionServiceId,
client_auth: &X25519PrivateKey
) -> Result<(), Error>;
fn remove_client_auth(
&mut self,
service_id: &V3OnionServiceId
) -> Result<(), Error>;
fn connect(
&mut self,
service_id: &V3OnionServiceId,
virt_port: u16,
circuit: Option<CircuitToken>
) -> Result<OnionStream, Error>;
fn listener(
&mut self,
private_key: &Ed25519PrivateKey,
virt_port: u16,
authorized_clients: Option<&[X25519PublicKey]>
) -> Result<OnionListener, Error>;
fn generate_token(&mut self) -> CircuitToken;
fn release_token(&mut self, token: CircuitToken);
}