///
import type * as fs from 'fs';
import type * as api from '@opentelemetry/api';
import type { InstrumentationConfig } from '@opentelemetry/instrumentation';
export declare type FunctionPropertyNames = Exclude<{
[K in keyof T]: T[K] extends Function ? K : never;
}[keyof T], undefined>;
export declare type FunctionProperties = Pick>;
export declare 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 declare type Member = FunctionPropertyNames | FunctionPropertyNamesTwoLevels;
export declare type FMember = FunctionPropertyNames | FunctionPropertyNamesTwoLevels;
export declare type FPMember = FunctionPropertyNames<(typeof fs)['promises']> | FunctionPropertyNamesTwoLevels<(typeof fs)['promises']>;
export declare type CreateHook = (functionName: FMember | FPMember, info: {
args: ArrayLike;
}) => boolean;
export declare 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