export type SpotlightContext = { open: (path: string | undefined) => void; close: () => void;}; export type Integration<T = any> = { /** * Name of the integration */ name: string; /** * The content-type http headers determining which events dispatched to spotlight * events should be forwarded to this integration. * * For example: ["application/x-sentry-envelope"] */ forwardedContentType?: string[]; /** * A function returning an array of tabs to be displayed in the UI. * * @param context contains the processed events for the tabs. Use this information to * e.g. update the notification count badge of the tab. */ tabs?: TabsCreationFunction<T>; /** * Setup hook called when Spotlight is initialized. * * Use this hook to setup any global state, instrument handlers, etc. */ setup?: (context: SpotlightContext) => void | Promise<void>; /** * Hook called whenever spotlight forwards a new raw event to this integration. * * Use this hook to process and convert the raw request payload (string) to a * data structure that your integration works with in the UI. * * If you want to disregard the sent event, simply return `undefined`. * * The returned object will be passed to your tabs function. */ processEvent?: (eventContext: RawEventContext) => ProcessedEventContainer<T> | undefined; /** * To reset the integration. * * @returns void */ reset?: () => void;};