;
/**
* Open your Extension's options page, if possible.
The precise behavior may depend on your manifest's
* $(topic:optionsV2)[options_ui]
or $(topic:options)[options_page]
key,
* or what the browser happens to support at the time.
If your Extension does not declare an options page,
* or the browser failed to create one for some other reason, the callback will set $(ref:lastError).
*/
openOptionsPage(): Promise;
/**
* Returns details about the app or extension from the manifest. The object returned is a serialization of the full
* $(topic:manifest)[manifest file].
*
* @returns The manifest details.
*/
getManifest(): Manifest.WebExtensionManifest;
/**
* Converts a relative path within an app/extension install directory to a fully-qualified URL.
*
* @param path A path to a resource within an app/extension expressed relative to its install directory.
* @returns The fully-qualified URL to the resource.
*/
getURL(path: string): string;
/**
* Get the frameId of any window global or frame element.
*
* @param target A WindowProxy or a Browsing Context container element (IFrame, Frame, Embed, Object) for the target frame.
* @returns The frameId of the target frame, or -1 if it doesn't exist.
*/
getFrameId(target: unknown): number;
/**
* Sets the URL to be visited upon uninstallation. This may be used to clean up server-side data, do analytics,
* and implement surveys. Maximum 1023 characters.
*
* @param url Optional. URL to be opened after the extension is uninstalled. This URL must have an http: or https: scheme.
* Set an empty string to not open a new tab upon uninstallation.
* @returns Called when the uninstall URL is set. If the given URL is invalid, $(ref:runtime.lastError) will be set.
*/
setUninstallURL(url?: string): Promise;
/**
* Reloads the app or extension.
*/
reload(): void;
/**
* Requests an update check for this app/extension.
*/
requestUpdateCheck(): Promise<[RequestUpdateCheckStatus, RequestUpdateCheckCallbackDetailsType]>;
/**
* Attempts to connect to connect listeners within an extension/app (such as the background page), or other extensions/apps.
* This is useful for content scripts connecting to their extension processes, inter-app/extension communication,
* and $(topic:manifest/externally_connectable)[web messaging]. Note that this does not connect to any listeners in a
* content script. Extensions may connect to content scripts embedded in tabs via $(ref:tabs.connect).
*
* @param extensionId Optional. The ID of the extension or app to connect to. If omitted,
* a connection will be attempted with your own extension. Required if sending messages from a web page for
* $(topic:manifest/externally_connectable)[web messaging].
* @param connectInfo Optional.
* @returns Port through which messages can be sent and received. The port's $(ref:runtime.Port onDisconnect)
* event is fired if the extension/app does not exist.
*/
connect(extensionId?: string, connectInfo?: ConnectConnectInfoType): Port;
/**
* Attempts to connect to connect listeners within an extension/app (such as the background page), or other extensions/apps.
* This is useful for content scripts connecting to their extension processes, inter-app/extension communication,
* and $(topic:manifest/externally_connectable)[web messaging]. Note that this does not connect to any listeners in a
* content script. Extensions may connect to content scripts embedded in tabs via $(ref:tabs.connect).
*
* @param connectInfo Optional.
* @returns Port through which messages can be sent and received. The port's $(ref:runtime.Port onDisconnect)
* event is fired if the extension/app does not exist.
*/
connect(connectInfo?: ConnectConnectInfoType): Port;
/**
* Connects to a native application in the host machine.
*
* @param application The name of the registered application to connect to.
* @returns Port through which messages can be sent and received with the application
*/
connectNative(application: string): Port;
/**
* Sends a single message to event listeners within your extension/app or a different extension/app.
* Similar to $(ref:runtime.connect) but only sends a single message, with an optional response.
* If sending to your extension, the $(ref:runtime.onMessage) event will be fired in each page, or $(ref:runtime.
* onMessageExternal), if a different extension. Note that extensions cannot send messages to content scripts using this
* method. To send messages to content scripts, use $(ref:tabs.sendMessage).
*
* @param extensionId Optional. The ID of the extension/app to send the message to. If omitted,
* the message will be sent to your own extension/app. Required if sending messages from a web page for
* $(topic:manifest/externally_connectable)[web messaging].
* @param options Optional.
*/
// eslint-disable-next-line @definitelytyped/no-unnecessary-generics
sendMessage(
extensionId: string | undefined,
message: TMessage,
options?: SendMessageOptionsType,
): Promise;
/**
* Sends a single message to event listeners within your extension/app or a different extension/app.
* Similar to $(ref:runtime.connect) but only sends a single message, with an optional response.
* If sending to your extension, the $(ref:runtime.onMessage) event will be fired in each page, or $(ref:runtime.
* onMessageExternal), if a different extension. Note that extensions cannot send messages to content scripts using this
* method. To send messages to content scripts, use $(ref:tabs.sendMessage).
*
* @param options Optional.
*/
// eslint-disable-next-line @definitelytyped/no-unnecessary-generics
sendMessage(
message: TMessage,
options?: SendMessageOptionsType,
): Promise;
/**
* Send a single message to a native application.
*
* @param application The name of the native messaging host.
* @param message The message that will be passed to the native messaging host.
*/
// eslint-disable-next-line @definitelytyped/no-unnecessary-generics
sendNativeMessage(
application: string,
message: TMessage,
): Promise;
/**
* Returns information about the current browser.
*
* @returns Called with results
*/
getBrowserInfo(): Promise;
/**
* Returns information about the current platform.
*
* @returns Called with results
*/
getPlatformInfo(): Promise;
/**
* Fired when a profile that has this extension installed first starts up. This event is not fired for incognito profiles.
*/
onStartup: Events.Event<() => void>;
/**
* Fired when the extension is first installed, when the extension is updated to a new version,
* and when the browser is updated to a new version.
*/
onInstalled: Events.Event<(details: OnInstalledDetailsType) => void>;
/**
* Sent to the event page just before it is unloaded. This gives the extension opportunity to do some clean up.
* Note that since the page is unloading, any asynchronous operations started while handling this event are not guaranteed
* to complete. If more activity for the event page occurs before it gets unloaded the onSuspendCanceled event will be sent
* and the page won't be unloaded.
*/
onSuspend: Events.Event<() => void>;
/**
* Sent after onSuspend to indicate that the app won't be unloaded after all.
*/
onSuspendCanceled: Events.Event<() => void>;
/**
* Fired when an update is available, but isn't installed immediately because the app is currently running.
* If you do nothing, the update will be installed the next time the background page gets unloaded,
* if you want it to be installed sooner you can explicitly call $(ref:runtime.reload).
* If your extension is using a persistent background page, the background page of course never gets unloaded,
* so unless you call $(ref:runtime.reload) manually in response to this event the update will not get installed until the
* next time the browser itself restarts. If no handlers are listening for this event,
* and your extension has a persistent background page, it behaves as if $(ref:runtime.reload)
* is called in response to this event.
*
* @param details The manifest details of the available update.
*/
onUpdateAvailable: Events.Event<(details: OnUpdateAvailableDetailsType) => void>;
/**
* Fired when a connection is made from either an extension process or a content script.
*/
onConnect: Events.Event<(port: Port) => void>;
/**
* Fired when a connection is made from a USER_SCRIPT world registered through the userScripts API.
*/
onUserScriptConnect: Events.Event<(port: Port) => void>;
/**
* Fired when a connection is made from another extension.
*/
onConnectExternal: Events.Event<(port: Port) => void>;
/**
* Fired when a message is sent from either an extension process or a content script.
*/
onMessage: Events.Event;
/**
* Fired when a message is sent from another extension/app. Cannot be used in a content script.
*/
onMessageExternal: Events.Event;
/**
* Fired when a message is sent from a USER_SCRIPT world registered through the userScripts API.
*/
onUserScriptMessage: Events.Event;
/**
* Fired when a runtime performance issue is detected with the extension. Observe this event to be proactively notified of
* runtime performance problems with the extension.
*/
onPerformanceWarning: Events.Event<(details: OnPerformanceWarningDetailsType) => void>;
/**
* This will be defined during an API method callback if there was an error
* Optional.
*/
lastError?: PropertyLastErrorType;
/**
* The ID of the extension/app.
*/
id: string;
}
}