/** * Browser Telemetry Bootstrap * * This is the ONLY approved way to initialize telemetry in browser contexts. * Direct WebTracerProvider usage outside this package is prohibited. */ import { Tracer } from "@opentelemetry/api"; import { WebTracerProvider } from "@opentelemetry/sdk-trace-web"; import { TelemetryPolicyEvaluator } from "../common/policy-evaluator.js"; import type { BrowserTelemetryConfig } from "../types/index.js"; import { TelemetryPolicy } from "../types/policy.js"; /** * Browser telemetry instance. */ export interface BrowserTelemetryInstance { /** The underlying WebTracerProvider */ provider: WebTracerProvider; /** Policy evaluator for runtime decisions */ policyEvaluator: TelemetryPolicyEvaluator; /** Get a tracer */ getTracer: (name?: string) => Tracer; /** Graceful shutdown */ shutdown: () => Promise; } /** * Initialize browser telemetry with policy enforcement. * * Browser telemetry is always sanitized (Tier 2) since it runs in untrusted context. * Full fidelity Tier 1 data should never be emitted from the browser. * * @param config - Browser configuration * @param policy - Telemetry policy (REQUIRED) * @returns Browser telemetry instance * * @example * ```typescript * import { initBrowserTelemetry } from '@superblocksteam/telemetry/browser'; * import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared'; * * const policy = getDefaultPolicy(DeploymentType.CLOUD); * const telemetry = initBrowserTelemetry({ * serviceName: 'superblocks-ui', * serviceVersion: '1.0.0', * environment: 'production', * otlpUrl: 'https://app.superblocks.com/api/v1/traces', * }, policy); * * const tracer = telemetry.getTracer(); * ``` */ export declare function initBrowserTelemetry(config: BrowserTelemetryConfig, policy: TelemetryPolicy): BrowserTelemetryInstance; /** * Get the current browser telemetry instance. * * @throws Error if not initialized */ export declare function getBrowserTelemetryInstance(): BrowserTelemetryInstance; /** * Check if browser telemetry is initialized. */ export declare function isBrowserTelemetryInitialized(): boolean; /** * Reset browser telemetry (for testing only). * @internal */ export declare function resetBrowserTelemetry(): void; /** * Derive environment from hostname. * Utility for browser context where env vars aren't available. * * @param hostname - The hostname to analyze * @returns Environment string */ export declare function getEnvironmentFromHostname(hostname: string): string; //# sourceMappingURL=init.d.ts.map