// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// IMPORTANT: This file should only ever be modified by modifying the
// corresponding .proto file and then running
// `dart runtime/vm/protos/tools/compile_perfetto_protos.dart` from the SDK root
// directory.

export 'src/protos/perfetto/common/builtin_clock.pb.dart';
export 'src/protos/perfetto/common/builtin_clock.pbenum.dart';
export 'src/protos/perfetto/common/builtin_clock.pbjson.dart';
export 'src/protos/perfetto/common/builtin_clock.pbserver.dart';
export 'src/protos/perfetto/trace/clock_snapshot.pb.dart';
export 'src/protos/perfetto/trace/clock_snapshot.pbjson.dart';
export 'src/protos/perfetto/trace/clock_snapshot.pbserver.dart';
export 'src/protos/perfetto/trace/interned_data/interned_data.pb.dart';
export 'src/protos/perfetto/trace/interned_data/interned_data.pbjson.dart';
export 'src/protos/perfetto/trace/interned_data/interned_data.pbserver.dart';
export 'src/protos/perfetto/trace/profiling/profile_common.pb.dart';
export 'src/protos/perfetto/trace/profiling/profile_common.pbjson.dart';
export 'src/protos/perfetto/trace/profiling/profile_common.pbserver.dart';
export 'src/protos/perfetto/trace/profiling/profile_packet.pb.dart';
export 'src/protos/perfetto/trace/profiling/profile_packet.pbjson.dart';
export 'src/protos/perfetto/trace/profiling/profile_packet.pbserver.dart';
export 'src/protos/perfetto/trace/trace.pb.dart';
export 'src/protos/perfetto/trace/trace.pbjson.dart';
export 'src/protos/perfetto/trace/trace.pbserver.dart';
export 'src/protos/perfetto/trace/trace_packet.pb.dart';
export 'src/protos/perfetto/trace/trace_packet.pbenum.dart';
export 'src/protos/perfetto/trace/trace_packet.pbjson.dart';
export 'src/protos/perfetto/trace/trace_packet.pbserver.dart';
export 'src/protos/perfetto/trace/track_event/debug_annotation.pb.dart';
export 'src/protos/perfetto/trace/track_event/debug_annotation.pbjson.dart';
export 'src/protos/perfetto/trace/track_event/debug_annotation.pbserver.dart';
export 'src/protos/perfetto/trace/track_event/process_descriptor.pb.dart';
export 'src/protos/perfetto/trace/track_event/process_descriptor.pbjson.dart';
export 'src/protos/perfetto/trace/track_event/process_descriptor.pbserver.dart';
export 'src/protos/perfetto/trace/track_event/thread_descriptor.pb.dart';
export 'src/protos/perfetto/trace/track_event/thread_descriptor.pbjson.dart';
export 'src/protos/perfetto/trace/track_event/thread_descriptor.pbserver.dart';
export 'src/protos/perfetto/trace/track_event/track_descriptor.pb.dart';
export 'src/protos/perfetto/trace/track_event/track_descriptor.pbjson.dart';
export 'src/protos/perfetto/trace/track_event/track_descriptor.pbserver.dart';
export 'src/protos/perfetto/trace/track_event/track_event.pb.dart';
export 'src/protos/perfetto/trace/track_event/track_event.pbenum.dart';
export 'src/protos/perfetto/trace/track_event/track_event.pbjson.dart';
export 'src/protos/perfetto/trace/track_event/track_event.pbserver.dart';
