module Peer_info : sig ... endval create : ?flows:Async_smtp__.Mail_log.Flows.t ‑> emulate_tls_for_test:bool ‑> dest:Async_smtp_types.Smtp_socket_address.t ‑> Async.Reader.t ‑> Async.Writer.t ‑> Async_smtp__.Client_config.t ‑> tval create_bsmtp : ?flows:Async_smtp__.Mail_log.Flows.t ‑> Async.Writer.t ‑> Async_smtp__.Client_config.t ‑> tval config : t ‑> Async_smtp__.Client_config.tval info : t ‑> Peer_info.t optionval is_using_tls : t ‑> boolval with_session : t ‑> log:Async_smtp__.Mail_log.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> credentials:Async_smtp__.Credentials.t ‑> f:(t ‑> 'a Async.Deferred.Or_error.t) ‑> 'a Async.Deferred.Or_error.tval do_helo : t ‑> log:Async_smtp__.Mail_log.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> unit Async.Deferred.Or_error.tval send : t ‑> log:Async_smtp__.Mail_log.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> Async_smtp.Smtp_command.t ‑> unit Async.Deferred.Or_error.tval receive : ?on_eof:(?partial:Async_smtp.Smtp_reply.partial ‑> unit ‑> Async_smtp.Smtp_reply.t Async.Deferred.Or_error.t) ‑> ?timeout:Core.Time.Span.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> t ‑> log:Async_smtp__.Mail_log.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> [ `Bsmtp | `Received of Async_smtp.Smtp_reply.t ] Async.Deferred.Or_error.tval send_receive : ?on_eof:(?partial:Async_smtp.Smtp_reply.partial ‑> unit ‑> Async_smtp.Smtp_reply.t Async.Deferred.Or_error.t) ‑> ?timeout:Core.Time.Span.t ‑> t ‑> log:Async_smtp__.Mail_log.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> Async_smtp.Smtp_command.t ‑> [ `Bsmtp | `Received of Async_smtp.Smtp_reply.t ] Async.Deferred.Or_error.tval send_string : t ‑> log:Async_smtp__.Mail_log.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> string ‑> unit Async.Deferred.Or_error.tval send_receive_string : ?on_eof:(?partial:Async_smtp.Smtp_reply.partial ‑> unit ‑> Async_smtp.Smtp_reply.t Async.Deferred.Or_error.t) ‑> ?timeout:Core.Time.Span.t ‑> t ‑> log:Async_smtp__.Mail_log.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> string ‑> [ `Bsmtp | `Received of Async_smtp.Smtp_reply.t ] Async.Deferred.Or_error.tval writer : t ‑> Async.Writer.tval reader : t ‑> Async.Reader.t optionval remote_address : t ‑> Async_smtp_types.Smtp_socket_address.t option