import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file protos/perfetto/common/perf_events.proto.
 */
export declare const file_protos_perfetto_common_perf_events: GenFile;
/**
 * Next id: 12
 *
 * @generated from message perfetto.protos.PerfEvents
 */
export type PerfEvents = Message<"perfetto.protos.PerfEvents"> & {};
/**
 * Describes the message perfetto.protos.PerfEvents.
 * Use `create(PerfEventsSchema)` to create a new message.
 */
export declare const PerfEventsSchema: GenMessage<PerfEvents>;
/**
 * What event to sample on, and how often. Commented from the perspective of
 * its use in |PerfEventConfig|.
 *
 * @generated from message perfetto.protos.PerfEvents.Timebase
 */
export type PerfEvents_Timebase = Message<"perfetto.protos.PerfEvents.Timebase"> & {
    /**
     * How often the per-cpu sampling will occur. Not guaranteed to be honored
     * as the kernel can throttle the sampling rate if it's too high.
     * If unset, an implementation-defined default is used.
     *
     * @generated from oneof perfetto.protos.PerfEvents.Timebase.interval
     */
    interval: {
        /**
         * Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
         * same as 1/period.
         * Details: the actual sampling will still be based on a period, but the
         * kernel will dynamically adjust it based on the observed event rate, to
         * approximate this frequency. Works best with steady-rate events like
         * timers.
         *
         * @generated from field: uint64 frequency = 2;
         */
        value: bigint;
        case: "frequency";
    } | {
        /**
         * Per-cpu sampling will occur every |period| counts of |event|.
         * Prefer |frequency| by default, as it's easier to oversample with a
         * fixed period.
         *
         * @generated from field: uint64 period = 1;
         */
        value: bigint;
        case: "period";
    } | {
        case: undefined;
        value?: undefined;
    };
    /**
     * Counting event to use as a timebase for the sampling.
     * If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
     * which is what you usually want.
     * See common/perf_events.proto for the definitions.
     *
     * @generated from oneof perfetto.protos.PerfEvents.Timebase.event
     */
    event: {
        /**
         * @generated from field: perfetto.protos.PerfEvents.Counter counter = 4;
         */
        value: PerfEvents_Counter;
        case: "counter";
    } | {
        /**
         * @generated from field: perfetto.protos.PerfEvents.Tracepoint tracepoint = 3;
         */
        value: PerfEvents_Tracepoint;
        case: "tracepoint";
    } | {
        /**
         * @generated from field: perfetto.protos.PerfEvents.RawEvent raw_event = 5;
         */
        value: PerfEvents_RawEvent;
        case: "rawEvent";
    } | {
        case: undefined;
        value?: undefined;
    };
    /**
     * If set, samples will be timestamped with the given clock.
     * If unset, the clock is chosen by the implementation.
     * For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
     * used for hardware events (due to interrupt safety), for which the
     * recommendation is to use one of the monotonic clocks.
     *
     * @generated from field: optional perfetto.protos.PerfEvents.PerfClock timestamp_clock = 11;
     */
    timestampClock: PerfEvents_PerfClock;
    /**
     * Optional arbitrary name for the event, to identify it in the parsed
     * trace. Does *not* affect the profiling itself. If unset, the trace
     * parser will choose a suitable name.
     *
     * @generated from field: optional string name = 10;
     */
    name: string;
};
/**
 * Describes the message perfetto.protos.PerfEvents.Timebase.
 * Use `create(PerfEvents_TimebaseSchema)` to create a new message.
 */
export declare const PerfEvents_TimebaseSchema: GenMessage<PerfEvents_Timebase>;
/**
 * @generated from message perfetto.protos.PerfEvents.Tracepoint
 */
export type PerfEvents_Tracepoint = Message<"perfetto.protos.PerfEvents.Tracepoint"> & {
    /**
     * Group and name for the tracepoint, acceptable forms:
     * * "sched/sched_switch"
     * * "sched:sched_switch"
     *
     * @generated from field: optional string name = 1;
     */
    name: string;
    /**
     * Optional field-level filter for the tracepoint. Only events matching this
     * filter will be counted (and therefore contribute to the sampling period).
     * Example: "prev_pid >= 42 && next_pid == 0".
     * For full syntax, see kernel documentation on "Event filtering":
     * https://www.kernel.org/doc/Documentation/trace/events.txt
     *
     * @generated from field: optional string filter = 2;
     */
    filter: string;
};
/**
 * Describes the message perfetto.protos.PerfEvents.Tracepoint.
 * Use `create(PerfEvents_TracepointSchema)` to create a new message.
 */
