import { ipcRenderer } from 'electron' import type { CodexRateLimitResetResult, RateLimitRuntimeTarget, RateLimitState } from '../../shared/rate-limit-types' import type { PreloadApi } from '../api-types' export const rateLimitsApi = { get: (): Promise => ipcRenderer.invoke('rateLimits:get'), refresh: (): Promise => ipcRenderer.invoke('rateLimits:refresh'), refreshCodexForTarget: (target: RateLimitRuntimeTarget): Promise => ipcRenderer.invoke('rateLimits:refreshCodexForTarget', target), consumeCodexResetCredit: (): Promise => ipcRenderer.invoke('rateLimits:consumeCodexResetCredit'), refreshClaudeForTarget: (target: RateLimitRuntimeTarget): Promise => ipcRenderer.invoke('rateLimits:refreshClaudeForTarget', target), setPollingInterval: (ms: number): Promise => ipcRenderer.invoke('rateLimits:setPollingInterval', ms), fetchInactiveClaudeAccounts: (): Promise => ipcRenderer.invoke('rateLimits:fetchInactiveClaudeAccounts'), fetchInactiveCodexAccounts: (): Promise => ipcRenderer.invoke('rateLimits:fetchInactiveCodexAccounts'), refreshMiniMax: (): Promise => ipcRenderer.invoke('rateLimits:refreshMiniMax'), refreshGrok: (): Promise => ipcRenderer.invoke('rateLimits:refreshGrok'), onUpdate: (callback: (state: RateLimitState) => void): (() => void) => { const listener = (_event: Electron.IpcRendererEvent, state: RateLimitState) => callback(state) ipcRenderer.on('rateLimits:update', listener) return () => ipcRenderer.removeListener('rateLimits:update', listener) } } satisfies PreloadApi['rateLimits']