import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file protos/perfetto/trace/android/frame_timeline_event.proto.
 */
export declare const file_protos_perfetto_trace_android_frame_timeline_event: GenFile;
/**
 * Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
 * Used in comparing the expected timeline of a frame to the actual timeline.
 * Key terms:
 *    1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
 *    2) SurfaceFrame - represents App's work on its frame
 *    3) Timeline = start to end of a component's(app/SF) work on a frame.
 * SurfaceFlinger composites frames from many apps together, so
 *    One DisplayFrame can map to N SurfaceFrame(s)
 * This relationship can be reconstructed by using
 *    DisplayFrame.token = SurfaceFrame.display_frame_token
 *
 * @generated from message perfetto.protos.FrameTimelineEvent
 */
export type FrameTimelineEvent = Message<"perfetto.protos.FrameTimelineEvent"> & {
    /**
     * @generated from oneof perfetto.protos.FrameTimelineEvent.event
     */
    event: {
        /**
         * @generated from field: perfetto.protos.FrameTimelineEvent.ExpectedDisplayFrameStart expected_display_frame_start = 1;
         */
        value: FrameTimelineEvent_ExpectedDisplayFrameStart;
        case: "expectedDisplayFrameStart";
    } | {
        /**
         * @generated from field: perfetto.protos.FrameTimelineEvent.ActualDisplayFrameStart actual_display_frame_start = 2;
         */
        value: FrameTimelineEvent_ActualDisplayFrameStart;
        case: "actualDisplayFrameStart";
    } | {
        /**
         * @generated from field: perfetto.protos.FrameTimelineEvent.ExpectedSurfaceFrameStart expected_surface_frame_start = 3;
         */
        value: FrameTimelineEvent_ExpectedSurfaceFrameStart;
        case: "expectedSurfaceFrameStart";
    } | {
        /**
         * @generated from field: perfetto.protos.FrameTimelineEvent.ActualSurfaceFrameStart actual_surface_frame_start = 4;
         */
        value: FrameTimelineEvent_ActualSurfaceFrameStart;
        case: "actualSurfaceFrameStart";
    } | {
        /**
         * @generated from field: perfetto.protos.FrameTimelineEvent.FrameEnd frame_end = 5;
         */
        value: FrameTimelineEvent_FrameEnd;
        case: "frameEnd";
    } | {
        case: undefined;
        value?: undefined;
    };
};
/**
 * Describes the message perfetto.protos.FrameTimelineEvent.
 * Use `create(FrameTimelineEventSchema)` to create a new message.
 */
export declare const FrameTimelineEventSchema: GenMessage<FrameTimelineEvent>;
/**
 * Indicates the start of expected timeline slice for SurfaceFrames.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.ExpectedSurfaceFrameStart
 */
export type FrameTimelineEvent_ExpectedSurfaceFrameStart = Message<"perfetto.protos.FrameTimelineEvent.ExpectedSurfaceFrameStart"> & {
    /**
     * Cookie used to correlate between the start and end messages of the same
     * frame. Since all values except the ts are same for start and end, cookie
     * helps in preventing redundant data transmission.
     * The same cookie is used only by start and end messages of a single frame
     * and is otherwise unique.
     *
     * @generated from field: optional int64 cookie = 1;
     */
    cookie: bigint;
    /**
     * Token received by the app for its work. Can be shared between multiple
     * layers of the same app (example: pip mode).
     *
     * @generated from field: optional int64 token = 2;
     */
    token: bigint;
    /**
     * The corresponding DisplayFrame token is required to link the App's work
     * with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
     * DisplayFrame.
     * this.display_frame_token = DisplayFrame.token
     *
     * @generated from field: optional int64 display_frame_token = 3;
     */
    displayFrameToken: bigint;
    /**
     * Pid of the app. Used in creating the timeline tracks (and slices) inside
     * the respective process track group.
     *
     * @generated from field: optional int32 pid = 4;
     */
    pid: number;
    /**
     * @generated from field: optional string layer_name = 5;
     */
    layerName: string;
};
/**
 * Describes the message perfetto.protos.FrameTimelineEvent.ExpectedSurfaceFrameStart.
 * Use `create(FrameTimelineEvent_ExpectedSurfaceFrameStartSchema)` to create a new message.
 */
