import { Color } from '@ionic/core';
/** Color variant for the badge/text pill. */
export type PillColor = Color;
/** Font weight for the badge label. */
export type PillWeight = 'normal' | 'medium' | 'bold';
/** Size of the badge pill. */
export type PillSize = 'small' | 'medium' | 'large';
/**
 * A single action button rendered as a small circle icon inside a notification pill.
 */
export interface PillAction {
    /** ionicons icon name */
    icon: string;
    /** Identifier emitted on click */
    token: string;
    /** Accessible label (falls back to token) */
    ariaLabel?: string;
}
/**
 * Notification-pill content. Activates notification mode when provided.
 *
 * Renders as a wide dark pill: icon ﹒ time · title ﹒ [action buttons].
 */
export interface PillNotification {
    /** ionicons icon name shown on the left */
    icon?: string;
    /** Icon color (Ionic color name or CSS). Default: 'warning' */
    iconColor?: string;
    /** Short time/age label (e.g. '2h', 'now', '3min ago') */
    time?: string;
    /** Notification title */
    title: string;
    /** Optional secondary body text */
    body?: string;
    /** Circle icon buttons on the right (dismiss, snooze, etc.) */
    actions?: PillAction[];
}
/**
 * Configuration for `val-pill`.
 *
 * Two modes — whichever field is present takes precedence:
 *
 * 1. **Notification mode** — provide `notification`. Renders a wide dark pill
 *    with icon + time + title + circle action buttons.
 *
 * 2. **Badge mode** — provide `label`. Renders a compact coloured badge.
 *
 * @example Badge
 * ```html
 * <val-pill [props]="{ label: 'v1.2.0', color: 'dark', weight: 'bold' }" />
 * ```
 *
 * @example Notification
 * ```html
 * <val-pill
 *   [props]="{
 *     notification: {
 *       icon: 'alarm-outline',
 *       iconColor: 'warning',
 *       time: '2h',
 *       title: 'Reunión en 15 min',
 *       actions: [
 *         { icon: 'moon-outline', token: 'snooze' },
 *         { icon: 'close-outline', token: 'dismiss' }
 *       ]
 *     }
 *   }"
 *   (pillAction)="onAction($event)"
 * />
 * ```
 */
export type PillMetadata = {
    token?: string;
    /** Presence activates notification mode */
    notification?: PillNotification;
    /** Presence activates badge mode (overrides notification mode) */
    label?: string;
    /** Badge color variant. Default: 'medium' */
    color?: PillColor;
    /** Font weight. Default: 'medium' */
    weight?: PillWeight;
    /** Badge size. Default: 'small' */
    size?: PillSize;
    /** Optional leading ionicons icon */
    icon?: string;
    /** Makes the badge interactive: pointer cursor + emits pillClick */
    clickable?: boolean;
    /** Solid fill instead of the default soft/tinted fill */
    solid?: boolean;
    /** Accessible label override. Falls back to `label` */
    ariaLabel?: string;
};
/** Emitted by a clickable badge pill. */
export interface PillClickEvent {
    token?: string;
    label?: string;
}
/** Emitted when a notification-pill action button is pressed. */
export interface PillActionEvent {
    /** Token of the action button pressed */
    actionToken: string;
    /** Pill token if set */
    pillToken?: string;
}