export declare const PerfEvents_TracepointSchema: GenMessage<PerfEvents_Tracepoint>;
/**
 * Syscall-level description of the event, propagated to the perf_event_attr
 * struct. Primarily for local use-cases, since the event availability and
 * encoding is hardware-specific.
 *
 * @generated from message perfetto.protos.PerfEvents.RawEvent
 */
export type PerfEvents_RawEvent = Message<"perfetto.protos.PerfEvents.RawEvent"> & {
    /**
     * @generated from field: optional uint32 type = 1;
     */
    type: number;
    /**
     * @generated from field: optional uint64 config = 2;
     */
    config: bigint;
    /**
     * @generated from field: optional uint64 config1 = 3;
     */
    config1: bigint;
    /**
     * @generated from field: optional uint64 config2 = 4;
     */
    config2: bigint;
};
/**
 * Describes the message perfetto.protos.PerfEvents.RawEvent.
 * Use `create(PerfEvents_RawEventSchema)` to create a new message.
 */
export declare const PerfEvents_RawEventSchema: GenMessage<PerfEvents_RawEvent>;
/**
 * Builtin counter names from the uapi header. Commented with their perf tool
 * aliases.
 * TODO(rsavitski): consider generating enums for cache events (should be
 * finite), and generally make this list as extensive as possible. Excluding
 * things like dynamic PMUs since those don't fit into a static enum.
 * Next id: 21
 *
 * @generated from enum perfetto.protos.PerfEvents.Counter
 */
export declare enum PerfEvents_Counter {
    /**
     * @generated from enum value: UNKNOWN_COUNTER = 0;
     */
    UNKNOWN_COUNTER = 0,
    /**
     * cpu-clock
     *
     * @generated from enum value: SW_CPU_CLOCK = 1;
     */
    SW_CPU_CLOCK = 1,
    /**
     * page-faults, faults
     *
     * @generated from enum value: SW_PAGE_FAULTS = 2;
     */
    SW_PAGE_FAULTS = 2,
    /**
     * task-clock
     *
     * @generated from enum value: SW_TASK_CLOCK = 3;
     */
    SW_TASK_CLOCK = 3,
    /**
     * context-switches, cs
     *
     * @generated from enum value: SW_CONTEXT_SWITCHES = 4;
     */
    SW_CONTEXT_SWITCHES = 4,
    /**
     * cpu-migrations, migrations
     *
     * @generated from enum value: SW_CPU_MIGRATIONS = 5;
     */
    SW_CPU_MIGRATIONS = 5,
    /**
     * minor-faults
     *
     * @generated from enum value: SW_PAGE_FAULTS_MIN = 6;
     */
    SW_PAGE_FAULTS_MIN = 6,
    /**
     * major-faults
     *
     * @generated from enum value: SW_PAGE_FAULTS_MAJ = 7;
     */
    SW_PAGE_FAULTS_MAJ = 7,
    /**
     * alignment-faults
     *
     * @generated from enum value: SW_ALIGNMENT_FAULTS = 8;
     */
    SW_ALIGNMENT_FAULTS = 8,
    /**
     * emulation-faults
     *
     * @generated from enum value: SW_EMULATION_FAULTS = 9;
     */
    SW_EMULATION_FAULTS = 9,
    /**
     * dummy
     *
     * @generated from enum value: SW_DUMMY = 20;
     */
    SW_DUMMY = 20,
    /**
     * cpu-cycles, cycles
     *
     * @generated from enum value: HW_CPU_CYCLES = 10;
     */
    HW_CPU_CYCLES = 10,
    /**
     * instructions
     *
     * @generated from enum value: HW_INSTRUCTIONS = 11;
     */
    HW_INSTRUCTIONS = 11,
    /**
     * cache-references
     *
     * @generated from enum value: HW_CACHE_REFERENCES = 12;
     */
    HW_CACHE_REFERENCES = 12,
    /**
     * cache-misses
     *
     * @generated from enum value: HW_CACHE_MISSES = 13;
     */
    HW_CACHE_MISSES = 13,
    /**
     * branch-instructions, branches
     *
     * @generated from enum value: HW_BRANCH_INSTRUCTIONS = 14;
     */
    HW_BRANCH_INSTRUCTIONS = 14,
    /**
     * branch-misses
     *
     * @generated from enum value: HW_BRANCH_MISSES = 15;
     */
    HW_BRANCH_MISSES = 15,
    /**
     * bus-cycles
     *
     * @generated from enum value: HW_BUS_CYCLES = 16;
     */
    HW_BUS_CYCLES = 16,
    /**
     * stalled-cycles-frontend, idle-cycles-frontend
     *
     * @generated from enum value: HW_STALLED_CYCLES_FRONTEND = 17;
     */
    HW_STALLED_CYCLES_FRONTEND = 17,
    /**
     * stalled-cycles-backend, idle-cycles-backend
     *
     * @generated from enum value: HW_STALLED_CYCLES_BACKEND = 18;
     */
    HW_STALLED_CYCLES_BACKEND = 18,
    /**
     * ref-cycles
     *
     * @generated from enum value: HW_REF_CPU_CYCLES = 19;
     */
    HW_REF_CPU_CYCLES = 19
}
/**
 * Describes the enum perfetto.protos.PerfEvents.Counter.
 */
