import type { ReactNode } from 'react'; import type { ExtensionAttributes, ExtensionDescriptor } from '@atlassian/clientside-extensions-registry'; // We only import types here // eslint-disable-next-line node/no-unpublished-import import type { Validator } from '@atlassian/clientside-extensions-schema'; export type ExtensionState = [ExtensionDescriptor[], ExtensionDescriptor[], boolean]; export type ExtensionPointCallback = (supportedDescriptors: T[], unsupportedDescriptors: T[], loading: boolean) => ReactNode; export type ExtensionPointState = { descriptors: ExtensionDescriptor[]; loadingState: boolean; }; export type ExtensionPointUpdate = { state: ExtensionPointState; update: ExtensionDescriptor[]; }; export interface Options { attributeValidator: Validator; contextValidator?: Validator; } export function isNotNullOrUndefined(input: null | undefined | T): input is T { return input !== undefined && input != null; }