import type * as TracerOpentelemetry from "@apptracer/opentelemetry"; import type * as OpentelemetryApi from "@opentelemetry/api"; import type * as OpentelemetrySdk from "@opentelemetry/sdk-trace-web"; import type * as OpentelemetryResources from "@opentelemetry/resources"; import type * as OpentelemetrySemanticConventions from "@opentelemetry/semantic-conventions"; import type { ISubscription, IValueSubject } from "../reactive"; export type { TracerOpentelemetry, OpentelemetryApi, OpentelemetrySdk, OpentelemetryResources, OpentelemetrySemanticConventions }; export type Attributes = OpentelemetryApi.Attributes; export type Context = OpentelemetryApi.Context; export type Span = OpentelemetryApi.Span; export type TracerType = "real" | "fake" | "debug"; export declare enum TracerDynamicImportStatus { NotStarted = "not_started", InProgress = "in_progress", Failed = "failed", Completed = "completed" } export declare enum TraceEventType { Log = "log", Error = "error", Critical = "critical" } export interface ITracerParams { name: string; getParentContext?: () => Context; getRootTracerContext?: () => IRootTracerContext | undefined; options?: ITracerOptions; } export interface IRootTracerContext { tracer: OpentelemetryApi.Tracer; attributes$: IValueSubject; paused$: IValueSubject; } export interface ITracerDynamicImports { opentelemetryApi: typeof OpentelemetryApi; opentelemetrySdk: typeof OpentelemetrySdk; tracer: typeof TracerOpentelemetry; opentelemetryResources: typeof OpentelemetryResources; opentelemetrySemanticConventions: typeof OpentelemetrySemanticConventions; } export interface ITracer { log: (name: string, attributes?: Attributes, persistent?: boolean) => void; error: (name: string, attributes?: Attributes, persistent?: boolean) => void; critical: (name: string, attributes?: Attributes, persistent?: boolean) => void; createComponentTracer: (name: string) => ITracer; setSpanAttributes: (attributes: Attributes) => void; end: () => void; pause(): void; resume(): void; } export interface IRootTracer extends ITracer { getTraceId: () => string; addSubscription(item: Parameters[0]): void; } export interface ITracerOptions { tracerEventsBufferSize?: number; tracerPausedAtInit?: boolean; /** Токен apptracer для отправки спанов. Если не задан — используется дефолт из @vkontakte/videoplayer-shared */ apptracerAppToken?: string; }