export interface SkipNavigationEntry { id: string; label: string; ariaLabel?: string; anchor?: string | HTMLElement; hotkeyLabel?: string; hotkey?: number; focusOptions?: FocusOptions; onClick?: () => void; } export interface SkipNavigationSectionData { id: string; label?: string; entries?: SkipNavigationEntry[]; } export interface PreparedSkipNavigationSectionData { id: string; entries: readonly SkipNavigationEntry[]; label?: string; } export interface IPrimitiveEventEmitter { subscribe: (listener: () => void) => void; unsubscribe: (listener: () => void) => void; } export interface ISkipNavigationSectionModel extends IPrimitiveEventEmitter { id: string; label?: string; getEntries: () => readonly SkipNavigationEntry[]; addEntries: (entries: SkipNavigationEntry[]) => void; addEntry: (entry: SkipNavigationEntry) => void; removeEntry: (id: string) => void; reset: () => void; } export interface ISkipNavigationModel extends IPrimitiveEventEmitter { getData: () => readonly PreparedSkipNavigationSectionData[]; addSection: (sectionData: SkipNavigationSectionData) => void; removeSection: (sectionId: string) => void; addEntries: (entries: SkipNavigationEntry[], sectionId?: string) => void; addEntry: (entry: SkipNavigationEntry, sectionId?: string) => void; removeEntry: (entryId: string, sectionId?: string) => void; reset: () => void; }