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 { UserData } from "../common/offline_user_data";
import { CustomerMatchUserListMetadata } from "../common/offline_user_data";
/**
 * Request message for [UserDataService.UploadUserData][google.ads.googleads.v11.services.UserDataService.UploadUserData]
 *
 * @generated from protobuf message google.ads.googleads.v11.services.UploadUserDataRequest
 */
export interface UploadUserDataRequest {
    /**
     * Required. The ID of the customer for which to update the user data.
     *
     * @generated from protobuf field: string customer_id = 1;
     */
    customerId: string;
    /**
     * Required. The list of operations to be done.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.services.UserDataOperation operations = 3;
     */
    operations: UserDataOperation[];
    /**
     * @generated from protobuf oneof: metadata
     */
    metadata: {
        oneofKind: "customerMatchUserListMetadata";
        /**
         * Metadata for data updates to a Customer Match user list.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.CustomerMatchUserListMetadata customer_match_user_list_metadata = 2;
         */
        customerMatchUserListMetadata: CustomerMatchUserListMetadata;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Operation to be made for the UploadUserDataRequest.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.UserDataOperation
 */
export interface UserDataOperation {
    /**
     * @generated from protobuf oneof: operation
     */
    operation: {
        oneofKind: "create";
        /**
         * The list of user data to be appended to the user list.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.UserData create = 1;
         */
        create: UserData;
    } | {
        oneofKind: "remove";
        /**
         * The list of user data to be removed from the user list.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.UserData remove = 2;
         */
        remove: UserData;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Response message for [UserDataService.UploadUserData][google.ads.googleads.v11.services.UserDataService.UploadUserData]
 * Uploads made through this service will not be visible under the 'Segment
 * members' section for the Customer Match List in the Google Ads UI.
 *
 * @generated from protobuf message google.ads.googleads.v11.services.UploadUserDataResponse
 */
export interface UploadUserDataResponse {
    /**
     * The date time at which the request was received by API, formatted as
     * "yyyy-mm-dd hh:mm:ss+|-hh:mm", for example, "2019-01-01 12:32:45-08:00".
     *
     * @generated from protobuf field: optional string upload_date_time = 3;
     */
    uploadDateTime?: string;
    /**
     * Number of upload data operations received by API.
     *
     * @generated from protobuf field: optional int32 received_operations_count = 4;
     */
    receivedOperationsCount?: number;
}
declare class UploadUserDataRequest$Type extends MessageType<UploadUserDataRequest> {
    constructor();
    create(value?: PartialMessage<UploadUserDataRequest>): UploadUserDataRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UploadUserDataRequest): UploadUserDataRequest;
    internalBinaryWrite(message: UploadUserDataRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.UploadUserDataRequest
 */
export declare const UploadUserDataRequest: UploadUserDataRequest$Type;
declare class UserDataOperation$Type extends MessageType<UserDataOperation> {
    constructor();
    create(value?: PartialMessage<UserDataOperation>): UserDataOperation;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UserDataOperation): UserDataOperation;
    internalBinaryWrite(message: UserDataOperation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.UserDataOperation
 */
export declare const UserDataOperation: UserDataOperation$Type;
declare class UploadUserDataResponse$Type extends MessageType<UploadUserDataResponse> {
    constructor();
    create(value?: PartialMessage<UploadUserDataResponse>): UploadUserDataResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UploadUserDataResponse): UploadUserDataResponse;
    internalBinaryWrite(message: UploadUserDataResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.services.UploadUserDataResponse
 */
export declare const UploadUserDataResponse: UploadUserDataResponse$Type;
/**
 * @generated ServiceType for protobuf service google.ads.googleads.v11.services.UserDataService
 */
export declare const UserDataService: ServiceType;
export {};
