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 IBrowserPageViewport from './IBrowserPageViewport.js';
import type IOptionalTimerLoopsLimit from '../../window/IOptionalTimerLoopsLimit.js';
import type BrowserWindow from '../../window/BrowserWindow.js';
import type IResolveNodeModules from '../../module/types/IResolveNodeModules.js';
/**
 * Browser settings.
 */
export default interface IBrowserSettings {
    /**
     * 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 resource 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;
        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: IBrowserPageViewport;
}
//# sourceMappingURL=IBrowserSettings.d.ts.map