<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: keyapis/signal/v1/keyapis_signal_signal_v1.proto

namespace Keyapis\Signal\V1;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * Сигнал.
 * Если информация неизвестна то колонки заполняются следующим образом:
 * 1/ Cтрока - как пустая строка;
 * 2/ Цифра - как 0;
 * 3/ Массив - как пустой массив;
 * Некоторые данные в одних и тех же сигналах могут отсутствовать.
 * Так как в момент создания сигнала их нет в тех сервисах в которых они выполняются.
 * Все виды сигналов передаются в топиках: key.signal.*
 *
 * Generated from protobuf message <code>keyapis.signal.v1.Signal</code>
 */
class Signal extends \Google\Protobuf\Internal\Message
{
    /**
     * Время возникновения сигнала.
     * В секундах от 01.01.1970 года в UTC.
     * Присутствует всегда
     *
     * Generated from protobuf field <code>int64 time = 1;</code>
     */
    protected $time = 0;
    /**
     * Название сигнала.
     * Присутствует всегда
     *
     * Generated from protobuf field <code>string name = 2;</code>
     */
    protected $name = '';
    /**
     * Информация о субъекте действия с которым связан сигнал.
     * К чему сигнал относится.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Entity subject = 3;</code>
     */
    protected $subject = null;
    /**
     * Текстовая информация.
     * К примеру текст ошибки.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>string message = 4;</code>
     */
    protected $message = '';
    /**
     * Информация о подписке с которой связан сигнал.
     * Характеризует что доступно или не доступно пользователю.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Subscription subscription = 5;</code>
     */
    protected $subscription = null;
    /**
     * Информация о выставленном счёте с которым связан сигнал.
     * Характеризует состояние оплаты.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Invoice invoice = 6;</code>
     */
    protected $invoice = null;
    /**
     * Информация о объекте действия с которым связан сигнал.
     * К чему сигнал относится.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Entity object = 7;</code>
     */
    protected $object = null;
    /**
     * Дополнительная полезная нагрузка.
     * К примеру тэги.
     * Тут можно поместить ту информацию которая не вошла в схему, но будет полезна или стала нужна
     *
     * Generated from protobuf field <code>map<string, string> payload = 8;</code>
     */
    private $payload;
    /**
     * Мета информация.
     * Некоторая информация которая присутствует в запросе.
     * К примеру это http заголовки запроса: X-Request-Id, User-Agent, X-Forwarded-For и тд
     *
     * Generated from protobuf field <code>map<string, string> meta = 9;</code>
     */
    private $meta;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type int|string $time
     *           Время возникновения сигнала.
     *           В секундах от 01.01.1970 года в UTC.
     *           Присутствует всегда
     *     @type string $name
     *           Название сигнала.
     *           Присутствует всегда
     *     @type \Keyapis\Signal\V1\Signal\Entity $subject
     *           Информация о субъекте действия с которым связан сигнал.
     *           К чему сигнал относится.
     *           Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     *           Может отсутствовать
     *     @type string $message
     *           Текстовая информация.
     *           К примеру текст ошибки.
     *           Может отсутствовать
     *     @type \Keyapis\Signal\V1\Signal\Subscription $subscription
     *           Информация о подписке с которой связан сигнал.
     *           Характеризует что доступно или не доступно пользователю.
     *           Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     *           Может отсутствовать
     *     @type \Keyapis\Signal\V1\Signal\Invoice $invoice
     *           Информация о выставленном счёте с которым связан сигнал.
     *           Характеризует состояние оплаты.
     *           Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     *           Может отсутствовать
     *     @type \Keyapis\Signal\V1\Signal\Entity $object
     *           Информация о объекте действия с которым связан сигнал.
     *           К чему сигнал относится.
     *           Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     *           Может отсутствовать
     *     @type array|\Google\Protobuf\Internal\MapField $payload
     *           Дополнительная полезная нагрузка.
     *           К примеру тэги.
     *           Тут можно поместить ту информацию которая не вошла в схему, но будет полезна или стала нужна
     *     @type array|\Google\Protobuf\Internal\MapField $meta
     *           Мета информация.
     *           Некоторая информация которая присутствует в запросе.
     *           К примеру это http заголовки запроса: X-Request-Id, User-Agent, X-Forwarded-For и тд
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Keyapis\Signal\V1\KeyapisSignalSignalV1::initOnce();
        parent::__construct($data);
    }

    /**
     * Время возникновения сигнала.
     * В секундах от 01.01.1970 года в UTC.
     * Присутствует всегда
     *
     * Generated from protobuf field <code>int64 time = 1;</code>
     * @return int|string
     */
    public function getTime()
    {
        return $this->time;
    }

    /**
     * Время возникновения сигнала.
     * В секундах от 01.01.1970 года в UTC.
     * Присутствует всегда
     *
     * Generated from protobuf field <code>int64 time = 1;</code>
     * @param int|string $var
     * @return $this
     */
    public function setTime($var)
    {
        GPBUtil::checkInt64($var);
        $this->time = $var;

        return $this;
    }

    /**
     * Название сигнала.
     * Присутствует всегда
     *
     * Generated from protobuf field <code>string name = 2;</code>
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Название сигнала.
     * Присутствует всегда
     *
     * Generated from protobuf field <code>string name = 2;</code>
     * @param string $var
     * @return $this
     */
    public function setName($var)
    {
        GPBUtil::checkString($var, True);
        $this->name = $var;

        return $this;
    }

    /**
     * Информация о субъекте действия с которым связан сигнал.
     * К чему сигнал относится.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Entity subject = 3;</code>
     * @return \Keyapis\Signal\V1\Signal\Entity|null
     */
    public function getSubject()
    {
        return $this->subject;
    }

    public function hasSubject()
    {
        return isset($this->subject);
    }

    public function clearSubject()
    {
        unset($this->subject);
    }

    /**
     * Информация о субъекте действия с которым связан сигнал.
     * К чему сигнал относится.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Entity subject = 3;</code>
     * @param \Keyapis\Signal\V1\Signal\Entity $var
     * @return $this
     */
    public function setSubject($var)
    {
        GPBUtil::checkMessage($var, \Keyapis\Signal\V1\Signal\Entity::class);
        $this->subject = $var;

        return $this;
    }

    /**
     * Текстовая информация.
     * К примеру текст ошибки.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>string message = 4;</code>
     * @return string
     */
    public function getMessage()
    {
        return $this->message;
    }

    /**
     * Текстовая информация.
     * К примеру текст ошибки.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>string message = 4;</code>
     * @param string $var
     * @return $this
     */
    public function setMessage($var)
    {
        GPBUtil::checkString($var, True);
        $this->message = $var;

        return $this;
    }

    /**
     * Информация о подписке с которой связан сигнал.
     * Характеризует что доступно или не доступно пользователю.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Subscription subscription = 5;</code>
     * @return \Keyapis\Signal\V1\Signal\Subscription|null
     */
    public function getSubscription()
    {
        return $this->subscription;
    }

    public function hasSubscription()
    {
        return isset($this->subscription);
    }

    public function clearSubscription()
    {
        unset($this->subscription);
    }

    /**
     * Информация о подписке с которой связан сигнал.
     * Характеризует что доступно или не доступно пользователю.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Subscription subscription = 5;</code>
     * @param \Keyapis\Signal\V1\Signal\Subscription $var
     * @return $this
     */
    public function setSubscription($var)
    {
        GPBUtil::checkMessage($var, \Keyapis\Signal\V1\Signal\Subscription::class);
        $this->subscription = $var;

        return $this;
    }

    /**
     * Информация о выставленном счёте с которым связан сигнал.
     * Характеризует состояние оплаты.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Invoice invoice = 6;</code>
     * @return \Keyapis\Signal\V1\Signal\Invoice|null
     */
    public function getInvoice()
    {
        return $this->invoice;
    }

    public function hasInvoice()
    {
        return isset($this->invoice);
    }

    public function clearInvoice()
    {
        unset($this->invoice);
    }

    /**
     * Информация о выставленном счёте с которым связан сигнал.
     * Характеризует состояние оплаты.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Invoice invoice = 6;</code>
     * @param \Keyapis\Signal\V1\Signal\Invoice $var
     * @return $this
     */
    public function setInvoice($var)
    {
        GPBUtil::checkMessage($var, \Keyapis\Signal\V1\Signal\Invoice::class);
        $this->invoice = $var;

        return $this;
    }

    /**
     * Информация о объекте действия с которым связан сигнал.
     * К чему сигнал относится.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Entity object = 7;</code>
     * @return \Keyapis\Signal\V1\Signal\Entity|null
     */
    public function getObject()
    {
        return $this->object;
    }

    public function hasObject()
    {
        return isset($this->object);
    }

    public function clearObject()
    {
        unset($this->object);
    }

    /**
     * Информация о объекте действия с которым связан сигнал.
     * К чему сигнал относится.
     * Заполнено если такая информация присутствует в програмном модуле обрабатывающий запрос, иначе пусто.
     * Может отсутствовать
     *
     * Generated from protobuf field <code>.keyapis.signal.v1.Signal.Entity object = 7;</code>
     * @param \Keyapis\Signal\V1\Signal\Entity $var
     * @return $this
     */
    public function setObject($var)
    {
        GPBUtil::checkMessage($var, \Keyapis\Signal\V1\Signal\Entity::class);
        $this->object = $var;

        return $this;
    }

    /**
     * Дополнительная полезная нагрузка.
     * К примеру тэги.
     * Тут можно поместить ту информацию которая не вошла в схему, но будет полезна или стала нужна
     *
     * Generated from protobuf field <code>map<string, string> payload = 8;</code>
     * @return \Google\Protobuf\Internal\MapField
     */
    public function getPayload()
    {
        return $this->payload;
    }

    /**
     * Дополнительная полезная нагрузка.
     * К примеру тэги.
     * Тут можно поместить ту информацию которая не вошла в схему, но будет полезна или стала нужна
     *
     * Generated from protobuf field <code>map<string, string> payload = 8;</code>
     * @param array|\Google\Protobuf\Internal\MapField $var
     * @return $this
     */
    public function setPayload($var)
    {
        $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
        $this->payload = $arr;

        return $this;
    }

    /**
     * Мета информация.
     * Некоторая информация которая присутствует в запросе.
     * К примеру это http заголовки запроса: X-Request-Id, User-Agent, X-Forwarded-For и тд
     *
     * Generated from protobuf field <code>map<string, string> meta = 9;</code>
     * @return \Google\Protobuf\Internal\MapField
     */
    public function getMeta()
    {
        return $this->meta;
    }

    /**
     * Мета информация.
     * Некоторая информация которая присутствует в запросе.
     * К примеру это http заголовки запроса: X-Request-Id, User-Agent, X-Forwarded-For и тд
     *
     * Generated from protobuf field <code>map<string, string> meta = 9;</code>
     * @param array|\Google\Protobuf\Internal\MapField $var
     * @return $this
     */
    public function setMeta($var)
    {
        $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
        $this->meta = $arr;

        return $this;
    }

}

