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

namespace Keyapis\Subscription\V1;

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

/**
 * Фильтр по шаблонам КВ
 *
 * Generated from protobuf message <code>keyapis.subscription.v1.OfferTemplateFilter</code>
 */
class OfferTemplateFilter extends \Google\Protobuf\Internal\Message
{
    /**
     * По статусам
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.StatusType status_types = 1;</code>
     */
    private $status_types;
    /**
     * По типам сервисов
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ServiceType service_types = 2;</code>
     */
    private $service_types;
    /**
     * По идентификаторам регионов (из правил применимости)
     *
     * Generated from protobuf field <code>repeated int32 rf_ids = 3;</code>
     */
    private $rf_ids;
    /**
     * По тексту.
     * Если значение не передано, поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование;
     * # - Описание
     *
     * Generated from protobuf field <code>.google.protobuf.StringValue text = 4;</code>
     */
    protected $text = null;
    /**
     * По типам договорных схем (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.ContractType applicability_rules_contract_types = 5;</code>
     */
    private $applicability_rules_contract_types;
    /**
     * По типам клиентов (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.ClientType applicability_rules_client_types = 6;</code>
     */
    private $applicability_rules_client_types;
    /**
     * По типам биллинговых систем (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.BillingSystemType applicability_rules_billing_system_types = 7;</code>
     */
    private $applicability_rules_billing_system_types;
    /**
     * По признаку внешней оплаты умного домофона (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_external_payment_for_smart_intercom = 8;</code>
     */
    protected $is_external_payment_for_smart_intercom = null;
    /**
     * По наличию CMS телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_cms_phone = 9;</code>
     */
    protected $applicability_rules_is_cms_phone = null;
    /**
     * По наличию SIP телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_sip_phone = 10;</code>
     */
    protected $applicability_rules_is_sip_phone = null;
    /**
     * По наличию видеомонитора в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_video_monitor = 11;</code>
     */
    protected $applicability_rules_is_video_monitor = null;
    /**
     * По типам договорной схемы устройства в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.RoomDeviceContractType applicability_rules_room_device_contract_types = 12;</code>
     */
    private $applicability_rules_room_device_contract_types;
    /**
     * По типам минимального бесплатного пакета мобильного приложения (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.MobileAppPackageType applicability_rules_mobile_app_package_types = 13;</code>
     */
    private $applicability_rules_mobile_app_package_types;
    /**
     * По признаку переадресации на городские/мобильные номера (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_call_forwarding_enabled = 14;</code>
     */
    protected $is_call_forwarding_enabled = null;
    /**
     * По признаку цифрового клиентского пути (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_digital_way = 15;</code>
     */
    protected $is_digital_way = null;
    /**
     * По идентификаторам технологических планов (из элементов шаблона)
     *
     * Generated from protobuf field <code>repeated int32 plan_ids = 16;</code>
     */
    private $plan_ids;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $status_types
     *           По статусам
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $service_types
     *           По типам сервисов
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $rf_ids
     *           По идентификаторам регионов (из правил применимости)
     *     @type \Google\Protobuf\StringValue $text
     *           По тексту.
     *           Если значение не передано, поиск по нему не производится.
     *           # Диапазон: 3..64.
     *           # Поиск производится по полям:
     *           # - Наименование;
     *           # - Описание
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $applicability_rules_contract_types
     *           По типам договорных схем (из правил применимости)
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $applicability_rules_client_types
     *           По типам клиентов (из правил применимости)
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $applicability_rules_billing_system_types
     *           По типам биллинговых систем (из правил применимости)
     *     @type \Google\Protobuf\BoolValue $is_external_payment_for_smart_intercom
     *           По признаку внешней оплаты умного домофона (из правил применимости)
     *     @type \Google\Protobuf\BoolValue $applicability_rules_is_cms_phone
     *           По наличию CMS телефона в квартире (из правил применимости)
     *     @type \Google\Protobuf\BoolValue $applicability_rules_is_sip_phone
     *           По наличию SIP телефона в квартире (из правил применимости)
     *     @type \Google\Protobuf\BoolValue $applicability_rules_is_video_monitor
     *           По наличию видеомонитора в квартире (из правил применимости)
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $applicability_rules_room_device_contract_types
     *           По типам договорной схемы устройства в квартире (из правил применимости)
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $applicability_rules_mobile_app_package_types
     *           По типам минимального бесплатного пакета мобильного приложения (из правил применимости)
     *     @type \Google\Protobuf\BoolValue $is_call_forwarding_enabled
     *           По признаку переадресации на городские/мобильные номера (из правил применимости)
     *     @type \Google\Protobuf\BoolValue $is_digital_way
     *           По признаку цифрового клиентского пути (из правил применимости)
     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $plan_ids
     *           По идентификаторам технологических планов (из элементов шаблона)
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Keyapis\Subscription\V1\KeyapisSubscriptionOfferTemplateV1::initOnce();
        parent::__construct($data);
    }

    /**
     * По статусам
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.StatusType status_types = 1;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getStatusTypes()
    {
        return $this->status_types;
    }

    /**
     * По статусам
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.StatusType status_types = 1;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setStatusTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Keyapis\Subscription\V1\OfferTemplate\StatusType::class);
        $this->status_types = $arr;

        return $this;
    }

    /**
     * По типам сервисов
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ServiceType service_types = 2;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getServiceTypes()
    {
        return $this->service_types;
    }

    /**
     * По типам сервисов
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ServiceType service_types = 2;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setServiceTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Keyapis\Subscription\V1\OfferTemplate\ServiceType::class);
        $this->service_types = $arr;

        return $this;
    }

    /**
     * По идентификаторам регионов (из правил применимости)
     *
     * Generated from protobuf field <code>repeated int32 rf_ids = 3;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getRfIds()
    {
        return $this->rf_ids;
    }

    /**
     * По идентификаторам регионов (из правил применимости)
     *
     * Generated from protobuf field <code>repeated int32 rf_ids = 3;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setRfIds($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
        $this->rf_ids = $arr;

        return $this;
    }

    /**
     * По тексту.
     * Если значение не передано, поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование;
     * # - Описание
     *
     * Generated from protobuf field <code>.google.protobuf.StringValue text = 4;</code>
     * @return \Google\Protobuf\StringValue|null
     */
    public function getText()
    {
        return $this->text;
    }

    public function hasText()
    {
        return isset($this->text);
    }

    public function clearText()
    {
        unset($this->text);
    }

    /**
     * Returns the unboxed value from <code>getText()</code>

     * По тексту.
     * Если значение не передано, поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование;
     * # - Описание
     *
     * Generated from protobuf field <code>.google.protobuf.StringValue text = 4;</code>
     * @return string|null
     */
    public function getTextUnwrapped()
    {
        return $this->readWrapperValue("text");
    }

    /**
     * По тексту.
     * Если значение не передано, поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование;
     * # - Описание
     *
     * Generated from protobuf field <code>.google.protobuf.StringValue text = 4;</code>
     * @param \Google\Protobuf\StringValue $var
     * @return $this
     */
    public function setText($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\StringValue::class);
        $this->text = $var;

        return $this;
    }

    /**
     * Sets the field by wrapping a primitive type in a Google\Protobuf\StringValue object.

     * По тексту.
     * Если значение не передано, поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование;
     * # - Описание
     *
     * Generated from protobuf field <code>.google.protobuf.StringValue text = 4;</code>
     * @param string|null $var
     * @return $this
     */
    public function setTextUnwrapped($var)
    {
        $this->writeWrapperValue("text", $var);
        return $this;}

    /**
     * По типам договорных схем (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.ContractType applicability_rules_contract_types = 5;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApplicabilityRulesContractTypes()
    {
        return $this->applicability_rules_contract_types;
    }

    /**
     * По типам договорных схем (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.ContractType applicability_rules_contract_types = 5;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApplicabilityRulesContractTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Keyapis\Subscription\V1\OfferTemplate\ApplicabilityRules\ContractType::class);
        $this->applicability_rules_contract_types = $arr;

        return $this;
    }

    /**
     * По типам клиентов (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.ClientType applicability_rules_client_types = 6;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApplicabilityRulesClientTypes()
    {
        return $this->applicability_rules_client_types;
    }

    /**
     * По типам клиентов (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.ClientType applicability_rules_client_types = 6;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApplicabilityRulesClientTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Keyapis\Subscription\V1\OfferTemplate\ApplicabilityRules\ClientType::class);
        $this->applicability_rules_client_types = $arr;

        return $this;
    }

    /**
     * По типам биллинговых систем (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.BillingSystemType applicability_rules_billing_system_types = 7;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApplicabilityRulesBillingSystemTypes()
    {
        return $this->applicability_rules_billing_system_types;
    }

    /**
     * По типам биллинговых систем (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.BillingSystemType applicability_rules_billing_system_types = 7;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApplicabilityRulesBillingSystemTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Keyapis\Subscription\V1\OfferTemplate\ApplicabilityRules\BillingSystemType::class);
        $this->applicability_rules_billing_system_types = $arr;

        return $this;
    }

    /**
     * По признаку внешней оплаты умного домофона (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_external_payment_for_smart_intercom = 8;</code>
     * @return \Google\Protobuf\BoolValue|null
     */
    public function getIsExternalPaymentForSmartIntercom()
    {
        return $this->is_external_payment_for_smart_intercom;
    }

    public function hasIsExternalPaymentForSmartIntercom()
    {
        return isset($this->is_external_payment_for_smart_intercom);
    }

    public function clearIsExternalPaymentForSmartIntercom()
    {
        unset($this->is_external_payment_for_smart_intercom);
    }

    /**
     * Returns the unboxed value from <code>getIsExternalPaymentForSmartIntercom()</code>

     * По признаку внешней оплаты умного домофона (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_external_payment_for_smart_intercom = 8;</code>
     * @return bool|null
     */
    public function getIsExternalPaymentForSmartIntercomUnwrapped()
    {
        return $this->readWrapperValue("is_external_payment_for_smart_intercom");
    }

    /**
     * По признаку внешней оплаты умного домофона (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_external_payment_for_smart_intercom = 8;</code>
     * @param \Google\Protobuf\BoolValue $var
     * @return $this
     */
    public function setIsExternalPaymentForSmartIntercom($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class);
        $this->is_external_payment_for_smart_intercom = $var;

        return $this;
    }

    /**
     * Sets the field by wrapping a primitive type in a Google\Protobuf\BoolValue object.

     * По признаку внешней оплаты умного домофона (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_external_payment_for_smart_intercom = 8;</code>
     * @param bool|null $var
     * @return $this
     */
    public function setIsExternalPaymentForSmartIntercomUnwrapped($var)
    {
        $this->writeWrapperValue("is_external_payment_for_smart_intercom", $var);
        return $this;}

    /**
     * По наличию CMS телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_cms_phone = 9;</code>
     * @return \Google\Protobuf\BoolValue|null
     */
    public function getApplicabilityRulesIsCmsPhone()
    {
        return $this->applicability_rules_is_cms_phone;
    }

    public function hasApplicabilityRulesIsCmsPhone()
    {
        return isset($this->applicability_rules_is_cms_phone);
    }

    public function clearApplicabilityRulesIsCmsPhone()
    {
        unset($this->applicability_rules_is_cms_phone);
    }

    /**
     * Returns the unboxed value from <code>getApplicabilityRulesIsCmsPhone()</code>

     * По наличию CMS телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_cms_phone = 9;</code>
     * @return bool|null
     */
    public function getApplicabilityRulesIsCmsPhoneUnwrapped()
    {
        return $this->readWrapperValue("applicability_rules_is_cms_phone");
    }

    /**
     * По наличию CMS телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_cms_phone = 9;</code>
     * @param \Google\Protobuf\BoolValue $var
     * @return $this
     */
    public function setApplicabilityRulesIsCmsPhone($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class);
        $this->applicability_rules_is_cms_phone = $var;

        return $this;
    }

    /**
     * Sets the field by wrapping a primitive type in a Google\Protobuf\BoolValue object.

     * По наличию CMS телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_cms_phone = 9;</code>
     * @param bool|null $var
     * @return $this
     */
    public function setApplicabilityRulesIsCmsPhoneUnwrapped($var)
    {
        $this->writeWrapperValue("applicability_rules_is_cms_phone", $var);
        return $this;}

    /**
     * По наличию SIP телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_sip_phone = 10;</code>
     * @return \Google\Protobuf\BoolValue|null
     */
    public function getApplicabilityRulesIsSipPhone()
    {
        return $this->applicability_rules_is_sip_phone;
    }

    public function hasApplicabilityRulesIsSipPhone()
    {
        return isset($this->applicability_rules_is_sip_phone);
    }

    public function clearApplicabilityRulesIsSipPhone()
    {
        unset($this->applicability_rules_is_sip_phone);
    }

    /**
     * Returns the unboxed value from <code>getApplicabilityRulesIsSipPhone()</code>

     * По наличию SIP телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_sip_phone = 10;</code>
     * @return bool|null
     */
    public function getApplicabilityRulesIsSipPhoneUnwrapped()
    {
        return $this->readWrapperValue("applicability_rules_is_sip_phone");
    }

    /**
     * По наличию SIP телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_sip_phone = 10;</code>
     * @param \Google\Protobuf\BoolValue $var
     * @return $this
     */
    public function setApplicabilityRulesIsSipPhone($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class);
        $this->applicability_rules_is_sip_phone = $var;

        return $this;
    }

    /**
     * Sets the field by wrapping a primitive type in a Google\Protobuf\BoolValue object.

     * По наличию SIP телефона в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_sip_phone = 10;</code>
     * @param bool|null $var
     * @return $this
     */
    public function setApplicabilityRulesIsSipPhoneUnwrapped($var)
    {
        $this->writeWrapperValue("applicability_rules_is_sip_phone", $var);
        return $this;}

    /**
     * По наличию видеомонитора в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_video_monitor = 11;</code>
     * @return \Google\Protobuf\BoolValue|null
     */
    public function getApplicabilityRulesIsVideoMonitor()
    {
        return $this->applicability_rules_is_video_monitor;
    }

    public function hasApplicabilityRulesIsVideoMonitor()
    {
        return isset($this->applicability_rules_is_video_monitor);
    }

    public function clearApplicabilityRulesIsVideoMonitor()
    {
        unset($this->applicability_rules_is_video_monitor);
    }

    /**
     * Returns the unboxed value from <code>getApplicabilityRulesIsVideoMonitor()</code>

     * По наличию видеомонитора в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_video_monitor = 11;</code>
     * @return bool|null
     */
    public function getApplicabilityRulesIsVideoMonitorUnwrapped()
    {
        return $this->readWrapperValue("applicability_rules_is_video_monitor");
    }

    /**
     * По наличию видеомонитора в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_video_monitor = 11;</code>
     * @param \Google\Protobuf\BoolValue $var
     * @return $this
     */
    public function setApplicabilityRulesIsVideoMonitor($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class);
        $this->applicability_rules_is_video_monitor = $var;

        return $this;
    }

    /**
     * Sets the field by wrapping a primitive type in a Google\Protobuf\BoolValue object.

     * По наличию видеомонитора в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue applicability_rules_is_video_monitor = 11;</code>
     * @param bool|null $var
     * @return $this
     */
    public function setApplicabilityRulesIsVideoMonitorUnwrapped($var)
    {
        $this->writeWrapperValue("applicability_rules_is_video_monitor", $var);
        return $this;}

    /**
     * По типам договорной схемы устройства в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.RoomDeviceContractType applicability_rules_room_device_contract_types = 12;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApplicabilityRulesRoomDeviceContractTypes()
    {
        return $this->applicability_rules_room_device_contract_types;
    }

    /**
     * По типам договорной схемы устройства в квартире (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.RoomDeviceContractType applicability_rules_room_device_contract_types = 12;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApplicabilityRulesRoomDeviceContractTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Keyapis\Subscription\V1\OfferTemplate\ApplicabilityRules\RoomDeviceContractType::class);
        $this->applicability_rules_room_device_contract_types = $arr;

        return $this;
    }

    /**
     * По типам минимального бесплатного пакета мобильного приложения (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.MobileAppPackageType applicability_rules_mobile_app_package_types = 13;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApplicabilityRulesMobileAppPackageTypes()
    {
        return $this->applicability_rules_mobile_app_package_types;
    }

    /**
     * По типам минимального бесплатного пакета мобильного приложения (из правил применимости)
     *
     * Generated from protobuf field <code>repeated .keyapis.subscription.v1.OfferTemplate.ApplicabilityRules.MobileAppPackageType applicability_rules_mobile_app_package_types = 13;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApplicabilityRulesMobileAppPackageTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Keyapis\Subscription\V1\OfferTemplate\ApplicabilityRules\MobileAppPackageType::class);
        $this->applicability_rules_mobile_app_package_types = $arr;

        return $this;
    }

    /**
     * По признаку переадресации на городские/мобильные номера (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_call_forwarding_enabled = 14;</code>
     * @return \Google\Protobuf\BoolValue|null
     */
    public function getIsCallForwardingEnabled()
    {
        return $this->is_call_forwarding_enabled;
    }

    public function hasIsCallForwardingEnabled()
    {
        return isset($this->is_call_forwarding_enabled);
    }

    public function clearIsCallForwardingEnabled()
    {
        unset($this->is_call_forwarding_enabled);
    }

    /**
     * Returns the unboxed value from <code>getIsCallForwardingEnabled()</code>

     * По признаку переадресации на городские/мобильные номера (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_call_forwarding_enabled = 14;</code>
     * @return bool|null
     */
    public function getIsCallForwardingEnabledUnwrapped()
    {
        return $this->readWrapperValue("is_call_forwarding_enabled");
    }

    /**
     * По признаку переадресации на городские/мобильные номера (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_call_forwarding_enabled = 14;</code>
     * @param \Google\Protobuf\BoolValue $var
     * @return $this
     */
    public function setIsCallForwardingEnabled($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class);
        $this->is_call_forwarding_enabled = $var;

        return $this;
    }

    /**
     * Sets the field by wrapping a primitive type in a Google\Protobuf\BoolValue object.

     * По признаку переадресации на городские/мобильные номера (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_call_forwarding_enabled = 14;</code>
     * @param bool|null $var
     * @return $this
     */
    public function setIsCallForwardingEnabledUnwrapped($var)
    {
        $this->writeWrapperValue("is_call_forwarding_enabled", $var);
        return $this;}

    /**
     * По признаку цифрового клиентского пути (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_digital_way = 15;</code>
     * @return \Google\Protobuf\BoolValue|null
     */
    public function getIsDigitalWay()
    {
        return $this->is_digital_way;
    }

    public function hasIsDigitalWay()
    {
        return isset($this->is_digital_way);
    }

    public function clearIsDigitalWay()
    {
        unset($this->is_digital_way);
    }

    /**
     * Returns the unboxed value from <code>getIsDigitalWay()</code>

     * По признаку цифрового клиентского пути (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_digital_way = 15;</code>
     * @return bool|null
     */
    public function getIsDigitalWayUnwrapped()
    {
        return $this->readWrapperValue("is_digital_way");
    }

    /**
     * По признаку цифрового клиентского пути (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_digital_way = 15;</code>
     * @param \Google\Protobuf\BoolValue $var
     * @return $this
     */
    public function setIsDigitalWay($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class);
        $this->is_digital_way = $var;

        return $this;
    }

    /**
     * Sets the field by wrapping a primitive type in a Google\Protobuf\BoolValue object.

     * По признаку цифрового клиентского пути (из правил применимости)
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue is_digital_way = 15;</code>
     * @param bool|null $var
     * @return $this
     */
    public function setIsDigitalWayUnwrapped($var)
    {
        $this->writeWrapperValue("is_digital_way", $var);
        return $this;}

    /**
     * По идентификаторам технологических планов (из элементов шаблона)
     *
     * Generated from protobuf field <code>repeated int32 plan_ids = 16;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getPlanIds()
    {
        return $this->plan_ids;
    }

    /**
     * По идентификаторам технологических планов (из элементов шаблона)
     *
     * Generated from protobuf field <code>repeated int32 plan_ids = 16;</code>
     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setPlanIds($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
        $this->plan_ids = $arr;

        return $this;
    }

}

