/** * @since 2.0.0 */ import type * as Duration from "./Duration.js" import type * as Equal from "./Equal.js" import * as internal from "./internal/metric/keyType.js" import type * as MetricBoundaries from "./MetricBoundaries.js" import type * as MetricState from "./MetricState.js" import type { Pipeable } from "./Pipeable.js" import type * as Types from "./Types.js" /** * @since 2.0.0 * @category symbols */ export const MetricKeyTypeTypeId: unique symbol = internal.MetricKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export type MetricKeyTypeTypeId = typeof MetricKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export const CounterKeyTypeTypeId: unique symbol = internal.CounterKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export type CounterKeyTypeTypeId = typeof CounterKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export const FrequencyKeyTypeTypeId: unique symbol = internal.FrequencyKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export type FrequencyKeyTypeTypeId = typeof FrequencyKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export const GaugeKeyTypeTypeId: unique symbol = internal.GaugeKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export type GaugeKeyTypeTypeId = typeof GaugeKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export const HistogramKeyTypeTypeId: unique symbol = internal.HistogramKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export type HistogramKeyTypeTypeId = typeof HistogramKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export const SummaryKeyTypeTypeId: unique symbol = internal.SummaryKeyTypeTypeId /** * @since 2.0.0 * @category symbols */ export type SummaryKeyTypeTypeId = typeof SummaryKeyTypeTypeId /** * @since 2.0.0 * @category modelz */ export interface MetricKeyType extends MetricKeyType.Variance, Equal.Equal, Pipeable {} /** * @since 2.0.0 */ export declare namespace MetricKeyType { /** * @since 2.0.0 * @category models */ export type Untyped = MetricKeyType /** * @since 2.0.0 * @category models */ export type Counter = MetricKeyType> & { readonly [CounterKeyTypeTypeId]: CounterKeyTypeTypeId readonly incremental: boolean readonly bigint: boolean } /** * @since 2.0.0 * @category models */ export type Frequency = MetricKeyType & { readonly [FrequencyKeyTypeTypeId]: FrequencyKeyTypeTypeId readonly preregisteredWords: ReadonlyArray } /** * @since 2.0.0 * @category models */ export type Gauge = MetricKeyType> & { readonly [GaugeKeyTypeTypeId]: GaugeKeyTypeTypeId readonly bigint: boolean } /** * @since 2.0.0 * @category models */ export type Histogram = MetricKeyType & { readonly [HistogramKeyTypeTypeId]: HistogramKeyTypeTypeId readonly boundaries: MetricBoundaries.MetricBoundaries } /** * @since 2.0.0 * @category models */ export type Summary = MetricKeyType & { readonly [SummaryKeyTypeTypeId]: SummaryKeyTypeTypeId readonly maxAge: Duration.Duration readonly maxSize: number readonly error: number readonly quantiles: ReadonlyArray } /** * @since 2.0.0 * @category models */ export interface Variance { readonly [MetricKeyTypeTypeId]: { readonly _In: Types.Contravariant readonly _Out: Types.Covariant } } /** * @since 2.0.0 * @category models */ export type InType> = [Type] extends [ { readonly [MetricKeyTypeTypeId]: { readonly _In: (_: infer In) => void } } ] ? In : never /** * @since 2.0.0 * @category models */ export type OutType> = [Type] extends [ { readonly [MetricKeyTypeTypeId]: { readonly _Out: (_: never) => infer Out } } ] ? Out : never } /** * @since 2.0.0 * @category constructors */ export const counter: () => MetricKeyType.Counter = internal.counter /** * @since 2.0.0 * @category constructors */ export const frequency: ( options?: { readonly preregisteredWords?: ReadonlyArray | undefined } | undefined ) => MetricKeyType.Frequency = internal.frequency /** * @since 2.0.0 * @category constructors */ export const gauge: () => MetricKeyType.Gauge = internal.gauge /** * @since 2.0.0 * @category constructors */ export const histogram: (boundaries: MetricBoundaries.MetricBoundaries) => MetricKeyType.Histogram = internal.histogram /** * @since 2.0.0 * @category constructors */ export const summary: ( options: { readonly maxAge: Duration.DurationInput readonly maxSize: number readonly error: number readonly quantiles: ReadonlyArray } ) => MetricKeyType.Summary = internal.summary /** * @since 2.0.0 * @category refinements */ export const isMetricKeyType: (u: unknown) => u is MetricKeyType = internal.isMetricKeyType /** * @since 2.0.0 * @category refinements */ export const isCounterKey: (u: unknown) => u is MetricKeyType.Counter = internal.isCounterKey /** * @since 2.0.0 * @category refinements */ export const isFrequencyKey: (u: unknown) => u is MetricKeyType.Frequency = internal.isFrequencyKey /** * @since 2.0.0 * @category refinements */ export const isGaugeKey: (u: unknown) => u is MetricKeyType.Gauge = internal.isGaugeKey /** * @since 2.0.0 * @category refinements */ export const isHistogramKey: (u: unknown) => u is MetricKeyType.Histogram = internal.isHistogramKey /** * @since 2.0.0 * @category refinements */ export const isSummaryKey: (u: unknown) => u is MetricKeyType.Summary = internal.isSummaryKey