| /** | 
|  * This module provides an implementation of a subset of the W3C [Web Performance APIs](https://w3c.github.io/perf-timing-primer/) as well as additional APIs for | 
|  * Node.js-specific performance measurements. | 
|  * | 
|  * Node.js supports the following [Web Performance APIs](https://w3c.github.io/perf-timing-primer/): | 
|  * | 
|  * * [High Resolution Time](https://www.w3.org/TR/hr-time-2) | 
|  * * [Performance Timeline](https://w3c.github.io/performance-timeline/) | 
|  * * [User Timing](https://www.w3.org/TR/user-timing/) | 
|  * | 
|  * ```js | 
|  * const { PerformanceObserver, performance } = require('perf_hooks'); | 
|  * | 
|  * const obs = new PerformanceObserver((items) => { | 
|  *   console.log(items.getEntries()[0].duration); | 
|  *   performance.clearMarks(); | 
|  * }); | 
|  * obs.observe({ type: 'measure' }); | 
|  * performance.measure('Start to Now'); | 
|  * | 
|  * performance.mark('A'); | 
|  * doSomeLongRunningProcess(() => { | 
|  *   performance.measure('A to Now', 'A'); | 
|  * | 
|  *   performance.mark('B'); | 
|  *   performance.measure('A to B', 'A', 'B'); | 
|  * }); | 
|  * ``` | 
|  * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/perf_hooks.js) | 
|  */ | 
| declare module 'perf_hooks' { | 
|     import { AsyncResource } from 'node:async_hooks'; | 
|     type EntryType = 'node' | 'mark' | 'measure' | 'gc' | 'function' | 'http2' | 'http'; | 
|     interface NodeGCPerformanceDetail { | 
|         /** | 
|          * When `performanceEntry.entryType` is equal to 'gc', `the performance.kind` property identifies | 
|          * the type of garbage collection operation that occurred. | 
|          * See perf_hooks.constants for valid values. | 
|          */ | 
|         readonly kind?: number | undefined; | 
|         /** | 
|          * When `performanceEntry.entryType` is equal to 'gc', the `performance.flags` | 
|          * property contains additional information about garbage collection operation. | 
|          * See perf_hooks.constants for valid values. | 
|          */ | 
|         readonly flags?: number | undefined; | 
|     } | 
|     /** | 
|      * @since v8.5.0 | 
|      */ | 
|     class PerformanceEntry { | 
|         protected constructor(); | 
|         /** | 
|          * The total number of milliseconds elapsed for this entry. This value will not | 
|          * be meaningful for all Performance Entry types. | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly duration: number; | 
|         /** | 
|          * The name of the performance entry. | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly name: string; | 
|         /** | 
|          * The high resolution millisecond timestamp marking the starting time of the | 
|          * Performance Entry. | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly startTime: number; | 
|         /** | 
|          * The type of the performance entry. It may be one of: | 
|          * | 
|          * * `'node'` (Node.js only) | 
|          * * `'mark'` (available on the Web) | 
|          * * `'measure'` (available on the Web) | 
|          * * `'gc'` (Node.js only) | 
|          * * `'function'` (Node.js only) | 
|          * * `'http2'` (Node.js only) | 
|          * * `'http'` (Node.js only) | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly entryType: EntryType; | 
|         /** | 
|          * Additional detail specific to the `entryType`. | 
|          * @since v16.0.0 | 
|          */ | 
|         readonly detail?: NodeGCPerformanceDetail | unknown | undefined; // TODO: Narrow this based on entry type. | 
|         toJSON(): any; | 
|     } | 
|     class PerformanceMark extends PerformanceEntry { | 
|         readonly duration: 0; | 
|         readonly entryType: 'mark'; | 
|     } | 
|     class PerformanceMeasure extends PerformanceEntry { | 
|         readonly entryType: 'measure'; | 
|     } | 
|     /** | 
|      * _This property is an extension by Node.js. It is not available in Web browsers._ | 
|      * | 
|      * Provides timing details for Node.js itself. The constructor of this class | 
|      * is not exposed to users. | 
|      * @since v8.5.0 | 
|      */ | 
|     class PerformanceNodeTiming extends PerformanceEntry { | 
|         /** | 
|          * The high resolution millisecond timestamp at which the Node.js process | 
|          * completed bootstrapping. If bootstrapping has not yet finished, the property | 
|          * has the value of -1. | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly bootstrapComplete: number; | 
|         /** | 
|          * The high resolution millisecond timestamp at which the Node.js environment was | 
|          * initialized. | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly environment: number; | 
|         /** | 
|          * The high resolution millisecond timestamp of the amount of time the event loop | 
|          * has been idle within the event loop's event provider (e.g. `epoll_wait`). This | 
|          * does not take CPU usage into consideration. If the event loop has not yet | 
|          * started (e.g., in the first tick of the main script), the property has the | 
|          * value of 0. | 
|          * @since v14.10.0, v12.19.0 | 
|          */ | 
|         readonly idleTime: number; | 
|         /** | 
|          * The high resolution millisecond timestamp at which the Node.js event loop | 
|          * exited. If the event loop has not yet exited, the property has the value of -1\. | 
|          * It can only have a value of not -1 in a handler of the `'exit'` event. | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly loopExit: number; | 
|         /** | 
|          * The high resolution millisecond timestamp at which the Node.js event loop | 
|          * started. If the event loop has not yet started (e.g., in the first tick of the | 
|          * main script), the property has the value of -1. | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly loopStart: number; | 
|         /** | 
|          * The high resolution millisecond timestamp at which the V8 platform was | 
|          * initialized. | 
|          * @since v8.5.0 | 
|          */ | 
|         readonly v8Start: number; | 
|     } | 
|     interface EventLoopUtilization { | 
|         idle: number; | 
|         active: number; | 
|         utilization: number; | 
|     } | 
|     /** | 
|      * @param util1 The result of a previous call to eventLoopUtilization() | 
|      * @param util2 The result of a previous call to eventLoopUtilization() prior to util1 | 
|      */ | 
|     type EventLoopUtilityFunction = (util1?: EventLoopUtilization, util2?: EventLoopUtilization) => EventLoopUtilization; | 
|     interface MarkOptions { | 
|         /** | 
|          * Additional optional detail to include with the mark. | 
|          */ | 
|         detail?: unknown | undefined; | 
|         /** | 
|          * An optional timestamp to be used as the mark time. | 
|          * @default `performance.now()`. | 
|          */ | 
|         startTime?: number | undefined; | 
|     } | 
|     interface MeasureOptions { | 
|         /** | 
|          * Additional optional detail to include with the mark. | 
|          */ | 
|         detail?: unknown | undefined; | 
|         /** | 
|          * Duration between start and end times. | 
|          */ | 
|         duration?: number | undefined; | 
|         /** | 
|          * Timestamp to be used as the end time, or a string identifying a previously recorded mark. | 
|          */ | 
|         end?: number | string | undefined; | 
|         /** | 
|          * Timestamp to be used as the start time, or a string identifying a previously recorded mark. | 
|          */ | 
|         start?: number | string | undefined; | 
|     } | 
|     interface TimerifyOptions { | 
|         /** | 
|          * A histogram object created using | 
|          * `perf_hooks.createHistogram()` that will record runtime durations in | 
|          * nanoseconds. | 
|          */ | 
|         histogram?: RecordableHistogram | undefined; | 
|     } | 
|     interface Performance { | 
|         /** | 
|          * If name is not provided, removes all PerformanceMark objects from the Performance Timeline. | 
|          * If name is provided, removes only the named mark. | 
|          * @param name | 
|          */ | 
|         clearMarks(name?: string): void; | 
|         /** | 
|          * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline. | 
|          * If name is provided, removes only the named measure. | 
|          * @param name | 
|          * @since v16.7.0 | 
|          */ | 
|         clearMeasures(name?: string): void; | 
|         /** | 
|          * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime`. | 
|          * If you are only interested in performance entries of certain types or that have certain names, see | 
|          * `performance.getEntriesByType()` and `performance.getEntriesByName()`. | 
|          * @since v16.7.0 | 
|          */ | 
|         getEntries(): PerformanceEntry[]; | 
|         /** | 
|          * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` | 
|          * whose `performanceEntry.name` is equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to `type`. | 
|          * @param name | 
|          * @param type | 
|          * @since v16.7.0 | 
|          */ | 
|         getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; | 
|         /** | 
|          * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` | 
|          * whose `performanceEntry.entryType` is equal to `type`. | 
|          * @param type | 
|          * @since v16.7.0 | 
|          */ | 
|         getEntriesByType(type: EntryType): PerformanceEntry[]; | 
|         /** | 
|          * Creates a new PerformanceMark entry in the Performance Timeline. | 
|          * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark', | 
|          * and whose performanceEntry.duration is always 0. | 
|          * Performance marks are used to mark specific significant moments in the Performance Timeline. | 
|          * @param name | 
|          * @return The PerformanceMark entry that was created | 
|          */ | 
|         mark(name?: string, options?: MarkOptions): PerformanceMark; | 
|         /** | 
|          * Creates a new PerformanceMeasure entry in the Performance Timeline. | 
|          * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure', | 
|          * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark. | 
|          * | 
|          * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify | 
|          * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist, | 
|          * then startMark is set to timeOrigin by default. | 
|          * | 
|          * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp | 
|          * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown. | 
|          * @param name | 
|          * @param startMark | 
|          * @param endMark | 
|          * @return The PerformanceMeasure entry that was created | 
|          */ | 
|         measure(name: string, startMark?: string, endMark?: string): PerformanceMeasure; | 
|         measure(name: string, options: MeasureOptions): PerformanceMeasure; | 
|         /** | 
|          * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones. | 
|          */ | 
|         readonly nodeTiming: PerformanceNodeTiming; | 
|         /** | 
|          * @return the current high resolution millisecond timestamp | 
|          */ | 
|         now(): number; | 
|         /** | 
|          * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured. | 
|          */ | 
|         readonly timeOrigin: number; | 
|         /** | 
|          * Wraps a function within a new function that measures the running time of the wrapped function. | 
|          * A PerformanceObserver must be subscribed to the 'function' event type in order for the timing details to be accessed. | 
|          * @param fn | 
|          */ | 
|         timerify<T extends (...params: any[]) => any>(fn: T, options?: TimerifyOptions): T; | 
|         /** | 
|          * eventLoopUtilization is similar to CPU utilization except that it is calculated using high precision wall-clock time. | 
|          * It represents the percentage of time the event loop has spent outside the event loop's event provider (e.g. epoll_wait). | 
|          * No other CPU idle time is taken into consideration. | 
|          */ | 
|         eventLoopUtilization: EventLoopUtilityFunction; | 
|     } | 
|     interface PerformanceObserverEntryList { | 
|         /** | 
|          * Returns a list of `PerformanceEntry` objects in chronological order | 
|          * with respect to `performanceEntry.startTime`. | 
|          * | 
|          * ```js | 
|          * const { | 
|          *   performance, | 
|          *   PerformanceObserver | 
|          * } = require('perf_hooks'); | 
|          * | 
|          * const obs = new PerformanceObserver((perfObserverList, observer) => { | 
|          *   console.log(perfObserverList.getEntries()); | 
|          * | 
|          *    * [ | 
|          *    *   PerformanceEntry { | 
|          *    *     name: 'test', | 
|          *    *     entryType: 'mark', | 
|          *    *     startTime: 81.465639, | 
|          *    *     duration: 0 | 
|          *    *   }, | 
|          *    *   PerformanceEntry { | 
|          *    *     name: 'meow', | 
|          *    *     entryType: 'mark', | 
|          *    *     startTime: 81.860064, | 
|          *    *     duration: 0 | 
|          *    *   } | 
|          *    * ] | 
|          * | 
|          * | 
|          *   performance.clearMarks(); | 
|          *   performance.clearMeasures(); | 
|          *   observer.disconnect(); | 
|          * }); | 
|          * obs.observe({ type: 'mark' }); | 
|          * | 
|          * performance.mark('test'); | 
|          * performance.mark('meow'); | 
|          * ``` | 
|          * @since v8.5.0 | 
|          */ | 
|         getEntries(): PerformanceEntry[]; | 
|         /** | 
|          * Returns a list of `PerformanceEntry` objects in chronological order | 
|          * with respect to `performanceEntry.startTime` whose `performanceEntry.name` is | 
|          * equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to`type`. | 
|          * | 
|          * ```js | 
|          * const { | 
|          *   performance, | 
|          *   PerformanceObserver | 
|          * } = require('perf_hooks'); | 
|          * | 
|          * const obs = new PerformanceObserver((perfObserverList, observer) => { | 
|          *   console.log(perfObserverList.getEntriesByName('meow')); | 
|          * | 
|          *    * [ | 
|          *    *   PerformanceEntry { | 
|          *    *     name: 'meow', | 
|          *    *     entryType: 'mark', | 
|          *    *     startTime: 98.545991, | 
|          *    *     duration: 0 | 
|          *    *   } | 
|          *    * ] | 
|          * | 
|          *   console.log(perfObserverList.getEntriesByName('nope')); // [] | 
|          * | 
|          *   console.log(perfObserverList.getEntriesByName('test', 'mark')); | 
|          * | 
|          *    * [ | 
|          *    *   PerformanceEntry { | 
|          *    *     name: 'test', | 
|          *    *     entryType: 'mark', | 
|          *    *     startTime: 63.518931, | 
|          *    *     duration: 0 | 
|          *    *   } | 
|          *    * ] | 
|          * | 
|          *   console.log(perfObserverList.getEntriesByName('test', 'measure')); // [] | 
|          * | 
|          *   performance.clearMarks(); | 
|          *   performance.clearMeasures(); | 
|          *   observer.disconnect(); | 
|          * }); | 
|          * obs.observe({ entryTypes: ['mark', 'measure'] }); | 
|          * | 
|          * performance.mark('test'); | 
|          * performance.mark('meow'); | 
|          * ``` | 
|          * @since v8.5.0 | 
|          */ | 
|         getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; | 
|         /** | 
|          * Returns a list of `PerformanceEntry` objects in chronological order | 
|          * with respect to `performanceEntry.startTime` whose `performanceEntry.entryType`is equal to `type`. | 
|          * | 
|          * ```js | 
|          * const { | 
|          *   performance, | 
|          *   PerformanceObserver | 
|          * } = require('perf_hooks'); | 
|          * | 
|          * const obs = new PerformanceObserver((perfObserverList, observer) => { | 
|          *   console.log(perfObserverList.getEntriesByType('mark')); | 
|          * | 
|          *    * [ | 
|          *    *   PerformanceEntry { | 
|          *    *     name: 'test', | 
|          *    *     entryType: 'mark', | 
|          *    *     startTime: 55.897834, | 
|          *    *     duration: 0 | 
|          *    *   }, | 
|          *    *   PerformanceEntry { | 
|          *    *     name: 'meow', | 
|          *    *     entryType: 'mark', | 
|          *    *     startTime: 56.350146, | 
|          *    *     duration: 0 | 
|          *    *   } | 
|          *    * ] | 
|          * | 
|          *   performance.clearMarks(); | 
|          *   performance.clearMeasures(); | 
|          *   observer.disconnect(); | 
|          * }); | 
|          * obs.observe({ type: 'mark' }); | 
|          * | 
|          * performance.mark('test'); | 
|          * performance.mark('meow'); | 
|          * ``` | 
|          * @since v8.5.0 | 
|          */ | 
|         getEntriesByType(type: EntryType): PerformanceEntry[]; | 
|     } | 
|     type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void; | 
|     class PerformanceObserver extends AsyncResource { | 
|         constructor(callback: PerformanceObserverCallback); | 
|         /** | 
|          * Disconnects the `PerformanceObserver` instance from all notifications. | 
|          * @since v8.5.0 | 
|          */ | 
|         disconnect(): void; | 
|         /** | 
|          * Subscribes the `PerformanceObserver` instance to notifications of new `PerformanceEntry` instances identified either by `options.entryTypes`or `options.type`: | 
|          * | 
|          * ```js | 
|          * const { | 
|          *   performance, | 
|          *   PerformanceObserver | 
|          * } = require('perf_hooks'); | 
|          * | 
|          * const obs = new PerformanceObserver((list, observer) => { | 
|          *   // Called once asynchronously. `list` contains three items. | 
|          * }); | 
|          * obs.observe({ type: 'mark' }); | 
|          * | 
|          * for (let n = 0; n < 3; n++) | 
|          *   performance.mark(`test${n}`); | 
|          * ``` | 
|          * @since v8.5.0 | 
|          */ | 
|         observe( | 
|             options: | 
|                 | { | 
|                       entryTypes: ReadonlyArray<EntryType>; | 
|                       buffered?: boolean | undefined; | 
|                   } | 
|                 | { | 
|                       type: EntryType; | 
|                       buffered?: boolean | undefined; | 
|                   } | 
|         ): void; | 
|     } | 
|     namespace constants { | 
|         const NODE_PERFORMANCE_GC_MAJOR: number; | 
|         const NODE_PERFORMANCE_GC_MINOR: number; | 
|         const NODE_PERFORMANCE_GC_INCREMENTAL: number; | 
|         const NODE_PERFORMANCE_GC_WEAKCB: number; | 
|         const NODE_PERFORMANCE_GC_FLAGS_NO: number; | 
|         const NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED: number; | 
|         const NODE_PERFORMANCE_GC_FLAGS_FORCED: number; | 
|         const NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING: number; | 
|         const NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE: number; | 
|         const NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY: number; | 
|         const NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE: number; | 
|     } | 
|     const performance: Performance; | 
|     interface EventLoopMonitorOptions { | 
|         /** | 
|          * The sampling rate in milliseconds. | 
|          * Must be greater than zero. | 
|          * @default 10 | 
|          */ | 
|         resolution?: number | undefined; | 
|     } | 
|     interface Histogram { | 
|         /** | 
|          * Returns a `Map` object detailing the accumulated percentile distribution. | 
|          * @since v11.10.0 | 
|          */ | 
|         readonly percentiles: Map<number, number>; | 
|         /** | 
|          * The number of times the event loop delay exceeded the maximum 1 hour event | 
|          * loop delay threshold. | 
|          * @since v11.10.0 | 
|          */ | 
|         readonly exceeds: number; | 
|         /** | 
|          * The minimum recorded event loop delay. | 
|          * @since v11.10.0 | 
|          */ | 
|         readonly min: number; | 
|         /** | 
|          * The maximum recorded event loop delay. | 
|          * @since v11.10.0 | 
|          */ | 
|         readonly max: number; | 
|         /** | 
|          * The mean of the recorded event loop delays. | 
|          * @since v11.10.0 | 
|          */ | 
|         readonly mean: number; | 
|         /** | 
|          * The standard deviation of the recorded event loop delays. | 
|          * @since v11.10.0 | 
|          */ | 
|         readonly stddev: number; | 
|         /** | 
|          * Resets the collected histogram data. | 
|          * @since v11.10.0 | 
|          */ | 
|         reset(): void; | 
|         /** | 
|          * Returns the value at the given percentile. | 
|          * @since v11.10.0 | 
|          * @param percentile A percentile value in the range (0, 100]. | 
|          */ | 
|         percentile(percentile: number): number; | 
|     } | 
|     interface IntervalHistogram extends Histogram { | 
|         /** | 
|          * Enables the update interval timer. Returns `true` if the timer was | 
|          * started, `false` if it was already started. | 
|          * @since v11.10.0 | 
|          */ | 
|         enable(): boolean; | 
|         /** | 
|          * Disables the update interval timer. Returns `true` if the timer was | 
|          * stopped, `false` if it was already stopped. | 
|          * @since v11.10.0 | 
|          */ | 
|         disable(): boolean; | 
|     } | 
|     interface RecordableHistogram extends Histogram { | 
|         /** | 
|          * @since v15.9.0, v14.18.0 | 
|          * @param val The amount to record in the histogram. | 
|          */ | 
|         record(val: number | bigint): void; | 
|         /** | 
|          * Calculates the amount of time (in nanoseconds) that has passed since the | 
|          * previous call to `recordDelta()` and records that amount in the histogram. | 
|          * | 
|          * ## Examples | 
|          * @since v15.9.0, v14.18.0 | 
|          */ | 
|         recordDelta(): void; | 
|         /** | 
|          * Adds the values from other to this histogram. | 
|          * @since v17.4.0, v16.14.0 | 
|          * @param other Recordable Histogram to combine with | 
|          */ | 
|          add(other: RecordableHistogram): void; | 
|     } | 
|     /** | 
|      * _This property is an extension by Node.js. It is not available in Web browsers._ | 
|      * | 
|      * Creates an `IntervalHistogram` object that samples and reports the event loop | 
|      * delay over time. The delays will be reported in nanoseconds. | 
|      * | 
|      * Using a timer to detect approximate event loop delay works because the | 
|      * execution of timers is tied specifically to the lifecycle of the libuv | 
|      * event loop. That is, a delay in the loop will cause a delay in the execution | 
|      * of the timer, and those delays are specifically what this API is intended to | 
|      * detect. | 
|      * | 
|      * ```js | 
|      * const { monitorEventLoopDelay } = require('perf_hooks'); | 
|      * const h = monitorEventLoopDelay({ resolution: 20 }); | 
|      * h.enable(); | 
|      * // Do something. | 
|      * h.disable(); | 
|      * console.log(h.min); | 
|      * console.log(h.max); | 
|      * console.log(h.mean); | 
|      * console.log(h.stddev); | 
|      * console.log(h.percentiles); | 
|      * console.log(h.percentile(50)); | 
|      * console.log(h.percentile(99)); | 
|      * ``` | 
|      * @since v11.10.0 | 
|      */ | 
|     function monitorEventLoopDelay(options?: EventLoopMonitorOptions): IntervalHistogram; | 
|     interface CreateHistogramOptions { | 
|         /** | 
|          * The minimum recordable value. Must be an integer value greater than 0. | 
|          * @default 1 | 
|          */ | 
|         min?: number | bigint | undefined; | 
|         /** | 
|          * The maximum recordable value. Must be an integer value greater than min. | 
|          * @default Number.MAX_SAFE_INTEGER | 
|          */ | 
|         max?: number | bigint | undefined; | 
|         /** | 
|          * The number of accuracy digits. Must be a number between 1 and 5. | 
|          * @default 3 | 
|          */ | 
|         figures?: number | undefined; | 
|     } | 
|     /** | 
|      * Returns a `RecordableHistogram`. | 
|      * @since v15.9.0, v14.18.0 | 
|      */ | 
|     function createHistogram(options?: CreateHistogramOptions): RecordableHistogram; | 
|   | 
|     import { performance as _performance } from 'perf_hooks'; | 
|     global { | 
|         /** | 
|          * `performance` is a global reference for `require('perf_hooks').performance` | 
|          * https://nodejs.org/api/globals.html#performance | 
|          * @since v16.0.0 | 
|          */ | 
|         var performance: typeof globalThis extends { | 
|             onmessage: any; | 
|             performance: infer T; | 
|         } | 
|             ? T | 
|             : typeof _performance; | 
|     } | 
| } | 
| declare module 'node:perf_hooks' { | 
|     export * from 'perf_hooks'; | 
| } |