import { ServiceType } from "@protobuf-ts/runtime-rpc";
import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { Status } from "../../google/rpc/status";
import { MutateOperationResponse } from "./google_ads_service";
import { ResponseContentTypeEnum_ResponseContentType } from "../enums/response_content_type";
import { MutateOperation } from "./google_ads_service";
import { BatchJob } from "../resources/batch_job";
/**
 * Request message for [BatchJobService.MutateBatchJob][google.ads.googleads.v11.services.BatchJobService.MutateBatchJob].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateBatchJobRequest
 */
export interface MutateBatchJobRequest {
    /**
     * Required. The ID of the customer for which to create a batch job.
     *
     * @generated from protobuf field: string customer_id = 1;
     */
    customerId: string;
    /**
     * Required. The operation to perform on an individual batch job.
     *
     * @generated from protobuf field: google.ads.googleads.v11.services.BatchJobOperation operation = 2;
     */
    operation?: BatchJobOperation;
}
/**
 * A single operation on a batch job.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.BatchJobOperation
 */
export interface BatchJobOperation {
    /**
     * @generated from protobuf oneof: operation
     */
    operation: {
        oneofKind: "create";
        /**
         * Create operation: No resource name is expected for the new batch job.
         *
         * @generated from protobuf field: google.ads.googleads.v11.resources.BatchJob create = 1;
         */
        create: BatchJob;
    } | {
        oneofKind: "remove";
        /**
         * Remove operation: The batch job must not have been run. A resource name
         * for the removed batch job is expected, in this format:
         *
         * `customers/{customer_id}/batchJobs/{batch_job_id}`
         *
         * @generated from protobuf field: string remove = 4;
         */
        remove: string;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Response message for [BatchJobService.MutateBatchJob][google.ads.googleads.v11.services.BatchJobService.MutateBatchJob].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateBatchJobResponse
 */
export interface MutateBatchJobResponse {
    /**
     * The result for the mutate.
     *
     * @generated from protobuf field: google.ads.googleads.v11.services.MutateBatchJobResult result = 1;
     */
    result?: MutateBatchJobResult;
}
/**
 * The result for the batch job mutate.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateBatchJobResult
 */
export interface MutateBatchJobResult {
    /**
     * The resource name of the batch job.
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
}
/**
 * Request message for [BatchJobService.RunBatchJob][google.ads.googleads.v11.services.BatchJobService.RunBatchJob].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.RunBatchJobRequest
 */
export interface RunBatchJobRequest {
    /**
     * Required. The resource name of the BatchJob to run.
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
}
/**
 * Request message for [BatchJobService.AddBatchJobOperations][google.ads.googleads.v11.services.BatchJobService.AddBatchJobOperations].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.AddBatchJobOperationsRequest
 */
export interface AddBatchJobOperationsRequest {
    /**
     * Required. The resource name of the batch job.
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * A token used to enforce sequencing.
     *
     * The first AddBatchJobOperations request for a batch job should not set
     * sequence_token. Subsequent requests must set sequence_token to the value of
     * next_sequence_token received in the previous AddBatchJobOperations
     * response.
     *
     * @generated from protobuf field: string sequence_token = 2;
     */
    sequenceToken: string;
    /**
     * Required. The list of mutates being added.
     *
     * Operations can use negative integers as temp ids to signify dependencies
     * between entities created in this batch job. For example, a customer with
     * id = 1234 can create a campaign and an ad group in that same campaign by
     * creating a campaign in the first operation with the resource name
     * explicitly set to "customers/1234/campaigns/-1", and creating an ad group
     * in the second operation with the campaign field also set to
     * "customers/1234/campaigns/-1".
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.services.MutateOperation mutate_operations = 3;
     */
    mutateOperations: MutateOperation[];
}
/**
 * Response message for [BatchJobService.AddBatchJobOperations][google.ads.googleads.v11.services.BatchJobService.AddBatchJobOperations].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.AddBatchJobOperationsResponse
 */
export interface AddBatchJobOperationsResponse {
    /**
     * The total number of operations added so far for this batch job.
     *
     * @generated from protobuf field: int64 total_operations = 1;
     */
    totalOperations: bigint;
    /**
     * The sequence token to be used when calling AddBatchJobOperations again if
     * more operations need to be added. The next AddBatchJobOperations request
     * must set the sequence_token field to the value of this field.
     *
     * @generated from protobuf field: string next_sequence_token = 2;
     */
    nextSequenceToken: string;
}
/**
 * Request message for [BatchJobService.ListBatchJobResults][google.ads.googleads.v11.services.BatchJobService.ListBatchJobResults].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.ListBatchJobResultsRequest
 */
export interface ListBatchJobResultsRequest {
    /**
     * Required. The resource name of the batch job whose results are being listed.
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Token of the page to retrieve. If not specified, the first
     * page of results will be returned. Use the value obtained from
     * `next_page_token` in the previous response in order to request
     * the next page of results.
     *
     * @generated from protobuf field: string page_token = 2;
     */
    pageToken: string;
    /**
     * Number of elements to retrieve in a single page.
     * When a page request is too large, the server may decide to
     * further limit the number of returned resources.
     *
     * @generated from protobuf field: int32 page_size = 3;
     */
    pageSize: number;
    /**
     * The response content type setting. Determines whether the mutable resource
     * or just the resource name should be returned.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ResponseContentTypeEnum.ResponseContentType response_content_type = 4;
     */
    responseContentType: ResponseContentTypeEnum_ResponseContentType;
}
/**
 * Response message for [BatchJobService.ListBatchJobResults][google.ads.googleads.v11.services.BatchJobService.ListBatchJobResults].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.ListBatchJobResultsResponse
 */
export interface ListBatchJobResultsResponse {
    /**
     * The list of rows that matched the query.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.services.BatchJobResult results = 1;
     */
    results: BatchJobResult[];
    /**
     * Pagination token used to retrieve the next page of results.
     * Pass the content of this string as the `page_token` attribute of
     * the next request. `next_page_token` is not returned for the last
     * page.
     *
     * @generated from protobuf field: string next_page_token = 2;
     */
    nextPageToken: string;
}
/**
 * An individual batch job result.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.BatchJobResult
 */
export interface BatchJobResult {
    /**
     * Index of the mutate operation.
     *
     * @generated from protobuf field: int64 operation_index = 1;
     */
    operationIndex: bigint;
    /**
     * Response for the mutate.
     * May be empty if errors occurred.
     *
     * @generated from protobuf field: google.ads.googleads.v11.services.MutateOperationResponse mutate_operation_response = 2;
     */
    mutateOperationResponse?: MutateOperationResponse;
    /**
     * Details of the errors when processing the operation.
     *
     * @generated from protobuf field: google.rpc.Status status = 3;
     */
    status?: Status;
}
declare class MutateBatchJobRequest$Type extends MessageType<MutateBatchJobRequest> {
    constructor();
    create(value?: PartialMessage<MutateBatchJobRequest>): MutateBatchJobRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateBatchJobRequest): MutateBatchJobRequest;
    internalBinaryWrite(message: MutateBatchJobRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateBatchJobRequest
 */
export declare const MutateBatchJobRequest: MutateBatchJobRequest$Type;
declare class BatchJobOperation$Type extends MessageType<BatchJobOperation> {
    constructor();
    create(value?: PartialMessage<BatchJobOperation>): BatchJobOperation;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BatchJobOperation): BatchJobOperation;
    internalBinaryWrite(message: BatchJobOperation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.BatchJobOperation
 */
export declare const BatchJobOperation: BatchJobOperation$Type;
declare class MutateBatchJobResponse$Type extends MessageType<MutateBatchJobResponse> {
    constructor();
    create(value?: PartialMessage<MutateBatchJobResponse>): MutateBatchJobResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateBatchJobResponse): MutateBatchJobResponse;
    internalBinaryWrite(message: MutateBatchJobResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateBatchJobResponse
 */
export declare const MutateBatchJobResponse: MutateBatchJobResponse$Type;
declare class MutateBatchJobResult$Type extends MessageType<MutateBatchJobResult> {
    constructor();
    create(value?: PartialMessage<MutateBatchJobResult>): MutateBatchJobResult;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateBatchJobResult): MutateBatchJobResult;
    internalBinaryWrite(message: MutateBatchJobResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateBatchJobResult
 */
export declare const MutateBatchJobResult: MutateBatchJobResult$Type;
declare class RunBatchJobRequest$Type extends MessageType<RunBatchJobRequest> {
    constructor();
    create(value?: PartialMessage<RunBatchJobRequest>): RunBatchJobRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RunBatchJobRequest): RunBatchJobRequest;
    internalBinaryWrite(message: RunBatchJobRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.RunBatchJobRequest
 */
export declare const RunBatchJobRequest: RunBatchJobRequest$Type;
declare class AddBatchJobOperationsRequest$Type extends MessageType<AddBatchJobOperationsRequest> {
    constructor();
    create(value?: PartialMessage<AddBatchJobOperationsRequest>): AddBatchJobOperationsRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AddBatchJobOperationsRequest): AddBatchJobOperationsRequest;
    internalBinaryWrite(message: AddBatchJobOperationsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.AddBatchJobOperationsRequest
 */
export declare const AddBatchJobOperationsRequest: AddBatchJobOperationsRequest$Type;
declare class AddBatchJobOperationsResponse$Type extends MessageType<AddBatchJobOperationsResponse> {
    constructor();
    create(value?: PartialMessage<AddBatchJobOperationsResponse>): AddBatchJobOperationsResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AddBatchJobOperationsResponse): AddBatchJobOperationsResponse;
    internalBinaryWrite(message: AddBatchJobOperationsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.AddBatchJobOperationsResponse
 */
export declare const AddBatchJobOperationsResponse: AddBatchJobOperationsResponse$Type;
declare class ListBatchJobResultsRequest$Type extends MessageType<ListBatchJobResultsRequest> {
    constructor();
    create(value?: PartialMessage<ListBatchJobResultsRequest>): ListBatchJobResultsRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListBatchJobResultsRequest): ListBatchJobResultsRequest;
    internalBinaryWrite(message: ListBatchJobResultsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.ListBatchJobResultsRequest
 */
export declare const ListBatchJobResultsRequest: ListBatchJobResultsRequest$Type;
declare class ListBatchJobResultsResponse$Type extends MessageType<ListBatchJobResultsResponse> {
    constructor();
    create(value?: PartialMessage<ListBatchJobResultsResponse>): ListBatchJobResultsResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListBatchJobResultsResponse): ListBatchJobResultsResponse;
    internalBinaryWrite(message: ListBatchJobResultsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.ListBatchJobResultsResponse
 */
export declare const ListBatchJobResultsResponse: ListBatchJobResultsResponse$Type;
declare class BatchJobResult$Type extends MessageType<BatchJobResult> {
    constructor();
    create(value?: PartialMessage<BatchJobResult>): BatchJobResult;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BatchJobResult): BatchJobResult;
    internalBinaryWrite(message: BatchJobResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.BatchJobResult
 */
export declare const BatchJobResult: BatchJobResult$Type;
/**
 * @generated ServiceType for protobuf service google.ads.googleads.v11.services.BatchJobService
 */
export declare const BatchJobService: ServiceType;
export {};
