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 MetricInGroupRepKind: {
    readonly Pageview: "pageview";
    readonly Click: "click";
    readonly Custom: "custom";
    readonly Trace: "trace";
};
/**
 * The kind of event the metric tracks
 */
export type MetricInGroupRepKind = ClosedEnum<typeof MetricInGroupRepKind>;
/**
 * The type of unit aggregation to use for the metric
 */
export declare const MetricInGroupRepUnitAggregationType: {
    readonly Sum: "sum";
    readonly Average: "average";
    readonly CountDistinct: "count_distinct";
};
/**
 * The type of unit aggregation to use for the metric
 */
export type MetricInGroupRepUnitAggregationType = ClosedEnum<typeof MetricInGroupRepUnitAggregationType>;
/**
 * The method for analyzing metric events
 */
export declare const MetricInGroupRepAnalysisType: {
    readonly Mean: "mean";
    readonly Percentile: "percentile";
};
/**
 * The method for analyzing metric events
 */
export type MetricInGroupRepAnalysisType = ClosedEnum<typeof MetricInGroupRepAnalysisType>;
export type MetricInGroupRep = {
    /**
     * 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: MetricInGroupRepKind;
    /**
     * 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?: MetricInGroupRepUnitAggregationType | undefined;
    /**
     * The method for analyzing metric events
     */
    analysisType?: MetricInGroupRepAnalysisType | 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;
    };
    /**
     * Name of the metric when used within the associated metric group. Can be different from the original name of the metric. Required if and only if the metric group is a <code>funnel</code>.
     */
    nameInGroup?: string | undefined;
    /**
     * Deprecated, use <code>analysisUnits</code> instead.
     *
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    randomizationUnits?: Array<string> | undefined;
    /**
     * An array of analysis units allowed for this metric.
     */
    analysisUnits?: Array<string> | undefined;
};
/** @internal */
export declare const MetricInGroupRepKind$inboundSchema: z.ZodNativeEnum<typeof MetricInGroupRepKind>;
/** @internal */
export declare const MetricInGroupRepKind$outboundSchema: z.ZodNativeEnum<typeof MetricInGroupRepKind>;
/** @internal */
export declare const MetricInGroupRepUnitAggregationType$inboundSchema: z.ZodNativeEnum<typeof MetricInGroupRepUnitAggregationType>;
/** @internal */
export declare const MetricInGroupRepUnitAggregationType$outboundSchema: z.ZodNativeEnum<typeof MetricInGroupRepUnitAggregationType>;
/** @internal */
export declare const MetricInGroupRepAnalysisType$inboundSchema: z.ZodNativeEnum<typeof MetricInGroupRepAnalysisType>;
/** @internal */
export declare const MetricInGroupRepAnalysisType$outboundSchema: z.ZodNativeEnum<typeof MetricInGroupRepAnalysisType>;
/** @internal */
export declare const MetricInGroupRep$inboundSchema: z.ZodType<MetricInGroupRep, z.ZodTypeDef, unknown>;
/** @internal */
export type MetricInGroupRep$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;
    };
    nameInGroup?: string | undefined;
    randomizationUnits?: Array<string> | undefined;
    analysisUnits?: Array<string> | undefined;
};
/** @internal */
export declare const MetricInGroupRep$outboundSchema: z.ZodType<MetricInGroupRep$Outbound, z.ZodTypeDef, MetricInGroupRep>;
export declare function metricInGroupRepToJSON(metricInGroupRep: MetricInGroupRep): string;
export declare function metricInGroupRepFromJSON(jsonString: string): SafeParseResult<MetricInGroupRep, SDKValidationError>;
//# sourceMappingURL=metricingrouprep.d.ts.map