// Generated by dts-bundle-generator v9.5.1

import * as winston from 'winston';
import { MessagePort as MessagePort$1 } from 'worker_threads';
import { z } from 'zod';

export declare enum Format {
	cjs = "commonjs",
	esm = "module"
}
export interface SourceFileMetadata {
	code: string;
	map: string;
	filename: string;
	hasInputMap: boolean;
	bundlerBuildId: string;
	bundlerBuildIdGenerated: boolean;
	file_path_checksum: number;
	file_checksum: number;
	functionIds: string[];
	sourceCodeHash: string;
	moduleBase: number;
	lineOffset?: number;
	columnOffset?: number;
	transformedLineOffset?: number;
	transformedColumnOffset?: number;
	mapRelativeToChunk?: string;
	indexOffset?: number;
	indexOffsetEnd?: number;
}
export declare function initGlobals(): void;
export declare function hookMessageChannel(): MessagePort$1;
declare class SafeLogger {
	name: string;
	logger?: winston.Logger;
	constructor(name: string);
	isValid(): boolean;
	log(level: string, message: string, ...meta: any): void;
	error(message: string, ...meta: any): void;
	warn(message: string, ...meta: any): void;
	info(message: string, ...meta: any): void;
	http(message: string, ...meta: any): void;
	verbose(message: string, ...meta: any): void;
	debug(message: string, ...meta: any): void;
	silly(message: string, ...meta: any): void;
}
export declare const customer_logger: winston.Logger;
export declare const app_logger: SafeLogger;
export declare const instrument_logger: SafeLogger;
export declare function shouldSupportSourceMap(): boolean;
export declare function patch(content: string, filename: string, format: Format, hudAppPort?: MessagePort$1): {
	code: string;
	map?: SourceFileMetadata[] | undefined;
};
export declare function combineSourceMaps(maps: SourceFileMetadata[], filename: string): string | undefined;
declare function onRequireFn<T>(exports: T, name: string, basedir?: string): T;
export declare function updateModuleChecker(): void;
declare const ObjectStoreConfigSchema: z.ZodUnion<[
	z.ZodObject<{
		type: z.ZodLiteral<"s3">;
	}, "strip", z.ZodTypeAny, {
		type: "s3";
	}, {
		type: "s3";
	}>,
	z.ZodObject<{
		type: z.ZodLiteral<"disk">;
		path: z.ZodString;
	}, "strip", z.ZodTypeAny, {
		type: "disk";
		path: string;
	}, {
		type: "disk";
		path: string;
	}>
]>;
export type ObjectStoreConfig = z.infer<typeof ObjectStoreConfigSchema>;
export type DurationRange = [
	bigint,
	bigint | null
];
export type InvocationSampling = Map<DurationRange, number>;
export type FrameworkPatchInfo = {
	version?: string;
	patcher?: string;
	enableEsbuild?: boolean;
	extraInfo?: any;
};
export type FrameworkConfig = Map<string, FrameworkPatchInfo>;
declare const HudDynamicConfigSchema: z.ZodObject<{
	aggregationInterval: z.ZodNumber;
	flowMetricInterval: z.ZodNumber;
	graphqlInterval: z.ZodNumber;
	aggregationFirstSendTimeout: z.ZodNumber;
	flowMetricFirstSendTimeout: z.ZodNumber;
	enableInvestigation: z.ZodBoolean;
	investigationRateLimits: z.ZodObject<{
		maxSameInvestigations: z.ZodNumber;
		sameInvestigationTimeWindowMs: z.ZodNumber;
		maxTotalInvestigations: z.ZodNumber;
		totalInvestigationTimeWindowMs: z.ZodNumber;
	}, "strip", z.ZodTypeAny, {
		maxSameInvestigations: number;
		sameInvestigationTimeWindowMs: number;
		maxTotalInvestigations: number;
		totalInvestigationTimeWindowMs: number;
	}, {
		maxSameInvestigations: number;
		sameInvestigationTimeWindowMs: number;
		maxTotalInvestigations: number;
		totalInvestigationTimeWindowMs: number;
	}>;
}, "strip", z.ZodTypeAny, {
	aggregationInterval: number;
	flowMetricInterval: number;
	graphqlInterval: number;
	aggregationFirstSendTimeout: number;
	flowMetricFirstSendTimeout: number;
	enableInvestigation: boolean;
	investigationRateLimits: {
		maxSameInvestigations: number;
		sameInvestigationTimeWindowMs: number;
		maxTotalInvestigations: number;
		totalInvestigationTimeWindowMs: number;
	};
}, {
	aggregationInterval: number;
	flowMetricInterval: number;
	graphqlInterval: number;
	aggregationFirstSendTimeout: number;
	flowMetricFirstSendTimeout: number;
	enableInvestigation: boolean;
	investigationRateLimits: {
		maxSameInvestigations: number;
		sameInvestigationTimeWindowMs: number;
		maxTotalInvestigations: number;
		totalInvestigationTimeWindowMs: number;
	};
}>;
export type HudDynamicConfig = z.infer<typeof HudDynamicConfigSchema>;
declare const HudInitOptionsSchema: z.ZodObject<{
	includeModules: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
	includeModules?: string[] | undefined;
}, {
	includeModules?: string[] | undefined;
}>;
export type HudInitOptions = z.infer<typeof HudInitOptionsSchema>;
declare const RawUserConfigSchema: z.ZodObject<{
	includeModules: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
} & {
	key: z.ZodOptional<z.ZodString>;
	service: z.ZodOptional<z.ZodString>;
	enable: z.ZodOptional<z.ZodBoolean>;
	enableDapulse: z.ZodOptional<z.ZodBoolean>;
	maxInstrumentedFunctions: z.ZodOptional<z.ZodNumber>;
	minPodMemoryLimit: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
	includeModules?: string[] | undefined;
	key?: string | undefined;
	service?: string | undefined;
	enable?: boolean | undefined;
	enableDapulse?: boolean | undefined;
	maxInstrumentedFunctions?: number | undefined;
	minPodMemoryLimit?: number | undefined;
}, {
	includeModules?: string[] | undefined;
	key?: string | undefined;
	service?: string | undefined;
	enable?: boolean | undefined;
	enableDapulse?: boolean | undefined;
	maxInstrumentedFunctions?: number | undefined;
	minPodMemoryLimit?: number | undefined;
}>;
export type RawUserConfig = z.infer<typeof RawUserConfigSchema>;
export type UserConfigSource = "INIT" | "ENV" | "CONFIG_FILE" | "CONFIG_ENV" | "SETUP" | "DEFAULT";
export type UserConfig = {
	[K in keyof RawUserConfig]: {
		value: RawUserConfig[K];
		source: UserConfigSource;
	};
};
export declare function updateUserConfigFromEnv(): void;
export declare function updateUserConfigFromFile(OnInvalidZod: (path: string, jsonPath: string) => void, onInvalidJson: (path: string, message: string) => void, onInvalidFileAccesss: (path: string) => void): void;
export declare function isValidUserInput(): boolean;
export interface HudConfig {
	sink: {
		url: string;
		timeout: number;
		session_attr: string;
	};
	endpoints: {
		init: string;
		send: string;
		batch: string;
		logs: string;
		fatalError: string;
		getMode: string;
		getRemoteConfig: string;
		fileDeclarations: string;
		sourceMap: string;
		storeObject: string;
	};
	logger: {
		[key: string]: {
			levels: {
				[key: string]: string;
			};
		};
	};
	investigation: {
		objectVersion: string;
		store: ObjectStoreConfig;
		blacklistParams: string[];
		censorshipRegexes: {
			regex: RegExp;
			replacement: string;
		}[];
		maxStringLength: number;
		maxArrayLength: number;
		maxObjectDepth: number;
		limits: {
			executionFlowMaxLength: number;
			exceptionMaxLength: number;
		};
	};
	userConfig: UserConfig;
	loggerWorkerPortSizeLimit: number;
	customerLoggerLevel: string;
	logDirectory?: string;
	hudModuleName: string;
	invocationSampling: InvocationSampling;
	modeInterval: number;
	callerResetInterval: number;
	logsSendInterval: number;
	logPerfInterval: number;
	endpointsInterval: number;
	endpointsFirstSendWaitTime: number;
	huddBinWidth: number;
	workerGrace: number;
	workerTimeout: number;
	timeoutOnInit: number;
	timeoutOnRegister: number;
	timeoutOnMetrics: number;
	workerMessageTimeout: number;
	communicationBatchSize: number;
	writePatched: boolean;
	defaultOff: boolean;
	disableOnBadApiKey: boolean;
	disableOnBadServiceName: boolean;
	cpuTimeCollection: boolean;
	workloadMetadata: {
		sendInterval: number;
		aws: {
			imds: {
				baseURL: string;
				tokenURI: string;
				identityURI: string;
				lifeCycleURI: string;
				requestTimeout: number;
			};
			metadataFile: string;
		};
		kubernetes: {
			namespaceFile: string;
			uuidFile: string;
			podMemoryLimitFile: string;
			podCPULimitFile: string;
		};
	};
	deleteLogsAfterSending: boolean;
	supportSourceMap: boolean;
	editInline: boolean;
	bundlerBuildIdVarName: string;
	bundlerBuildUuidNamespace: string;
	functionUuidNamespace: string;
	wrapVarPrefix: string;
	functionIdVarName: string;
	frameworksToPatch: FrameworkConfig;
	communicationKeepalive: boolean;
	communicationKeepaliveGrace: number;
	maxWrappedFileSize: number;
	express: {
		layerStateVarName: string;
		routeNamesVarName: string;
		markedVarName: string;
		wrapAllCallbacks: boolean;
	};
	supportedNodeVersions: string[];
	hudPatchedName: string;
	hudMetricName: string;
	dynamicConfig: HudDynamicConfig;
	isInvestigationEnabledByEnv: boolean;
	suppressTraces: boolean;
	lambdaMinimunMemory: number;
	lambdaBaseGivenTime: number;
	lambdaExtraGivenTimePerRequest: number;
	lambdaMaxGivenTime: number;
	throttleStatusCode: number;
	esbuildPluginMessagePrefix: string;
	esbuildGlobalVar: string;
	esbuildMark: string;
	esbuildMarkLength: number;
	esbuildUploadSourceMapTimeout: number;
	esbuildPluginLogsChunkSize: number;
	esbuildPluginLogsBatchSize: number;
	pluginsLogEndpoint: string;
	fileless: boolean;
	maxInstrumentedFunctions: number;
	minPodMemoryLimit: number;
	uninstrumentedFilesLogThreshold: number;
	tsNodeConfigTimeout: number;
}
export declare const hudConfig: HudConfig;
export function init(apiKey?: string, service?: string, options?: HudInitOptions): Promise<void>;
export declare function isValidParam<T>(p: T | null | undefined): p is Exclude<T, null | undefined>;
export declare function _detachHud(shouldLogToUser?: boolean, forceLogToUser?: boolean): void;
export declare function onRequire(): void;
export type LogLevel = "error" | "warn" | "info" | "debug";
export type UserLog = {
	level: LogLevel;
	message: string;
	errCode?: string;
	moreInfo?: boolean;
};
export declare class HudError extends Error {
	code: number;
	name: string;
	constructor(message?: string);
}
export type UserErrorTypes = "HudEnableNotSet" | "HudApiKeyNotSet" | "HudApiKeyInvalid" | "HudServiceNotSet" | "HudServiceInvalid" | "BothApiKeyAndServiceNotSet" | "InvalidTag" | "TagWithDots" | "TagsInvalidJson" | "ShutdownGracefully" | "UnsupportedNodeVersion" | "UnsupportedSyntax" | "ApiKeyDenied" | "UnsupportedLambdaMemory" | "JSONErrorInUserConfig" | "ZodErrorInUserConfig" | "ConfigInaccessible" | "InstrumentedFunctionCountExceeded" | "PodMemoryLimitTooLow" | "DebuggerAttached" | "LambdaNotViaLayer" | "TsNodeNotTranspileOnly" | "TsNodeNotFoundEvenThoughRunWithTsNode" | "EsbuildMissingKey" | "EsbuildFailedProcessingFile" | "EsbuildFailedBundling" | "EsbuildFailedParsingSourcemap" | "EsbuildFailedUploadingSourcemap" | "EsbuildFailedUploadingSourcemapUnauthorized" | "EsbuildUnsupportedPlatform" | "SetupCalledWithoutKey" | "SetupCalledWithoutService" | "InitSessionBeforeRegister" | "HudEnableIsFalse" | "UninstrumentedFilesLogThresholdExceeded" | "UninstrumentedFrameworks" | "UnsupportedFrameworkVersion" | "RegisterMisplacedNoDeclarations" | "YesDeclarationsNoMetrics" | "InitTimeout" | "RunningInBun" | "RunningOnWindows" | "UnsupportedNativeBuild";
export declare const UserErrorLogs: Record<UserErrorTypes, (...args: any[]) => UserLog>;
export interface MemoryInfo {
	podMemoryLimitMB: number | null;
	source: string | null;
}
export declare function getMemoryLimitInfo(): MemoryInfo;
export declare function isMemoryLimitBigEnough(memoryInfo: MemoryInfo): boolean;
export declare function isSupportedNative(): boolean;
export declare function shouldRunHud(): {
	shouldRun: true;
} | {
	shouldRun: false;
	error: UserLog;
};
export interface CallContext {
	wrappedCaller: string;
	sample_flag?: boolean;
	start: bigint;
	end: bigint;
	currentFlowId: string;
	fixFlag?: boolean;
}
declare function _hudWrapperInitial(functionId: string, callContext: CallContext): void;
declare function _hudWrapperCatch(functionId: string, callContext: any, e: unknown): void;
declare function _hudWrapperFinally(functionId: string, callContext: any): void;
declare function _hudFixStack(functionId: string, callContext: any): void;
export declare function asyncIteratorWrapper(iter: Iterable<any> | AsyncIterable<any>): AsyncIterator<any, any, any>;
export declare const wrapperInitial: typeof _hudWrapperInitial;
export declare const wrapperCatch: typeof _hudWrapperCatch;
export declare const wrapperFinally: typeof _hudWrapperFinally;
export declare const fixStack: typeof _hudFixStack;
export declare function getUserTsNodeConfig(logToUser?: boolean): {
	cwd?: string;
	project?: string;
	projectSearchDir?: string;
} | undefined;
export declare const hudRITM: typeof onRequireFn;
export declare function infoSafeLog(message: string): void;
export declare function errorSafeLog(message: string): void;

export {};
