<?php
 
 
 

namespace PhpWA\Protocol\Proto\Message;

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




class ProtocolMessage extends \Google\Protobuf\Internal\Message
{
    


    protected $key = null;
    


    protected $type = null;
    


    protected $ephemeralExpiration = null;
    


    protected $ephemeralSettingTimestamp = null;
    


    protected $historySyncNotification = null;
    


    protected $appStateSyncKeyShare = null;
    


    protected $appStateSyncKeyRequest = null;
    


    protected $initialSecurityNotificationSettingSync = null;
    


    protected $appStateFatalExceptionNotification = null;
    


    protected $disappearingMode = null;
    


    protected $editedMessage = null;
    


    protected $timestampMs = null;
    


    protected $peerDataOperationRequestMessage = null;
    


    protected $peerDataOperationRequestResponseMessage = null;
    


    protected $botFeedbackMessage = null;
    


    protected $invokerJid = null;
    


    protected $requestWelcomeMessageMetadata = null;
    


    protected $mediaNotifyMessage = null;
    


    protected $cloudApiThreadControlNotification = null;
    


    protected $lidMigrationMappingSyncMessage = null;
    


    protected $limitSharing = null;
    


    protected $aiPsiMetadata = null;
    


    protected $aiQueryFanout = null;
    


    protected $memberLabel = null;

    































    public function __construct($data = NULL) {
        \PhpWA\Protocol\Proto\Metadata\WAProto::initOnce();
        parent::__construct($data);
    }

    



    public function getKey()
    {
        return $this->key;
    }

    public function hasKey()
    {
        return isset($this->key);
    }

    public function clearKey()
    {
        unset($this->key);
    }

    




    public function setKey($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\MessageKey::class);
        $this->key = $var;

