# @generated by mypy-protobuf.  Do not edit manually!
import sys
from typing import (
    Iterable as typing___Iterable,
    Optional as typing___Optional,
    Text as typing___Text,
    overload as typing___overload,
)

from google.protobuf.descriptor import (
    Descriptor as google___protobuf___descriptor___Descriptor,
    FileDescriptor as google___protobuf___descriptor___FileDescriptor,
)
from google.protobuf.internal.containers import (
    RepeatedCompositeFieldContainer as google___protobuf___internal___containers___RepeatedCompositeFieldContainer,
    RepeatedScalarFieldContainer as google___protobuf___internal___containers___RepeatedScalarFieldContainer,
)
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.common.dates_pb2 import (
    DateRange as google___ads___googleads___v6___common___dates_pb2___DateRange,
)
from google.ads.google_ads.v6.proto.enums.invoice_type_pb2 import (
    InvoiceTypeEnum as google___ads___googleads___v6___enums___invoice_type_pb2___InvoiceTypeEnum,
)

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

DESCRIPTOR: google___protobuf___descriptor___FileDescriptor = ...

class Invoice(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    class AccountBudgetSummary(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        customer: typing___Text = ...
        customer_descriptive_name: typing___Text = ...
        account_budget: typing___Text = ...
        account_budget_name: typing___Text = ...
        purchase_order_number: typing___Text = ...
        subtotal_amount_micros: builtin___int = ...
        tax_amount_micros: builtin___int = ...
        total_amount_micros: builtin___int = ...
        @property
        def billable_activity_date_range(
            self,
        ) -> google___ads___googleads___v6___common___dates_pb2___DateRange: ...
        def __init__(
            self,
            *,
            customer: typing___Optional[typing___Text] = None,
            customer_descriptive_name: typing___Optional[typing___Text] = None,
            account_budget: typing___Optional[typing___Text] = None,
            account_budget_name: typing___Optional[typing___Text] = None,
            purchase_order_number: typing___Optional[typing___Text] = None,
            subtotal_amount_micros: typing___Optional[builtin___int] = None,
            tax_amount_micros: typing___Optional[builtin___int] = None,
            total_amount_micros: typing___Optional[builtin___int] = None,
            billable_activity_date_range: typing___Optional[
                google___ads___googleads___v6___common___dates_pb2___DateRange
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "_account_budget",
                b"_account_budget",
                "_account_budget_name",
                b"_account_budget_name",
                "_customer",
                b"_customer",
                "_customer_descriptive_name",
                b"_customer_descriptive_name",
                "_purchase_order_number",
                b"_purchase_order_number",
                "_subtotal_amount_micros",
                b"_subtotal_amount_micros",
                "_tax_amount_micros",
                b"_tax_amount_micros",
                "_total_amount_micros",
                b"_total_amount_micros",
                "account_budget",
                b"account_budget",
                "account_budget_name",
                b"account_budget_name",
                "billable_activity_date_range",
                b"billable_activity_date_range",
                "customer",
                b"customer",
                "customer_descriptive_name",
                b"customer_descriptive_name",
                "purchase_order_number",
                b"purchase_order_number",
                "subtotal_amount_micros",
                b"subtotal_amount_micros",
                "tax_amount_micros",
                b"tax_amount_micros",
                "total_amount_micros",
                b"total_amount_micros",
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "_account_budget",
                b"_account_budget",
                "_account_budget_name",
                b"_account_budget_name",
                "_customer",
                b"_customer",
                "_customer_descriptive_name",
                b"_customer_descriptive_name",
                "_purchase_order_number",
                b"_purchase_order_number",
                "_subtotal_amount_micros",
                b"_subtotal_amount_micros",
                "_tax_amount_micros",
                b"_tax_amount_micros",
                "_total_amount_micros",
                b"_total_amount_micros",
                "account_budget",
                b"account_budget",
                "account_budget_name",
                b"account_budget_name",
                "billable_activity_date_range",
                b"billable_activity_date_range",
                "customer",
                b"customer",
                "customer_descriptive_name",
                b"customer_descriptive_name",
                "purchase_order_number",
                b"purchase_order_number",
                "subtotal_amount_micros",
                b"subtotal_amount_micros",
                "tax_amount_micros",
                b"tax_amount_micros",
                "total_amount_micros",
                b"total_amount_micros",
            ],
        ) -> None: ...
        @typing___overload
        def WhichOneof(
            self,
            oneof_group: typing_extensions___Literal[
                "_account_budget", b"_account_budget"
            ],
        ) -> typing_extensions___Literal["account_budget"]: ...
        @typing___overload
        def WhichOneof(
            self,
            oneof_group: typing_extensions___Literal[
                "_account_budget_name", b"_account_budget_name"
            ],
        ) -> typing_extensions___Literal["account_budget_name"]: ...
        @typing___overload
        def WhichOneof(
            self, oneof_group: typing_extensions___Literal["_customer", b"_customer"]
        ) -> typing_extensions___Literal["customer"]: ...
        @typing___overload
        def WhichOneof(
            self,
            oneof_group: typing_extensions___Literal[
                "_customer_descriptive_name", b"_customer_descriptive_name"
            ],
        ) -> typing_extensions___Literal["customer_descriptive_name"]: ...
        @typing___overload
        def WhichOneof(
            self,
            oneof_group: typing_extensions___Literal[
                "_purchase_order_number", b"_purchase_order_number"
            ],
        ) -> typing_extensions___Literal["purchase_order_number"]: ...
        @typing___overload
        def WhichOneof(
            self,
            oneof_group: typing_extensions___Literal[
                "_subtotal_amount_micros", b"_subtotal_amount_micros"
            ],
        ) -> typing_extensions___Literal["subtotal_amount_micros"]: ...
        @typing___overload
        def WhichOneof(
            self,
            oneof_group: typing_extensions___Literal[
                "_tax_amount_micros", b"_tax_amount_micros"
            ],
        ) -> typing_extensions___Literal["tax_amount_micros"]: ...
        @typing___overload
        def WhichOneof(
            self,
            oneof_group: typing_extensions___Literal[
                "_total_amount_micros", b"_total_amount_micros"
            ],
        ) -> typing_extensions___Literal["total_amount_micros"]: ...
    type___AccountBudgetSummary = AccountBudgetSummary

    resource_name: typing___Text = ...
    id: typing___Text = ...
    type: google___ads___googleads___v6___enums___invoice_type_pb2___InvoiceTypeEnum.InvoiceTypeValue = ...
    billing_setup: typing___Text = ...
    payments_account_id: typing___Text = ...
    payments_profile_id: typing___Text = ...
    issue_date: typing___Text = ...
    due_date: typing___Text = ...
    currency_code: typing___Text = ...
    adjustments_subtotal_amount_micros: builtin___int = ...
    adjustments_tax_amount_micros: builtin___int = ...
    adjustments_total_amount_micros: builtin___int = ...
    regulatory_costs_subtotal_amount_micros: builtin___int = ...
    regulatory_costs_tax_amount_micros: builtin___int = ...
    regulatory_costs_total_amount_micros: builtin___int = ...
    subtotal_amount_micros: builtin___int = ...
    tax_amount_micros: builtin___int = ...
    total_amount_micros: builtin___int = ...
    corrected_invoice: typing___Text = ...
    replaced_invoices: google___protobuf___internal___containers___RepeatedScalarFieldContainer[
        typing___Text
    ] = ...
    pdf_url: typing___Text = ...
    @property
    def service_date_range(
        self,
    ) -> google___ads___googleads___v6___common___dates_pb2___DateRange: ...
    @property
    def account_budget_summaries(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        type___Invoice.AccountBudgetSummary
    ]: ...
    def __init__(
        self,
        *,
        resource_name: typing___Optional[typing___Text] = None,
        id: typing___Optional[typing___Text] = None,
        type: typing___Optional[
            google___ads___googleads___v6___enums___invoice_type_pb2___InvoiceTypeEnum.InvoiceTypeValue
        ] = None,
        billing_setup: typing___Optional[typing___Text] = None,
        payments_account_id: typing___Optional[typing___Text] = None,
        payments_profile_id: typing___Optional[typing___Text] = None,
        issue_date: typing___Optional[typing___Text] = None,
        due_date: typing___Optional[typing___Text] = None,
        service_date_range: typing___Optional[
            google___ads___googleads___v6___common___dates_pb2___DateRange
        ] = None,
        currency_code: typing___Optional[typing___Text] = None,
        adjustments_subtotal_amount_micros: typing___Optional[builtin___int] = None,
        adjustments_tax_amount_micros: typing___Optional[builtin___int] = None,
        adjustments_total_amount_micros: typing___Optional[builtin___int] = None,
        regulatory_costs_subtotal_amount_micros: typing___Optional[
            builtin___int
        ] = None,
        regulatory_costs_tax_amount_micros: typing___Optional[builtin___int] = None,
        regulatory_costs_total_amount_micros: typing___Optional[builtin___int] = None,
        subtotal_amount_micros: typing___Optional[builtin___int] = None,
        tax_amount_micros: typing___Optional[builtin___int] = None,
        total_amount_micros: typing___Optional[builtin___int] = None,
        corrected_invoice: typing___Optional[typing___Text] = None,
        replaced_invoices: typing___Optional[typing___Iterable[typing___Text]] = None,
        pdf_url: typing___Optional[typing___Text] = None,
        account_budget_summaries: typing___Optional[
            typing___Iterable[type___Invoice.AccountBudgetSummary]
        ] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_billing_setup",
            b"_billing_setup",
            "_corrected_invoice",
            b"_corrected_invoice",
            "_currency_code",
            b"_currency_code",
            "_due_date",
            b"_due_date",
            "_id",
            b"_id",
            "_issue_date",
            b"_issue_date",
            "_payments_account_id",
            b"_payments_account_id",
            "_payments_profile_id",
            b"_payments_profile_id",
            "_pdf_url",
            b"_pdf_url",
            "_subtotal_amount_micros",
            b"_subtotal_amount_micros",
            "_tax_amount_micros",
            b"_tax_amount_micros",
            "_total_amount_micros",
            b"_total_amount_micros",
            "billing_setup",
            b"billing_setup",
            "corrected_invoice",
            b"corrected_invoice",
            "currency_code",
            b"currency_code",
            "due_date",
            b"due_date",
            "id",
            b"id",
            "issue_date",
            b"issue_date",
            "payments_account_id",
            b"payments_account_id",
            "payments_profile_id",
            b"payments_profile_id",
            "pdf_url",
            b"pdf_url",
            "service_date_range",
            b"service_date_range",
            "subtotal_amount_micros",
            b"subtotal_amount_micros",
            "tax_amount_micros",
            b"tax_amount_micros",
            "total_amount_micros",
            b"total_amount_micros",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_billing_setup",
            b"_billing_setup",
            "_corrected_invoice",
            b"_corrected_invoice",
            "_currency_code",
            b"_currency_code",
            "_due_date",
            b"_due_date",
            "_id",
            b"_id",
            "_issue_date",
            b"_issue_date",
            "_payments_account_id",
            b"_payments_account_id",
            "_payments_profile_id",
            b"_payments_profile_id",
            "_pdf_url",
            b"_pdf_url",
            "_subtotal_amount_micros",
            b"_subtotal_amount_micros",
            "_tax_amount_micros",
            b"_tax_amount_micros",
            "_total_amount_micros",
            b"_total_amount_micros",
            "account_budget_summaries",
            b"account_budget_summaries",
            "adjustments_subtotal_amount_micros",
            b"adjustments_subtotal_amount_micros",
            "adjustments_tax_amount_micros",
            b"adjustments_tax_amount_micros",
            "adjustments_total_amount_micros",
            b"adjustments_total_amount_micros",
            "billing_setup",
            b"billing_setup",
            "corrected_invoice",
            b"corrected_invoice",
            "currency_code",
            b"currency_code",
            "due_date",
            b"due_date",
            "id",
            b"id",
            "issue_date",
            b"issue_date",
            "payments_account_id",
            b"payments_account_id",
            "payments_profile_id",
            b"payments_profile_id",
            "pdf_url",
            b"pdf_url",
            "regulatory_costs_subtotal_amount_micros",
            b"regulatory_costs_subtotal_amount_micros",
            "regulatory_costs_tax_amount_micros",
            b"regulatory_costs_tax_amount_micros",
            "regulatory_costs_total_amount_micros",
            b"regulatory_costs_total_amount_micros",
            "replaced_invoices",
            b"replaced_invoices",
            "resource_name",
            b"resource_name",
            "service_date_range",
            b"service_date_range",
            "subtotal_amount_micros",
            b"subtotal_amount_micros",
            "tax_amount_micros",
            b"tax_amount_micros",
            "total_amount_micros",
            b"total_amount_micros",
            "type",
            b"type",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal["_billing_setup", b"_billing_setup"],
    ) -> typing_extensions___Literal["billing_setup"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_corrected_invoice", b"_corrected_invoice"
        ],
    ) -> typing_extensions___Literal["corrected_invoice"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal["_currency_code", b"_currency_code"],
    ) -> typing_extensions___Literal["currency_code"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_due_date", b"_due_date"]
    ) -> typing_extensions___Literal["due_date"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_id", b"_id"]
    ) -> typing_extensions___Literal["id"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_issue_date", b"_issue_date"]
    ) -> typing_extensions___Literal["issue_date"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_payments_account_id", b"_payments_account_id"
        ],
    ) -> typing_extensions___Literal["payments_account_id"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_payments_profile_id", b"_payments_profile_id"
        ],
    ) -> typing_extensions___Literal["payments_profile_id"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_pdf_url", b"_pdf_url"]
    ) -> typing_extensions___Literal["pdf_url"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_subtotal_amount_micros", b"_subtotal_amount_micros"
        ],
    ) -> typing_extensions___Literal["subtotal_amount_micros"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_tax_amount_micros", b"_tax_amount_micros"
        ],
    ) -> typing_extensions___Literal["tax_amount_micros"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_total_amount_micros", b"_total_amount_micros"
        ],
    ) -> typing_extensions___Literal["total_amount_micros"]: ...

type___Invoice = Invoice
