import { type ReactNode, type SyntheticEvent, JSX } from 'react'; import type { NormalizedCacheObject } from '@apollo/client'; import { ApolloClient } from '@apollo/client'; import type { TFlags } from '@flopflip/types'; import type { Dispatch } from 'redux'; import type { TApplicationContext } from "../../../../application-shell-connectors/dist/commercetools-frontend-application-shell-connectors.cjs.js"; import type { TAsyncLocaleDataProps } from '@commercetools-frontend/i18n'; type TApplicationShellProps = { apolloClient?: ApolloClient; /** * NOTE: the environment value passed here is usually `window.app`. * This object usually contains values as string and will be "transformed" * to a real object with proper scalar values in the ApplicationShell. * To keep the types simple, we assign here the already coerced type object. * This should be fine, as consumers of the application can use the * `ApplicationWindow` type from the `@commercetools-frontend/constants` package * to type cast it: * * ```tsx * import { ApplicationWindow } from '@commercetools-frontend/constants'; * * declare let window: ApplicationWindow; * * * ``` */ environment: TApplicationContext<{}>['environment']; featureFlags?: TFlags; defaultFeatureFlags?: TFlags; applicationMessages: TAsyncLocaleDataProps['applicationMessages']; onRegisterErrorListeners?: (args: { dispatch: Dispatch; }) => void; onMenuItemClick?: (event: SyntheticEvent) => void; disableRoutePermissionCheck?: boolean; enableReactStrictMode?: boolean; render?: () => JSX.Element; children?: ReactNode; }; declare const ApplicationShell: { (props: TApplicationShellProps): import("@emotion/react/jsx-runtime").JSX.Element; displayName: string; version: string; }; export default ApplicationShell;