// Copyright (C) 2018 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import protos from '../gen/protos';

// Aliases protos to avoid the super nested namespaces.
// See https://www.typescriptlang.org/docs/handbook/namespaces.html#aliases
import AndroidLogConfig = protos.perfetto.protos.AndroidLogConfig;
import AndroidLogId = protos.perfetto.protos.AndroidLogId;
import AndroidPowerConfig = protos.perfetto.protos.AndroidPowerConfig;
import BatteryCounters = protos.perfetto.protos.AndroidPowerConfig.BatteryCounters;
import BufferConfig = protos.perfetto.protos.TraceConfig.BufferConfig;
import ChromeConfig = protos.perfetto.protos.ChromeConfig;
import ComputeMetricArgs = protos.perfetto.protos.ComputeMetricArgs;
import ComputeMetricResult = protos.perfetto.protos.ComputeMetricResult;
import ConsumerPort = protos.perfetto.protos.ConsumerPort;
import DataSourceConfig = protos.perfetto.protos.DataSourceConfig;
import DataSourceDescriptor = protos.perfetto.protos.DataSourceDescriptor;
import DisableAndReadMetatraceResult = protos.perfetto.protos.DisableAndReadMetatraceResult;
import DisableTracingRequest = protos.perfetto.protos.DisableTracingRequest;
import DisableTracingResponse = protos.perfetto.protos.DisableTracingResponse;
import EnableMetatraceArgs = protos.perfetto.protos.EnableMetatraceArgs;
import EnableTracingRequest = protos.perfetto.protos.EnableTracingRequest;
import EnableTracingResponse = protos.perfetto.protos.EnableTracingResponse;
import EtwConfig = protos.perfetto.protos.EtwConfig;
import FreeBuffersRequest = protos.perfetto.protos.FreeBuffersRequest;
import FreeBuffersResponse = protos.perfetto.protos.FreeBuffersResponse;
import FtraceConfig = protos.perfetto.protos.FtraceConfig;
import GetTraceStatsRequest = protos.perfetto.protos.GetTraceStatsRequest;
import GetTraceStatsResponse = protos.perfetto.protos.GetTraceStatsResponse;
import HeapprofdConfig = protos.perfetto.protos.HeapprofdConfig;
import IAndroidPowerConfig = protos.perfetto.protos.IAndroidPowerConfig;
import IBufferConfig = protos.perfetto.protos.TraceConfig.IBufferConfig;
import IBufferStats = protos.perfetto.protos.TraceStats.IBufferStats;
import IDisableTracingResponse = protos.perfetto.protos.IDisableTracingResponse;
import IEnableTracingResponse = protos.perfetto.protos.IEnableTracingResponse;
import IFreeBuffersResponse = protos.perfetto.protos.IFreeBuffersResponse;
import IGetTraceStatsResponse = protos.perfetto.protos.IGetTraceStatsResponse;
import IMethodInfo = protos.perfetto.protos.IPCFrame.BindServiceReply.IMethodInfo;
import IPCFrame = protos.perfetto.protos.IPCFrame;
import IProcessStatsConfig = protos.perfetto.protos.IProcessStatsConfig;
import IReadBuffersResponse = protos.perfetto.protos.IReadBuffersResponse;
import ISlice = protos.perfetto.protos.ReadBuffersResponse.ISlice;
import ISysStatsConfig = protos.perfetto.protos.ISysStatsConfig;
import ITraceConfig = protos.perfetto.protos.ITraceConfig;
import ITraceStats = protos.perfetto.protos.ITraceStats;
import JavaContinuousDumpConfig = protos.perfetto.protos.JavaHprofConfig.ContinuousDumpConfig;
import JavaHprofConfig = protos.perfetto.protos.JavaHprofConfig;
import MeminfoCounters = protos.perfetto.protos.MeminfoCounters;
import MetatraceCategories = protos.perfetto.protos.MetatraceCategories;
import NativeContinuousDumpConfig = protos.perfetto.protos.HeapprofdConfig.ContinuousDumpConfig;
import NetworkPacketTraceConfig = protos.perfetto.protos.NetworkPacketTraceConfig;
import PerfEventConfig = protos.perfetto.protos.PerfEventConfig;
import PerfEvents = protos.perfetto.protos.PerfEvents;
import PerfettoMetatrace = protos.perfetto.protos.PerfettoMetatrace;
import ProcessStatsConfig = protos.perfetto.protos.ProcessStatsConfig;
import QueryArgs = protos.perfetto.protos.QueryArgs;
import QueryResult = protos.perfetto.protos.QueryResult;
import QueryServiceStateRequest = protos.perfetto.protos.QueryServiceStateRequest;
import QueryServiceStateResponse = protos.perfetto.protos.QueryServiceStateResponse;
import ReadBuffersRequest = protos.perfetto.protos.ReadBuffersRequest;
import ReadBuffersResponse = protos.perfetto.protos.ReadBuffersResponse;
import RegisterSqlModuleArgs = protos.perfetto.protos.RegisterSqlModuleArgs;
import RegisterSqlModuleResult = protos.perfetto.protos.RegisterSqlModuleResult;
import ResetTraceProcessorArgs = protos.perfetto.protos.ResetTraceProcessorArgs;
import StatCounters = protos.perfetto.protos.SysStatsConfig.StatCounters;
import StatusResult = protos.perfetto.protos.StatusResult;
import SysStatsConfig = protos.perfetto.protos.SysStatsConfig;
import TraceConfig = protos.perfetto.protos.TraceConfig;
import TraceProcessorApiVersion = protos.perfetto.protos.TraceProcessorApiVersion;
import TraceProcessorRpc = protos.perfetto.protos.TraceProcessorRpc;
import TraceProcessorRpcStream = protos.perfetto.protos.TraceProcessorRpcStream;
import TrackEventConfig = protos.perfetto.protos.TrackEventConfig;
import VmstatCounters = protos.perfetto.protos.VmstatCounters;

