/* eslint-disable @typescript-eslint/no-explicit-any */
export interface IOConnectNotificationClickHandler {
    handler: (event: Event, isPlatformOpened: boolean) => Promise<void>;
    action: string;
}

export interface WebWorkerConfig {
    platform?: {
        url?: string;
        openIfMissing?: boolean;
    };
    notifications?: {
        defaultClick?: (event: Event, isPlatformOpened: boolean) => Promise<void>;
        actionClicks?: IOConnectNotificationClickHandler[];
    };
}

export type IOConnectWebWorkerFactoryFunction = (config?: WebWorkerConfig) => void;
export type OpenCorePlatform = (url: string) => Promise<void>;
export type RaiseIONotification = (settings: any) => Promise<void>;

declare const IOWorkerFactory: IOConnectWebWorkerFactoryFunction;

export const openBrowserPlatform: OpenCorePlatform;
export const raiseIONotification: RaiseIONotification;

export default IOWorkerFactory;