sig
  type contact = {
    phone_number : string;
    first_name : string;
    last_name : string option;
    user_id : int option;
  }
  val create :
    phone_number:string ->
    first_name:string ->
    ?last_name:string option ->
    ?user_id:int option -> unit -> TelegramApi.Contact.contact
  val read : Yojson.Safe.json -> TelegramApi.Contact.contact
  module Out :
    sig
      type contact = {
        chat_id : int;
        phone_number : string;
        first_name : string;
        last_name : string option;
        disable_notification : bool;
        reply_to_message_id : int option;
        reply_markup : TelegramApi.ReplyMarkup.reply_markup option;
      }
      val create :
        chat_id:int ->
        phone_number:string ->
        first_name:string ->
        ?last_name:string option ->
        ?disable_notification:bool ->
        ?reply_to:int option ->
        ?reply_markup:TelegramApi.ReplyMarkup.reply_markup option ->
        unit -> TelegramApi.Contact.Out.contact
      val prepare : TelegramApi.Contact.Out.contact -> string
    end
end