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";
import { MetricInGroupRep, MetricInGroupRep$Outbound } from "./metricingrouprep.js";
/**
 * If this is a metric, then it represents the kind of event the metric tracks. If this is a metric group, then it represents the group type
 */
export declare const DependentMetricOrMetricGroupRepKind: {
    readonly Pageview: "pageview";
    readonly Click: "click";
    readonly Custom: "custom";
    readonly Trace: "trace";
    readonly Funnel: "funnel";
    readonly Standard: "standard";
};
/**
 * If this is a metric, then it represents the kind of event the metric tracks. If this is a metric group, then it represents the group type
 */
export type DependentMetricOrMetricGroupRepKind = ClosedEnum<typeof DependentMetricOrMetricGroupRepKind>;
/**
 * The method for analyzing metric events. Only set for individual metrics, not metric groups.
 */
export declare const DependentMetricOrMetricGroupRepAnalysisType: {
    readonly Mean: "mean";
    readonly Percentile: "percentile";
};
/**
 * The method for analyzing metric events. Only set for individual metrics, not metric groups.
 */
export type DependentMetricOrMetricGroupRepAnalysisType = ClosedEnum<typeof DependentMetricOrMetricGroupRepAnalysisType>;
export type DependentMetricOrMetricGroupRep = {
    /**
     * A unique key to reference the metric or metric group
     */
    key: string;
    /**
     * The version ID of the metric or metric group
     */
    versionId: string;
    /**
     * A human-friendly name for the metric or metric group
     */
    name: string;
    /**
     * If this is a metric, then it represents the kind of event the metric tracks. If this is a metric group, then it represents the group type
     */
    kind: DependentMetricOrMetricGroupRepKind;
    /**
     * For custom and trace 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 event key sent with the metric. Only relevant for custom metrics.
     */
    eventKey?: string | undefined;
    /**
     * The location and content type of related resources
     */
    links: {
        [k: string]: Link;
    };
    /**
     * Whether this is a metric group or a metric
     */
    isGroup: boolean;
    /**
     * An ordered list of the metrics in this metric group
     */
    metrics?: Array<MetricInGroupRep> | undefined;
    /**
     * The method for analyzing metric events. Only set for individual metrics, not metric groups.
     */
    analysisType?: DependentMetricOrMetricGroupRepAnalysisType | undefined;
    /**
     * The context kind chosen as the analysis unit for this metric in the iteration. If null, analysis uses the iteration's randomization unit.
     */
    analysisUnit?: string | undefined;
};
/** @internal */
export declare const DependentMetricOrMetricGroupRepKind$inboundSchema: z.ZodNativeEnum<typeof DependentMetricOrMetricGroupRepKind>;
/** @internal */
export declare const DependentMetricOrMetricGroupRepKind$outboundSchema: z.ZodNativeEnum<typeof DependentMetricOrMetricGroupRepKind>;
/** @internal */
export declare const DependentMetricOrMetricGroupRepAnalysisType$inboundSchema: z.ZodNativeEnum<typeof DependentMetricOrMetricGroupRepAnalysisType>;
/** @internal */
export declare const DependentMetricOrMetricGroupRepAnalysisType$outboundSchema: z.ZodNativeEnum<typeof DependentMetricOrMetricGroupRepAnalysisType>;
/** @internal */
export declare const DependentMetricOrMetricGroupRep$inboundSchema: z.ZodType<DependentMetricOrMetricGroupRep, z.ZodTypeDef, unknown>;
/** @internal */
export type DependentMetricOrMetricGroupRep$Outbound = {
    key: string;
    _versionId: string;
    name: string;
    kind: string;
    isNumeric?: boolean | undefined;
    eventKey?: string | undefined;
    _links: {
        [k: string]: Link$Outbound;
    };
    isGroup: boolean;
    metrics?: Array<MetricInGroupRep$Outbound> | undefined;
    analysisType?: string | undefined;
    analysisUnit?: string | undefined;
};
/** @internal */
export declare const DependentMetricOrMetricGroupRep$outboundSchema: z.ZodType<DependentMetricOrMetricGroupRep$Outbound, z.ZodTypeDef, DependentMetricOrMetricGroupRep>;
export declare function dependentMetricOrMetricGroupRepToJSON(dependentMetricOrMetricGroupRep: DependentMetricOrMetricGroupRep): string;
export declare function dependentMetricOrMetricGroupRepFromJSON(jsonString: string): SafeParseResult<DependentMetricOrMetricGroupRep, SDKValidationError>;
//# sourceMappingURL=dependentmetricormetricgrouprep.d.ts.map