import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Link, Link$Outbound } from "./link.js";
/**
 * The kind of event the metric tracks
 */
export declare const MetricV2RepKind: {
    readonly Pageview: "pageview";
    readonly Click: "click";
    readonly Custom: "custom";
    readonly Trace: "trace";
};
/**
 * The kind of event the metric tracks
 */
export type MetricV2RepKind = ClosedEnum<typeof MetricV2RepKind>;
/**
 * The type of unit aggregation to use for the metric
 */
export declare const MetricV2RepUnitAggregationType: {
    readonly Sum: "sum";
    readonly Average: "average";
    readonly CountDistinct: "count_distinct";
};
/**
 * The type of unit aggregation to use for the metric
 */
export type MetricV2RepUnitAggregationType = ClosedEnum<typeof MetricV2RepUnitAggregationType>;
/**
 * The method for analyzing metric events
 */
export declare const MetricV2RepAnalysisType: {
    readonly Mean: "mean";
    readonly Percentile: "percentile";
};
/**
 * The method for analyzing metric events
 */
export type MetricV2RepAnalysisType = ClosedEnum<typeof MetricV2RepAnalysisType>;
export type MetricV2Rep = {
    /**
     * The metric key
     */
    key: string;
    /**
     * The version ID of the metric
     */
    versionId?: string | undefined;
    /**
     * The metric name
     */
    name: string;
    /**
     * The kind of event the metric tracks
     */
    kind: MetricV2RepKind;
    /**
     * For custom metrics, whether to track numeric changes in value against a baseline (<code>true</code>) or to track a conversion when an end user takes an action (<code>false</code>).
     */
    isNumeric?: boolean | undefined;
    /**
     * The type of unit aggregation to use for the metric
     */
    unitAggregationType?: MetricV2RepUnitAggregationType | undefined;
    /**
     * The method for analyzing metric events
     */
    analysisType?: MetricV2RepAnalysisType | undefined;
    /**
     * The event key sent with the metric. Only relevant for custom metrics.
     */
    eventKey?: string | undefined;
    /**
     * The context kind used as the analysis unit for this metric in the experiment iteration
     */
    analysisUnit?: string | undefined;
    /**
     * The location and content type of related resources
     */
    links: {
        [k: string]: Link;
    };
};
/** @internal */
export declare const MetricV2RepKind$inboundSchema: z.ZodNativeEnum<typeof MetricV2RepKind>;
/** @internal */
export declare const MetricV2RepKind$outboundSchema: z.ZodNativeEnum<typeof MetricV2RepKind>;
/** @internal */
export declare const MetricV2RepUnitAggregationType$inboundSchema: z.ZodNativeEnum<typeof MetricV2RepUnitAggregationType>;
/** @internal */
export declare const MetricV2RepUnitAggregationType$outboundSchema: z.ZodNativeEnum<typeof MetricV2RepUnitAggregationType>;
/** @internal */
export declare const MetricV2RepAnalysisType$inboundSchema: z.ZodNativeEnum<typeof MetricV2RepAnalysisType>;
/** @internal */
export declare const MetricV2RepAnalysisType$outboundSchema: z.ZodNativeEnum<typeof MetricV2RepAnalysisType>;
/** @internal */
export declare const MetricV2Rep$inboundSchema: z.ZodType<MetricV2Rep, z.ZodTypeDef, unknown>;
/** @internal */
export type MetricV2Rep$Outbound = {
    key: string;
    _versionId?: string | undefined;
    name: string;
    kind: string;
    isNumeric?: boolean | undefined;
    unitAggregationType?: string | undefined;
    analysisType?: string | undefined;
    eventKey?: string | undefined;
    analysisUnit?: string | undefined;
    _links: {
        [k: string]: Link$Outbound;
    };
};
/** @internal */
export declare const MetricV2Rep$outboundSchema: z.ZodType<MetricV2Rep$Outbound, z.ZodTypeDef, MetricV2Rep>;
export declare function metricV2RepToJSON(metricV2Rep: MetricV2Rep): string;
export declare function metricV2RepFromJSON(jsonString: string): SafeParseResult<MetricV2Rep, SDKValidationError>;
//# sourceMappingURL=metricv2rep.d.ts.map