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 { CustomerUserAccess } from "../resources/customer_user_access";
import { FieldMask } from "../../google/protobuf/field_mask";
/**
 * Mutate Request for
 * [CustomerUserAccessService.MutateCustomerUserAccess][google.ads.googleads.v11.services.CustomerUserAccessService.MutateCustomerUserAccess].
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateCustomerUserAccessRequest
 */
export interface MutateCustomerUserAccessRequest {
    /**
     * Required. The ID of the customer being modified.
     *
     * @generated from protobuf field: string customer_id = 1;
     */
    customerId: string;
    /**
     * Required. The operation to perform on the customer
     *
     * @generated from protobuf field: google.ads.googleads.v11.services.CustomerUserAccessOperation operation = 2;
     */
    operation?: CustomerUserAccessOperation;
}
/**
 * A single operation (update, remove) on customer user access.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.CustomerUserAccessOperation
 */
export interface CustomerUserAccessOperation {
    /**
     * FieldMask that determines which resource fields are modified in an update.
     *
     * @generated from protobuf field: google.protobuf.FieldMask update_mask = 3;
     */
    updateMask?: FieldMask;
    /**
     * @generated from protobuf oneof: operation
     */
    operation: {
        oneofKind: "update";
        /**
         * Update operation: The customer user access is expected to have a valid
         * resource name.
         *
         * @generated from protobuf field: google.ads.googleads.v11.resources.CustomerUserAccess update = 1;
         */
        update: CustomerUserAccess;
    } | {
        oneofKind: "remove";
        /**
         * Remove operation: A resource name for the removed access is
         * expected, in this format:
         *
         * `customers/{customer_id}/customerUserAccesses/{CustomerUserAccess.user_id}`
         *
         * @generated from protobuf field: string remove = 2;
         */
        remove: string;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Response message for customer user access mutate.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateCustomerUserAccessResponse
 */
export interface MutateCustomerUserAccessResponse {
    /**
     * Result for the mutate.
     *
     * @generated from protobuf field: google.ads.googleads.v11.services.MutateCustomerUserAccessResult result = 1;
     */
    result?: MutateCustomerUserAccessResult;
}
/**
 * The result for the customer user access mutate.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.MutateCustomerUserAccessResult
 */
export interface MutateCustomerUserAccessResult {
    /**
     * Returned for successful operations.
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
}
declare class MutateCustomerUserAccessRequest$Type extends MessageType<MutateCustomerUserAccessRequest> {
    constructor();
    create(value?: PartialMessage<MutateCustomerUserAccessRequest>): MutateCustomerUserAccessRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateCustomerUserAccessRequest): MutateCustomerUserAccessRequest;
    internalBinaryWrite(message: MutateCustomerUserAccessRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateCustomerUserAccessRequest
 */
export declare const MutateCustomerUserAccessRequest: MutateCustomerUserAccessRequest$Type;
declare class CustomerUserAccessOperation$Type extends MessageType<CustomerUserAccessOperation> {
    constructor();
    create(value?: PartialMessage<CustomerUserAccessOperation>): CustomerUserAccessOperation;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CustomerUserAccessOperation): CustomerUserAccessOperation;
    internalBinaryWrite(message: CustomerUserAccessOperation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.CustomerUserAccessOperation
 */
export declare const CustomerUserAccessOperation: CustomerUserAccessOperation$Type;
declare class MutateCustomerUserAccessResponse$Type extends MessageType<MutateCustomerUserAccessResponse> {
    constructor();
    create(value?: PartialMessage<MutateCustomerUserAccessResponse>): MutateCustomerUserAccessResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateCustomerUserAccessResponse): MutateCustomerUserAccessResponse;
    internalBinaryWrite(message: MutateCustomerUserAccessResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateCustomerUserAccessResponse
 */
export declare const MutateCustomerUserAccessResponse: MutateCustomerUserAccessResponse$Type;
declare class MutateCustomerUserAccessResult$Type extends MessageType<MutateCustomerUserAccessResult> {
    constructor();
    create(value?: PartialMessage<MutateCustomerUserAccessResult>): MutateCustomerUserAccessResult;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MutateCustomerUserAccessResult): MutateCustomerUserAccessResult;
    internalBinaryWrite(message: MutateCustomerUserAccessResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.MutateCustomerUserAccessResult
 */
export declare const MutateCustomerUserAccessResult: MutateCustomerUserAccessResult$Type;
/**
 * @generated ServiceType for protobuf service google.ads.googleads.v11.services.CustomerUserAccessService
 */
export declare const CustomerUserAccessService: ServiceType;
export {};
