from collections.abc import Mapping
from typing import Any, TypeVar

import google.protobuf.message
import proto

from google.ads.googleads.v13.enums.types.batch_job_status import BatchJobStatusEnum

_M = TypeVar("_M")

class BatchJob(proto.Message):
    class BatchJobMetadata(proto.Message):
        creation_date_time: str
        start_date_time: str
        completion_date_time: str
        estimated_completion_ratio: float
        operation_count: int
        executed_operation_count: int
        execution_limit_seconds: int
        def __init__(
            self: _M,
            mapping: _M | Mapping | google.protobuf.message.Message | None = ...,
            *,
            ignore_unknown_fields: bool = ...,
            creation_date_time: str = ...,
            start_date_time: str = ...,
            completion_date_time: str = ...,
            estimated_completion_ratio: float = ...,
            operation_count: int = ...,
            executed_operation_count: int = ...,
            execution_limit_seconds: int = ...
        ) -> None: ...
    resource_name: str
    id: int
    next_add_sequence_token: str
    metadata: BatchJob.BatchJobMetadata
    status: BatchJobStatusEnum.BatchJobStatus
    long_running_operation: str
    def __init__(
        self: _M,
        mapping: _M | Mapping | google.protobuf.message.Message | None = ...,
        *,
        ignore_unknown_fields: bool = ...,
        resource_name: str = ...,
        id: int = ...,
        next_add_sequence_token: str = ...,
        metadata: BatchJob.BatchJobMetadata = ...,
        status: BatchJobStatusEnum.BatchJobStatus = ...,
        long_running_operation: str = ...
    ) -> None: ...
