`sig
type plan
type action = Ftp_client.Action.plan -> unit
val ftp_state : Ftp_client.Action.plan -> Ftp_client.ftp_state
val execute :
onreply:(Ftp_client.ftp_state -> Ftp_client.reply -> unit) ->
onerror:(Ftp_client.ftp_state -> Ftp_client.reply -> unit) ->
Ftp_client.ftp_client_pi -> Ftp_client.Action.action -> unit
val empty : Ftp_client.Action.action
val command : Ftp_client.cmd -> Ftp_client.Action.action
val dyn_command : (unit -> Ftp_client.cmd) -> Ftp_client.Action.action
val seq2 :
Ftp_client.Action.action ->
Ftp_client.Action.action -> Ftp_client.Action.action
val full_seq2 :
Ftp_client.Action.action ->
(Ftp_client.reply -> Ftp_client.Action.action) ->
Ftp_client.Action.action
val seq : Ftp_client.Action.action list -> Ftp_client.Action.action
val expect :
Ftp_client.cmd_state ->
Ftp_client.Action.action -> Ftp_client.Action.action
val seq2_case :
Ftp_client.Action.action ->
(Ftp_client.cmd_state * Ftp_client.Action.action) list ->
Ftp_client.Action.action
end`