import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { AndroidGameInterventionListConfig } from "./android/android_game_intervention_list_config_pb";
import type { AndroidInputEventConfig } from "./android/android_input_event_config_pb";
import type { AndroidLogConfig } from "./android/android_log_config_pb";
import type { AndroidPolledStateConfig } from "./android/android_polled_state_config_pb";
import type { AndroidSystemPropertyConfig } from "./android/android_system_property_config_pb";
import type { AndroidSdkSyspropGuardConfig } from "./android/android_sdk_sysprop_guard_config_pb";
import type { NetworkPacketTraceConfig } from "./android/network_trace_config_pb";
import type { PackagesListConfig } from "./android/packages_list_config_pb";
import type { PixelModemConfig } from "./android/pixel_modem_config_pb";
import type { ProtoLogConfig } from "./android/protolog_config_pb";
import type { SurfaceFlingerLayersConfig } from "./android/surfaceflinger_layers_config_pb";
import type { SurfaceFlingerTransactionsConfig } from "./android/surfaceflinger_transactions_config_pb";
import type { WindowManagerConfig } from "./android/windowmanager_config_pb";
import type { ChromeConfig } from "./chrome/chrome_config_pb";
import type { V8Config } from "./chrome/v8_config_pb";
import type { EtwConfig } from "./etw/etw_config_pb";
import type { ChromiumSystemMetricsConfig } from "./chrome/system_metrics_pb";
import type { FtraceConfig } from "./ftrace/ftrace_config_pb";
import type { GpuCounterConfig } from "./gpu/gpu_counter_config_pb";
import type { VulkanMemoryConfig } from "./gpu/vulkan_memory_config_pb";
import type { InodeFileConfig } from "./inode_file/inode_file_config_pb";
import type { InterceptorConfig } from "./interceptor_config_pb";
import type { AndroidPowerConfig } from "./power/android_power_config_pb";
import type { StatsdTracingConfig } from "./statsd/statsd_tracing_config_pb";
import type { ProcessStatsConfig } from "./process_stats/process_stats_config_pb";
import type { HeapprofdConfig } from "./profiling/heapprofd_config_pb";
import type { JavaHprofConfig } from "./profiling/java_hprof_config_pb";
import type { PerfEventConfig } from "./profiling/perf_event_config_pb";
import type { SysStatsConfig } from "./sys_stats/sys_stats_config_pb";
import type { TestConfig } from "./test_config_pb";
import type { TrackEventConfig } from "./track_event/track_event_config_pb";
import type { SystemInfoConfig } from "./system_info/system_info_pb";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file protos/perfetto/config/data_source_config.proto.
 */
export declare const file_protos_perfetto_config_data_source_config: GenFile;
/**
 * The configuration that is passed to each data source when starting tracing.
 * Next id: 132
 *
 * @generated from message perfetto.protos.DataSourceConfig
 */
