// 定义后端服务URL和OAuth2配置
const API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL
const CLIENT_ID = process.env.CLIENT_ID
const CLIENT_SECRET = process.env.CLIENT_SECRET

// 统一的API响应类型
type ApiResponse<T = undefined> = {
  success: false
  status: number
  message: string
} | {
  success: true
  data: T
}

type PageRecord<T = unknown> = {
  total: number
  page: number
  size: number
  list: T[]
}

type ExtraReq<T extends (...args: never) => unknown> = T extends (...args: infer P) => unknown ? P[0] : never
type ExtraResp<T extends (...args: never) => unknown> = Awaited<ReturnType<T>> extends ApiResponse<infer D> ? D : never

// 预定义错误
const UnauthorizedError = new Error('未授权访问')

export {
  API_BASE_URL,
  CLIENT_ID,
  CLIENT_SECRET,
  type ApiResponse,
  type PageRecord,
  type ExtraReq,
  type ExtraResp,
  UnauthorizedError,
}
