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 { OfflineUserDataJobMatchRateRangeEnum_OfflineUserDataJobMatchRateRange } from "../enums/offline_user_data_job_match_rate_range";
import { StoreSalesMetadata } from "../common/offline_user_data";
import { CustomerMatchUserListMetadata } from "../common/offline_user_data";
import { OfflineUserDataJobFailureReasonEnum_OfflineUserDataJobFailureReason } from "../enums/offline_user_data_job_failure_reason";
import { OfflineUserDataJobStatusEnum_OfflineUserDataJobStatus } from "../enums/offline_user_data_job_status";
import { OfflineUserDataJobTypeEnum_OfflineUserDataJobType } from "../enums/offline_user_data_job_type";
/**
 * A job containing offline user data of store visitors, or user list members
 * that will be processed asynchronously. The uploaded data isn't readable and
 * the processing results of the job can only be read using
 * GoogleAdsService.Search/SearchStream.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.OfflineUserDataJob
 */
export interface OfflineUserDataJob {
    /**
     * Immutable. The resource name of the offline user data job.
     * Offline user data job resource names have the form:
     *
     * `customers/{customer_id}/offlineUserDataJobs/{offline_user_data_job_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. ID of this offline user data job.
     *
     * @generated from protobuf field: optional int64 id = 9;
     */
    id?: bigint;
    /**
     * Immutable. User specified job ID.
     *
     * @generated from protobuf field: optional int64 external_id = 10;
     */
    externalId?: bigint;
    /**
     * Immutable. Type of the job.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType type = 4;
     */
    type: OfflineUserDataJobTypeEnum_OfflineUserDataJobType;
    /**
     * Output only. Status of the job.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus status = 5;
     */
    status: OfflineUserDataJobStatusEnum_OfflineUserDataJobStatus;
    /**
     * Output only. Reason for the processing failure, if status is FAILED.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason failure_reason = 6;
     */
    failureReason: OfflineUserDataJobFailureReasonEnum_OfflineUserDataJobFailureReason;
    /**
     * Output only. Metadata of offline user data job depicting match rate range.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.OfflineUserDataJobMetadata operation_metadata = 11;
     */
    operationMetadata?: OfflineUserDataJobMetadata;
    /**
     * @generated from protobuf oneof: metadata
     */
    metadata: {
        oneofKind: "customerMatchUserListMetadata";
        /**
         * Immutable. Metadata for data updates to a CRM-based user list.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.CustomerMatchUserListMetadata customer_match_user_list_metadata = 7;
         */
        customerMatchUserListMetadata: CustomerMatchUserListMetadata;
    } | {
        oneofKind: "storeSalesMetadata";
        /**
         * Immutable. Metadata for store sales data update.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.StoreSalesMetadata store_sales_metadata = 8;
         */
        storeSalesMetadata: StoreSalesMetadata;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Metadata of offline user data job.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.OfflineUserDataJobMetadata
 */
export interface OfflineUserDataJobMetadata {
    /**
     * Output only. Match rate of the Customer Match user list upload. Describes the estimated
     * match rate when the status of the job is "RUNNING" and final match rate
     * when the final match rate is available after the status of the job is
     * "SUCCESS/FAILED".
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.OfflineUserDataJobMatchRateRangeEnum.OfflineUserDataJobMatchRateRange match_rate_range = 1;
     */
    matchRateRange: OfflineUserDataJobMatchRateRangeEnum_OfflineUserDataJobMatchRateRange;
}
declare class OfflineUserDataJob$Type extends MessageType<OfflineUserDataJob> {
    constructor();
    create(value?: PartialMessage<OfflineUserDataJob>): OfflineUserDataJob;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: OfflineUserDataJob): OfflineUserDataJob;
    internalBinaryWrite(message: OfflineUserDataJob, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.OfflineUserDataJob
 */
export declare const OfflineUserDataJob: OfflineUserDataJob$Type;
declare class OfflineUserDataJobMetadata$Type extends MessageType<OfflineUserDataJobMetadata> {
    constructor();
    create(value?: PartialMessage<OfflineUserDataJobMetadata>): OfflineUserDataJobMetadata;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: OfflineUserDataJobMetadata): OfflineUserDataJobMetadata;
    internalBinaryWrite(message: OfflineUserDataJobMetadata, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.OfflineUserDataJobMetadata
 */
export declare const OfflineUserDataJobMetadata: OfflineUserDataJobMetadata$Type;
export {};