export declare const PerfEvents_CounterSchema: GenEnum<PerfEvents_Counter>;
/**
 * Subset of clocks that is supported by perf timestamping.
 * CLOCK_TAI is excluded since it's not expected to be used in practice, but
 * would require additions to the trace clock synchronisation logic.
 *
 * @generated from enum perfetto.protos.PerfEvents.PerfClock
 */
export declare enum PerfEvents_PerfClock {
    /**
     * @generated from enum value: UNKNOWN_PERF_CLOCK = 0;
     */
    UNKNOWN_PERF_CLOCK = 0,
    /**
     * @generated from enum value: PERF_CLOCK_REALTIME = 1;
     */
    PERF_CLOCK_REALTIME = 1,
    /**
     * @generated from enum value: PERF_CLOCK_MONOTONIC = 2;
     */
    PERF_CLOCK_MONOTONIC = 2,
    /**
     * @generated from enum value: PERF_CLOCK_MONOTONIC_RAW = 3;
     */
    PERF_CLOCK_MONOTONIC_RAW = 3,
    /**
     * @generated from enum value: PERF_CLOCK_BOOTTIME = 4;
     */
    PERF_CLOCK_BOOTTIME = 4
}
/**
 * Describes the enum perfetto.protos.PerfEvents.PerfClock.
 */
export declare const PerfEvents_PerfClockSchema: GenEnum<PerfEvents_PerfClock>;
/**
 * Additional events associated with a leader.
 * Configuration is similar to Timebase event. Because data acquisition is
 * driven by the leader there is no option to configure the clock or the
 * frequency.
 *
 * @generated from message perfetto.protos.FollowerEvent
 */
export type FollowerEvent = Message<"perfetto.protos.FollowerEvent"> & {
    /**
     * @generated from oneof perfetto.protos.FollowerEvent.event
     */
    event: {
        /**
         * @generated from field: perfetto.protos.PerfEvents.Counter counter = 1;
         */
        value: PerfEvents_Counter;
        case: "counter";
    } | {
        /**
         * @generated from field: perfetto.protos.PerfEvents.Tracepoint tracepoint = 2;
         */
        value: PerfEvents_Tracepoint;
        case: "tracepoint";
    } | {
        /**
         * @generated from field: perfetto.protos.PerfEvents.RawEvent raw_event = 3;
         */
        value: PerfEvents_RawEvent;
        case: "rawEvent";
    } | {
        case: undefined;
        value?: undefined;
    };
    /**
     * @generated from field: optional string name = 4;
     */
    name: string;
};
/**
 * Describes the message perfetto.protos.FollowerEvent.
 * Use `create(FollowerEventSchema)` to create a new message.
 */
export declare const FollowerEventSchema: GenMessage<FollowerEvent>;
//# sourceMappingURL=perf_events_pb.d.ts.map