import { AxiosOperation, ModuleDictionary, NetworkProps } from '@m4l/core';
import { BaseModuleProps } from '../BaseModule';
import { DeviceType } from '@m4l/graphics';
import { MFIsolationAppSlots } from './slots/MFIsolationAppEnum';
import { MF_ISOLATION_APP_KEY } from './constants';
import { Theme } from '@mui/material/styles';
import { M4LOverridesStyleRules } from '../../@types/augmentations';
import { MFHostRuntime } from '../MFLoader/types';
import { MFIsolationRuntimeErrorEvent, MFIsolationRuntimeErrorHandler } from './runtimeErrors';
/**
 * Context available when one isolation shell must resolve its host runtime
 * after auth/environment initialization.
 */
export interface MFIsolationHostRuntimeResolutionContext {
    database: string;
    hostApiIcons: string;
    hostApiLocal: string;
    hostApiRemote: string;
    networkOperation: <T = unknown>(props: NetworkProps) => Promise<T>;
    sessionId?: string;
}
/**
 * Optional shell-owned runtime resolver executed inside the isolation shell
 * after auth/environment context becomes readable.
 */
export type ResolveMFIsolationHostRuntime = (context: MFIsolationHostRuntimeResolutionContext) => MFHostRuntime | undefined;
export type { MFIsolationRuntimeErrorEvent, MFIsolationRuntimeErrorHandler, };
export type MFIsolationAppProps = BaseModuleProps & {
    user: string;
    pwd: string;
    hostApiLocal?: string;
    /** @deprecated use `hostApiLocal` */
    host_api_local?: string;
    hostApiIcons?: string;
    /** @deprecated use `hostApiIcons` */
    host_api_icons?: string;
    database?: string;
    hostApiRemote?: string;
    /** @deprecated use `hostApiRemote` */
    host_api_remote?: string;
    host_static_assets: string;
    environment_assets: string;
    /***
     *  Google Maps API key. It is required if any of the components used in the app requires Google Maps.
     */
    googleMapsApiKey?: string;
    onLoad: () => void;
    activeAreasNetwork?: boolean;
    activeCookiesFromNetwork?: boolean;
    appBarSettings?: boolean;
    /**
     * Component dictionary. It can be provided already loaded to avoid calling the endpoint again.
     */
    moduleDictionaryLoaded?: ModuleDictionary;
    /**
     * Forced device type. If not provided it is resolved automatically.
     * This property is normally used for Storybook testing.
     */
    forcedDeviceType?: DeviceType;
    /**
     * Areas store ID.
     */
    areasStoreId?: string;
    /**
     * Determines whether devtools should be enabled for the areas store.
     */
    areasStoreDevtoolsEnabled?: boolean;
    /**
     * Optional network operation override.
     * Useful for Storybook stories that must avoid real network requests in CI.
     */
    axiosOperation?: AxiosOperation;
    /**
     * Optional shell-level host runtime shared by all Areas windows in this isolation app.
     */
    hostRuntime?: MFHostRuntime;
    /**
     * Optional shell-level runtime resolver executed inside the authenticated
     * isolation shell so the runtime can depend on values such as `sessionId`.
     */
    resolveHostRuntime?: ResolveMFIsolationHostRuntime;
};
export type MFIsolationAppSlotsType = keyof typeof MFIsolationAppSlots;
export type MFIsolationAppOwnerState = {};
export type MFIsolationAppStyles = M4LOverridesStyleRules<MFIsolationAppSlotsType, typeof MF_ISOLATION_APP_KEY, Theme>;
//# sourceMappingURL=types.d.ts.map