<?php

namespace DynamicOOOS\TelegramBot\Api\Types;

use DynamicOOOS\TelegramBot\Api\BaseType;
use DynamicOOOS\TelegramBot\Api\InvalidArgumentException;
use DynamicOOOS\TelegramBot\Api\TypeInterface;
/**
 * Class User
 * This object represents a Telegram user or bot.
 *
 * @package TelegramBot\Api\Types
 */
class User extends BaseType implements TypeInterface
{
    /**
     * {@inheritdoc}
     *
     * @var array
     */
    protected static $requiredParams = ['id', 'first_name'];
    /**
     * {@inheritdoc}
     *
     * @var array
     */
    protected static $map = ['id' => \true, 'first_name' => \true, 'last_name' => \true, 'username' => \true, 'language_code' => \true, 'is_bot' => \true];
    /**
     * Unique identifier for this user or bot
     *
     * @var int
     */
    protected $id;
    /**
     * User‘s or bot’s first name
     *
     * @var string
     */
    protected $firstName;
    /**
     * Optional. User‘s or bot’s last name
     *
     * @var string
     */
    protected $lastName;
    /**
     * Optional. User‘s or bot’s username
     *
     * @var string
     */
    protected $username;
    /**
     * Optional. IETF language tag of the user's language
     *
     * @var string
     */
    protected $languageCode;
    /**
     * True, if this user is a bot
     *
     * @var bool
     */
    protected $isBot;
    /**
     * @return string
     */
    public function getFirstName()
    {
        return $this->firstName;
    }
    /**
     * @param string $firstName
     */
    public function setFirstName($firstName)
    {
        $this->firstName = $firstName;
    }
    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * @param int $id
     *
     * @throws InvalidArgumentException
     */
    public function setId($id)
    {
        if (\is_integer($id) || \is_float($id)) {
            $this->id = $id;
        } else {
            throw new InvalidArgumentException();
        }
    }
    /**
     * @return string
     */
    public function getLastName()
    {
        return $this->lastName;
    }
    /**
     * @param string $lastName
     */
    public function setLastName($lastName)
    {
        $this->lastName = $lastName;
    }
    /**
     * @return string
     */
    public function getUsername()
    {
        return $this->username;
    }
    /**
     * @param string $username
     */
    public function setUsername($username)
    {
        $this->username = $username;
    }
    /**
     * @return string
     */
    public function getLanguageCode()
    {
        return $this->languageCode;
    }
    /**
     * @param string $languageCode
     */
    public function setLanguageCode($languageCode)
    {
        $this->languageCode = $languageCode;
    }
    /**
     * @return bool
     */
    public function isBot()
    {
        return $this->isBot;
    }
    /**
     * @param bool $isBot
     */
    public function setIsBot($isBot)
    {
        $this->isBot = $isBot;
    }
}
