sig
  type text = {
    message_text : string;
    parse_mode : TelegramApi.ParseMode.parse_mode option;
    disable_web_page_preview : bool;
  }
  type location = { latitude : float; longitude : float; }
  type venue = {
    latitude : float;
    longitude : float;
    title : string;
    address : string;
    foursquare_id : string option;
  }
  type contact = {
    phone_number : string;
    first_name : string;
    last_name : string option;
  }
  type input_message_content =
      Text of TelegramApi.InputMessageContent.text
    | Location of TelegramApi.InputMessageContent.location
    | Venue of TelegramApi.InputMessageContent.venue
    | Contact of TelegramApi.InputMessageContent.contact
  val create_text :
    message_text:string ->
    ?parse_mode:TelegramApi.ParseMode.parse_mode ->
    ?disable_web_page_preview:bool ->
    unit -> TelegramApi.InputMessageContent.input_message_content
  val create_location :
    latitude:float ->
    longitude:float ->
    unit -> TelegramApi.InputMessageContent.input_message_content
  val create_venue :
    latitude:float ->
    longitude:float ->
    title:string ->
    address:string ->
    ?foursquare_id:string ->
    unit -> TelegramApi.InputMessageContent.input_message_content
  val create_contact :
    phone_number:string ->
    first_name:string ->
    ?last_name:string ->
    unit -> TelegramApi.InputMessageContent.input_message_content
  val prepare :
    TelegramApi.InputMessageContent.input_message_content -> Yojson.Safe.json
end