2 * Type declarations for WebExtensions framework code.
5 // This has every possible property we import from all modules, which is not
6 // great, but should be manageable and easy to generate for each component.
7 // ESLint warns if we use one which is not actually defined, so still safe.
9 BroadcastConduit: typeof import("ConduitsParent.sys.mjs").BroadcastConduit,
10 Extension: typeof import("Extension.sys.mjs").Extension,
11 ExtensionActivityLog: typeof import("ExtensionActivityLog.sys.mjs").ExtensionActivityLog,
12 ExtensionChild: typeof import("ExtensionChild.sys.mjs").ExtensionChild,
13 ExtensionCommon: typeof import("ExtensionCommon.sys.mjs").ExtensionCommon,
14 ExtensionContent: typeof import("ExtensionContent.sys.mjs").ExtensionContent,
15 ExtensionDNR: typeof import("ExtensionDNR.sys.mjs").ExtensionDNR,
16 ExtensionDNRLimits: typeof import("ExtensionDNRLimits.sys.mjs").ExtensionDNRLimits,
17 ExtensionDNRStore: typeof import("ExtensionDNRStore.sys.mjs").ExtensionDNRStore,
18 ExtensionData: typeof import("Extension.sys.mjs").ExtensionData,
19 ExtensionPageChild: typeof import("ExtensionPageChild.sys.mjs").ExtensionPageChild,
20 ExtensionParent: typeof import("ExtensionParent.sys.mjs").ExtensionParent,
21 ExtensionPermissions: typeof import("ExtensionPermissions.sys.mjs").ExtensionPermissions,
22 ExtensionStorage: typeof import("ExtensionStorage.sys.mjs").ExtensionStorage,
23 ExtensionStorageIDB: typeof import("ExtensionStorageIDB.sys.mjs").ExtensionStorageIDB,
24 ExtensionTelemetry: typeof import("ExtensionTelemetry.sys.mjs").ExtensionTelemetry,
25 ExtensionTestCommon: typeof import("resource://testing-common/ExtensionTestCommon.sys.mjs").ExtensionTestCommon,
26 ExtensionUtils: typeof import("ExtensionUtils.sys.mjs").ExtensionUtils,
27 ExtensionWorkerChild: typeof import("ExtensionWorkerChild.sys.mjs").ExtensionWorkerChild,
28 GeckoViewConnection: typeof import("resource://gre/modules/GeckoViewWebExtension.sys.mjs").GeckoViewConnection,
29 JSONFile: typeof import("resource://gre/modules/JSONFile.sys.mjs").JSONFile,
30 Management: typeof import("Extension.sys.mjs").Management,
31 MessageManagerProxy: typeof import("MessageManagerProxy.sys.mjs").MessageManagerProxy,
32 NativeApp: typeof import("NativeMessaging.sys.mjs").NativeApp,
33 NativeManifests: typeof import("NativeManifests.sys.mjs").NativeManifests,
34 PERMISSION_L10N: typeof import("ExtensionPermissionMessages.sys.mjs").PERMISSION_L10N,
35 QuarantinedDomains: typeof import("ExtensionPermissions.sys.mjs").QuarantinedDomains,
36 SchemaRoot: typeof import("Schemas.sys.mjs").SchemaRoot,
37 Schemas: typeof import("Schemas.sys.mjs").Schemas,
38 WebNavigationFrames: typeof import("WebNavigationFrames.sys.mjs").WebNavigationFrames,
39 WebRequest: typeof import("webrequest/WebRequest.sys.mjs").WebRequest,
40 extensionStorageSync: typeof import("ExtensionStorageSync.sys.mjs").extensionStorageSync,
41 getErrorNameForTelemetry: typeof import("ExtensionTelemetry.sys.mjs").getErrorNameForTelemetry,
42 getTrimmedString: typeof import("ExtensionTelemetry.sys.mjs").getTrimmedString,
45 // Utility type to extract all strings from a const array, to use as keys.
46 type Items<A> = A extends ReadonlyArray<infer U extends string> ? U : never;
49 type Lazy<Keys extends keyof LazyAll = keyof LazyAll> = Pick<LazyAll, Keys> & { [k: string]: any };
51 // Export JSDoc types, and make other classes available globally.
52 type ConduitAddress = import("ConduitsParent.sys.mjs").ConduitAddress;
53 type ConduitID = import("ConduitsParent.sys.mjs").ConduitID;
54 type Extension = import("Extension.sys.mjs").Extension;
56 // Something about Class type not being exported when nested in a namespace?
57 type BaseContext = InstanceType<typeof import("ExtensionCommon.sys.mjs").ExtensionCommon.BaseContext>;
58 type BrowserExtensionContent = InstanceType<typeof import("ExtensionContent.sys.mjs").ExtensionContent.BrowserExtensionContent>;
59 type EventEmitter = InstanceType<typeof import("ExtensionCommon.sys.mjs").ExtensionCommon.EventEmitter>;
60 type ExtensionAPI = InstanceType<typeof import("ExtensionCommon.sys.mjs").ExtensionCommon.ExtensionAPI>;
61 type ExtensionError = InstanceType<typeof import("ExtensionUtils.sys.mjs").ExtensionUtils.ExtensionError>;
62 type LocaleData = InstanceType<typeof import("ExtensionCommon.sys.mjs").ExtensionCommon.LocaleData>;
63 type ProxyAPIImplementation = InstanceType<typeof import("ExtensionChild.sys.mjs").ExtensionChild.ProxyAPIImplementation>;
64 type SchemaAPIInterface = InstanceType<typeof import("ExtensionCommon.sys.mjs").ExtensionCommon.SchemaAPIInterface>;
65 type WorkerExtensionError = InstanceType<typeof import("ExtensionUtils.sys.mjs").ExtensionUtils.WorkerExtensionError>;
68 type AddonWrapper = any;
69 type Context = BaseContext;
70 type NativeTab = Element;
71 type SavedFrame = object;
73 // Can't define a const generic parameter in jsdocs yet.
74 // https://github.com/microsoft/TypeScript/issues/56634
75 type ConduitInit<Send> = ConduitAddress & { send: Send; };
76 type Conduit<Send> = import("../ConduitsChild.sys.mjs").PointConduit & { [s in `send${Items<Send>}`]: callback };
77 type ConduitOpen = <const Send>(subject: object, address: ConduitInit<Send>) => Conduit<Send>;