/*************************************************************************
 * Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved.
 *
 * See LICENSE.txt for license information
 *
 * Minimal types for the proxytrace profiler plugin only (same content as
 * ext-profiler example nccl/common.h + nccl/err.h). Kept local so this plugin
 * does not depend on plugins/profiler/example/.
 ************************************************************************/

#ifndef RCCL_PROXYTRACE_PLUGIN_SHIM_H_
#define RCCL_PROXYTRACE_PLUGIN_SHIM_H_

typedef enum {
  NCCL_LOG_NONE = 0,
  NCCL_LOG_ERROR = 1,
  NCCL_LOG_VERSION = 2,
  NCCL_LOG_WARN = 3,
  NCCL_LOG_INFO = 4,
  NCCL_LOG_ABORT = 5,
  NCCL_LOG_TRACE = 6
} ncclDebugLogLevel;
typedef enum {
  NCCL_INIT = 1,
  NCCL_COLL = 2,
  NCCL_P2P = 4,
  NCCL_SHM = 8,
  NCCL_NET = 16,
  NCCL_GRAPH = 32,
  NCCL_TUNING = 64,
  NCCL_ENV = 128,
  NCCL_ALLOC = 256,
  NCCL_CALL = 512,
  NCCL_PROXY = 1024,
  NCCL_NVLS = 2048,
  NCCL_BOOTSTRAP = 4096,
  NCCL_REG = 8192,
  NCCL_ALL = ~0
} ncclDebugLogSubSys;

typedef void (*ncclDebugLogger_t)(ncclDebugLogLevel level, unsigned long flags, const char* file, int line,
                                  const char* fmt, ...);

typedef enum {
  ncclSuccess = 0,
  ncclUnhandledCudaError = 1,
  ncclSystemError = 2,
  ncclInternalError = 3,
  ncclInvalidArgument = 4,
  ncclInvalidUsage = 5,
  ncclRemoteError = 6
} ncclResult_t;

#endif
