import { C3NavigationElementProps } from "../c3-navigation.types";
import { Notification } from "../../../api/notifications";
import React from "react";
export type C3NavigationSideBarBaseProps = {
    ariaLabel?: string;
    isOpen?: boolean;
    onOpen?: () => void;
    closeOnClick?: boolean;
    elementClicked?: (key: string) => void;
    elements?: C3NavigationElementProps[];
    bottomElements?: C3NavigationElementProps[];
};
export type CamundaOrg = {
    activeLabel: string;
    otherLabel: string;
    orgName: string;
    action: {
        label: string;
        onClick: () => void;
    };
};
export type C3NavigationOrgSideBarProps = C3NavigationSideBarBaseProps & {
    type: "org";
    customElements?: {
        activeOrganization?: CamundaOrg;
    };
    switchToOrg?: (orgId: string) => void;
    manageOrg?: (orgId: string) => void;
};
export type C3NavigationInfoSideBarProps = C3NavigationSideBarBaseProps & {
    type: "info";
    version?: string;
};
export type C3NavigationUserSideBarProps = C3NavigationSideBarBaseProps & {
    type: "user";
    version?: string;
    customElements?: {
        customSection?: React.JSX.Element;
        profile?: {
            label: string;
            user: {
                name: string;
                email: string;
            };
        };
        themeSelector?: {
            currentTheme: string;
            onChange: (newValue: string) => void;
        };
        stageToggle?: {
            prodFeaturesEnabled: boolean;
            toggle: () => void;
        };
    };
};
export type C3NavigationNotificationsSideBarProps = C3NavigationSideBarBaseProps & {
    type: "notifications";
    onLinkClick?: (meta: Notification["meta"]) => void;
};
type AppTeaserRouteProps = any;
export type C3NavigationAppBarProps = C3NavigationSideBarBaseProps & {
    type: "app";
    appTeaserRouteProps?: {
        operate?: AppTeaserRouteProps;
        tasklist?: AppTeaserRouteProps;
        optimize?: AppTeaserRouteProps;
        identity?: AppTeaserRouteProps;
    };
};
export type C3NavigationSideBarProps = {
    callbacks?: {
        beforeOpening?: () => void;
        afterClosing?: () => void;
    };
} & (C3NavigationOrgSideBarProps | C3NavigationInfoSideBarProps | C3NavigationUserSideBarProps | C3NavigationNotificationsSideBarProps);
export {};
