import type { ExtensionConfig, ExtensionTarget } from './types'; /** Output filename for a content script (explicit `out`, else entry basename). */ export declare function contentScriptOut(entry: string, out?: string): string; /** * Generate an MV3 manifest for a target from the extension config. Chrome uses * a `service_worker` background + `minimum_chrome_version`; Firefox uses a * `scripts` event page + `browser_specific_settings.gecko` (required by AMO); * Safari uses a classic (non-module) `service_worker` + * `browser_specific_settings.safari` (15.4+ runs MV3 service workers, and the * bundles are classic IIFEs, so the module hint is dropped). */ export declare function generateManifest(config: ExtensionConfig, opts: { version: string, target?: ExtensionTarget }): GeneratedManifest; /** MV3 manifest shape (loose — the two targets diverge on `background`). */ export declare interface GeneratedManifest { manifest_version: 3 name: string description: string version: string minimum_chrome_version?: string action?: { default_title?: string, default_popup?: string, default_icon?: Record } options_page?: string background?: { service_worker: string, type?: 'module' } | { scripts: string[], type?: 'module' } browser_specific_settings?: { gecko: { id: string strict_min_version: string data_collection_permissions: { required: ['none'] } } } | { safari: { strict_min_version: string } } permissions?: string[] optional_permissions?: string[] host_permissions?: string[] icons?: Record content_scripts?: Array<{ matches: string[] js: string[] css?: string[] run_at?: string world?: string all_frames?: boolean match_about_blank?: boolean exclude_matches?: string[] }> declarative_net_request?: { rule_resources: Array<{ id: string, enabled: boolean, path: string }> } content_security_policy?: { extension_pages: string } web_accessible_resources?: Array<{ resources: string[], matches: string[] }> [key: string]: unknown }