| /** | 
|  * The `vm` module enables compiling and running code within V8 Virtual | 
|  * Machine contexts. | 
|  * | 
|  * **The `vm` module is not a security** | 
|  * **mechanism. Do not use it to run untrusted code.** | 
|  * | 
|  * JavaScript code can be compiled and run immediately or | 
|  * compiled, saved, and run later. | 
|  * | 
|  * A common use case is to run the code in a different V8 Context. This means | 
|  * invoked code has a different global object than the invoking code. | 
|  * | 
|  * One can provide the context by `contextifying` an | 
|  * object. The invoked code treats any property in the context like a | 
|  * global variable. Any changes to global variables caused by the invoked | 
|  * code are reflected in the context object. | 
|  * | 
|  * ```js | 
|  * const vm = require('vm'); | 
|  * | 
|  * const x = 1; | 
|  * | 
|  * const context = { x: 2 }; | 
|  * vm.createContext(context); // Contextify the object. | 
|  * | 
|  * const code = 'x += 40; var y = 17;'; | 
|  * // `x` and `y` are global variables in the context. | 
|  * // Initially, x has the value 2 because that is the value of context.x. | 
|  * vm.runInContext(code, context); | 
|  * | 
|  * console.log(context.x); // 42 | 
|  * console.log(context.y); // 17 | 
|  * | 
|  * console.log(x); // 1; y is not defined. | 
|  * ``` | 
|  * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/vm.js) | 
|  */ | 
| declare module 'vm' { | 
|     interface Context extends NodeJS.Dict<any> {} | 
|     interface BaseOptions { | 
|         /** | 
|          * Specifies the filename used in stack traces produced by this script. | 
|          * Default: `''`. | 
|          */ | 
|         filename?: string | undefined; | 
|         /** | 
|          * Specifies the line number offset that is displayed in stack traces produced by this script. | 
|          * Default: `0`. | 
|          */ | 
|         lineOffset?: number | undefined; | 
|         /** | 
|          * Specifies the column number offset that is displayed in stack traces produced by this script. | 
|          * @default 0 | 
|          */ | 
|         columnOffset?: number | undefined; | 
|     } | 
|     interface ScriptOptions extends BaseOptions { | 
|         displayErrors?: boolean | undefined; | 
|         timeout?: number | undefined; | 
|         cachedData?: Buffer | undefined; | 
|         /** @deprecated in favor of `script.createCachedData()` */ | 
|         produceCachedData?: boolean | undefined; | 
|     } | 
|     interface RunningScriptOptions extends BaseOptions { | 
|         /** | 
|          * When `true`, if an `Error` occurs while compiling the `code`, the line of code causing the error is attached to the stack trace. | 
|          * Default: `true`. | 
|          */ | 
|         displayErrors?: boolean | undefined; | 
|         /** | 
|          * Specifies the number of milliseconds to execute code before terminating execution. | 
|          * If execution is terminated, an `Error` will be thrown. This value must be a strictly positive integer. | 
|          */ | 
|         timeout?: number | undefined; | 
|         /** | 
|          * If `true`, the execution will be terminated when `SIGINT` (Ctrl+C) is received. | 
|          * Existing handlers for the event that have been attached via `process.on('SIGINT')` will be disabled during script execution, but will continue to work after that. | 
|          * If execution is terminated, an `Error` will be thrown. | 
|          * Default: `false`. | 
|          */ | 
|         breakOnSigint?: boolean | undefined; | 
|         /** | 
|          * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. | 
|          */ | 
|         microtaskMode?: 'afterEvaluate' | undefined; | 
|     } | 
|     interface CompileFunctionOptions extends BaseOptions { | 
|         /** | 
|          * Provides an optional data with V8's code cache data for the supplied source. | 
|          */ | 
|         cachedData?: Buffer | undefined; | 
|         /** | 
|          * Specifies whether to produce new cache data. | 
|          * Default: `false`, | 
|          */ | 
|         produceCachedData?: boolean | undefined; | 
|         /** | 
|          * The sandbox/context in which the said function should be compiled in. | 
|          */ | 
|         parsingContext?: Context | undefined; | 
|         /** | 
|          * An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling | 
|          */ | 
|         contextExtensions?: Object[] | undefined; | 
|     } | 
|     interface CreateContextOptions { | 
|         /** | 
|          * Human-readable name of the newly created context. | 
|          * @default 'VM Context i' Where i is an ascending numerical index of the created context. | 
|          */ | 
|         name?: string | undefined; | 
|         /** | 
|          * Corresponds to the newly created context for display purposes. | 
|          * The origin should be formatted like a `URL`, but with only the scheme, host, and port (if necessary), | 
|          * like the value of the `url.origin` property of a URL object. | 
|          * Most notably, this string should omit the trailing slash, as that denotes a path. | 
|          * @default '' | 
|          */ | 
|         origin?: string | undefined; | 
|         codeGeneration?: | 
|             | { | 
|                   /** | 
|                    * If set to false any calls to eval or function constructors (Function, GeneratorFunction, etc) | 
|                    * will throw an EvalError. | 
|                    * @default true | 
|                    */ | 
|                   strings?: boolean | undefined; | 
|                   /** | 
|                    * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError. | 
|                    * @default true | 
|                    */ | 
|                   wasm?: boolean | undefined; | 
|               } | 
|             | undefined; | 
|         /** | 
|          * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. | 
|          */ | 
|         microtaskMode?: 'afterEvaluate' | undefined; | 
|     } | 
|     type MeasureMemoryMode = 'summary' | 'detailed'; | 
|     interface MeasureMemoryOptions { | 
|         /** | 
|          * @default 'summary' | 
|          */ | 
|         mode?: MeasureMemoryMode | undefined; | 
|         context?: Context | undefined; | 
|     } | 
|     interface MemoryMeasurement { | 
|         total: { | 
|             jsMemoryEstimate: number; | 
|             jsMemoryRange: [number, number]; | 
|         }; | 
|     } | 
|     /** | 
|      * Instances of the `vm.Script` class contain precompiled scripts that can be | 
|      * executed in specific contexts. | 
|      * @since v0.3.1 | 
|      */ | 
|     class Script { | 
|         constructor(code: string, options?: ScriptOptions); | 
|         /** | 
|          * Runs the compiled code contained by the `vm.Script` object within the given`contextifiedObject` and returns the result. Running code does not have access | 
|          * to local scope. | 
|          * | 
|          * The following example compiles code that increments a global variable, sets | 
|          * the value of another global variable, then execute the code multiple times. | 
|          * The globals are contained in the `context` object. | 
|          * | 
|          * ```js | 
|          * const vm = require('vm'); | 
|          * | 
|          * const context = { | 
|          *   animal: 'cat', | 
|          *   count: 2 | 
|          * }; | 
|          * | 
|          * const script = new vm.Script('count += 1; name = "kitty";'); | 
|          * | 
|          * vm.createContext(context); | 
|          * for (let i = 0; i < 10; ++i) { | 
|          *   script.runInContext(context); | 
|          * } | 
|          * | 
|          * console.log(context); | 
|          * // Prints: { animal: 'cat', count: 12, name: 'kitty' } | 
|          * ``` | 
|          * | 
|          * Using the `timeout` or `breakOnSigint` options will result in new event loops | 
|          * and corresponding threads being started, which have a non-zero performance | 
|          * overhead. | 
|          * @since v0.3.1 | 
|          * @param contextifiedObject A `contextified` object as returned by the `vm.createContext()` method. | 
|          * @return the result of the very last statement executed in the script. | 
|          */ | 
|         runInContext(contextifiedObject: Context, options?: RunningScriptOptions): any; | 
|         /** | 
|          * First contextifies the given `contextObject`, runs the compiled code contained | 
|          * by the `vm.Script` object within the created context, and returns the result. | 
|          * Running code does not have access to local scope. | 
|          * | 
|          * The following example compiles code that sets a global variable, then executes | 
|          * the code multiple times in different contexts. The globals are set on and | 
|          * contained within each individual `context`. | 
|          * | 
|          * ```js | 
|          * const vm = require('vm'); | 
|          * | 
|          * const script = new vm.Script('globalVar = "set"'); | 
|          * | 
|          * const contexts = [{}, {}, {}]; | 
|          * contexts.forEach((context) => { | 
|          *   script.runInNewContext(context); | 
|          * }); | 
|          * | 
|          * console.log(contexts); | 
|          * // Prints: [{ globalVar: 'set' }, { globalVar: 'set' }, { globalVar: 'set' }] | 
|          * ``` | 
|          * @since v0.3.1 | 
|          * @param contextObject An object that will be `contextified`. If `undefined`, a new object will be created. | 
|          * @return the result of the very last statement executed in the script. | 
|          */ | 
|         runInNewContext(contextObject?: Context, options?: RunningScriptOptions): any; | 
|         /** | 
|          * Runs the compiled code contained by the `vm.Script` within the context of the | 
|          * current `global` object. Running code does not have access to local scope, but _does_ have access to the current `global` object. | 
|          * | 
|          * The following example compiles code that increments a `global` variable then | 
|          * executes that code multiple times: | 
|          * | 
|          * ```js | 
|          * const vm = require('vm'); | 
|          * | 
|          * global.globalVar = 0; | 
|          * | 
|          * const script = new vm.Script('globalVar += 1', { filename: 'myfile.vm' }); | 
|          * | 
|          * for (let i = 0; i < 1000; ++i) { | 
|          *   script.runInThisContext(); | 
|          * } | 
|          * | 
|          * console.log(globalVar); | 
|          * | 
|          * // 1000 | 
|          * ``` | 
|          * @since v0.3.1 | 
|          * @return the result of the very last statement executed in the script. | 
|          */ | 
|         runInThisContext(options?: RunningScriptOptions): any; | 
|         /** | 
|          * Creates a code cache that can be used with the `Script` constructor's`cachedData` option. Returns a `Buffer`. This method may be called at any | 
|          * time and any number of times. | 
|          * | 
|          * ```js | 
|          * const script = new vm.Script(` | 
|          * function add(a, b) { | 
|          *   return a + b; | 
|          * } | 
|          * | 
|          * const x = add(1, 2); | 
|          * `); | 
|          * | 
|          * const cacheWithoutX = script.createCachedData(); | 
|          * | 
|          * script.runInThisContext(); | 
|          * | 
|          * const cacheWithX = script.createCachedData(); | 
|          * ``` | 
|          * @since v10.6.0 | 
|          */ | 
|         createCachedData(): Buffer; | 
|         /** @deprecated in favor of `script.createCachedData()` */ | 
|         cachedDataProduced?: boolean | undefined; | 
|         cachedDataRejected?: boolean | undefined; | 
|         cachedData?: Buffer | undefined; | 
|     } | 
|     /** | 
|      * If given a `contextObject`, the `vm.createContext()` method will `prepare | 
|      * that object` so that it can be used in calls to {@link runInContext} or `script.runInContext()`. Inside such scripts, | 
|      * the `contextObject` will be the global object, retaining all of its existing | 
|      * properties but also having the built-in objects and functions any standard [global object](https://es5.github.io/#x15.1) has. Outside of scripts run by the vm module, global variables | 
|      * will remain unchanged. | 
|      * | 
|      * ```js | 
|      * const vm = require('vm'); | 
|      * | 
|      * global.globalVar = 3; | 
|      * | 
|      * const context = { globalVar: 1 }; | 
|      * vm.createContext(context); | 
|      * | 
|      * vm.runInContext('globalVar *= 2;', context); | 
|      * | 
|      * console.log(context); | 
|      * // Prints: { globalVar: 2 } | 
|      * | 
|      * console.log(global.globalVar); | 
|      * // Prints: 3 | 
|      * ``` | 
|      * | 
|      * If `contextObject` is omitted (or passed explicitly as `undefined`), a new, | 
|      * empty `contextified` object will be returned. | 
|      * | 
|      * The `vm.createContext()` method is primarily useful for creating a single | 
|      * context that can be used to run multiple scripts. For instance, if emulating a | 
|      * web browser, the method can be used to create a single context representing a | 
|      * window's global object, then run all `<script>` tags together within that | 
|      * context. | 
|      * | 
|      * The provided `name` and `origin` of the context are made visible through the | 
|      * Inspector API. | 
|      * @since v0.3.1 | 
|      * @return contextified object. | 
|      */ | 
|     function createContext(sandbox?: Context, options?: CreateContextOptions): Context; | 
|     /** | 
|      * Returns `true` if the given `object` object has been `contextified` using {@link createContext}. | 
|      * @since v0.11.7 | 
|      */ | 
|     function isContext(sandbox: Context): boolean; | 
|     /** | 
|      * The `vm.runInContext()` method compiles `code`, runs it within the context of | 
|      * the `contextifiedObject`, then returns the result. Running code does not have | 
|      * access to the local scope. The `contextifiedObject` object _must_ have been | 
|      * previously `contextified` using the {@link createContext} method. | 
|      * | 
|      * If `options` is a string, then it specifies the filename. | 
|      * | 
|      * The following example compiles and executes different scripts using a single `contextified` object: | 
|      * | 
|      * ```js | 
|      * const vm = require('vm'); | 
|      * | 
|      * const contextObject = { globalVar: 1 }; | 
|      * vm.createContext(contextObject); | 
|      * | 
|      * for (let i = 0; i < 10; ++i) { | 
|      *   vm.runInContext('globalVar *= 2;', contextObject); | 
|      * } | 
|      * console.log(contextObject); | 
|      * // Prints: { globalVar: 1024 } | 
|      * ``` | 
|      * @since v0.3.1 | 
|      * @param code The JavaScript code to compile and run. | 
|      * @param contextifiedObject The `contextified` object that will be used as the `global` when the `code` is compiled and run. | 
|      * @return the result of the very last statement executed in the script. | 
|      */ | 
|     function runInContext(code: string, contextifiedObject: Context, options?: RunningScriptOptions | string): any; | 
|     /** | 
|      * The `vm.runInNewContext()` first contextifies the given `contextObject` (or | 
|      * creates a new `contextObject` if passed as `undefined`), compiles the `code`, | 
|      * runs it within the created context, then returns the result. Running code | 
|      * does not have access to the local scope. | 
|      * | 
|      * If `options` is a string, then it specifies the filename. | 
|      * | 
|      * The following example compiles and executes code that increments a global | 
|      * variable and sets a new one. These globals are contained in the `contextObject`. | 
|      * | 
|      * ```js | 
|      * const vm = require('vm'); | 
|      * | 
|      * const contextObject = { | 
|      *   animal: 'cat', | 
|      *   count: 2 | 
|      * }; | 
|      * | 
|      * vm.runInNewContext('count += 1; name = "kitty"', contextObject); | 
|      * console.log(contextObject); | 
|      * // Prints: { animal: 'cat', count: 3, name: 'kitty' } | 
|      * ``` | 
|      * @since v0.3.1 | 
|      * @param code The JavaScript code to compile and run. | 
|      * @param contextObject An object that will be `contextified`. If `undefined`, a new object will be created. | 
|      * @return the result of the very last statement executed in the script. | 
|      */ | 
|     function runInNewContext(code: string, contextObject?: Context, options?: RunningScriptOptions | string): any; | 
|     /** | 
|      * `vm.runInThisContext()` compiles `code`, runs it within the context of the | 
|      * current `global` and returns the result. Running code does not have access to | 
|      * local scope, but does have access to the current `global` object. | 
|      * | 
|      * If `options` is a string, then it specifies the filename. | 
|      * | 
|      * The following example illustrates using both `vm.runInThisContext()` and | 
|      * the JavaScript [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) function to run the same code: | 
|      * | 
|      * ```js | 
|      * const vm = require('vm'); | 
|      * let localVar = 'initial value'; | 
|      * | 
|      * const vmResult = vm.runInThisContext('localVar = "vm";'); | 
|      * console.log(`vmResult: '${vmResult}', localVar: '${localVar}'`); | 
|      * // Prints: vmResult: 'vm', localVar: 'initial value' | 
|      * | 
|      * const evalResult = eval('localVar = "eval";'); | 
|      * console.log(`evalResult: '${evalResult}', localVar: '${localVar}'`); | 
|      * // Prints: evalResult: 'eval', localVar: 'eval' | 
|      * ``` | 
|      * | 
|      * Because `vm.runInThisContext()` does not have access to the local scope,`localVar` is unchanged. In contrast, | 
|      * [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) _does_ have access to the | 
|      * local scope, so the value `localVar` is changed. In this way`vm.runInThisContext()` is much like an [indirect `eval()` call](https://es5.github.io/#x10.4.2), e.g.`(0,eval)('code')`. | 
|      * | 
|      * ## Example: Running an HTTP server within a VM | 
|      * | 
|      * When using either `script.runInThisContext()` or {@link runInThisContext}, the code is executed within the current V8 global | 
|      * context. The code passed to this VM context will have its own isolated scope. | 
|      * | 
|      * In order to run a simple web server using the `http` module the code passed to | 
|      * the context must either call `require('http')` on its own, or have a reference | 
|      * to the `http` module passed to it. For instance: | 
|      * | 
|      * ```js | 
|      * 'use strict'; | 
|      * const vm = require('vm'); | 
|      * | 
|      * const code = ` | 
|      * ((require) => { | 
|      *   const http = require('http'); | 
|      * | 
|      *   http.createServer((request, response) => { | 
|      *     response.writeHead(200, { 'Content-Type': 'text/plain' }); | 
|      *     response.end('Hello World\\n'); | 
|      *   }).listen(8124); | 
|      * | 
|      *   console.log('Server running at http://127.0.0.1:8124/'); | 
|      * })`; | 
|      * | 
|      * vm.runInThisContext(code)(require); | 
|      * ``` | 
|      * | 
|      * The `require()` in the above case shares the state with the context it is | 
|      * passed from. This may introduce risks when untrusted code is executed, e.g. | 
|      * altering objects in the context in unwanted ways. | 
|      * @since v0.3.1 | 
|      * @param code The JavaScript code to compile and run. | 
|      * @return the result of the very last statement executed in the script. | 
|      */ | 
|     function runInThisContext(code: string, options?: RunningScriptOptions | string): any; | 
|     /** | 
|      * Compiles the given code into the provided context (if no context is | 
|      * supplied, the current context is used), and returns it wrapped inside a | 
|      * function with the given `params`. | 
|      * @since v10.10.0 | 
|      * @param code The body of the function to compile. | 
|      * @param params An array of strings containing all parameters for the function. | 
|      */ | 
|     function compileFunction(code: string, params?: ReadonlyArray<string>, options?: CompileFunctionOptions): Function; | 
|     /** | 
|      * Measure the memory known to V8 and used by all contexts known to the | 
|      * current V8 isolate, or the main context. | 
|      * | 
|      * The format of the object that the returned Promise may resolve with is | 
|      * specific to the V8 engine and may change from one version of V8 to the next. | 
|      * | 
|      * The returned result is different from the statistics returned by`v8.getHeapSpaceStatistics()` in that `vm.measureMemory()` measure the | 
|      * memory reachable by each V8 specific contexts in the current instance of | 
|      * the V8 engine, while the result of `v8.getHeapSpaceStatistics()` measure | 
|      * the memory occupied by each heap space in the current V8 instance. | 
|      * | 
|      * ```js | 
|      * const vm = require('vm'); | 
|      * // Measure the memory used by the main context. | 
|      * vm.measureMemory({ mode: 'summary' }) | 
|      *   // This is the same as vm.measureMemory() | 
|      *   .then((result) => { | 
|      *     // The current format is: | 
|      *     // { | 
|      *     //   total: { | 
|      *     //      jsMemoryEstimate: 2418479, jsMemoryRange: [ 2418479, 2745799 ] | 
|      *     //    } | 
|      *     // } | 
|      *     console.log(result); | 
|      *   }); | 
|      * | 
|      * const context = vm.createContext({ a: 1 }); | 
|      * vm.measureMemory({ mode: 'detailed', execution: 'eager' }) | 
|      *   .then((result) => { | 
|      *     // Reference the context here so that it won't be GC'ed | 
|      *     // until the measurement is complete. | 
|      *     console.log(context.a); | 
|      *     // { | 
|      *     //   total: { | 
|      *     //     jsMemoryEstimate: 2574732, | 
|      *     //     jsMemoryRange: [ 2574732, 2904372 ] | 
|      *     //   }, | 
|      *     //   current: { | 
|      *     //     jsMemoryEstimate: 2438996, | 
|      *     //     jsMemoryRange: [ 2438996, 2768636 ] | 
|      *     //   }, | 
|      *     //   other: [ | 
|      *     //     { | 
|      *     //       jsMemoryEstimate: 135736, | 
|      *     //       jsMemoryRange: [ 135736, 465376 ] | 
|      *     //     } | 
|      *     //   ] | 
|      *     // } | 
|      *     console.log(result); | 
|      *   }); | 
|      * ``` | 
|      * @since v13.10.0 | 
|      * @experimental | 
|      */ | 
|     function measureMemory(options?: MeasureMemoryOptions): Promise<MemoryMeasurement>; | 
| } | 
| declare module 'node:vm' { | 
|     export * from 'vm'; | 
| } |