sig
  type photo_size = {
    file_id : string;
    width : int;
    height : int;
    file_size : int option;
  }
  val create :
    file_id:string ->
    width:int ->
    height:int -> ?file_size:int option -> unit -> Api.PhotoSize.photo_size
  val read : Yojson.Safe.json -> Api.PhotoSize.photo_size
  module Out :
    sig
      type photo_size = {
        chat_id : int;
        photo : string;
        caption : string option;
        reply_to_message_id : int option;
        reply_markup : unit option;
      }
      val create :
        chat_id:int ->
        photo:string ->
        ?caption:string option ->
        ?reply_to:int option -> unit -> Api.PhotoSize.Out.photo_size
      val prepare : Api.PhotoSize.Out.photo_size -> string
      val prepare_multipart :
        Api.PhotoSize.Out.photo_size -> string -> string Lwt.t
    end
end