import * as av from "anyvali"; import type { Infer } from "anyvali"; export declare const ObservabilityValueSchema: av.UnionSchema<[av.StringSchema, av.NumberSchema, av.BoolSchema]>; export type ObservabilityValue = Infer; export declare const ObservabilityAttributesSchema: av.RecordSchema>; export type ObservabilityAttributes = Infer; export type HttpOutcomeSource = "core" | "explicit" | "response-body" | "http-status" | "exception"; export interface HttpOutcomeDiagnostic { readonly code: string; readonly reason: string; readonly attributes?: ObservabilityAttributes; } export declare const BetterPortalLogLevelSchema: av.EnumSchema; export type BetterPortalLogLevel = Infer; export declare const BetterPortalTraceContextSchema: av.ObjectSchema<{ traceId: av.StringSchema; spanId: av.StringSchema; }>; export type BetterPortalTraceContext = Infer; export interface BetterPortalRemoteTraceContext extends BetterPortalTraceContext { readonly traceFlags: number; readonly traceState?: string; } export declare const BetterPortalResourceSchema: av.IntersectionSchema<[av.ObjectSchema<{ serviceName: av.StringSchema; serviceVersion: av.OptionalSchema; serviceInstanceId: av.OptionalSchema; environment: av.OptionalSchema; region: av.OptionalSchema; }>, av.RecordSchema>]>; export type BetterPortalResource = Infer; export type MetricLabelValue = string | number | boolean; export type MetricLabels = Partial>; export type LogAttributeKeys = string extends TMessage ? never : TMessage extends `${string}{${infer TKey}}${infer TRest}` ? TKey | LogAttributeKeys : never; export type LogAttributes = ObservabilityAttributes & Record, ObservabilityValue>; export type LogAttributeArgs = [LogAttributeKeys] extends [never] ? [attributes?: ObservabilityAttributes] : [attributes: LogAttributes]; export interface BetterPortalLogger { debug(message: TMessage, ...args: LogAttributeArgs): void; info(message: TMessage, ...args: LogAttributeArgs): void; warn(message: TMessage, ...args: LogAttributeArgs): void; error(message: TMessage, ...args: LogAttributeArgs): void; error(message: Error, attributes?: ObservabilityAttributes): void; } export interface BetterPortalCounter { increment(value?: number, labels?: MetricLabels): void; } export interface BetterPortalGauge { set(value: number, labels?: MetricLabels): void; increment(value?: number, labels?: MetricLabels): void; decrement(value?: number, labels?: MetricLabels): void; } export interface BetterPortalHistogram { observe(value: number, labels?: MetricLabels): void; } export interface BetterPortalTimer { stop(): number; } export interface BetterPortalMetrics { counter(name: string, description: string, help: string, labels?: readonly TLabel[]): BetterPortalCounter; gauge(name: string, description: string, help: string, labels?: readonly TLabel[]): BetterPortalGauge; histogram(name: string, description: string, help: string, boundaries?: readonly number[], labels?: readonly TLabel[]): BetterPortalHistogram; timer(): BetterPortalTimer; } export interface BetterPortalObservability { readonly trace: BetterPortalTraceContext; readonly traceId: string; readonly spanId: string; readonly resource: BetterPortalResource; readonly attributes: ObservabilityAttributes; readonly logger: BetterPortalLogger; readonly metrics: BetterPortalMetrics; startSpan(name: string, attributes?: ObservabilityAttributes): BetterPortalObservability; setAttribute(key: string, value: ObservabilityValue): BetterPortalObservability; setAttributes(attributes: ObservabilityAttributes): BetterPortalObservability; end(attributes?: ObservabilityAttributes): void; error(error: Error, attributes?: ObservabilityAttributes): void; } export interface BetterPortalSpan extends BetterPortalObservability { readonly name: string; } export declare function createNoopObservability(input?: { name?: string; resource?: BetterPortalResource; attributes?: ObservabilityAttributes; trace?: BetterPortalTraceContext; }): BetterPortalObservability; //# sourceMappingURL=observability.d.ts.map