# @generated by mypy-protobuf.  Do not edit manually!
import sys
from typing import Optional as typing___Optional, Text as typing___Text

from google.protobuf.descriptor import (
    Descriptor as google___protobuf___descriptor___Descriptor,
    FileDescriptor as google___protobuf___descriptor___FileDescriptor,
)
from google.protobuf.field_mask_pb2 import (
    FieldMask as google___protobuf___field_mask_pb2___FieldMask,
)
from google.protobuf.message import Message as google___protobuf___message___Message
from typing_extensions import Literal as typing_extensions___Literal

from google.ads.google_ads.v6.proto.enums.change_client_type_pb2 import (
    ChangeClientTypeEnum as google___ads___googleads___v6___enums___change_client_type_pb2___ChangeClientTypeEnum,
)
from google.ads.google_ads.v6.proto.enums.change_event_resource_type_pb2 import (
    ChangeEventResourceTypeEnum as google___ads___googleads___v6___enums___change_event_resource_type_pb2___ChangeEventResourceTypeEnum,
)
from google.ads.google_ads.v6.proto.enums.resource_change_operation_pb2 import (
    ResourceChangeOperationEnum as google___ads___googleads___v6___enums___resource_change_operation_pb2___ResourceChangeOperationEnum,
)
from google.ads.google_ads.v6.proto.resources.ad_group_bid_modifier_pb2 import (
    AdGroupBidModifier as google___ads___googleads___v6___resources___ad_group_bid_modifier_pb2___AdGroupBidModifier,
)
from google.ads.google_ads.v6.proto.resources.ad_group_criterion_pb2 import (
    AdGroupCriterion as google___ads___googleads___v6___resources___ad_group_criterion_pb2___AdGroupCriterion,
)
from google.ads.google_ads.v6.proto.resources.ad_group_pb2 import (
    AdGroup as google___ads___googleads___v6___resources___ad_group_pb2___AdGroup,
)
from google.ads.google_ads.v6.proto.resources.ad_pb2 import (
    Ad as google___ads___googleads___v6___resources___ad_pb2___Ad,
)
from google.ads.google_ads.v6.proto.resources.campaign_budget_pb2 import (
    CampaignBudget as google___ads___googleads___v6___resources___campaign_budget_pb2___CampaignBudget,
)
from google.ads.google_ads.v6.proto.resources.campaign_criterion_pb2 import (
    CampaignCriterion as google___ads___googleads___v6___resources___campaign_criterion_pb2___CampaignCriterion,
)
from google.ads.google_ads.v6.proto.resources.campaign_pb2 import (
    Campaign as google___ads___googleads___v6___resources___campaign_pb2___Campaign,
)

builtin___bool = bool
builtin___bytes = bytes
builtin___float = float
builtin___int = int

DESCRIPTOR: google___protobuf___descriptor___FileDescriptor = ...

