/** 自定义登录 Ticket 创建选项 */
export interface ICreateTicketOpts {
  /** 刷新间隔（毫秒），默认 3600000（1小时） */
  refresh?: number
  /** 过期时间戳（毫秒），默认 7 天后 */
  expire?: number
}

/** 用户信息查询结果 */
export interface IGetUserInfoResult {
  openId: string
  appId: string
  uid: string
  customUserId: string
  isAnonymous: boolean
}

/** 云函数入口 context 参数结构 */
export interface IContextParam {
  memory_limit_in_mb: number
  time_limit_in_ms: number
  request_id: string
  /** 老架构环境变量字符串，分号分隔的 key=value */
  environ?: string
  /** 新架构环境变量 JSON 字符串 */
  environment?: string
  function_version: string
  function_name: string
  namespace: string
}

/** 用户信息查询请求参数 */
export interface IUserInfoQuery {
  platform?: string
  platformId?: string
  uid?: string
}

/**
 * 云函数运行时完整环境变量类型汇总
 * 包含 SCF、TCB、微信相关的所有环境变量
 */
export interface ICompleteCloudbaseContext {
  /** SCF 日志配置 */
  _SCF_TCB_LOG?: string
  /** 登录类型 */
  LOGINTYPE?: string
  QQ_APPID?: string
  QQ_OPENID?: string
  /** SCF 命名空间 */
  SCF_NAMESPACE: string
  /** TCB 上下文配置 */
  TCB_CONTEXT_CNFG?: string
  /** TCB 上下文 key 列表，逗号分隔 */
  TCB_CONTEXT_KEYS: string[]
  TCB_CUSTOM_USER_ID?: string
  /** 云开发环境 ID */
  TCB_ENV: string
  TCB_HTTP_CONTEXT?: string
  TCB_ISANONYMOUS_USER?: string
  TCB_ROUTE_KEY?: string
  /** 请求序列 ID */
  TCB_SEQID: string
  TCB_SESSIONTOKEN?: string
  /** 客户端来源 IP */
  TCB_SOURCE_IP?: string
  TCB_SOURCE?: string
  TCB_TRACELOG?: string
  /** 用户唯一标识 */
  TCB_UUID?: string
  /** 腾讯云运行环境标识 */
  TENCENTCLOUD_RUNENV: string
  TENCENTCLOUD_SECRETID: string
  TENCENTCLOUD_SECRETKEY: string
  TENCENTCLOUD_SESSIONTOKEN: string
  /** 触发来源 */
  TRIGGER_SRC: string
  WX_API_TOKEN?: string
  WX_APPID?: string
  WX_CLIENTIP?: string
  WX_CLIENTIPV6?: string
  WX_CLOUDBASE_ACCESSTOKEN?: string
  /** 微信上下文 key 列表，逗号分隔 */
  WX_CONTEXT_KEYS: string[]
  WX_OPENID?: string
  WX_TRIGGER_API_TOKEN_V0?: string
  WX_UNIONID?: string
}

/** getEndUserInfo 返回结果 */
export interface IGetEndUserInfoResult {
  userInfo?: {
    openId: string
    appId: string
    uid: string
    customUserId: string
    isAnonymous: boolean
  }
  requestId?: string
}

/** 自定义请求选项 */
export interface ICustomReqOpts {
  /** 请求超时时间（毫秒） */
  timeout?: number
}

/** 模板消息推送请求参数 */
export interface ITemplateNotifyReq {
  /** 通知策略 ID */
  notifyId: string
  /** 通知模板变量键值对 */
  data?: Record<string, unknown>
  /** 点击消息打开的页面地址 */
  url?: string
}
