import { invoke } from "@tauri-apps/api/core"; export type ManagedAuthProvider = "github_copilot"; export interface ManagedAuthAccount { id: string; provider: ManagedAuthProvider; login: string; avatar_url: string | null; authenticated_at: number; is_default: boolean; } export interface ManagedAuthStatus { provider: ManagedAuthProvider; authenticated: boolean; default_account_id: string | null; migration_error?: string | null; accounts: ManagedAuthAccount[]; } export interface ManagedAuthDeviceCodeResponse { provider: ManagedAuthProvider; device_code: string; user_code: string; verification_uri: string; expires_in: number; interval: number; } export async function authStartLogin( authProvider: ManagedAuthProvider, ): Promise { return invoke("auth_start_login", { authProvider, }); } export async function authPollForAccount( authProvider: ManagedAuthProvider, deviceCode: string, ): Promise { return invoke("auth_poll_for_account", { authProvider, deviceCode, }); } export async function authListAccounts( authProvider: ManagedAuthProvider, ): Promise { return invoke("auth_list_accounts", { authProvider, }); } export async function authGetStatus( authProvider: ManagedAuthProvider, ): Promise { return invoke("auth_get_status", { authProvider, }); } export async function authRemoveAccount( authProvider: ManagedAuthProvider, accountId: string, ): Promise { return invoke("auth_remove_account", { authProvider, accountId, }); } export async function authSetDefaultAccount( authProvider: ManagedAuthProvider, accountId: string, ): Promise { return invoke("auth_set_default_account", { authProvider, accountId, }); } export async function authLogout( authProvider: ManagedAuthProvider, ): Promise { return invoke("auth_logout", { authProvider, }); } export const authApi = { authStartLogin, authPollForAccount, authListAccounts, authGetStatus, authRemoveAccount, authSetDefaultAccount, authLogout, };