class ChangeEvent(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    class ChangedResource(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def ad(self) -> google___ads___googleads___v6___resources___ad_pb2___Ad: ...
        @property
        def ad_group(
            self,
        ) -> google___ads___googleads___v6___resources___ad_group_pb2___AdGroup: ...
        @property
        def ad_group_criterion(
            self,
        ) -> google___ads___googleads___v6___resources___ad_group_criterion_pb2___AdGroupCriterion: ...
        @property
        def campaign(
            self,
        ) -> google___ads___googleads___v6___resources___campaign_pb2___Campaign: ...
        @property
        def campaign_budget(
            self,
        ) -> google___ads___googleads___v6___resources___campaign_budget_pb2___CampaignBudget: ...
        @property
        def ad_group_bid_modifier(
            self,
        ) -> google___ads___googleads___v6___resources___ad_group_bid_modifier_pb2___AdGroupBidModifier: ...
        @property
        def campaign_criterion(
            self,
        ) -> google___ads___googleads___v6___resources___campaign_criterion_pb2___CampaignCriterion: ...
        def __init__(
            self,
            *,
            ad: typing___Optional[
                google___ads___googleads___v6___resources___ad_pb2___Ad
            ] = None,
            ad_group: typing___Optional[
                google___ads___googleads___v6___resources___ad_group_pb2___AdGroup
            ] = None,
            ad_group_criterion: typing___Optional[
                google___ads___googleads___v6___resources___ad_group_criterion_pb2___AdGroupCriterion
            ] = None,
            campaign: typing___Optional[
                google___ads___googleads___v6___resources___campaign_pb2___Campaign
            ] = None,
            campaign_budget: typing___Optional[
                google___ads___googleads___v6___resources___campaign_budget_pb2___CampaignBudget
            ] = None,
            ad_group_bid_modifier: typing___Optional[
                google___ads___googleads___v6___resources___ad_group_bid_modifier_pb2___AdGroupBidModifier
            ] = None,
            campaign_criterion: typing___Optional[
                google___ads___googleads___v6___resources___campaign_criterion_pb2___CampaignCriterion
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "ad",
                b"ad",
                "ad_group",
                b"ad_group",
                "ad_group_bid_modifier",
                b"ad_group_bid_modifier",
                "ad_group_criterion",
                b"ad_group_criterion",
                "campaign",
                b"campaign",
                "campaign_budget",
                b"campaign_budget",
                "campaign_criterion",
                b"campaign_criterion",
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "ad",
                b"ad",
                "ad_group",
                b"ad_group",
                "ad_group_bid_modifier",
                b"ad_group_bid_modifier",
                "ad_group_criterion",
                b"ad_group_criterion",
                "campaign",
                b"campaign",
                "campaign_budget",
                b"campaign_budget",
                "campaign_criterion",
                b"campaign_criterion",
            ],
        ) -> None: ...
    type___ChangedResource = ChangedResource

    resource_name: typing___Text = ...
    change_date_time: typing___Text = ...
    change_resource_type: google___ads___googleads___v6___enums___change_event_resource_type_pb2___ChangeEventResourceTypeEnum.ChangeEventResourceTypeValue = ...
    change_resource_name: typing___Text = ...
    client_type: google___ads___googleads___v6___enums___change_client_type_pb2___ChangeClientTypeEnum.ChangeClientTypeValue = ...
    user_email: typing___Text = ...
    resource_change_operation: google___ads___googleads___v6___enums___resource_change_operation_pb2___ResourceChangeOperationEnum.ResourceChangeOperationValue = ...
    campaign: typing___Text = ...
    ad_group: typing___Text = ...
    @property
    def old_resource(self) -> type___ChangeEvent.ChangedResource: ...
    @property
    def new_resource(self) -> type___ChangeEvent.ChangedResource: ...
    @property
    def changed_fields(self) -> google___protobuf___field_mask_pb2___FieldMask: ...
    def __init__(
        self,
        *,
        resource_name: typing___Optional[typing___Text] = None,
        change_date_time: typing___Optional[typing___Text] = None,
        change_resource_type: typing___Optional[
            google___ads___googleads___v6___enums___change_event_resource_type_pb2___ChangeEventResourceTypeEnum.ChangeEventResourceTypeValue
        ] = None,
        change_resource_name: typing___Optional[typing___Text] = None,
        client_type: typing___Optional[
            google___ads___googleads___v6___enums___change_client_type_pb2___ChangeClientTypeEnum.ChangeClientTypeValue
        ] = None,
        user_email: typing___Optional[typing___Text] = None,
        old_resource: typing___Optional[type___ChangeEvent.ChangedResource] = None,
        new_resource: typing___Optional[type___ChangeEvent.ChangedResource] = None,
        resource_change_operation: typing___Optional[
            google___ads___googleads___v6___enums___resource_change_operation_pb2___ResourceChangeOperationEnum.ResourceChangeOperationValue
        ] = None,
        changed_fields: typing___Optional[
            google___protobuf___field_mask_pb2___FieldMask
        ] = None,
        campaign: typing___Optional[typing___Text] = None,
        ad_group: typing___Optional[typing___Text] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "changed_fields",
            b"changed_fields",
            "new_resource",
            b"new_resource",
            "old_resource",
            b"old_resource",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "ad_group",
            b"ad_group",
            "campaign",
            b"campaign",
            "change_date_time",
            b"change_date_time",
            "change_resource_name",
            b"change_resource_name",
            "change_resource_type",
            b"change_resource_type",
            "changed_fields",
            b"changed_fields",
            "client_type",
            b"client_type",
            "new_resource",
            b"new_resource",
            "old_resource",
            b"old_resource",
            "resource_change_operation",
            b"resource_change_operation",
            "resource_name",
            b"resource_name",
            "user_email",
            b"user_email",
        ],
    ) -> None: ...

type___ChangeEvent = ChangeEvent
