// 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 AtomId = protos.perfetto.protos.AtomId;
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 RegisterSqlPackageArgs = protos.perfetto.protos.RegisterSqlPackageArgs;
import RegisterSqlPackageResult = protos.perfetto.protos.RegisterSqlPackageResult;
import ResetTraceProcessorArgs = protos.perfetto.protos.ResetTraceProcessorArgs;
import StatCounters = protos.perfetto.protos.SysStatsConfig.StatCounters;
import StatsdPullAtomConfig = protos.perfetto.protos.StatsdPullAtomConfig;;
import StatsdTracingConfig = protos.perfetto.protos.StatsdTracingConfig;
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,
  AtomId,
  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,
  RegisterSqlPackageArgs,
  RegisterSqlPackageResult,
  ResetTraceProcessorArgs,
  StatCounters,
  StatsdPullAtomConfig,
  StatsdTracingConfig,
  StatusResult,
  SysStatsConfig,
  TraceConfig,
  TraceProcessorApiVersion,
  TraceProcessorRpc,
  TraceProcessorRpcStream,
  TrackEventConfig,
  VmstatCounters,
};