export declare const FrameTimelineEvent_ExpectedSurfaceFrameStartSchema: GenMessage<FrameTimelineEvent_ExpectedSurfaceFrameStart>;
/**
 * Indicates the start of actual timeline slice for SurfaceFrames. Also
 * includes the jank information.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.ActualSurfaceFrameStart
 */
export type FrameTimelineEvent_ActualSurfaceFrameStart = Message<"perfetto.protos.FrameTimelineEvent.ActualSurfaceFrameStart"> & {
    /**
     * Cookie used to correlate between the start and end messages of the same
     * frame. Since all values except the ts are same for start and end, cookie
     * helps in preventing redundant data transmission.
     * The same cookie is used only by start and end messages of a single frame
     * and is otherwise unique.
     *
     * @generated from field: optional int64 cookie = 1;
     */
    cookie: bigint;
    /**
     * Token received by the app for its work. Can be shared between multiple
     * layers of the same app (example: pip mode).
     *
     * @generated from field: optional int64 token = 2;
     */
    token: bigint;
    /**
     * The corresponding DisplayFrame token is required to link the App's work
     * with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
     * DisplayFrame.
     * this.display_frame_token = DisplayFrame.token
     *
     * @generated from field: optional int64 display_frame_token = 3;
     */
    displayFrameToken: bigint;
    /**
     * Pid of the app. Used in creating the timeline tracks (and slices) inside
     * the respective process track group.
     *
     * @generated from field: optional int32 pid = 4;
     */
    pid: number;
    /**
     * @generated from field: optional string layer_name = 5;
     */
    layerName: string;
    /**
     * @generated from field: optional perfetto.protos.FrameTimelineEvent.PresentType present_type = 6;
     */
    presentType: FrameTimelineEvent_PresentType;
    /**
     * @generated from field: optional bool on_time_finish = 7;
     */
    onTimeFinish: boolean;
    /**
     * @generated from field: optional bool gpu_composition = 8;
     */
    gpuComposition: boolean;
    /**
     * A bitmask of JankType. More than one reason can be attributed to a janky
     * frame.
     *
     * @generated from field: optional int32 jank_type = 9;
     */
    jankType: number;
    /**
     * @generated from field: optional perfetto.protos.FrameTimelineEvent.PredictionType prediction_type = 10;
     */
    predictionType: FrameTimelineEvent_PredictionType;
    /**
     * @generated from field: optional bool is_buffer = 11;
     */
    isBuffer: boolean;
    /**
     * @generated from field: optional perfetto.protos.FrameTimelineEvent.JankSeverityType jank_severity_type = 12;
     */
    jankSeverityType: FrameTimelineEvent_JankSeverityType;
};
/**
 * Describes the message perfetto.protos.FrameTimelineEvent.ActualSurfaceFrameStart.
 * Use `create(FrameTimelineEvent_ActualSurfaceFrameStartSchema)` to create a new message.
 */
export declare const FrameTimelineEvent_ActualSurfaceFrameStartSchema: GenMessage<FrameTimelineEvent_ActualSurfaceFrameStart>;
/**
 * Indicates the start of expected timeline slice for DisplayFrames.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.ExpectedDisplayFrameStart
 */
export type FrameTimelineEvent_ExpectedDisplayFrameStart = Message<"perfetto.protos.FrameTimelineEvent.ExpectedDisplayFrameStart"> & {
    /**
     * Cookie used to correlate between the start and end messages of the same
     * frame. Since all values except the ts are same for start and end, cookie
     * helps in preventing redundant data transmission.
     * The same cookie is used only by start and end messages of a single frame
     * and is otherwise unique.
     *
     * @generated from field: optional int64 cookie = 1;
     */
    cookie: bigint;
    /**
     * Token received by SurfaceFlinger for its work
     * this.token = SurfaceFrame.display_frame_token
     *
     * @generated from field: optional int64 token = 2;
     */
    token: bigint;
    /**
     * Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
     * inside the SurfaceFlinger process group.
     *
     * @generated from field: optional int32 pid = 3;
     */
    pid: number;
};
/**
 * Describes the message perfetto.protos.FrameTimelineEvent.ExpectedDisplayFrameStart.
 * Use `create(FrameTimelineEvent_ExpectedDisplayFrameStartSchema)` to create a new message.
 */
