import type { ErrorResponse, ResponseStruct, StructuredSuccessResponse } from "@/types"

/**
 * Type guard to check if response is successful
 */
export function isSuccessResponse<T>(
  response: ResponseStruct<T>,
): response is StructuredSuccessResponse<T> {
  return response.code === 0
}

/**
 * Type guard to check if response is an error
 */
export function isErrorResponse(
  response: ResponseStruct<any>,
): response is ErrorResponse {
  return response.code !== 0
}

/**
 * Extract data from successful response, throw error if unsuccessful
 */
export function extractResponseData<T>(response: ResponseStruct<T>): T {
  if (isSuccessResponse(response)) {
    return response.data
  }
  throw new Error(response.message || `API error with code: ${response.code}`)
}
