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 { AsyncActionStatusEnum_AsyncActionStatus } from "../enums/async_action_status";
import { MetricGoal } from "../common/metric_goal";
import { ExperimentStatusEnum_ExperimentStatus } from "../enums/experiment_status";
import { ExperimentTypeEnum_ExperimentType } from "../enums/experiment_type";
/**
 * A Google ads experiment for users to experiment changes on multiple
 * campaigns, compare the performance, and apply the effective changes.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.Experiment
 */
export interface Experiment {
    /**
     * Immutable. The resource name of the experiment.
     * Experiment resource names have the form:
     *
     * `customers/{customer_id}/experiments/{experiment_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. The ID of the experiment. Read only.
     *
     * @generated from protobuf field: optional int64 experiment_id = 9;
     */
    experimentId?: bigint;
    /**
     * Required. The name of the experiment. It must have a minimum length of 1 and
     * maximum length of 1024. It must be unique under a customer.
     *
     * @generated from protobuf field: string name = 10;
     */
    name: string;
    /**
     * The description of the experiment. It must have a minimum length of 1 and
     * maximum length of 2048.
     *
     * @generated from protobuf field: string description = 11;
     */
    description: string;
    /**
     * For system managed experiments, the advertiser must provide a suffix during
     * construction, in the setup stage before moving to initiated. The suffix
     * will be appended to the in-design and experiment campaign names so that the
     * name is base campaign name + suffix.
     *
     * @generated from protobuf field: string suffix = 12;
     */
    suffix: string;
    /**
     * The product/feature that uses this experiment.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ExperimentTypeEnum.ExperimentType type = 13;
     */
    type: ExperimentTypeEnum_ExperimentType;
    /**
     * The Advertiser-chosen status of this experiment.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ExperimentStatusEnum.ExperimentStatus status = 14;
     */
    status: ExperimentStatusEnum_ExperimentStatus;
    /**
     * Date when the 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.
     *
     * Format: YYYY-MM-DD
     * Example: 2019-03-14
     *
     * @generated from protobuf field: optional string start_date = 15;
     */
    startDate?: string;
    /**
     * Date when the experiment ends. 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 = 16;
     */
    endDate?: string;
    /**
     * The goals of this experiment.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.MetricGoal goals = 17;
     */
    goals: MetricGoal[];
    /**
     * Output only. The resource name of the long-running operation that can be used to poll
     * for completion of experiment schedule or promote. The most recent long
     * running operation is returned.
     *
     * @generated from protobuf field: optional string long_running_operation = 18;
     */
    longRunningOperation?: string;
    /**
     * Output only. The status of the experiment promotion process.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.AsyncActionStatusEnum.AsyncActionStatus promote_status = 19;
     */
    promoteStatus: AsyncActionStatusEnum_AsyncActionStatus;
}
declare class Experiment$Type extends MessageType<Experiment> {
    constructor();
    create(value?: PartialMessage<Experiment>): Experiment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Experiment): Experiment;
    internalBinaryWrite(message: Experiment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.Experiment
 */
export declare const Experiment: Experiment$Type;
export {};
