import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { TraceConfig } from "../trace_config_pb";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file protos/perfetto/config/chrome/scenario_config.proto.
 */
export declare const file_protos_perfetto_config_chrome_scenario_config: GenFile;
/**
 * Rule that triggers scenario events (e.g. start, stop).
 *
 * @generated from message perfetto.protos.TriggerRule
 */
export type TriggerRule = Message<"perfetto.protos.TriggerRule"> & {
    /**
     * Rule unique name.
     *
     * @generated from field: optional string name = 1;
     */
    name: string;
    /**
     * A value between 0 and 1 which encodes the probability this rule is
     * triggered.
     *
     * @generated from field: optional float trigger_chance = 2;
     */
    triggerChance: number;
    /**
     * Additional delay *after* the trigger below. This is mostly useful
     * to trace beyond a triggered event in upload rules. Other triggers
     * can still be serviced during this period.
     *
     * @generated from field: optional uint64 delay_ms = 3;
     */
    delayMs: bigint;
    /**
     * Delay *before* which the rule is activated. Trigger events during this
     * period are ignored by this rule. This is mostly useful to trace for a
     * minimum duration before watching trigger events.
     *
     * @generated from field: optional uint64 activation_delay_ms = 8;
     */
    activationDelayMs: bigint;
    /**
     * @generated from oneof perfetto.protos.TriggerRule.trigger
     */
    trigger: {
        /**
         * Triggers when the associated named trigger is manually emitted in Chrome
         * client code.
         *
         * @generated from field: string manual_trigger_name = 4;
         */
        value: string;
        case: "manualTriggerName";
    } | {
        /**
         * @generated from field: perfetto.protos.TriggerRule.HistogramTrigger histogram = 5;
         */
        value: TriggerRule_HistogramTrigger;
        case: "histogram";
    } | {
        /**
         * @generated from field: perfetto.protos.TriggerRule.RepeatingInterval repeating_interval = 6;
         */
        value: TriggerRule_RepeatingInterval;
        case: "repeatingInterval";
    } | {
        case: undefined;
        value?: undefined;
    };
};
/**
 * Describes the message perfetto.protos.TriggerRule.
 * Use `create(TriggerRuleSchema)` to create a new message.
 */
export declare const TriggerRuleSchema: GenMessage<TriggerRule>;
/**
 * Triggers when a value within the specified bounds [min_value,
 * max_value] is emitted into a Chrome histogram.
 *
 * @generated from message perfetto.protos.TriggerRule.HistogramTrigger
 */
export type TriggerRule_HistogramTrigger = Message<"perfetto.protos.TriggerRule.HistogramTrigger"> & {
    /**
     * @generated from field: optional string histogram_name = 1;
     */
    histogramName: string;
    /**
     * @generated from field: optional int64 min_value = 2;
     */
    minValue: bigint;
    /**
     * @generated from field: optional int64 max_value = 3;
     */
    maxValue: bigint;
};
/**
 * Describes the message perfetto.protos.TriggerRule.HistogramTrigger.
 * Use `create(TriggerRule_HistogramTriggerSchema)` to create a new message.
 */
export declare const TriggerRule_HistogramTriggerSchema: GenMessage<TriggerRule_HistogramTrigger>;
/**
 * Triggers on a repeating interval, every `period_ms` milliseconds if
 * `randomized` is false, and at random time within a `period_ms` window
 * otherwise, thus ticking with an average period of `period_ms` milliseconds.
 *
 * @generated from message perfetto.protos.TriggerRule.RepeatingInterval
 */
export type TriggerRule_RepeatingInterval = Message<"perfetto.protos.TriggerRule.RepeatingInterval"> & {
    /**
     * @generated from field: optional uint64 period_ms = 1;
     */
    periodMs: bigint;
    /**
     * @generated from field: optional bool randomized = 2;
     */
    randomized: boolean;
};
/**
 * Describes the message perfetto.protos.TriggerRule.RepeatingInterval.
 * Use `create(TriggerRule_RepeatingIntervalSchema)` to create a new message.
 */
export declare const TriggerRule_RepeatingIntervalSchema: GenMessage<TriggerRule_RepeatingInterval>;
/**
 * @generated from message perfetto.protos.NestedScenarioConfig
 */
