dumber.d.ts RawHistoryFolder
1/**
2 * Global type declarations for Dumber browser WebKit bridge
3 */
4
5// ═══════════════════════════════════════════════════════════════════════════════
6// WEBKIT BRIDGE TYPES
7// ═══════════════════════════════════════════════════════════════════════════════
8
9interface DumberBridge {
10 postMessage: (message: unknown) => void;
11}
12
13interface DumberWebKit {
14 messageHandlers?: {
15 dumber?: DumberBridge;
16 };
17}
18
19// ═══════════════════════════════════════════════════════════════════════════════
20// VIEW TRANSITION API (not yet in TypeScript DOM lib)
21// ═══════════════════════════════════════════════════════════════════════════════
22
23interface ViewTransition {
24 finished: Promise<void>;
25 ready: Promise<void>;
26 updateCallbackDone: Promise<void>;
27}
28
29// ═══════════════════════════════════════════════════════════════════════════════
30// THEME TYPES
31// ═══════════════════════════════════════════════════════════════════════════════
32
33type ThemeMode = 'light' | 'dark';
34
35interface ColorSchemeManager {
36 setUserPreference?: (theme: ThemeMode) => void;
37}
38
39// ═══════════════════════════════════════════════════════════════════════════════
40// HOMEPAGE MESSAGING TYPES
41// ═══════════════════════════════════════════════════════════════════════════════
42
43/** Response from Go backend for homepage requests */
44interface HomepageResponse {
45 requestId: string;
46 success: boolean;
47 data?: unknown;
48 error?: string;
49}
50
51/** Error response format (can be string for legacy or object) */
52type HomepageErrorResponse = string | { requestId?: string; error?: string };
53
54/** Callback type for homepage responses */
55type HomepageResponseCallback = (response: HomepageResponse) => void;
56
57/** Callback type for legacy data responses (can receive raw data or Response object) */
58type HomepageLegacyCallback = (dataOrResponse: unknown) => void;
59
60/** Callback type for error responses */
61type HomepageErrorCallback = (errorOrResponse: HomepageErrorResponse) => void;
62
63// ═══════════════════════════════════════════════════════════════════════════════
64// GLOBAL DECLARATIONS
65// ═══════════════════════════════════════════════════════════════════════════════
66
67declare global {
68 // Re-export bridge type for use in other modules
69 type DumberBridge = {
70 postMessage: (message: unknown) => void;
71 };
72 interface Window {
73 // ─────────────────────────────────────────────────────────────────────────
74 // Core WebKit Bridge
75 // ─────────────────────────────────────────────────────────────────────────
76 /** WebView ID assigned by the browser backend */
77 __dumber_webview_id?: number;
78 /** WebKit message handlers for native bridge */
79 webkit?: DumberWebKit;
80
81 // ─────────────────────────────────────────────────────────────────────────
82 // Config Page Callbacks
83 // ─────────────────────────────────────────────────────────────────────────
84 /** Callback invoked when config save succeeds */
85 __dumber_config_saved?: (resp?: unknown) => void;
86 /** Callback invoked when config save fails */
87 __dumber_config_error?: (msg: unknown) => void;
88
89 // ─────────────────────────────────────────────────────────────────────────
90 // Keybindings Callbacks
91 // ─────────────────────────────────────────────────────────────────────────
92 /** Callback invoked when keybindings are loaded */
93 __dumber_keybindings_loaded?: (resp?: unknown) => void;
94 /** Callback invoked when keybindings load fails */
95 __dumber_keybindings_error?: (msg: unknown) => void;
96 /** Callback invoked when a keybinding is set */
97 __dumber_keybinding_set?: (resp?: unknown) => void;
98 /** Callback invoked when keybinding set fails */
99 __dumber_keybinding_set_error?: (msg: unknown) => void;
100 /** Callback invoked when a keybinding is reset */
101 __dumber_keybinding_reset?: (resp?: unknown) => void;
102 /** Callback invoked when keybinding reset fails */
103 __dumber_keybinding_reset_error?: (msg: unknown) => void;
104 /** Callback invoked when all keybindings are reset */
105 __dumber_keybindings_reset_all?: (resp?: unknown) => void;
106 /** Callback invoked when reset all keybindings fails */
107 __dumber_keybindings_reset_all_error?: (msg: unknown) => void;
108
109 // ─────────────────────────────────────────────────────────────────────────
110 // Homepage Callbacks
111 // ─────────────────────────────────────────────────────────────────────────
112 /** Generic response handler for homepage requests */
113 __dumber_homepage_response?: HomepageResponseCallback;
114 /** History timeline data callback */
115 __dumber_history_timeline?: HomepageLegacyCallback;
116 /** Folders data callback */
117 __dumber_folders?: HomepageLegacyCallback;
118 /** Tags data callback */
119 __dumber_tags?: HomepageLegacyCallback;
120 /** Favorites data callback */
121 __dumber_favorites?: HomepageLegacyCallback;
122 /** Analytics data callback */
123 __dumber_analytics?: HomepageLegacyCallback;
124 /** Domain stats data callback */
125 __dumber_domain_stats?: HomepageLegacyCallback;
126 /** History search results callback */
127 __dumber_history_search_results?: HomepageLegacyCallback;
128 /** History deleted callback */
129 __dumber_history_deleted?: HomepageLegacyCallback;
130 /** History cleared callback */
131 __dumber_history_cleared?: HomepageLegacyCallback;
132 /** Error callback for homepage requests */
133 __dumber_error?: HomepageErrorCallback;
134
135 // ─────────────────────────────────────────────────────────────────────────
136 // Theme Management
137 // ─────────────────────────────────────────────────────────────────────────
138 /** Color scheme manager for theme switching */
139 __dumber_color_scheme_manager?: ColorSchemeManager;
140 /** Legacy theme setter */
141 __dumber_setTheme?: (theme: ThemeMode) => void;
142 }
143
144 interface Document {
145 /** View Transition API */
146 startViewTransition?: (callback: () => void | Promise<void>) => ViewTransition;
147 }
148}
149
150export {};