@@ -17,4 +17,80 @@ declare const __IS_CHROME__: boolean;
1717declare const __IS_EDGE__: boolean ;
1818declare const __IS_NATIVE__: boolean ;
1919
20- declare const chrome: any ;
20+ interface ExtensionDevtools {
21+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools/inspectedWindow } */
22+ inspectedWindow: $FlowFixMe ;
23+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools/network } */
24+ network: $FlowFixMe ;
25+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools/panels } */
26+ panels: $FlowFixMe ;
27+ }
28+
29+ interface ExtensionEvent < Listener : Function > {
30+ addListener ( callback : Listener ) : void ;
31+ removeListener ( callback : Listener ) : void ;
32+ }
33+
34+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port } */
35+ interface ExtensionRuntimePort {
36+ onMessage : ExtensionEvent < ( message : any , port : ExtensionRuntimePort ) => void > ;
37+ onDisconnect : ExtensionEvent < ( port : ExtensionRuntimePort ) => void > ;
38+ postMessage ( message : mixed , transferable ?: Array < mixed > ) : void ;
39+ disconnect ( ) : void ;
40+ }
41+
42+ interface ExtensionMessageSender {
43+ id ?: string ;
44+ url ?: string ;
45+ tab ?: {
46+ id : number ,
47+ url : string ,
48+ } ;
49+ }
50+
51+ interface ExtensionRuntime {
52+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/connect } */
53+ connect ( connectInfo ?: {
54+ name ?: string ,
55+ includeTlsChannelId ?: boolean ,
56+ } ) : ExtensionRuntimePort ;
57+ connect (
58+ extensionId : string ,
59+ connectInfo ?: { name ?: string , includeTlsChannelId ?: boolean } ,
60+ ) : ExtensionRuntimePort ;
61+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage } */
62+ onMessage : ExtensionEvent <
63+ (
64+ message : any ,
65+ sender : ExtensionMessageSender ,
66+ sendResponse : ( response : any ) => void ,
67+ ) => any ,
68+ > ;
69+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onConnect } */
70+ onConnect : ExtensionEvent < ( port : ExtensionRuntimePort ) => void > ;
71+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage } */
72+ sendMessage (
73+ message : any ,
74+ options ?: { includeTlsChannelId ?: boolean } ,
75+ ) : Promise < any > ;
76+ sendMessage (
77+ extensionId : string ,
78+ message : any ,
79+ // We're making this required so that we don't accidentally call the wrong overload.
80+ options : { includeTlsChannelId ?: boolean } ,
81+ ) : Promise < any > ;
82+ }
83+
84+ interface ExtensionAPI {
85+ devtools : ExtensionDevtools ;
86+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/permissions } */
87+ permissions : $FlowFixMe ;
88+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime } */
89+ runtime : ExtensionRuntime ;
90+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting } */
91+ scripting : $FlowFixMe ;
92+ /** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage } */
93+ storage : $FlowFixMe ;
94+ }
95+
96+ declare const chrome : ExtensionAPI ;
0 commit comments