/**
 * Sandbox Mode API
 * Manage live/test mode switching for isolated test data
 */

import apiClient from './client';

export interface SandboxStatus {
  sandbox_mode: boolean;
  sandbox_enabled: boolean;
  sandbox_schema: string | null;
}

export interface SandboxToggleResponse {
  sandbox_mode: boolean;
  message: string;
}

export interface SandboxResetResponse {
  message: string;
  sandbox_schema: string;
}

/**
 * Get current sandbox mode status
 */
export const getSandboxStatus = async (): Promise<SandboxStatus> => {
  const response = await apiClient.get<SandboxStatus>('/sandbox/status/');
  return response.data;
};

/**
 * Toggle between live and sandbox mode
 */
export const toggleSandboxMode = async (enableSandbox: boolean): Promise<SandboxToggleResponse> => {
  const response = await apiClient.post<SandboxToggleResponse>('/sandbox/toggle/', {
    sandbox: enableSandbox,
  });
  return response.data;
};

/**
 * Reset sandbox data to initial state
 */
export const resetSandboxData = async (): Promise<SandboxResetResponse> => {
  const response = await apiClient.post<SandboxResetResponse>('/sandbox/reset/');
  return response.data;
};