export {
  AndroidLogConfig,
  AndroidLogId,
  AndroidPowerConfig,
  BatteryCounters,
  BufferConfig,
  ChromeConfig,
  ComputeMetricArgs,
  ComputeMetricResult,
  ConsumerPort,
  DataSourceConfig,
  DataSourceDescriptor,
  DisableAndReadMetatraceResult,
  DisableTracingRequest,
  DisableTracingResponse,
  EnableMetatraceArgs,
  EnableTracingRequest,
  EnableTracingResponse,
  EtwConfig,
  FreeBuffersRequest,
  FreeBuffersResponse,
  FtraceConfig,
  GetTraceStatsRequest,
  GetTraceStatsResponse,
  HeapprofdConfig,
  IAndroidPowerConfig,
  IBufferConfig,
  IBufferStats,
  IDisableTracingResponse,
  IEnableTracingResponse,
  IFreeBuffersResponse,
  IGetTraceStatsResponse,
  IMethodInfo,
  IPCFrame,
  IProcessStatsConfig,
  IReadBuffersResponse,
  ISlice,
  ISysStatsConfig,
  ITraceConfig,
  ITraceStats,
  JavaContinuousDumpConfig,
  JavaHprofConfig,
  MeminfoCounters,
  MetatraceCategories,
  NativeContinuousDumpConfig,
  NetworkPacketTraceConfig,
  PerfettoMetatrace,
  PerfEventConfig,
  PerfEvents,
  ProcessStatsConfig,
  QueryArgs,
  QueryResult,
  QueryServiceStateRequest,
  QueryServiceStateResponse,
  ReadBuffersRequest,
  ReadBuffersResponse,
  RegisterSqlModuleArgs,
  RegisterSqlModuleResult,
  ResetTraceProcessorArgs,
  StatCounters,
  StatusResult,
  SysStatsConfig,
  TraceConfig,
  TraceProcessorApiVersion,
  TraceProcessorRpc,
  TraceProcessorRpcStream,
  TrackEventConfig,
  VmstatCounters,
};
