/// import type * as fs from 'fs'; import type * as api from '@opentelemetry/api'; import type { InstrumentationConfig } from '@opentelemetry/instrumentation'; export type FunctionPropertyNames = Exclude<{ [K in keyof T]: T[K] extends Function ? K : never; }[keyof T], undefined>; export type FunctionProperties = Pick>; export type FunctionPropertyNamesTwoLevels = Exclude<{ [K in keyof T]: { [L in keyof T[K]]: L extends string ? T[K][L] extends Function ? K extends string ? L extends string ? `${K}.${L}` : never : never : never : never; }[keyof T[K]]; }[keyof T], undefined>; export type Member = FunctionPropertyNames | FunctionPropertyNamesTwoLevels; export type FMember = FunctionPropertyNames | FunctionPropertyNamesTwoLevels; export type FPMember = FunctionPropertyNames<(typeof fs)['promises']> | FunctionPropertyNamesTwoLevels<(typeof fs)['promises']>; export type CreateHook = (functionName: FMember | FPMember, info: { args: ArrayLike; }) => boolean; export type EndHook = (functionName: FMember | FPMember, info: { args: ArrayLike; span: api.Span; error?: Error; }) => void; export interface FsInstrumentationConfig extends InstrumentationConfig { createHook?: CreateHook; endHook?: EndHook; requireParentSpan?: boolean; } //# sourceMappingURL=types.d.ts.map