import type { Api, CoreSessionData } from '@seleniumhq/side-api' import { BrowserWindowConstructorOptions } from 'electron' import { Session } from 'main/types' import ApiMutators from './api/mutator' import Recorder from './windows/PlaybackWindow/preload/recorder' declare global { interface Window { __originalPrompt: typeof window['prompt'] __originalConfirmation: typeof window['confirm'] __originalAlert: typeof window['alert'] sideAPI: Api & { mutators: typeof ApiMutators } & { resolveAPI?: (id: string, ...args: any[]) => void } } } export type CurriedApiField = ( ...args: Config ) => (name: string, context: Session | Window) => Shape export interface WindowConfig { window: () => BrowserWindowConstructorOptions } export interface BrowserState extends CoreSessionData {} export type EventFunction = ( message: MessageEvent & Record, _sender: Window, sendResponse: (str: string) => void ) => void export type EventHandler = EventListener & Partial<{ handlerName: string }> export type ExpandedMessageEvent = EVENT & { attachRecorder: boolean detachRecorder: boolean recalculateFrameLocation: boolean } export type ExpandedMessageHandler = ( this: Recorder, message: ExpandedMessageEvent, _sender: Window, sendResponse: (success: boolean | void) => boolean | void, options?: boolean ) => void export type ExpandedMutationObserver = MutationObserver & { config: any observerName: string }