import { DeepPartial } from "ts-essentials";
import { StoreApi } from "zustand";
import { Immutable, SettingsTreeField, SettingsTreeNode } from "@foxglove/studio";
import { AppBarMenuItem } from "@foxglove/studio-base/components/AppBar/types";
import { LayoutData } from "@foxglove/studio-base/context/CurrentLayoutContext";
import { PanelInfo } from "@foxglove/studio-base/context/PanelCatalogContext";
import { WorkspaceContextStore } from "@foxglove/studio-base/context/Workspace/WorkspaceContext";
import type { SceneExtensionConfig } from "@foxglove/studio-base/panels/ThreeDeeRender/SceneExtensionConfig";
import type { Player } from "@foxglove/studio-base/players/types";
interface IAppContext {
    appBarLayoutButton?: JSX.Element;
    appBarMenuItems?: readonly AppBarMenuItem[];
    createEvent?: (args: {
        deviceId: string;
        timestamp: string;
        durationNanos: string;
        metadata: Record<string, string>;
    }) => Promise<void>;
    injectedFeatures?: InjectedFeatures;
    importLayoutFile?: (fileName: string, data: LayoutData) => Promise<void>;
    layoutEmptyState?: JSX.Element;
    syncAdapters?: readonly JSX.Element[];
    workspaceExtensions?: readonly JSX.Element[];
    extensionSettings?: JSX.Element;
    renderSettingsStatusButton?: (nodeOrField: Immutable<SettingsTreeNode | SettingsTreeField>) => JSX.Element | undefined;
    workspaceStoreCreator?: (initialState?: Partial<WorkspaceContextStore>) => StoreApi<WorkspaceContextStore>;
    PerformanceSidebarComponent?: React.ComponentType;
    extraPanels?: PanelInfo[];
    wrapPlayer: (child: Player) => Player;
}
export declare const INJECTED_FEATURE_KEYS: {
    readonly customSceneExtensions: "ThreeDeeRender.customSceneExtensions";
};
export type InjectedFeatureMap = {
    [INJECTED_FEATURE_KEYS.customSceneExtensions]?: {
        customSceneExtensions: DeepPartial<SceneExtensionConfig>;
    };
};
export type InjectedFeatures = {
    availableFeatures: InjectedFeatureMap;
};
declare const AppContext: import("react").Context<IAppContext>;
export declare function useAppContext(): IAppContext;
export { AppContext };
export type { IAppContext };
//# sourceMappingURL=AppContext.d.ts.map