import type BrowserErrorCaptureEnum from '../enums/BrowserErrorCaptureEnum.js';
import type BrowserNavigationCrossOriginPolicyEnum from '../enums/BrowserNavigationCrossOriginPolicyEnum.js';
import type IFetchInterceptor from '../../fetch/types/IFetchInterceptor.js';
import type IVirtualServer from '../../fetch/types/IVirtualServer.js';
import type IFetchRequestHeaders from '../../fetch/types/IFetchRequestHeaders.js';
import type IOptionalBrowserPageViewport from './IOptionalBrowserPageViewport.js';
import type IOptionalTimerLoopsLimit from '../../window/IOptionalTimerLoopsLimit.js';
import type BrowserWindow from '../../window/BrowserWindow.js';
import type IResolveNodeModules from '../../module/types/IResolveNodeModules.js';
export default interface IOptionalBrowserSettings {
    /**
     * Disables JavaScript evaluation.
     *
     * @deprecated Javascript evaluation is now disabled by default. Use "enableJavaScriptEvaluation" if you want to enable it.
     */
    disableJavaScriptEvaluation?: boolean;
    /**
     * Enables JavaScript evaluation.
     *
     * A VM Context is not an isolated environment, and if you run untrusted code you are at risk of RCE (Remote Code Execution) attacks.
     * It is recommended to disable code generation at process level by running node with the "--disallow-code-generation-from-strings" flag enabled to protect against these types of attacks.
     *
     * @see https://github.com/capricorn86/happy-dom/wiki/Code-Generation-From-Strings-Warning
     */
    enableJavaScriptEvaluation?: boolean;
    /** Disables JavaScript file loading. */
    disableJavaScriptFileLoading?: boolean;
    /** Disables CSS file loading. */
    disableCSSFileLoading?: boolean;
    /** Disables computed style rendering. */
    disableComputedStyleRendering?: boolean;
    /** Handle disabled file loading as success */
    handleDisabledFileLoadingAsSuccess?: boolean;
    /**
     * Suppresses the warning that is printed when code generation from strings is enabled at process level.
     *
     * @deprecated Use "suppressInsecureJavaScriptEnvironmentWarning" instead.
     */
    suppressCodeGenerationFromStringsWarning?: boolean;
    /** Suppresses the warning that is printed when the JavaScript execution environment is insecure. */
    suppressInsecureJavaScriptEnvironmentWarning?: boolean;
    /** Settings for timers */
    timer?: {
        maxTimeout?: number;
        maxIntervalTime?: number;
        maxIntervalIterations?: number;
        preventTimerLoops?: boolean | IOptionalTimerLoopsLimit;
    };
    /**
     * Settings for fetch
     */
    fetch?: {
        /**
         * Disables same-origin policy (CORS)
         *
         * @see https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
         */
        disableSameOriginPolicy?: boolean;
        /**
         * Disables validation of certificates against the list of supplied CAs.
         *
         * Disabling this feature makes it possible to use self-signed certificates or certificates that are not signed by a trusted CA.
         */
        disableStrictSSL?: boolean;
        /**
         * Fetch interceptor.
         */
        interceptor?: IFetchInterceptor | null;
        /**
         * Add request headers to specific URLs.
         */
        requestHeaders?: IFetchRequestHeaders[] | null;
        /**
         * Virtual servers used for simulating a server that reads from the file system.
         */
        virtualServers?: IVirtualServer[] | null;
    };
    /**
     * Settings for modules
     */
    module?: {
        /** Resolve node modules to the defined URL */
        resolveNodeModules?: IResolveNodeModules | null;
        /** Sets a custom URL resolver */
        urlResolver?: ((options: {
            url: string;
            parentURL: string;
            window: BrowserWindow;
        }) => string) | null;
        /** Disables module compilation caching */
        disableCache?: boolean;
    };
    /**
     * Disables error capturing.
     *
     * @deprecated Use errorCapture instead.
     */
    disableErrorCapturing?: boolean;
    /**
     * Error capturing policy.
     */
    errorCapture?: BrowserErrorCaptureEnum;
    /**
     * @deprecated Not something that browsers support anymore as it is not secure.
     */
    enableFileSystemHttpRequests?: boolean;
    /**
     * @deprecated Use navigation.disableChildFrameNavigation instead.
     */
    disableIframePageLoading?: boolean;
    /**
     * Settings for the browser's navigation (when following links or opening windows).
     */
    navigation?: {
        /** Disables navigation to other pages in the main frame or a page. */
        disableMainFrameNavigation?: boolean;
        /** Disables navigation to other pages in child frames (such as iframes). */
        disableChildFrameNavigation?: boolean;
        /** Disables navigation to other pages in child pages (such as popup windows). */
        disableChildPageNavigation?: boolean;
        /** Disables the fallback to setting the URL when navigating to a page is disabled or when inside a detached browser frame. */
        disableFallbackToSetURL?: boolean;
        /** Sets the policy for cross-origin navigation. */
        crossOriginPolicy?: BrowserNavigationCrossOriginPolicyEnum;
        /** Triggered before content is loaded into the document */
        beforeContentCallback?: ((window: BrowserWindow) => void) | null;
    };
    /**
     * Settings for the browser's navigator.
     */
    navigator?: {
        userAgent?: string;
        maxTouchPoints?: number;
    };
    /**
     * Settings for the browser's device.
     */
    device?: {
        prefersColorScheme?: string;
        prefersReducedMotion?: string;
        mediaType?: string;
        forcedColors?: string;
    };
    /**
     * Debug settings.
     */
    debug?: {
        traceWaitUntilComplete?: number;
    };
    /**
     * Default page viewport.
     */
    viewport?: IOptionalBrowserPageViewport;
}
//# sourceMappingURL=IOptionalBrowserSettings.d.ts.map