import { Metric } from "@effect/core/io/Metrics/definition";
import { Duration } from "@tsplus/stdlib/data/Duration";
import { Effect } from "@effect/core/io/Effect/definition";
/**
 * Returns an aspect that will update this metric with the duration that the
 * effect takes to execute. To call this method, you must supply a function
 * that can convert the `Duration` to the input type of this metric.
 * @tsplus fluent ets/Metrics/Metric trackDurationWith
 * @tsplus location "@effect/core/io/Metrics/operations/trackDurationWith"
 */
export declare function trackDurationWith_<Type, In, Out>(self: Metric<Type, In, Out>, f: (duration: Duration) => In): <R, E, A>(effect: import("../../Effect").Effect<R, E, A>, __tsplusTrace?: string) => import("../../Effect").Effect<R, E, A>;
/**
 * Returns an aspect that will update this metric with the duration that the
 * effect takes to execute. To call this method, you must supply a function
 * that can convert the `Duration` to the input type of this metric.
 * @tsplus static ets/Metrics/Metric/Aspects trackDurationWith
 * @tsplus pipeable ets/Metrics/Metric trackDurationWith
 * @tsplus location "@effect/core/io/Metrics/operations/trackDurationWith"
 */
export declare const trackDurationWith: <In>(f: (duration: Duration) => In) => <Type, Out>(self: import("../definition").Metric<Type, In, Out>) => <R, E, A>(effect: import("../../Effect").Effect<R, E, A>, __tsplusTrace?: string) => import("../../Effect").Effect<R, E, A>;
//# sourceMappingURL=trackDurationWith.d.ts.map