export declare const FrameTimelineEvent_ExpectedDisplayFrameStartSchema: GenMessage<FrameTimelineEvent_ExpectedDisplayFrameStart>;
/**
 * Indicates the start of actual timeline slice for DisplayFrames. Also
 * includes the jank information.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.ActualDisplayFrameStart
 */
export type FrameTimelineEvent_ActualDisplayFrameStart = Message<"perfetto.protos.FrameTimelineEvent.ActualDisplayFrameStart"> & {
    /**
     * Cookie used to correlate between the start and end messages of the same
     * frame. Since all values except the ts are same for start and end, cookie
     * helps in preventing redundant data transmission.
     * The same cookie is used only by start and end messages of a single frame
     * and is otherwise unique.
     *
     * @generated from field: optional int64 cookie = 1;
     */
    cookie: bigint;
    /**
     * Token received by SurfaceFlinger for its work
     * this.token = SurfaceFrame.display_frame_token
     *
     * @generated from field: optional int64 token = 2;
     */
    token: bigint;
    /**
     * Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
     * inside the SurfaceFlinger process group.
     *
     * @generated from field: optional int32 pid = 3;
     */
    pid: number;
    /**
     * @generated from field: optional perfetto.protos.FrameTimelineEvent.PresentType present_type = 4;
     */
    presentType: FrameTimelineEvent_PresentType;
    /**
     * @generated from field: optional bool on_time_finish = 5;
     */
    onTimeFinish: boolean;
    /**
     * @generated from field: optional bool gpu_composition = 6;
     */
    gpuComposition: boolean;
    /**
     * A bitmask of JankType. More than one reason can be attributed to a janky
     * frame.
     *
     * @generated from field: optional int32 jank_type = 7;
     */
    jankType: number;
    /**
     * @generated from field: optional perfetto.protos.FrameTimelineEvent.PredictionType prediction_type = 8;
     */
    predictionType: FrameTimelineEvent_PredictionType;
    /**
     * @generated from field: optional perfetto.protos.FrameTimelineEvent.JankSeverityType jank_severity_type = 9;
     */
    jankSeverityType: FrameTimelineEvent_JankSeverityType;
};
/**
 * Describes the message perfetto.protos.FrameTimelineEvent.ActualDisplayFrameStart.
 * Use `create(FrameTimelineEvent_ActualDisplayFrameStartSchema)` to create a new message.
 */
export declare const FrameTimelineEvent_ActualDisplayFrameStartSchema: GenMessage<FrameTimelineEvent_ActualDisplayFrameStart>;
/**
 * FrameEnd just sends the cookie to indicate that the corresponding
 * <display/surface>frame slice's end.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.FrameEnd
 */
export type FrameTimelineEvent_FrameEnd = Message<"perfetto.protos.FrameTimelineEvent.FrameEnd"> & {
    /**
     * @generated from field: optional int64 cookie = 1;
     */
    cookie: bigint;
};
/**
 * Describes the message perfetto.protos.FrameTimelineEvent.FrameEnd.
 * Use `create(FrameTimelineEvent_FrameEndSchema)` to create a new message.
 */
export declare const FrameTimelineEvent_FrameEndSchema: GenMessage<FrameTimelineEvent_FrameEnd>;
/**
 * Specifies the reason(s) most likely to have caused the jank.
 * Used as a bitmask.
 *
 * @generated from enum perfetto.protos.FrameTimelineEvent.JankType
 */
export declare enum FrameTimelineEvent_JankType {
    /**
     * @generated from enum value: JANK_UNSPECIFIED = 0;
     */
    JANK_UNSPECIFIED = 0,
    /**
     * @generated from enum value: JANK_NONE = 1;
     */
    JANK_NONE = 1,
    /**
     * @generated from enum value: JANK_SF_SCHEDULING = 2;
     */
    JANK_SF_SCHEDULING = 2,
    /**
     * @generated from enum value: JANK_PREDICTION_ERROR = 4;
     */
    JANK_PREDICTION_ERROR = 4,
    /**
     * @generated from enum value: JANK_DISPLAY_HAL = 8;
     */
    JANK_DISPLAY_HAL = 8,
    /**
     * @generated from enum value: JANK_SF_CPU_DEADLINE_MISSED = 16;
     */
    JANK_SF_CPU_DEADLINE_MISSED = 16,
    /**
     * @generated from enum value: JANK_SF_GPU_DEADLINE_MISSED = 32;
     */
    JANK_SF_GPU_DEADLINE_MISSED = 32,
    /**
     * @generated from enum value: JANK_APP_DEADLINE_MISSED = 64;
     */
    JANK_APP_DEADLINE_MISSED = 64,
    /**
     * @generated from enum value: JANK_BUFFER_STUFFING = 128;
     */
    JANK_BUFFER_STUFFING = 128,
    /**
     * @generated from enum value: JANK_UNKNOWN = 256;
     */
    JANK_UNKNOWN = 256,
    /**
     * @generated from enum value: JANK_SF_STUFFING = 512;
     */
    JANK_SF_STUFFING = 512,
    /**
     * @generated from enum value: JANK_DROPPED = 1024;
     */
    JANK_DROPPED = 1024
}
/**
 * Describes the enum perfetto.protos.FrameTimelineEvent.JankType.
 */
