/** Cross-component custom event constants and typed detail interfaces. */

export const SENCHO_OPEN_LOGS_EVENT = 'sencho-open-logs';

export interface SenchoOpenLogsDetail {
  containerId: string;
  containerName: string;
}

export const SENCHO_SETTINGS_CHANGED = 'sencho-settings-changed';

export interface SenchoSettingsChangedDetail {
  changedKeys: string[];
}

export const SENCHO_LABELS_CHANGED = 'sencho-labels-changed';

/** Open a stack on a given node from elsewhere in the app (e.g. a Resources network card). */
export const SENCHO_OPEN_STACK_EVENT = 'sencho-open-stack';

export interface SenchoOpenStackDetail {
  nodeId: number;
  stackName: string;
  destination?: 'stack' | 'editor' | 'anatomy-networking' | 'doctor' | 'dossier' | 'drift';
}

/** Tabs of the top-level Security view. Used by the nav state and by
 *  cross-component navigate events that deep-link into a specific tab. */
export type SecurityTab =
  | 'overview'
  | 'images'
  | 'compose'
  | 'secrets'
  | 'policies'
  | 'suppressions'
  | 'history'
  | 'scanner';

/** Fleet view sub-tabs, used for deep-link navigation (e.g. the stack storage
 *  warning linking to Snapshots). Mirrors the TabsTrigger values in FleetView. */
export type FleetTab =
  | 'overview'
  | 'snapshots'
  | 'configuration'
  | 'dependencies'
  | 'container-labels'
  | 'deployments'
  | 'routing'
  | 'federation'
  | 'actions'
  | 'secrets';
