import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSBundle } from "../Foundation/NSBundle.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSLocale } from "../Foundation/NSLocale.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSet } from "../Foundation/NSSet.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { _NSImage } from "../AppKit/NSImage.js";
import type { CGSize } from "../structs/CGSize.js";
export declare class _WKWebExtension extends _NSObject {
    static alloc(): _WKWebExtension;
    static new(): _WKWebExtension;
    init(): _WKWebExtension;
    /**
     * Returns a web extension initialized with a specified app extension bundle. The bundle to use for the new web extension. A block to be called with an initialized web extension, or if the object could not be initialized due to an error. The app extension bundle must contain a `manifest.json` file in its resources directory. If the manifest is invalid or missing, or the bundle is otherwise improperly configured, an error will be returned.
     */
    static extensionWithAppExtensionBundle$completionHandler$(appExtensionBundle: _NSBundle, completionHandler: ((extension: _WKWebExtension, error: _NSError) => void) | null): void;
    /**
     * Returns a web extension initialized with a specified resource base URL, which can point to either a directory or a ZIP archive. The file URL to use for the new web extension. A block to be called with an initialized web extension, or if the object could not be initialized due to an error. The URL must be a file URL that points to either a directory with a `manifest.json` file or a ZIP archive containing a `manifest.json` file. If the manifest is invalid or missing, or the URL points to an unsupported format or invalid archive, an error will be returned.
     */
    static extensionWithResourceBaseURL$completionHandler$(resourceBaseURL: _NSURL, completionHandler: ((extension: _WKWebExtension, error: _NSError) => void) | null): void;
    /**
     * Checks if a manifest version is supported by the extension. The version number to check. Returns `YES` if the extension specified a manifest version that is greater than or equal to `manifestVersion`.
     */
    supportsManifestVersion$(manifestVersion: number): boolean;
    iconForSize$(size: CGSize): _NSImage | null;
    actionIconForSize$(size: CGSize): _NSImage | null;
    /**
     * An array of all errors that occurred during the processing of the extension. Provides an array of all parse-time errors for the extension, with repeat errors consolidated into a single entry for the original occurrence only. If no errors occurred, an empty array is returned. Once the extension is loaded, use the ``errors`` property on an extension context to monitor any runtime errors, as they can occur after the extension is loaded.
     */
    errors(): _NSArray;
    /** The parsed manifest as a dictionary. */
    manifest(): _NSDictionary;
    /**
     * The parsed manifest version, or `0` if there is no version specified in the manifest. An ``WKWebExtensionErrorUnsupportedManifestVersion`` error will be reported if the manifest version isn't specified.
     */
    manifestVersion(): number;
    /**
     * The default locale for the extension. Returns `nil` if there was no default locale specified.
     */
    defaultLocale(): _NSLocale | null;
    /** The localized extension name. Returns `nil` if there was no name specified. */
    displayName(): _NSString | null;
    /**
     * The localized extension short name. Returns `nil` if there was no short name specified.
     */
    displayShortName(): _NSString | null;
    /**
     * The localized extension display version. Returns `nil` if there was no display version specified.
     */
    displayVersion(): _NSString | null;
    /**
     * The localized extension description. Returns `nil` if there was no description specified.
     */
    displayDescription(): _NSString | null;
    /**
     * The default localized extension action label. Returns `nil` if there was no default action label specified. This label serves as a default and should be used to represent the extension in contexts like action sheets or toolbars prior to the extension being loaded into an extension context. Once the extension is loaded, use the ``actionForTab:`` API to get the tab-specific label.
     */
    displayActionLabel(): _NSString | null;
    /** The set of permissions that the extension requires for its base functionality. */
    requestedPermissions(): _NSSet;
    /**
     * The set of permissions that the extension may need for optional functionality. These permissions can be requested by the extension at a later time.
     */
    optionalPermissions(): _NSSet;
    /**
     * The set of websites that the extension requires access to for its base functionality.
     */
    requestedPermissionMatchPatterns(): _NSSet;
    /**
     * The set of websites that the extension may need access to for optional functionality. These match patterns can be requested by the extension at a later time.
     */
    optionalPermissionMatchPatterns(): _NSSet;
    /**
     * The set of websites that the extension requires access to for injected content and for receiving messages from websites.
     */
    allRequestedMatchPatterns(): _NSSet;
    /**
     * A Boolean value indicating whether the extension has background content that can run when needed. If this property is `YES`, the extension can run in the background even when no webpages are open.
     */
    hasBackgroundContent(): boolean;
    /**
     * A Boolean value indicating whether the extension has background content that stays in memory as long as the extension is loaded. Note that extensions are only allowed to have persistent background content on macOS. An ``WKWebExtensionErrorInvalidBackgroundPersistence`` error will be reported on iOS, iPadOS, and visionOS if an attempt is made to load a persistent extension.
     */
    hasPersistentBackgroundContent(): boolean;
    /**
     * A Boolean value indicating whether the extension has script or stylesheet content that can be injected into webpages. If this property is `YES`, the extension has content that can be injected by matching against the extension's requested match patterns. Once the extension is loaded, use the ``hasInjectedContent`` property on an extension context, as the injectable content can change after the extension is loaded.
     */
    hasInjectedContent(): boolean;
    /**
     * A Boolean value indicating whether the extension has an options page. If this property is `YES`, the extension includes a dedicated options page where users can customize settings. The app should provide access to this page through a user interface element, which can be accessed via ``optionsPageURL`` on an extension context.
     */
    hasOptionsPage(): boolean;
    /**
     * A Boolean value indicating whether the extension provides an alternative to the default new tab page. If this property is `YES`, the extension can specify a custom page that can be displayed when a new tab is opened in the app, instead of the default new tab page. The app should prompt the user for permission to use the extension's new tab page as the default, which can be accessed via ``overrideNewTabPageURL`` on an extension context.
     */
    hasOverrideNewTabPage(): boolean;
    /**
     * A Boolean value indicating whether the extension includes commands that users can invoke. If this property is `YES`, the extension contains one or more commands that can be performed by the user. These commands should be accessible via keyboard shortcuts, menu items, or other user interface elements provided by the app. The list of commands can be accessed via ``commands`` on an extension context, and invoked via ``performCommand:``.
     */
    hasCommands(): boolean;
    /**
     * A boolean value indicating whether the extension includes rules used for content modification or blocking.
     */
    hasContentModificationRules(): boolean;
}
