/**
 * Action button configuration for the action bar
 */
export interface IActionBarAction {
  /** Unique identifier for the action */
  id: string;
  /** Button label text */
  label: string;
  /** Primary action gets highlighted styling and receives timeout trigger */
  primary?: boolean;
  /** Lucide icon name (optional) */
  icon?: string;
}

/**
 * Configuration options for showing an action bar
 */
export interface IActionBarOptions {
  /** Message text to display */
  message: string;
  /** Lucide icon name for the message (optional) */
  icon?: string;
  /** Visual type affects coloring */
  type?: 'info' | 'warning' | 'error' | 'question';
  /** Action buttons to display */
  actions: IActionBarAction[];
  /** Timeout configuration (optional) */
  timeout?: {
    /** Duration in milliseconds before auto-triggering default action */
    duration: number;
    /** ID of the action to auto-trigger when timeout expires */
    defaultActionId: string;
  };
  /** Whether to show a dismiss (X) button */
  dismissible?: boolean;
}

/**
 * Result returned when an action bar is resolved
 */
export interface IActionBarResult {
  /** ID of the action that was triggered */
  actionId: string;
  /** Whether the action was triggered by timeout (true) or user click (false) */
  timedOut: boolean;
}

/**
 * Internal queue item for pending action bars
 */
export interface IActionBarQueueItem {
  options: IActionBarOptions;
  resolve: (result: IActionBarResult) => void;
}
