<?php
 
 
 

namespace PhpWA\Protocol\Proto;

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




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


    protected $stanzaId = null;
    


    protected $participant = null;
    


    protected $quotedMessage = null;
    


    protected $remoteJid = null;
    


    private $mentionedJid;
    


    protected $conversionSource = null;
    


    protected $conversionData = null;
    


    protected $conversionDelaySeconds = null;
    


    protected $forwardingScore = null;
    


    protected $isForwarded = null;
    


    protected $quotedAd = null;
    


    protected $placeholderKey = null;
    


    protected $expiration = null;
    


    protected $ephemeralSettingTimestamp = null;
    


    protected $ephemeralSharedSecret = null;
    


    protected $externalAdReply = null;
    


    protected $entryPointConversionSource = null;
    


    protected $entryPointConversionApp = null;
    


    protected $entryPointConversionDelaySeconds = null;
    


    protected $disappearingMode = null;
    


    protected $actionLink = null;
    


    protected $groupSubject = null;
    


    protected $parentGroupJid = null;
    


    protected $trustBannerType = null;
    


    protected $trustBannerAction = null;
    


    protected $isSampled = null;
    


    private $groupMentions;
    


    protected $utm = null;
    


    protected $forwardedNewsletterMessageInfo = null;
    


    protected $businessMessageForwardInfo = null;
    


    protected $smbClientCampaignId = null;
    


    protected $smbServerCampaignId = null;
    


    protected $dataSharingContext = null;
    


    protected $alwaysShowAdAttribution = null;
    


    protected $featureEligibilities = null;
    


    protected $entryPointConversionExternalSource = null;
    


    protected $entryPointConversionExternalMedium = null;
    


    protected $ctwaSignals = null;
    


    protected $ctwaPayload = null;
    


    protected $forwardedAiBotMessageInfo = null;
    


    protected $statusAttributionType = null;
    


    protected $urlTrackingMap = null;
    


    protected $pairedMediaType = null;
    


    protected $rankingVersion = null;
    


    protected $memberLabel = null;
    


    protected $isQuestion = null;
    


    protected $statusSourceType = null;
    


    private $statusAttributions;
    


    protected $isGroupStatus = null;
    


    protected $forwardOrigin = null;
    


    protected $questionReplyQuotedMessage = null;
    


    protected $statusAudienceMetadata = null;
    


    protected $nonJidMentions = null;
    


    protected $quotedType = null;
    


    protected $botMessageSharingInfo = null;

    






























































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

    



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

    public function hasStanzaId()
    {
        return isset($this->stanzaId);
    }

    public function clearStanzaId()
    {
        unset($this->stanzaId);
    }

    




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

        return $this;
    }

    



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

    public function hasParticipant()
    {
        return isset($this->participant);
    }

    public function clearParticipant()
    {
        unset($this->participant);
    }

    




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

        return $this;
    }

    



    public function getQuotedMessage()
    {
        return $this->quotedMessage;
    }

    public function hasQuotedMessage()
    {
        return isset($this->quotedMessage);
    }

    public function clearQuotedMessage()
    {
        unset($this->quotedMessage);
    }

    




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

        return $this;
    }

    



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

    public function hasRemoteJid()
    {
        return isset($this->remoteJid);
    }

    public function clearRemoteJid()
    {
        unset($this->remoteJid);
    }

    




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

        return $this;
    }

    



    public function getMentionedJid()
    {
        return $this->mentionedJid;
    }

    




    public function setMentionedJid($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->mentionedJid = $arr;

        return $this;
    }

    



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

    public function hasConversionSource()
    {
        return isset($this->conversionSource);
    }

    public function clearConversionSource()
    {
        unset($this->conversionSource);
    }

    




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

        return $this;
    }

    



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

    public function hasConversionData()
    {
        return isset($this->conversionData);
    }

    public function clearConversionData()
    {
        unset($this->conversionData);
    }

    




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

        return $this;
    }

    



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

    public function hasConversionDelaySeconds()
    {
        return isset($this->conversionDelaySeconds);
    }

    public function clearConversionDelaySeconds()
    {
        unset($this->conversionDelaySeconds);
    }

    




    public function setConversionDelaySeconds($var)
    {
        GPBUtil::checkUint32($var);
        $this->conversionDelaySeconds = $var;

        return $this;
    }

    



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

    public function hasForwardingScore()
    {
        return isset($this->forwardingScore);
    }

    public function clearForwardingScore()
    {
        unset($this->forwardingScore);
    }

    




    public function setForwardingScore($var)
    {
        GPBUtil::checkUint32($var);
        $this->forwardingScore = $var;

        return $this;
    }

    



    public function getIsForwarded()
    {
        return isset($this->isForwarded) ? $this->isForwarded : false;
    }

    public function hasIsForwarded()
    {
        return isset($this->isForwarded);
    }

    public function clearIsForwarded()
    {
        unset($this->isForwarded);
    }

    




    public function setIsForwarded($var)
    {
        GPBUtil::checkBool($var);
        $this->isForwarded = $var;

        return $this;
    }

    



    public function getQuotedAd()
    {
        return $this->quotedAd;
    }

    public function hasQuotedAd()
    {
        return isset($this->quotedAd);
    }

    public function clearQuotedAd()
    {
        unset($this->quotedAd);
    }

    




    public function setQuotedAd($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\AdReplyInfo::class);
        $this->quotedAd = $var;

        return $this;
    }

    



    public function getPlaceholderKey()
    {
        return $this->placeholderKey;
    }

    public function hasPlaceholderKey()
    {
        return isset($this->placeholderKey);
    }

    public function clearPlaceholderKey()
    {
        unset($this->placeholderKey);
    }

    




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

        return $this;
    }

    



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

    public function hasExpiration()
    {
        return isset($this->expiration);
    }

    public function clearExpiration()
    {
        unset($this->expiration);
    }

    




    public function setExpiration($var)
    {
        GPBUtil::checkUint32($var);
        $this->expiration = $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 getEphemeralSharedSecret()
    {
        return isset($this->ephemeralSharedSecret) ? $this->ephemeralSharedSecret : '';
    }

    public function hasEphemeralSharedSecret()
    {
        return isset($this->ephemeralSharedSecret);
    }

    public function clearEphemeralSharedSecret()
    {
        unset($this->ephemeralSharedSecret);
    }

    




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

        return $this;
    }

    



    public function getExternalAdReply()
    {
        return $this->externalAdReply;
    }

    public function hasExternalAdReply()
    {
        return isset($this->externalAdReply);
    }

    public function clearExternalAdReply()
    {
        unset($this->externalAdReply);
    }

    




    public function setExternalAdReply($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\ExternalAdReplyInfo::class);
        $this->externalAdReply = $var;

        return $this;
    }

    



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

    public function hasEntryPointConversionSource()
    {
        return isset($this->entryPointConversionSource);
    }

    public function clearEntryPointConversionSource()
    {
        unset($this->entryPointConversionSource);
    }

    




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

        return $this;
    }

    



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

    public function hasEntryPointConversionApp()
    {
        return isset($this->entryPointConversionApp);
    }

    public function clearEntryPointConversionApp()
    {
        unset($this->entryPointConversionApp);
    }

    




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

        return $this;
    }

    



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

    public function hasEntryPointConversionDelaySeconds()
    {
        return isset($this->entryPointConversionDelaySeconds);
    }

    public function clearEntryPointConversionDelaySeconds()
    {
        unset($this->entryPointConversionDelaySeconds);
    }

    




    public function setEntryPointConversionDelaySeconds($var)
    {
        GPBUtil::checkUint32($var);
        $this->entryPointConversionDelaySeconds = $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 getActionLink()
    {
        return $this->actionLink;
    }

    public function hasActionLink()
    {
        return isset($this->actionLink);
    }

    public function clearActionLink()
    {
        unset($this->actionLink);
    }

    




    public function setActionLink($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ActionLink::class);
        $this->actionLink = $var;

        return $this;
    }

    



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

    public function hasGroupSubject()
    {
        return isset($this->groupSubject);
    }

    public function clearGroupSubject()
    {
        unset($this->groupSubject);
    }

    




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

        return $this;
    }

    



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

    public function hasParentGroupJid()
    {
        return isset($this->parentGroupJid);
    }

    public function clearParentGroupJid()
    {
        unset($this->parentGroupJid);
    }

    




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

        return $this;
    }

    



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

    public function hasTrustBannerType()
    {
        return isset($this->trustBannerType);
    }

    public function clearTrustBannerType()
    {
        unset($this->trustBannerType);
    }

    




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

        return $this;
    }

    



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

    public function hasTrustBannerAction()
    {
        return isset($this->trustBannerAction);
    }

    public function clearTrustBannerAction()
    {
        unset($this->trustBannerAction);
    }

    




    public function setTrustBannerAction($var)
    {
        GPBUtil::checkUint32($var);
        $this->trustBannerAction = $var;

        return $this;
    }

    



    public function getIsSampled()
    {
        return isset($this->isSampled) ? $this->isSampled : false;
    }

    public function hasIsSampled()
    {
        return isset($this->isSampled);
    }

    public function clearIsSampled()
    {
        unset($this->isSampled);
    }

    




    public function setIsSampled($var)
    {
        GPBUtil::checkBool($var);
        $this->isSampled = $var;

        return $this;
    }

    



    public function getGroupMentions()
    {
        return $this->groupMentions;
    }

    




    public function setGroupMentions($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \PhpWA\Protocol\Proto\GroupMention::class);
        $this->groupMentions = $arr;

        return $this;
    }

    



    public function getUtm()
    {
        return $this->utm;
    }

    public function hasUtm()
    {
        return isset($this->utm);
    }

    public function clearUtm()
    {
        unset($this->utm);
    }

    




    public function setUtm($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\UTMInfo::class);
        $this->utm = $var;

        return $this;
    }

    



    public function getForwardedNewsletterMessageInfo()
    {
        return $this->forwardedNewsletterMessageInfo;
    }

    public function hasForwardedNewsletterMessageInfo()
    {
        return isset($this->forwardedNewsletterMessageInfo);
    }

    public function clearForwardedNewsletterMessageInfo()
    {
        unset($this->forwardedNewsletterMessageInfo);
    }

    




    public function setForwardedNewsletterMessageInfo($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\ForwardedNewsletterMessageInfo::class);
        $this->forwardedNewsletterMessageInfo = $var;

        return $this;
    }

    



    public function getBusinessMessageForwardInfo()
    {
        return $this->businessMessageForwardInfo;
    }

    public function hasBusinessMessageForwardInfo()
    {
        return isset($this->businessMessageForwardInfo);
    }

    public function clearBusinessMessageForwardInfo()
    {
        unset($this->businessMessageForwardInfo);
    }

    




    public function setBusinessMessageForwardInfo($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\BusinessMessageForwardInfo::class);
        $this->businessMessageForwardInfo = $var;

        return $this;
    }

    



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

    public function hasSmbClientCampaignId()
    {
        return isset($this->smbClientCampaignId);
    }

    public function clearSmbClientCampaignId()
    {
        unset($this->smbClientCampaignId);
    }

    




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

        return $this;
    }

    



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

    public function hasSmbServerCampaignId()
    {
        return isset($this->smbServerCampaignId);
    }

    public function clearSmbServerCampaignId()
    {
        unset($this->smbServerCampaignId);
    }

    




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

        return $this;
    }

    



    public function getDataSharingContext()
    {
        return $this->dataSharingContext;
    }

    public function hasDataSharingContext()
    {
        return isset($this->dataSharingContext);
    }

    public function clearDataSharingContext()
    {
        unset($this->dataSharingContext);
    }

    




    public function setDataSharingContext($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\DataSharingContext::class);
        $this->dataSharingContext = $var;

        return $this;
    }

    



    public function getAlwaysShowAdAttribution()
    {
        return isset($this->alwaysShowAdAttribution) ? $this->alwaysShowAdAttribution : false;
    }

    public function hasAlwaysShowAdAttribution()
    {
        return isset($this->alwaysShowAdAttribution);
    }

    public function clearAlwaysShowAdAttribution()
    {
        unset($this->alwaysShowAdAttribution);
    }

    




    public function setAlwaysShowAdAttribution($var)
    {
        GPBUtil::checkBool($var);
        $this->alwaysShowAdAttribution = $var;

        return $this;
    }

    



    public function getFeatureEligibilities()
    {
        return $this->featureEligibilities;
    }

    public function hasFeatureEligibilities()
    {
        return isset($this->featureEligibilities);
    }

    public function clearFeatureEligibilities()
    {
        unset($this->featureEligibilities);
    }

    




    public function setFeatureEligibilities($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\FeatureEligibilities::class);
        $this->featureEligibilities = $var;

        return $this;
    }

    



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

    public function hasEntryPointConversionExternalSource()
    {
        return isset($this->entryPointConversionExternalSource);
    }

    public function clearEntryPointConversionExternalSource()
    {
        unset($this->entryPointConversionExternalSource);
    }

    




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

        return $this;
    }

    



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

    public function hasEntryPointConversionExternalMedium()
    {
        return isset($this->entryPointConversionExternalMedium);
    }

    public function clearEntryPointConversionExternalMedium()
    {
        unset($this->entryPointConversionExternalMedium);
    }

    




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

        return $this;
    }

    



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

    public function hasCtwaSignals()
    {
        return isset($this->ctwaSignals);
    }

    public function clearCtwaSignals()
    {
        unset($this->ctwaSignals);
    }

    




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

        return $this;
    }

    



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

    public function hasCtwaPayload()
    {
        return isset($this->ctwaPayload);
    }

    public function clearCtwaPayload()
    {
        unset($this->ctwaPayload);
    }

    




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

        return $this;
    }

    



    public function getForwardedAiBotMessageInfo()
    {
        return $this->forwardedAiBotMessageInfo;
    }

    public function hasForwardedAiBotMessageInfo()
    {
        return isset($this->forwardedAiBotMessageInfo);
    }

    public function clearForwardedAiBotMessageInfo()
    {
        unset($this->forwardedAiBotMessageInfo);
    }

    




    public function setForwardedAiBotMessageInfo($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ForwardedAIBotMessageInfo::class);
        $this->forwardedAiBotMessageInfo = $var;

        return $this;
    }

    



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

    public function hasStatusAttributionType()
    {
        return isset($this->statusAttributionType);
    }

    public function clearStatusAttributionType()
    {
        unset($this->statusAttributionType);
    }

    




    public function setStatusAttributionType($var)
    {
        GPBUtil::checkEnum($var, \PhpWA\Protocol\Proto\ContextInfo\StatusAttributionType::class);
        $this->statusAttributionType = $var;

        return $this;
    }

    



    public function getUrlTrackingMap()
    {
        return $this->urlTrackingMap;
    }

    public function hasUrlTrackingMap()
    {
        return isset($this->urlTrackingMap);
    }

    public function clearUrlTrackingMap()
    {
        unset($this->urlTrackingMap);
    }

    




    public function setUrlTrackingMap($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\UrlTrackingMap::class);
        $this->urlTrackingMap = $var;

        return $this;
    }

    



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

    public function hasPairedMediaType()
    {
        return isset($this->pairedMediaType);
    }

    public function clearPairedMediaType()
    {
        unset($this->pairedMediaType);
    }

    




    public function setPairedMediaType($var)
    {
        GPBUtil::checkEnum($var, \PhpWA\Protocol\Proto\ContextInfo\PairedMediaType::class);
        $this->pairedMediaType = $var;

        return $this;
    }

    



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

    public function hasRankingVersion()
    {
        return isset($this->rankingVersion);
    }

    public function clearRankingVersion()
    {
        unset($this->rankingVersion);
    }

    




    public function setRankingVersion($var)
    {
        GPBUtil::checkUint32($var);
        $this->rankingVersion = $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;
    }

    



    public function getIsQuestion()
    {
        return isset($this->isQuestion) ? $this->isQuestion : false;
    }

    public function hasIsQuestion()
    {
        return isset($this->isQuestion);
    }

    public function clearIsQuestion()
    {
        unset($this->isQuestion);
    }

    




    public function setIsQuestion($var)
    {
        GPBUtil::checkBool($var);
        $this->isQuestion = $var;

        return $this;
    }

    



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

    public function hasStatusSourceType()
    {
        return isset($this->statusSourceType);
    }

    public function clearStatusSourceType()
    {
        unset($this->statusSourceType);
    }

    




    public function setStatusSourceType($var)
    {
        GPBUtil::checkEnum($var, \PhpWA\Protocol\Proto\ContextInfo\StatusSourceType::class);
        $this->statusSourceType = $var;

        return $this;
    }

    



    public function getStatusAttributions()
    {
        return $this->statusAttributions;
    }

    




    public function setStatusAttributions($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \PhpWA\Protocol\Proto\StatusAttribution::class);
        $this->statusAttributions = $arr;

        return $this;
    }

    



    public function getIsGroupStatus()
    {
        return isset($this->isGroupStatus) ? $this->isGroupStatus : false;
    }

    public function hasIsGroupStatus()
    {
        return isset($this->isGroupStatus);
    }

    public function clearIsGroupStatus()
    {
        unset($this->isGroupStatus);
    }

    




    public function setIsGroupStatus($var)
    {
        GPBUtil::checkBool($var);
        $this->isGroupStatus = $var;

        return $this;
    }

    



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

    public function hasForwardOrigin()
    {
        return isset($this->forwardOrigin);
    }

    public function clearForwardOrigin()
    {
        unset($this->forwardOrigin);
    }

    




    public function setForwardOrigin($var)
    {
        GPBUtil::checkEnum($var, \PhpWA\Protocol\Proto\ContextInfo\ForwardOrigin::class);
        $this->forwardOrigin = $var;

        return $this;
    }

    



    public function getQuestionReplyQuotedMessage()
    {
        return $this->questionReplyQuotedMessage;
    }

    public function hasQuestionReplyQuotedMessage()
    {
        return isset($this->questionReplyQuotedMessage);
    }

    public function clearQuestionReplyQuotedMessage()
    {
        unset($this->questionReplyQuotedMessage);
    }

    




    public function setQuestionReplyQuotedMessage($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\QuestionReplyQuotedMessage::class);
        $this->questionReplyQuotedMessage = $var;

        return $this;
    }

    



    public function getStatusAudienceMetadata()
    {
        return $this->statusAudienceMetadata;
    }

    public function hasStatusAudienceMetadata()
    {
        return isset($this->statusAudienceMetadata);
    }

    public function clearStatusAudienceMetadata()
    {
        unset($this->statusAudienceMetadata);
    }

    




    public function setStatusAudienceMetadata($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\ContextInfo\StatusAudienceMetadata::class);
        $this->statusAudienceMetadata = $var;

        return $this;
    }

    



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

    public function hasNonJidMentions()
    {
        return isset($this->nonJidMentions);
    }

    public function clearNonJidMentions()
    {
        unset($this->nonJidMentions);
    }

    




    public function setNonJidMentions($var)
    {
        GPBUtil::checkUint32($var);
        $this->nonJidMentions = $var;

        return $this;
    }

    



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

    public function hasQuotedType()
    {
        return isset($this->quotedType);
    }

    public function clearQuotedType()
    {
        unset($this->quotedType);
    }

    




    public function setQuotedType($var)
    {
        GPBUtil::checkEnum($var, \PhpWA\Protocol\Proto\ContextInfo\QuotedType::class);
        $this->quotedType = $var;

        return $this;
    }

    



    public function getBotMessageSharingInfo()
    {
        return $this->botMessageSharingInfo;
    }

    public function hasBotMessageSharingInfo()
    {
        return isset($this->botMessageSharingInfo);
    }

    public function clearBotMessageSharingInfo()
    {
        unset($this->botMessageSharingInfo);
    }

    




    public function setBotMessageSharingInfo($var)
    {
        GPBUtil::checkMessage($var, \PhpWA\Protocol\Proto\BotMessageSharingInfo::class);
        $this->botMessageSharingInfo = $var;

        return $this;
    }

}