export declare const FrameTimelineEvent_JankTypeSchema: GenEnum<FrameTimelineEvent_JankType>;
/**
 * Specifies the severity of a jank.
 *
 * @generated from enum perfetto.protos.FrameTimelineEvent.JankSeverityType
 */
export declare enum FrameTimelineEvent_JankSeverityType {
    /**
     * @generated from enum value: SEVERITY_UNKNOWN = 0;
     */
    SEVERITY_UNKNOWN = 0,
    /**
     * @generated from enum value: SEVERITY_NONE = 1;
     */
    SEVERITY_NONE = 1,
    /**
     * @generated from enum value: SEVERITY_PARTIAL = 2;
     */
    SEVERITY_PARTIAL = 2,
    /**
     * @generated from enum value: SEVERITY_FULL = 3;
     */
    SEVERITY_FULL = 3
}
/**
 * Describes the enum perfetto.protos.FrameTimelineEvent.JankSeverityType.
 */
export declare const FrameTimelineEvent_JankSeverityTypeSchema: GenEnum<FrameTimelineEvent_JankSeverityType>;
/**
 * Specifies how a frame was presented on screen w.r.t. timing.
 * Can be different for SurfaceFrame and DisplayFrame.
 *
 * @generated from enum perfetto.protos.FrameTimelineEvent.PresentType
 */
export declare enum FrameTimelineEvent_PresentType {
    /**
     * @generated from enum value: PRESENT_UNSPECIFIED = 0;
     */
    PRESENT_UNSPECIFIED = 0,
    /**
     * @generated from enum value: PRESENT_ON_TIME = 1;
     */
    PRESENT_ON_TIME = 1,
    /**
     * @generated from enum value: PRESENT_LATE = 2;
     */
    PRESENT_LATE = 2,
    /**
     * @generated from enum value: PRESENT_EARLY = 3;
     */
    PRESENT_EARLY = 3,
    /**
     * @generated from enum value: PRESENT_DROPPED = 4;
     */
    PRESENT_DROPPED = 4,
    /**
     * @generated from enum value: PRESENT_UNKNOWN = 5;
     */
    PRESENT_UNKNOWN = 5
}
/**
 * Describes the enum perfetto.protos.FrameTimelineEvent.PresentType.
 */
export declare const FrameTimelineEvent_PresentTypeSchema: GenEnum<FrameTimelineEvent_PresentType>;
/**
 * Specifies if the predictions for the frame are still valid, expired or
 * unknown.
 *
 * @generated from enum perfetto.protos.FrameTimelineEvent.PredictionType
 */
export declare enum FrameTimelineEvent_PredictionType {
    /**
     * @generated from enum value: PREDICTION_UNSPECIFIED = 0;
     */
    PREDICTION_UNSPECIFIED = 0,
    /**
     * @generated from enum value: PREDICTION_VALID = 1;
     */
    PREDICTION_VALID = 1,
    /**
     * @generated from enum value: PREDICTION_EXPIRED = 2;
     */
    PREDICTION_EXPIRED = 2,
    /**
     * @generated from enum value: PREDICTION_UNKNOWN = 3;
     */
    PREDICTION_UNKNOWN = 3
}
/**
 * Describes the enum perfetto.protos.FrameTimelineEvent.PredictionType.
 */
export declare const FrameTimelineEvent_PredictionTypeSchema: GenEnum<FrameTimelineEvent_PredictionType>;
//# sourceMappingURL=frame_timeline_event_pb.d.ts.map