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 { CampaignExperimentStatusEnum_CampaignExperimentStatus } from "../enums/campaign_experiment_status";
import { CampaignExperimentTrafficSplitTypeEnum_CampaignExperimentTrafficSplitType } from "../enums/campaign_experiment_traffic_split_type";
/**
 * An A/B experiment that compares the performance of the base campaign
 * (the control) and a variation of that campaign (the experiment).
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.CampaignExperiment
 */
export interface CampaignExperiment {
    /**
     * Immutable. The resource name of the campaign experiment.
     * Campaign experiment resource names have the form:
     *
     * `customers/{customer_id}/campaignExperiments/{campaign_experiment_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. The ID of the campaign experiment.
     *
     * This field is read-only.
     *
     * @generated from protobuf field: optional int64 id = 13;
     */
    id?: bigint;
    /**
     * Immutable. The campaign draft with staged changes to the base campaign.
     *
     * @generated from protobuf field: optional string campaign_draft = 14;
     */
    campaignDraft?: string;
    /**
     * The name of the campaign experiment.
     *
     * This field is required when creating new campaign experiments
     * and must not conflict with the name of another non-removed
     * campaign experiment or campaign.
     *
     * It must not contain any null (code point 0x0), NL line feed
     * (code point 0xA) or carriage return (code point 0xD) characters.
     *
     * @generated from protobuf field: optional string name = 15;
     */
    name?: string;
    /**
     * The description of the experiment.
     *
     * @generated from protobuf field: optional string description = 16;
     */
    description?: string;
    /**
     * Immutable. Share of traffic directed to experiment as a percent (must be between 1 and
     * 99 inclusive. Base campaign receives the remainder of the traffic
     * (100 - traffic_split_percent). Required for create.
     *
     * @generated from protobuf field: optional int64 traffic_split_percent = 17;
     */
    trafficSplitPercent?: bigint;
    /**
     * Immutable. Determines the behavior of the traffic split.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.CampaignExperimentTrafficSplitTypeEnum.CampaignExperimentTrafficSplitType traffic_split_type = 7;
     */
    trafficSplitType: CampaignExperimentTrafficSplitTypeEnum_CampaignExperimentTrafficSplitType;
    /**
     * Output only. The experiment campaign, as opposed to the base campaign.
     *
     * @generated from protobuf field: optional string experiment_campaign = 18;
     */
    experimentCampaign?: string;
    /**
     * Output only. The status of the campaign experiment. This field is read-only.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.CampaignExperimentStatusEnum.CampaignExperimentStatus status = 9;
     */
    status: CampaignExperimentStatusEnum_CampaignExperimentStatus;
    /**
     * Output only. The resource name of the long-running operation that can be used to poll
     * for completion of experiment create or promote. The most recent long
     * running operation is returned.
     *
     * @generated from protobuf field: optional string long_running_operation = 19;
     */
    longRunningOperation?: string;
    /**
     * Date when the campaign experiment starts. By default, the experiment starts
     * now or on the campaign's start date, whichever is later. If this field is
     * set, then the experiment starts at the beginning of the specified date in
     * the customer's time zone. Cannot be changed once the experiment starts.
     *
     * Format: YYYY-MM-DD
     * Example: 2019-03-14
     *
     * @generated from protobuf field: optional string start_date = 20;
     */
    startDate?: string;
    /**
     * The last day of the campaign experiment. By default, the experiment ends on
     * the campaign's end date. If this field is set, then the experiment ends at
     * the end of the specified date in the customer's time zone.
     *
     * Format: YYYY-MM-DD
     * Example: 2019-04-18
     *
     * @generated from protobuf field: optional string end_date = 21;
     */
    endDate?: string;
}
declare class CampaignExperiment$Type extends MessageType<CampaignExperiment> {
    constructor();
    create(value?: PartialMessage<CampaignExperiment>): CampaignExperiment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CampaignExperiment): CampaignExperiment;
    internalBinaryWrite(message: CampaignExperiment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.CampaignExperiment
 */
export declare const CampaignExperiment: CampaignExperiment$Type;
export {};
