import * as _angular_core from '@angular/core';
import { NavigationExtras, ActivatedRoute } from '@angular/router';
import { MenuItem } from '@siemens/element-ng/menu';
import { TranslatableString } from '@siemens/element-translate-ng/translate';

/**
 * Interface for a router link in a notification item.
 * @param type - The type of the link, always 'router-link'.
 * @param routerLink - The router link to navigate to.
 * @param extras - Optional navigation extras for the router.
 */
interface NotificationItemRouterLink {
    type: 'router-link';
    routerLink: string | any[];
    extras?: NavigationExtras;
}
/**
 * Interface for a standard link in a notification item.
 * @param type - The type of the link, always 'link'.
 * @param href - The URL to navigate to.
 * @param target - Optional target attribute for the link.
 */
interface NotificationItemLink {
    type: 'link';
    href: string;
    target?: string;
}
/**
 * Base interface for notification item actions.
 * @param ariaLabel - The ARIA label for accessibility.
 * @param icon - The icon to display for the action.
 */
interface NotificationItemBase {
    ariaLabel: TranslatableString;
    icon: string;
}
/**
 * Interface for an action circle button in a notification item.
 * @param type - The type of the action, always 'action-circle-button'.
 * @param customClass - Optional custom CSS class for styling.
 * @param action - The action to perform when the button is clicked.
 * @deprecated Use NotificationItemActionIconButton instead. This will be removed in a future release.
 */
interface NotificationItemActionCircleButton extends NotificationItemBase {
    type: 'action-circle-button';
    customClass?: string;
    action: (source: this) => void;
}
/**
 * Interface for an action icon button in a notification item.
 * @param type - The type of the action, always 'action-icon-button'.
 * @param customClass - Optional custom CSS class for styling.
 * @param action - The action to perform when the button is clicked.
 */
interface NotificationItemActionIconButton extends NotificationItemBase {
    type: 'action-icon-button';
    customClass?: string;
    action: (source: this) => void;
}
/**
 * Interface for a router link with an icon in a notification item.
 * @param type - The type of the link, always 'router-link'.
 * @param routerLink - The router link to navigate to.
 * @param extras - Optional navigation extras for the router.
 */
interface NotificationItemRouterLinkIcon extends NotificationItemBase {
    type: 'router-link';
    routerLink: string | any[];
    extras?: NavigationExtras;
}
/**
 * Interface for a standard link with an icon in a notification item.
 * @param type - The type of the link, always 'link'.
 * @param href - The URL to navigate to.
 * @param target - Optional target attribute for the link.
 */
interface NotificationItemLinkIcon extends NotificationItemBase {
    type: 'link';
    href: string;
    target?: string;
}
/**
 * Interface for an action button in a notification item.
 * @param type - The type of the action, always 'action-button'.
 * @param label - The label to display on the button.
 * @param action - The action to perform when the button is clicked.
 */
interface NotificationItemActionButton {
    type: 'action-button';
    label: TranslatableString;
    action: (source: this) => void;
}
/**
 * Interface for a menu in a notification item.
 * @param type - The type of the action, always 'menu'.
 * @param menuItems - The menu items to display in the menu.
 */
interface NotificationItemMenu {
    type: 'menu';
    menuItems: MenuItem[];
}
/**
 * Union type for quick actions in a notification item.
 */
type NotificationItemQuickAction = NotificationItemActionCircleButton | NotificationItemActionIconButton | NotificationItemLinkIcon | NotificationItemRouterLinkIcon;
/**
 * Union type for primary actions in a notification item.
 */
type NotificationItemPrimaryAction = NotificationItemActionCircleButton | NotificationItemActionIconButton | NotificationItemLinkIcon | NotificationItemRouterLinkIcon | NotificationItemMenu | NotificationItemActionButton;
/**
 * This component represents a single notification that can be used within notification
 * centers, popovers, or other containers. It supports various action types including
 * router links, standard links, action buttons, and menus.
 */
declare class SiNotificationItemComponent {
    protected readonly icons: Record<"elementOptionsVertical", string>;
    /**
     * The timestamp of the notification item.
     */
    readonly timeStamp: _angular_core.InputSignal<TranslatableString>;
    /**
     * The heading of the notification item.
     */
    readonly heading: _angular_core.InputSignal<TranslatableString>;
    /**
     * Optional translatable description.
     */
    readonly description: _angular_core.InputSignal<TranslatableString | undefined>;
    /**
     * Unread messages are emphasized with a bolder font.
     *
     * @defaultValue false
     */
    readonly unread: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Link to the source or relevant information of the notification,
     * which triggers when clicking on the notification item text area.
     */
    readonly itemLink: _angular_core.InputSignal<NotificationItemRouterLink | NotificationItemLink | undefined>;
    /**
     * Actions that are displayed below the text of the notification.
     */
    readonly quickActions: _angular_core.InputSignal<NotificationItemQuickAction[] | undefined>;
    /**
     * Action that is displayed on the right side of the notification.
     */
    readonly primaryAction: _angular_core.InputSignal<NotificationItemPrimaryAction | undefined>;
    protected readonly activatedRoute: ActivatedRoute | null;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiNotificationItemComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiNotificationItemComponent, "si-notification-item", never, { "timeStamp": { "alias": "timeStamp"; "required": true; "isSignal": true; }; "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "unread": { "alias": "unread"; "required": false; "isSignal": true; }; "itemLink": { "alias": "itemLink"; "required": false; "isSignal": true; }; "quickActions": { "alias": "quickActions"; "required": false; "isSignal": true; }; "primaryAction": { "alias": "primaryAction"; "required": false; "isSignal": true; }; }, {}, never, ["si-avatar,si-circle-status,si-icon,si-status-icon", "[action]", "[quick-actions]", "[description]"], true, never>;
}

export { SiNotificationItemComponent };
export type { NotificationItemActionButton, NotificationItemActionCircleButton, NotificationItemActionIconButton, NotificationItemBase, NotificationItemLink, NotificationItemLinkIcon, NotificationItemMenu, NotificationItemPrimaryAction, NotificationItemQuickAction, NotificationItemRouterLink, NotificationItemRouterLinkIcon };