export type DataSourceConfig = Message<"perfetto.protos.DataSourceConfig"> & {
    /**
     * Data source unique name, e.g., "linux.ftrace". This must match
     * the name passed by the data source when it registers (see
     * RegisterDataSource()).
     *
     * @generated from field: optional string name = 1;
     */
    name: string;
    /**
     * The index of the logging buffer where TracePacket(s) will be stored.
     * This field doesn't make a major difference for the Producer(s). The final
     * logging buffers, in fact, are completely owned by the Service. We just ask
     * the Producer to copy this number into the chunk headers it emits, so that
     * the Service can quickly identify the buffer where to move the chunks into
     * without expensive lookups on its fastpath.
     *
     * @generated from field: optional uint32 target_buffer = 2;
     */
    targetBuffer: number;
    /**
     * Set by the service to indicate the duration of the trace.
     * DO NOT SET in consumer as this will be overridden by the service.
     *
     * @generated from field: optional uint32 trace_duration_ms = 3;
     */
    traceDurationMs: number;
    /**
     * If true, |trace_duration_ms| should count also time in suspend. This
     * is propagated from TraceConfig.prefer_suspend_clock_for_duration.
     *
     * @generated from field: optional bool prefer_suspend_clock_for_duration = 122;
     */
    preferSuspendClockForDuration: boolean;
    /**
     * Set by the service to indicate how long it waits after StopDataSource.
     * DO NOT SET in consumer as this will be overridden by the service.
     *
     * @generated from field: optional uint32 stop_timeout_ms = 7;
     */
    stopTimeoutMs: number;
    /**
     * Set by the service to indicate whether this tracing session has extra
     * guardrails.
     * DO NOT SET in consumer as this will be overridden by the service.
     *
     * @generated from field: optional bool enable_extra_guardrails = 6;
     */
    enableExtraGuardrails: boolean;
    /**
     * Set by the service to indicate which user initiated this trace.
     * DO NOT SET in consumer as this will be overridden by the service.
     *
     * @generated from field: optional perfetto.protos.DataSourceConfig.SessionInitiator session_initiator = 8;
     */
    sessionInitiator: DataSourceConfig_SessionInitiator;
    /**
     * Set by the service to indicate which tracing session the data source
     * belongs to. The intended use case for this is checking if two data sources,
     * one of which produces metadata for the other one, belong to the same trace
     * session and hence should be linked together.
     * This field was introduced in Aug 2018 after Android P.
     * DO NOT SET in consumer as this will be overridden by the service.
     *
     * @generated from field: optional uint64 tracing_session_id = 4;
     */
    tracingSessionId: bigint;
    /**
     * Data source name: linux.ftrace
     *
     * @generated from field: optional perfetto.protos.FtraceConfig ftrace_config = 100;
     */
    ftraceConfig?: FtraceConfig;
    /**
     * Data source name: linux.inode_file_map
     *
     * @generated from field: optional perfetto.protos.InodeFileConfig inode_file_config = 102;
     */
    inodeFileConfig?: InodeFileConfig;
    /**
     * Data source name: linux.process_stats
     *
     * @generated from field: optional perfetto.protos.ProcessStatsConfig process_stats_config = 103;
     */
    processStatsConfig?: ProcessStatsConfig;
    /**
     * Data source name: linux.sys_stats
     *
     * @generated from field: optional perfetto.protos.SysStatsConfig sys_stats_config = 104;
     */
    sysStatsConfig?: SysStatsConfig;
    /**
     * Data source name: android.heapprofd
     * Introduced in Android 10.
     *
     * @generated from field: optional perfetto.protos.HeapprofdConfig heapprofd_config = 105;
     */
    heapprofdConfig?: HeapprofdConfig;
    /**
     * Data source name: android.java_hprof
     * Introduced in Android 11.
     *
     * @generated from field: optional perfetto.protos.JavaHprofConfig java_hprof_config = 110;
     */
    javaHprofConfig?: JavaHprofConfig;
    /**
     * Data source name: android.power
     *
     * @generated from field: optional perfetto.protos.AndroidPowerConfig android_power_config = 106;
     */
    androidPowerConfig?: AndroidPowerConfig;
    /**
     * Data source name: android.log
     *
     * @generated from field: optional perfetto.protos.AndroidLogConfig android_log_config = 107;
     */
    androidLogConfig?: AndroidLogConfig;
    /**
     * TODO(fmayer): Add data source name for this.
     *
     * @generated from field: optional perfetto.protos.GpuCounterConfig gpu_counter_config = 108;
     */
    gpuCounterConfig?: GpuCounterConfig;
    /**
     * Data source name: android.game_interventions
     *
     * @generated from field: optional perfetto.protos.AndroidGameInterventionListConfig android_game_intervention_list_config = 116;
     */
    androidGameInterventionListConfig?: AndroidGameInterventionListConfig;
    /**
     * Data source name: android.packages_list
     *
     * @generated from field: optional perfetto.protos.PackagesListConfig packages_list_config = 109;
     */
    packagesListConfig?: PackagesListConfig;
    /**
     * Data source name: linux.perf
     *
     * @generated from field: optional perfetto.protos.PerfEventConfig perf_event_config = 111;
     */
    perfEventConfig?: PerfEventConfig;
    /**
     * Data source name: vulkan.memory_tracker
     *
     * @generated from field: optional perfetto.protos.VulkanMemoryConfig vulkan_memory_config = 112;
     */
    vulkanMemoryConfig?: VulkanMemoryConfig;
    /**
     * Data source name: track_event
     *
     * @generated from field: optional perfetto.protos.TrackEventConfig track_event_config = 113;
     */
    trackEventConfig?: TrackEventConfig;
    /**
     * Data source name: android.polled_state
     *
     * @generated from field: optional perfetto.protos.AndroidPolledStateConfig android_polled_state_config = 114;
     */
    androidPolledStateConfig?: AndroidPolledStateConfig;
    /**
     * Data source name: android.system_property
     *
     * @generated from field: optional perfetto.protos.AndroidSystemPropertyConfig android_system_property_config = 118;
     */
    androidSystemPropertyConfig?: AndroidSystemPropertyConfig;
    /**
     * Data source name: android.statsd
     *
     * @generated from field: optional perfetto.protos.StatsdTracingConfig statsd_tracing_config = 117;
     */
    statsdTracingConfig?: StatsdTracingConfig;
    /**
     * Data source name: linux.system_info
     *
     * @generated from field: optional perfetto.protos.SystemInfoConfig system_info_config = 119;
     */
    systemInfoConfig?: SystemInfoConfig;
    /**
     * Chrome is special as it doesn't use the perfetto IPC layer. We want to
     * avoid proto serialization and de-serialization there because that would
     * just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
     * C++ class for it so it can pass around plain C++ objets.
     *
     * @generated from field: optional perfetto.protos.ChromeConfig chrome_config = 101;
     */
    chromeConfig?: ChromeConfig;
    /**
     * Data source name: code.v8.dev
     *
     * @generated from field: optional perfetto.protos.V8Config v8_config = 127;
     */
    v8Config?: V8Config;
    /**
     * If an interceptor is specified here, packets for this data source will be
     * rerouted to the interceptor instead of the main trace buffer. This can be
     * used, for example, to write trace data into ETW or for logging trace points
     * to the console.
     *
     * Note that interceptors are only supported by data sources registered
     * through the Perfetto SDK API. Data sources that don't use that API (e.g.,
     * traced_probes) may not support interception.
     *
     * @generated from field: optional perfetto.protos.InterceptorConfig interceptor_config = 115;
     */
    interceptorConfig?: InterceptorConfig;
    /**
     * Data source name: android.network_packets.
     * Introduced in Android 14 (U).
     *
     * @generated from field: optional perfetto.protos.NetworkPacketTraceConfig network_packet_trace_config = 120;
     */
    networkPacketTraceConfig?: NetworkPacketTraceConfig;
    /**
     * Data source name: android.surfaceflinger.layers
     *
     * @generated from field: optional perfetto.protos.SurfaceFlingerLayersConfig surfaceflinger_layers_config = 121;
     */
    surfaceflingerLayersConfig?: SurfaceFlingerLayersConfig;
    /**
     * Data source name: android.surfaceflinger.transactions
     *
     * @generated from field: optional perfetto.protos.SurfaceFlingerTransactionsConfig surfaceflinger_transactions_config = 123;
     */
    surfaceflingerTransactionsConfig?: SurfaceFlingerTransactionsConfig;
    /**
     * Data source name: android.sdk_sysprop_guard
     * Introduced in Android 14 (U) QPR1.
     *
     * @generated from field: optional perfetto.protos.AndroidSdkSyspropGuardConfig android_sdk_sysprop_guard_config = 124;
     */
    androidSdkSyspropGuardConfig?: AndroidSdkSyspropGuardConfig;
    /**
     * Data source name: windows.etw
     *
     * @generated from field: optional perfetto.protos.EtwConfig etw_config = 125;
     */
    etwConfig?: EtwConfig;
    /**
     * Data source name: android.protolog
     *
     * @generated from field: optional perfetto.protos.ProtoLogConfig protolog_config = 126;
     */
    protologConfig?: ProtoLogConfig;
    /**
     * Data source name: android.input.inputevent
     *
     * @generated from field: optional perfetto.protos.AndroidInputEventConfig android_input_event_config = 128;
     */
    androidInputEventConfig?: AndroidInputEventConfig;
    /**
     * Data source name: android.pixel.modem
     *
     * @generated from field: optional perfetto.protos.PixelModemConfig pixel_modem_config = 129;
     */
    pixelModemConfig?: PixelModemConfig;
    /**
     * Data source name: android.windowmanager
     *
     * @generated from field: optional perfetto.protos.WindowManagerConfig windowmanager_config = 130;
     */
    windowmanagerConfig?: WindowManagerConfig;
    /**
     * Data source name: org.chromium.system_metrics
     *
     * @generated from field: optional perfetto.protos.ChromiumSystemMetricsConfig chromium_system_metrics = 131;
     */
    chromiumSystemMetrics?: ChromiumSystemMetricsConfig;
    /**
     * This is a fallback mechanism to send a free-form text config to the
     * producer. In theory this should never be needed. All the code that
     * is part of the platform (i.e. traced service) is supposed to *not* truncate
     * the trace config proto and propagate unknown fields. However, if anything
     * in the pipeline (client or backend) ends up breaking this forward compat
     * plan, this field will become the escape hatch to allow future data sources
     * to get some meaningful configuration.
     *
     * @generated from field: optional string legacy_config = 1000;
     */
    legacyConfig: string;
    /**
     * This field is only used for testing.
     *
     * @generated from field: optional perfetto.protos.TestConfig for_testing = 1001;
     */
    forTesting?: TestConfig;
};
/**
 * Describes the message perfetto.protos.DataSourceConfig.
 * Use `create(DataSourceConfigSchema)` to create a new message.
 */
export declare const DataSourceConfigSchema: GenMessage<DataSourceConfig>;
/**
 * @generated from enum perfetto.protos.DataSourceConfig.SessionInitiator
 */
export declare enum DataSourceConfig_SessionInitiator {
    /**
     * @generated from enum value: SESSION_INITIATOR_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * This trace was initiated from a trusted system app has DUMP and
     * USAGE_STATS permission. This system app is expected to not expose the
     * trace to the user of the device.
     * This is determined by checking the UID initiating the trace.
     *
     * @generated from enum value: SESSION_INITIATOR_TRUSTED_SYSTEM = 1;
     */
    TRUSTED_SYSTEM = 1
}
/**
 * Describes the enum perfetto.protos.DataSourceConfig.SessionInitiator.
 */
export declare const DataSourceConfig_SessionInitiatorSchema: GenEnum<DataSourceConfig_SessionInitiator>;
//# sourceMappingURL=data_source_config_pb.d.ts.map