import type { BrowserSetAnnotationViewportBridgeArgs } from '../../shared/browser-annotation-viewport-bridge' import type { BrowserSetGrabModeArgs, BrowserSetGrabModeResult, BrowserAwaitGrabSelectionArgs, BrowserGrabResult, BrowserCancelGrabArgs, BrowserCaptureSelectionScreenshotArgs, BrowserCaptureSelectionScreenshotResult, BrowserExtractHoverArgs, BrowserExtractHoverResult } from '../../shared/browser-grab-types' import type { BrowserContextMenuDismissedEvent, BrowserContextMenuRequestedEvent, BrowserDownloadFinishedEvent, BrowserDownloadProgressEvent, BrowserDownloadRequestedEvent, BrowserPermissionDeniedEvent, BrowserPopupEvent } from '../../shared/browser-guest-events' import type { BrowserCertificateFailure, BrowserCertificateProceedResult, BrowserCookieImportResult, BrowserLoadError, BrowserSessionProfile, BrowserSessionProfileCreateOptions, BrowserSessionProfileScope, BrowserSessionProfileSource, BrowserViewportOverride } from '../../shared/browser-workspace-types' export type BrowserApi = { registerGuest: (args: { browserPageId: string workspaceId: string worktreeId: string sessionProfileId?: string | null webContentsId: number }) => Promise isGuestRegistered: (args: { browserPageId: string; webContentsId: number }) => Promise repairGuestRegistration: (args: { browserPageId: string workspaceId: string worktreeId: string sessionProfileId?: string | null webContentsId: number }) => Promise unregisterGuest: (args: { browserPageId: string }) => Promise openDevTools: (args: { browserPageId: string }) => Promise setViewportOverride: (args: { browserPageId: string override: BrowserViewportOverride | null }) => Promise setAnnotationViewportBridge: (args: BrowserSetAnnotationViewportBridgeArgs) => Promise onGuestLoadFailed: ( callback: (args: { browserPageId: string; loadError: BrowserLoadError }) => void ) => () => void onCertificateFailureChanged: ( callback: (event: { browserPageId: string; failure: BrowserCertificateFailure | null }) => void ) => () => void proceedCertificate: (args: { browserPageId: string challengeId: string }) => Promise onPermissionDenied: (callback: (event: BrowserPermissionDeniedEvent) => void) => () => void onPopup: (callback: (event: BrowserPopupEvent) => void) => () => void onDownloadRequested: (callback: (event: BrowserDownloadRequestedEvent) => void) => () => void onDownloadProgress: (callback: (event: BrowserDownloadProgressEvent) => void) => () => void onDownloadFinished: (callback: (event: BrowserDownloadFinishedEvent) => void) => () => void onContextMenuRequested: ( callback: (event: BrowserContextMenuRequestedEvent) => void ) => () => void onContextMenuDismissed: ( callback: (event: BrowserContextMenuDismissedEvent) => void ) => () => void onNavigationUpdate: ( callback: (event: { browserPageId: string; url: string; title: string }) => void ) => () => void onActivateView: ( callback: (data: { worktreeId?: string; browserPageId?: string }) => void ) => () => void onPaneFocus: ( callback: (data: { worktreeId: string | null; browserPageId: string }) => void ) => () => void onOpenLinkInOrcaTab: ( callback: (event: { browserPageId: string; url: string }) => void ) => () => void cancelDownload: (args: { downloadId: string }) => Promise setGrabMode: (args: BrowserSetGrabModeArgs) => Promise awaitGrabSelection: (args: BrowserAwaitGrabSelectionArgs) => Promise cancelGrab: (args: BrowserCancelGrabArgs) => Promise captureSelectionScreenshot: ( args: BrowserCaptureSelectionScreenshotArgs ) => Promise extractHoverPayload: (args: BrowserExtractHoverArgs) => Promise onGrabModeToggle: (callback: (browserPageId: string) => void) => () => void onGrabActionShortcut: ( callback: (args: { browserPageId: string; key: 'c' | 's' }) => void ) => () => void sessionListProfiles: () => Promise sessionCreateProfile: ( args: { scope: BrowserSessionProfileScope label: string } & BrowserSessionProfileCreateOptions ) => Promise sessionDeleteProfile: (args: { profileId: string }) => Promise sessionImportCookies: (args: { profileId: string }) => Promise sessionResolvePartition: (args: { profileId: string | null }) => Promise sessionDetectBrowsers: () => Promise sessionImportFromBrowser: (args: { profileId: string browserFamily: string browserProfile?: string }) => Promise sessionClearDefaultCookies: () => Promise notifyActiveTabChanged: (args: { browserPageId: string }) => Promise } export type DetectedBrowserProfileInfo = { name: string directory: string } export type DetectedBrowserInfo = { family: BrowserSessionProfileSource['browserFamily'] label: string profiles: DetectedBrowserProfileInfo[] selectedProfile: string }