/** * @tsplus type effect/core/io/Metrics/MetricHook */ export interface MetricHook { readonly update: (input: In) => void readonly get: () => Out } /** * @tsplus type effect/core/io/Metrics/MetricHook.Ops */ export interface MetricHookOps {} export const MetricHook: MetricHookOps = {} export declare namespace MetricHook { export type Root = MetricHook export type Untyped = MetricHook export type Counter = MetricHook export type Gauge = MetricHook export type Frequency = MetricHook export type Histogram = MetricHook export type Summary = MetricHook } /** * @tsplus static effect/core/io/Metrics/MetricHook.Ops __call */ export function make( update: (input: In) => void, get: () => Out ): MetricHook { return { update, get } } /** * @tsplus static effect/core/io/Metrics/MetricHook.Aspects onUpdate * @tsplus pipeable effect/core/io/Metrics/MetricHook onUpdate */ export function onUpdate( f: (input: In) => void ) { return (self: MetricHook): MetricHook => ({ update: (input) => { self.update(input) return f(input) }, get: self.get }) }