        return $this;
    }

    



    public function getType()
    {
        return isset($this->type) ? $this->type : 0;
    }

    public function hasType()
    {
        return isset($this->type);
    }

    public function clearType()
    {
        unset($this->type);
    }

    




    public function setType($var)
    {
        GPBUtil::checkEnum($var, \PhpWA\Protocol\Proto\Message\ProtocolMessage\Type::class);
        $this->type = $var;

        return $this;
    }

    



    public function getEphemeralExpiration()
    {
        return isset($this->ephemeralExpiration) ? $this->ephemeralExpiration : 0;
    }

    public function hasEphemeralExpiration()
    {
        return isset($this->ephemeralExpiration);
    }

    public function clearEphemeralExpiration()
    {
        unset($this->ephemeralExpiration);
    }

    




    public function setEphemeralExpiration($var)
    {
        GPBUtil::checkUint32($var);
        $this->ephemeralExpiration = $var;

        return $this;
    }

    



    public function getEphemeralSettingTimestamp()
    {
        return isset($this->ephemeralSettingTimestamp) ? $this->ephemeralSettingTimestamp : 0;
    }

    public function hasEphemeralSettingTimestamp()
    {
        return isset($this->ephemeralSettingTimestamp);
    }

    public function clearEphemeralSettingTimestamp()
    {
        unset($this->ephemeralSettingTimestamp);
    }

    




    public function setEphemeralSettingTimestamp($var)
    {
        GPBUtil::checkInt64($var);
        $this->ephemeralSettingTimestamp = $var;

        return $this;
    }

    



    public function getHistorySyncNotification()
    {
        return $this->historySyncNotification;
    }

    public function hasHistorySyncNotification()
    {
        return isset($this->historySyncNotification);
    }

    public function clearHistorySyncNotification()
    {
        unset($this->historySyncNotification);
    }

    




    public function setHistorySyncNotification($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\HistorySyncNotification::class);
        $this->historySyncNotification = $var;

        return $this;
    }

    



    public function getAppStateSyncKeyShare()
    {
        return $this->appStateSyncKeyShare;
    }

    public function hasAppStateSyncKeyShare()
    {
        return isset($this->appStateSyncKeyShare);
    }

    public function clearAppStateSyncKeyShare()
    {
        unset($this->appStateSyncKeyShare);
    }

    




    public function setAppStateSyncKeyShare($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\AppStateSyncKeyShare::class);
        $this->appStateSyncKeyShare = $var;

        return $this;
    }

    



    public function getAppStateSyncKeyRequest()
    {
        return $this->appStateSyncKeyRequest;
    }

    public function hasAppStateSyncKeyRequest()
    {
        return isset($this->appStateSyncKeyRequest);
    }

    public function clearAppStateSyncKeyRequest()
    {
        unset($this->appStateSyncKeyRequest);
    }

    




    public function setAppStateSyncKeyRequest($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\AppStateSyncKeyRequest::class);
        $this->appStateSyncKeyRequest = $var;

        return $this;
    }

    



    public function getInitialSecurityNotificationSettingSync()
    {
        return $this->initialSecurityNotificationSettingSync;
    }

    public function hasInitialSecurityNotificationSettingSync()
    {
        return isset($this->initialSecurityNotificationSettingSync);
    }

    public function clearInitialSecurityNotificationSettingSync()
    {
        unset($this->initialSecurityNotificationSettingSync);
    }

    




    public function setInitialSecurityNotificationSettingSync($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\InitialSecurityNotificationSettingSync::class);
        $this->initialSecurityNotificationSettingSync = $var;

        return $this;
    }

    



    public function getAppStateFatalExceptionNotification()
    {
        return $this->appStateFatalExceptionNotification;
    }

    public function hasAppStateFatalExceptionNotification()
    {
        return isset($this->appStateFatalExceptionNotification);
    }

    public function clearAppStateFatalExceptionNotification()
    {
        unset($this->appStateFatalExceptionNotification);
    }

    




    public function setAppStateFatalExceptionNotification($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\AppStateFatalExceptionNotification::class);
        $this->appStateFatalExceptionNotification = $var;

        return $this;
    }

    



    public function getDisappearingMode()
    {
        return $this->disappearingMode;
    }

    public function hasDisappearingMode()
    {
        return isset($this->disappearingMode);
    }

    public function clearDisappearingMode()
    {
        unset($this->disappearingMode);
    }

    




    public function setDisappearingMode($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\DisappearingMode::class);
        $this->disappearingMode = $var;

        return $this;
    }

    



    public function getEditedMessage()
    {
        return $this->editedMessage;
    }

    public function hasEditedMessage()
    {
        return isset($this->editedMessage);
    }

    public function clearEditedMessage()
    {
        unset($this->editedMessage);
    }

    




    public function setEditedMessage($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message::class);
        $this->editedMessage = $var;

        return $this;
    }

    



    public function getTimestampMs()
    {
        return isset($this->timestampMs) ? $this->timestampMs : 0;
    }

    public function hasTimestampMs()
    {
        return isset($this->timestampMs);
    }

    public function clearTimestampMs()
    {
        unset($this->timestampMs);
    }

    




    public function setTimestampMs($var)
    {
        GPBUtil::checkInt64($var);
        $this->timestampMs = $var;

        return $this;
    }

    



    public function getPeerDataOperationRequestMessage()
    {
        return $this->peerDataOperationRequestMessage;
    }

    public function hasPeerDataOperationRequestMessage()
    {
        return isset($this->peerDataOperationRequestMessage);
    }

    public function clearPeerDataOperationRequestMessage()
    {
        unset($this->peerDataOperationRequestMessage);
    }

    




    public function setPeerDataOperationRequestMessage($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\PeerDataOperationRequestMessage::class);
        $this->peerDataOperationRequestMessage = $var;

        return $this;
    }

    



    public function getPeerDataOperationRequestResponseMessage()
    {
        return $this->peerDataOperationRequestResponseMessage;
    }

    public function hasPeerDataOperationRequestResponseMessage()
    {
        return isset($this->peerDataOperationRequestResponseMessage);
    }

    public function clearPeerDataOperationRequestResponseMessage()
    {
        unset($this->peerDataOperationRequestResponseMessage);
    }

    




    public function setPeerDataOperationRequestResponseMessage($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\PeerDataOperationRequestResponseMessage::class);
        $this->peerDataOperationRequestResponseMessage = $var;

        return $this;
    }

    



    public function getBotFeedbackMessage()
    {
        return $this->botFeedbackMessage;
    }

    public function hasBotFeedbackMessage()
    {
        return isset($this->botFeedbackMessage);
    }

    public function clearBotFeedbackMessage()
    {
        unset($this->botFeedbackMessage);
    }

    




    public function setBotFeedbackMessage($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\BotFeedbackMessage::class);
        $this->botFeedbackMessage = $var;

        return $this;
    }

    



    public function getInvokerJid()
    {
        return isset($this->invokerJid) ? $this->invokerJid : '';
    }

    public function hasInvokerJid()
    {
        return isset($this->invokerJid);
    }

    public function clearInvokerJid()
    {
        unset($this->invokerJid);
    }

    




    public function setInvokerJid($var)
    {
        GPBUtil::checkString($var, True);
        $this->invokerJid = $var;

        return $this;
    }

    



    public function getRequestWelcomeMessageMetadata()
    {
        return $this->requestWelcomeMessageMetadata;
    }

    public function hasRequestWelcomeMessageMetadata()
    {
        return isset($this->requestWelcomeMessageMetadata);
    }

    public function clearRequestWelcomeMessageMetadata()
    {
        unset($this->requestWelcomeMessageMetadata);
    }

    




    public function setRequestWelcomeMessageMetadata($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\RequestWelcomeMessageMetadata::class);
        $this->requestWelcomeMessageMetadata = $var;

        return $this;
    }

    



    public function getMediaNotifyMessage()
    {
        return $this->mediaNotifyMessage;
    }

    public function hasMediaNotifyMessage()
    {
        return isset($this->mediaNotifyMessage);
    }

    public function clearMediaNotifyMessage()
    {
        unset($this->mediaNotifyMessage);
    }

    




    public function setMediaNotifyMessage($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\MediaNotifyMessage::class);
        $this->mediaNotifyMessage = $var;

        return $this;
    }

    



    public function getCloudApiThreadControlNotification()
    {
        return $this->cloudApiThreadControlNotification;
    }

    public function hasCloudApiThreadControlNotification()
    {
        return isset($this->cloudApiThreadControlNotification);
    }

    public function clearCloudApiThreadControlNotification()
    {
        unset($this->cloudApiThreadControlNotification);
    }

    




    public function setCloudApiThreadControlNotification($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\Message\CloudAPIThreadControlNotification::class);
        $this->cloudApiThreadControlNotification = $var;

        return $this;
    }

    



    public function getLidMigrationMappingSyncMessage()
    {
        return $this->lidMigrationMappingSyncMessage;
    }

    public function hasLidMigrationMappingSyncMessage()
    {
        return isset($this->lidMigrationMappingSyncMessage);
    }

    public function clearLidMigrationMappingSyncMessage()
    {
        unset($this->lidMigrationMappingSyncMessage);
    }

    




    public function setLidMigrationMappingSyncMessage($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\LIDMigrationMappingSyncMessage::class);
        $this->lidMigrationMappingSyncMessage = $var;

        return $this;
    }

    



    public function getLimitSharing()
    {
        return $this->limitSharing;
    }

    public function hasLimitSharing()
    {
        return isset($this->limitSharing);
    }

    public function clearLimitSharing()
    {
        unset($this->limitSharing);
    }

    




    public function setLimitSharing($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\LimitSharing::class);
        $this->limitSharing = $var;

        return $this;
    }

    



    public function getAiPsiMetadata()
    {
        return isset($this->aiPsiMetadata) ? $this->aiPsiMetadata : '';
    }

    public function hasAiPsiMetadata()
    {
        return isset($this->aiPsiMetadata);
    }

    public function clearAiPsiMetadata()
    {
        unset($this->aiPsiMetadata);
    }

    




    public function setAiPsiMetadata($var)
    {
        GPBUtil::checkString($var, False);
        $this->aiPsiMetadata = $var;

        return $this;
    }

    



    public function getAiQueryFanout()
    {
        return $this->aiQueryFanout;
    }

    public function hasAiQueryFanout()
    {
        return isset($this->aiQueryFanout);
    }

    public function clearAiQueryFanout()
    {
        unset($this->aiQueryFanout);
    }

    




    public function setAiQueryFanout($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\AIQueryFanout::class);
        $this->aiQueryFanout = $var;

        return $this;
    }

    



    public function getMemberLabel()
    {
        return $this->memberLabel;
    }

    public function hasMemberLabel()
    {
        return isset($this->memberLabel);
    }

    public function clearMemberLabel()
    {
        unset($this->memberLabel);
    }

    




    public function setMemberLabel($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\MemberLabel::class);
        $this->memberLabel = $var;

        return $this;
    }

}

