import { api } from './client' import type { AdapterFileConfig } from '../types/adapter' export type DingtalkRegistrationBegin = { deviceCode: string userCode?: string verificationUri?: string verificationUriComplete: string expiresInSeconds: number intervalSeconds: number qrDataUrl?: string } export type DingtalkRegistrationPoll = { status: 'WAITING' | 'SUCCESS' | 'FAIL' | 'EXPIRED' | 'UNKNOWN' failReason?: string config?: AdapterFileConfig } export const adaptersApi = { getConfig() { return api.get('/api/adapters') }, updateConfig(patch: Partial) { return api.put('/api/adapters', patch) }, startWechatLogin() { return api.post<{ qrcodeUrl?: string; message: string; sessionKey: string }>('/api/adapters/wechat/login/start', {}) }, pollWechatLogin(sessionKey: string) { return api.post< | AdapterFileConfig | { connected: false; status: string; message: string } >('/api/adapters/wechat/login/poll', { sessionKey }, { timeout: 45_000 }) }, unbindWechat() { return api.post('/api/adapters/wechat/unbind', {}) }, unbindDingtalk() { return api.post('/api/adapters/dingtalk/unbind', {}) }, beginDingtalkRegistration() { return api.post('/api/adapters/dingtalk/registration/begin', {}) }, pollDingtalkRegistration(deviceCode: string) { return api.post('/api/adapters/dingtalk/registration/poll', { deviceCode }) }, }