import { TelemetryRecorderProvider as BaseTelemetryRecorderProvider, type TelemetryProcessor } from '@sourcegraph/telemetry'; import { type CodyIDE, type ConfigurationWithAccessToken } from '../configuration'; import type { LogEventMode } from '../sourcegraph-api/graphql/client'; import type { BillingCategory, BillingProduct } from '.'; import type { AuthStatusProvider } from '../auth/types'; export interface ExtensionDetails { ide: CodyIDE; /** * Platform name, possible values 'linux', 'macos', 'windows', * (see vscode os.ts for Platform enum) */ platform: string; /** Version number for the extension. */ version: string; /** * If this is provided event recorder will use this name as a client name * in telemetry events, primary is used for having different client name for * CodyWeb in dotcom/enterprise instances. * * If it isn't provided we will fall back on ide+ideExtensionType client name */ telemetryClientName: string | undefined; /** * Architecture name, possible values 'arm64', 'aarch64', 'x86_64', 'x64', 'x86' * (see vscode os.ts for Arch enum) */ arch?: string; } /** * TelemetryRecorderProvider is the default provider implementation. It sends * events directly to a connected Sourcegraph instance. * * This is NOT meant for use if connecting to an Agent. */ export declare class TelemetryRecorderProvider extends BaseTelemetryRecorderProvider { constructor(extensionDetails: ExtensionDetails, config: ConfigurationWithAccessToken, authStatusProvider: AuthStatusProvider, anonymousUserID: string, legacyBackcompatLogEventMode: LogEventMode); } /** * TelemetryRecorder is the type of recorders returned by * TelemetryRecorderProviders in this module. It's available as a type to work * around type reference issues like: * * The inferred type of 'telemetryRecorder' cannot be named without a reference <...> */ export type TelemetryRecorder = typeof noOpTelemetryRecorder; export declare class NoOpTelemetryRecorderProvider extends BaseTelemetryRecorderProvider { constructor(processors?: TelemetryProcessor[]); } /** * noOpTelemetryRecorder should ONLY be used in tests - it discards all recorded events and does nothing with them. */ export declare const noOpTelemetryRecorder: import("@sourcegraph/telemetry").TelemetryRecorder<"exampleBillingProduct", "exampleBillingCategory">; /** * MockServerTelemetryRecorderProvider uses MockServerTelemetryExporter to export * events. */ export declare class MockServerTelemetryRecorderProvider extends BaseTelemetryRecorderProvider { constructor(extensionDetails: ExtensionDetails, config: ConfigurationWithAccessToken, authStatusProvider: AuthStatusProvider, anonymousUserID: string); } //# sourceMappingURL=TelemetryRecorderProvider.d.ts.map