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 { AccountBudgetProposal } from "../resources/account_budget_proposal";
import { FieldMask } from "../../google/protobuf/field_mask";
/**
 * Request message for
 * [AccountBudgetProposalService.MutateAccountBudgetProposal][google.ads.googleads.v11.services.AccountBudgetProposalService.MutateAccountBudgetProposal].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateAccountBudgetProposalRequest
 */
export interface MutateAccountBudgetProposalRequest {
    /**
     * Required. The ID of the customer.
     *
     * @generated from protobuf field: string customer_id = 1;
     */
    customerId: string;
    /**
     * Required. The operation to perform on an individual account-level budget proposal.
     *
     * @generated from protobuf field: google.ads.googleads.v11.services.AccountBudgetProposalOperation operation = 2;
     */
    operation?: AccountBudgetProposalOperation;
    /**
     * If true, the request is validated but not executed. Only errors are
     * returned, not results.
     *
     * @generated from protobuf field: bool validate_only = 3;
     */
    validateOnly: boolean;
}
/**
 * A single operation to propose the creation of a new account-level budget or
 * edit/end/remove an existing one.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.AccountBudgetProposalOperation
 */
export interface AccountBudgetProposalOperation {
    /**
     * FieldMask that determines which budget fields are modified.  While budgets
     * may be modified, proposals that propose such modifications are final.
     * Therefore, update operations are not supported for proposals.
     *
     * Proposals that modify budgets have the 'update' proposal type.  Specifying
     * a mask for any other proposal type is considered an error.
     *
     * @generated from protobuf field: google.protobuf.FieldMask update_mask = 3;
     */
    updateMask?: FieldMask;
    /**
     * @generated from protobuf oneof: operation
     */
    operation: {
        oneofKind: "create";
        /**
         * Create operation: A new proposal to create a new budget, edit an
         * existing budget, end an actively running budget, or remove an approved
         * budget scheduled to start in the future.
         * No resource name is expected for the new proposal.
         *
         * @generated from protobuf field: google.ads.googleads.v11.resources.AccountBudgetProposal create = 2;
         */
        create: AccountBudgetProposal;
    } | {
        oneofKind: "remove";
        /**
         * Remove operation: A resource name for the removed proposal is expected,
         * in this format:
         *
         * `customers/{customer_id}/accountBudgetProposals/{account_budget_proposal_id}`
         * A request may be cancelled iff it is pending.
         *
         * @generated from protobuf field: string remove = 1;
         */
        remove: string;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Response message for account-level budget mutate operations.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateAccountBudgetProposalResponse
 */
export interface MutateAccountBudgetProposalResponse {
    /**
     * The result of the mutate.
     *
     * @generated from protobuf field: google.ads.googleads.v11.services.MutateAccountBudgetProposalResult result = 2;
     */
    result?: MutateAccountBudgetProposalResult;
}
/**
 * The result for the account budget proposal mutate.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateAccountBudgetProposalResult
 */
export interface MutateAccountBudgetProposalResult {
    /**
     * Returned for successful operations.
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
}
declare class MutateAccountBudgetProposalRequest$Type extends MessageType<MutateAccountBudgetProposalRequest> {
    constructor();
    create(value?: PartialMessage<MutateAccountBudgetProposalRequest>): MutateAccountBudgetProposalRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateAccountBudgetProposalRequest): MutateAccountBudgetProposalRequest;
    internalBinaryWrite(message: MutateAccountBudgetProposalRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateAccountBudgetProposalRequest
 */
export declare const MutateAccountBudgetProposalRequest: MutateAccountBudgetProposalRequest$Type;
declare class AccountBudgetProposalOperation$Type extends MessageType<AccountBudgetProposalOperation> {
    constructor();
    create(value?: PartialMessage<AccountBudgetProposalOperation>): AccountBudgetProposalOperation;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AccountBudgetProposalOperation): AccountBudgetProposalOperation;
    internalBinaryWrite(message: AccountBudgetProposalOperation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.AccountBudgetProposalOperation
 */
export declare const AccountBudgetProposalOperation: AccountBudgetProposalOperation$Type;
declare class MutateAccountBudgetProposalResponse$Type extends MessageType<MutateAccountBudgetProposalResponse> {
    constructor();
    create(value?: PartialMessage<MutateAccountBudgetProposalResponse>): MutateAccountBudgetProposalResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateAccountBudgetProposalResponse): MutateAccountBudgetProposalResponse;
    internalBinaryWrite(message: MutateAccountBudgetProposalResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateAccountBudgetProposalResponse
 */
export declare const MutateAccountBudgetProposalResponse: MutateAccountBudgetProposalResponse$Type;
declare class MutateAccountBudgetProposalResult$Type extends MessageType<MutateAccountBudgetProposalResult> {
    constructor();
    create(value?: PartialMessage<MutateAccountBudgetProposalResult>): MutateAccountBudgetProposalResult;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateAccountBudgetProposalResult): MutateAccountBudgetProposalResult;
    internalBinaryWrite(message: MutateAccountBudgetProposalResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateAccountBudgetProposalResult
 */
export declare const MutateAccountBudgetProposalResult: MutateAccountBudgetProposalResult$Type;
/**
 * @generated ServiceType for protobuf service google.ads.googleads.v11.services.AccountBudgetProposalService
 */
export declare const AccountBudgetProposalService: ServiceType;
export {};
