export type AgentMessage = { message: Buffer; }; export type Parsers = { [key: number]: Parser; }; export type Parser = (b: Buffer, s: ParserState, p: (b: Buffer) => ParsedMessage[]) => ParsedMessage[]; export type ParserState = { lastBatchId: number | undefined; }; export type ParsedMessage = CT_PROCESS_START | CT_PROCESS_END | CT_PROCESS_FREQUENCY | CT_THREAD_START | CT_THREAD_START_2 | CT_THREAD_END | CT_PROCESS_TYPE | CT_METHODINFO2 | CT_BEGIN | CT_END | CT_SQL_INFORMATION | CT_HTTP_INCOMING_INFORMATION | CT_HTTP_OUTGOING_INFORMATION | CT_BEGIN_TRANSACTION | CT_END_TRANSACTION | CT_EXCEPTION_THROWN_2; export type ParsedMessageCommon = { length: number; threadId: number; pid: number; timestamp: number; }; export type CT_PROCESS_START = ParsedMessageCommon & { type: 'CT_PROCESS_START'; }; export type CT_PROCESS_END = ParsedMessageCommon & { type: 'CT_PROCESS_END'; }; export type CT_PROCESS_FREQUENCY = ParsedMessageCommon & { type: 'CT_PROCESS_FREQUENCY'; frequency: number; }; export type CT_THREAD_START = ParsedMessageCommon & { type: 'CT_THREAD_START'; }; export type CT_THREAD_START_2 = ParsedMessageCommon & { type: 'CT_THREAD_START_2'; parentThreadId: number; }; export type CT_THREAD_END = ParsedMessageCommon & { type: 'CT_THREAD_END'; }; export type CT_PROCESS_TYPE = ParsedMessageCommon & { type: 'CT_PROCESS_TYPE'; technologyType: string; }; export type CT_METHODINFO2 = ParsedMessageCommon & { type: 'CT_METHODINFO2'; functionID: number; className: string; methodName: string; }; export type CT_BEGIN = ParsedMessageCommon & { type: 'CT_BEGIN'; functionID: number; }; export type CT_END = ParsedMessageCommon & { type: 'CT_END'; functionID: number; }; export type CT_BEGIN_TRANSACTION = ParsedMessageCommon & { type: 'CT_BEGIN_TRANSACTION'; apiKey: string; technologyType: string; processType: string; spanID: string; }; export type CT_END_TRANSACTION = ParsedMessageCommon & { type: 'CT_END_TRANSACTION'; }; export type CT_SQL_INFORMATION = ParsedMessageCommon & { type: 'CT_SQL_INFORMATION'; provider: string; host: string; database: string; query: string; duration: number; }; export type CT_HTTP_INCOMING_INFORMATION = ParsedMessageCommon & { type: 'CT_HTTP_INCOMING_INFORMATION'; status: number; duration: number; url: string; method: string; }; export type CT_HTTP_OUTGOING_INFORMATION = ParsedMessageCommon & { type: 'CT_HTTP_OUTGOING_INFORMATION'; status: number; duration: number; url: string; method: string; }; export type CT_EXCEPTION_THROWN_2 = ParsedMessageCommon & { type: 'CT_EXCEPTION_THROWN_2'; exceptionInstanceId: number; errorClass: string; correlationId: string; }; export type MessagesByType = { CT_PROCESS_START: CT_PROCESS_START; CT_PROCESS_FREQUENCY: CT_PROCESS_FREQUENCY; CT_PROCESS_END: CT_PROCESS_END; CT_THREAD_START: CT_THREAD_START; CT_THREAD_START_2: CT_THREAD_START_2; CT_THREAD_END: CT_THREAD_END; CT_PROCESS_TYPE: CT_PROCESS_TYPE; CT_METHODINFO2: CT_METHODINFO2; CT_BEGIN: CT_BEGIN; CT_END: CT_END; CT_SQL_INFORMATION: CT_SQL_INFORMATION; CT_HTTP_INCOMING_INFORMATION: CT_HTTP_INCOMING_INFORMATION; CT_HTTP_OUTGOING_INFORMATION: CT_HTTP_OUTGOING_INFORMATION; CT_BEGIN_TRANSACTION: CT_BEGIN_TRANSACTION; CT_END_TRANSACTION: CT_END_TRANSACTION; CT_EXCEPTION_THROWN_2: CT_EXCEPTION_THROWN_2; }; export type TestAgent = { messages: AgentMessage[]; parsedMessages: ParsedMessage[]; incomingTrace(): Promise; stop(): Promise; }; export type TestServer = { stop(): Promise; port: number; };