import type { GitHubAPI, GitHubAuthStatus, GitHubIssueCommentsResult, GitHubIssueGetResult, GitHubIssuesListResult, GitHubPullRequestContextResult, GitHubPullRequestsListResult, GitHubPullRequest, GitHubPullRequestCreateInput, GitHubPullRequestMergeInput, GitHubPullRequestMergeResult, GitHubPullRequestReadyInput, GitHubPullRequestReadyResult, GitHubPullRequestStatus, GitHubDeviceFlowComplete, GitHubDeviceFlowStart, GitHubUserSummary, } from '@openchamber/ui/lib/api/types'; import { sendBridgeMessage } from './bridge'; export const createVSCodeGitHubAPI = (): GitHubAPI => ({ authStatus: async () => sendBridgeMessage('api:github/auth:status'), authStart: async () => sendBridgeMessage('api:github/auth:start'), authComplete: async (deviceCode: string) => sendBridgeMessage('api:github/auth:complete', { deviceCode }), authDisconnect: async () => sendBridgeMessage<{ removed: boolean }>('api:github/auth:disconnect'), me: async () => sendBridgeMessage('api:github/me'), prStatus: async (directory: string, branch: string) => sendBridgeMessage('api:github/pr:status', { directory, branch }), prCreate: async (payload: GitHubPullRequestCreateInput) => sendBridgeMessage('api:github/pr:create', payload), prMerge: async (payload: GitHubPullRequestMergeInput) => sendBridgeMessage('api:github/pr:merge', payload), prReady: async (payload: GitHubPullRequestReadyInput) => sendBridgeMessage('api:github/pr:ready', payload), issuesList: async (directory: string, options?: { page?: number }) => sendBridgeMessage('api:github/issues:list', { directory, page: options?.page ?? 1 }), issueGet: async (directory: string, number: number) => sendBridgeMessage('api:github/issues:get', { directory, number }), issueComments: async (directory: string, number: number) => sendBridgeMessage('api:github/issues:comments', { directory, number }), prsList: async (directory: string, options?: { page?: number }) => sendBridgeMessage('api:github/pulls:list', { directory, page: options?.page ?? 1 }), prContext: async (directory: string, number: number, options?: { includeDiff?: boolean; includeCheckDetails?: boolean }) => sendBridgeMessage('api:github/pulls:context', { directory, number, includeDiff: Boolean(options?.includeDiff), includeCheckDetails: Boolean(options?.includeCheckDetails), }), });