export type NestedScenarioConfig = Message<"perfetto.protos.NestedScenarioConfig"> & {
    /**
     * Nested scenario name, unique within the parent scenario.
     *
     * @generated from field: optional string scenario_name = 1;
     */
    scenarioName: string;
    /**
     * When triggered, this scenario becomes active. This activates `upload_rules`
     * and `stop_rules`.
     *
     * @generated from field: repeated perfetto.protos.TriggerRule start_rules = 2;
     */
    startRules: TriggerRule[];
    /**
     * When triggered, exits the scenario. This reverts back to the parent
     * scenario. All nested scenarios within the parent scenario will be observed
     * again.
     *
     * @generated from field: repeated perfetto.protos.TriggerRule stop_rules = 3;
     */
    stopRules: TriggerRule[];
    /**
     * When triggered, exits both this scenario and the parent scenario, stops the
     * tracing session, and attempts to upload the trace. All scenarios are
     * observed again.
     *
     * @generated from field: repeated perfetto.protos.TriggerRule upload_rules = 4;
     */
    uploadRules: TriggerRule[];
};
/**
 * Describes the message perfetto.protos.NestedScenarioConfig.
 * Use `create(NestedScenarioConfigSchema)` to create a new message.
 */
export declare const NestedScenarioConfigSchema: GenMessage<NestedScenarioConfig>;
/**
 * @generated from message perfetto.protos.ScenarioConfig
 */
export type ScenarioConfig = Message<"perfetto.protos.ScenarioConfig"> & {
    /**
     * Scenario name, unique within the whole field tracing config.
     *
     * @generated from field: optional string scenario_name = 1;
     */
    scenarioName: string;
    /**
     * When triggered, this scenario becomes active. Initializes a tracing session
     * and starts recording data sources. This activates `upload_rules` and
     * `stop_rules`.
     *
     * @generated from field: repeated perfetto.protos.TriggerRule start_rules = 2;
     */
    startRules: TriggerRule[];
    /**
     * When triggered, exits the scenario. This stops the tracing session and
     * discards the trace. All scenarios will be observed again.
     *
     * @generated from field: repeated perfetto.protos.TriggerRule stop_rules = 3;
     */
    stopRules: TriggerRule[];
    /**
     * When triggered, exits the scenario, stops the tracing session, and attempts
     * to upload the trace. All scenarios will be observed again.
     *
     * @generated from field: repeated perfetto.protos.TriggerRule upload_rules = 4;
     */
    uploadRules: TriggerRule[];
    /**
     * When triggered, this scenario becomes active. Initializes a tracing
     * session, without recording data sources, and waits for a `start_rules` or
     * to enter a `nested_scenarios`, which would start recording. This also
     * activates `stop_rules`.
     *
     * @generated from field: repeated perfetto.protos.TriggerRule setup_rules = 5;
     */
    setupRules: TriggerRule[];
    /**
     * @generated from field: optional perfetto.protos.TraceConfig trace_config = 6;
     */
    traceConfig?: TraceConfig;
    /**
     * @generated from field: repeated perfetto.protos.NestedScenarioConfig nested_scenarios = 7;
     */
    nestedScenarios: NestedScenarioConfig[];
};
/**
 * Describes the message perfetto.protos.ScenarioConfig.
 * Use `create(ScenarioConfigSchema)` to create a new message.
 */
export declare const ScenarioConfigSchema: GenMessage<ScenarioConfig>;
/**
 * @generated from message perfetto.protos.ChromeFieldTracingConfig
 */
export type ChromeFieldTracingConfig = Message<"perfetto.protos.ChromeFieldTracingConfig"> & {
    /**
     * @generated from field: repeated perfetto.protos.ScenarioConfig scenarios = 1;
     */
    scenarios: ScenarioConfig[];
};
/**
 * Describes the message perfetto.protos.ChromeFieldTracingConfig.
 * Use `create(ChromeFieldTracingConfigSchema)` to create a new message.
 */
export declare const ChromeFieldTracingConfigSchema: GenMessage<ChromeFieldTracingConfig>;
/**
 * @generated from message perfetto.protos.TracingTriggerRulesConfig
 */
export type TracingTriggerRulesConfig = Message<"perfetto.protos.TracingTriggerRulesConfig"> & {
    /**
     * @generated from field: repeated perfetto.protos.TriggerRule rules = 1;
     */
    rules: TriggerRule[];
};
/**
 * Describes the message perfetto.protos.TracingTriggerRulesConfig.
 * Use `create(TracingTriggerRulesConfigSchema)` to create a new message.
 */
export declare const TracingTriggerRulesConfigSchema: GenMessage<TracingTriggerRulesConfig>;
//# sourceMappingURL=scenario_config_pb.d.ts.map