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 { Access, Access$Outbound } from "./access.js";
import { Filter, Filter$Outbound } from "./filter.js";
import { Link, Link$Outbound } from "./link.js";
import { MemberSummary, MemberSummary$Outbound } from "./membersummary.js";
import { MetricDataSourceRefRep, MetricDataSourceRefRep$Outbound } from "./metricdatasourcerefrep.js";
import { MetricDenominatorRep, MetricDenominatorRep$Outbound } from "./metricdenominatorrep.js";
import { MetricEventDefaultRep, MetricEventDefaultRep$Outbound } from "./metriceventdefaultrep.js";
import { Modification, Modification$Outbound } from "./modification.js";
/**
 * The kind of event the metric tracks
 */
export declare const MetricListingRepKind: {
    readonly Pageview: "pageview";
    readonly Click: "click";
    readonly Custom: "custom";
    readonly Trace: "trace";
};
/**
 * The kind of event the metric tracks
 */
export type MetricListingRepKind = ClosedEnum<typeof MetricListingRepKind>;
/**
 * For custom and trace metrics, the success criteria
 */
export declare const MetricListingRepSuccessCriteria: {
    readonly HigherThanBaseline: "HigherThanBaseline";
    readonly LowerThanBaseline: "LowerThanBaseline";
};
/**
 * For custom and trace metrics, the success criteria
 */
export type MetricListingRepSuccessCriteria = ClosedEnum<typeof MetricListingRepSuccessCriteria>;
/**
 * The method by which multiple unit event values are aggregated
 */
export declare const MetricListingRepUnitAggregationType: {
    readonly Average: "average";
    readonly Sum: "sum";
    readonly CountDistinct: "count_distinct";
};
/**
 * The method by which multiple unit event values are aggregated
 */
export type MetricListingRepUnitAggregationType = ClosedEnum<typeof MetricListingRepUnitAggregationType>;
/**
 * The method for analyzing metric events
 */
export declare const MetricListingRepAnalysisType: {
    readonly Mean: "mean";
    readonly Percentile: "percentile";
};
/**
 * The method for analyzing metric events
 */
export type MetricListingRepAnalysisType = ClosedEnum<typeof MetricListingRepAnalysisType>;
export type MetricListingRep = {
    /**
     * The number of experiments using this metric
     */
    experimentCount?: number | undefined;
    /**
     * The number of metric groups using this metric
     */
    metricGroupCount?: number | undefined;
    /**
     * The number of active experiments using this metric
     */
    activeExperimentCount?: number | undefined;
    /**
     * The number of active guarded rollouts using this metric
     */
    activeGuardedRolloutCount?: number | undefined;
    /**
     * The ID of this metric
     */
    id: string;
    /**
     * The version ID of the metric
     */
    versionId: string;
    /**
     * Version of the metric
     */
    version?: number | undefined;
    /**
     * A unique key to reference the metric
     */
    key: string;
    /**
     * A human-friendly name for the metric
     */
    name: string;
    /**
     * The kind of event the metric tracks
     */
    kind: MetricListingRepKind;
    /**
     * The number of feature flags currently attached to this metric
     */
    attachedFlagCount?: number | undefined;
    /**
     * The location and content type of related resources
     */
    links: {
        [k: string]: Link;
    };
    site?: Link | undefined;
    access?: Access | undefined;
    /**
     * Tags for the metric
     */
    tags: Array<string>;
    creationDate: number;
    lastModified?: Modification | undefined;
    /**
     * The ID of the member who maintains this metric
     */
    maintainerId?: string | undefined;
    maintainer?: MemberSummary | undefined;
    /**
     * Description of the metric
     */
    description?: string | undefined;
    /**
     * The category of the metric
     */
    category?: string | undefined;
    /**
     * 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;
    /**
     * For custom and trace metrics, the success criteria
     */
    successCriteria?: MetricListingRepSuccessCriteria | undefined;
    /**
     * For numeric custom and trace metrics, the unit of measure
     */
    unit?: string | undefined;
    /**
     * For custom metrics, the event key to use in your code
     */
    eventKey?: 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;
    filters?: Filter | undefined;
    /**
     * The method by which multiple unit event values are aggregated
     */
    unitAggregationType?: MetricListingRepUnitAggregationType | undefined;
    /**
     * The method for analyzing metric events
     */
    analysisType?: MetricListingRepAnalysisType | undefined;
    /**
     * The percentile for the analysis method. An integer denoting the target percentile between 0 and 100. Required when <code>analysisType</code> is <code>percentile</code>.
     */
    percentileValue?: number | undefined;
    eventDefault?: MetricEventDefaultRep | undefined;
    dataSource: MetricDataSourceRefRep;
    lastSeen?: number | undefined;
    /**
     * Whether the metric version is archived
     */
    archived?: boolean | undefined;
    archivedAt?: number | undefined;
    /**
     * For click metrics, the CSS selectors
     */
    selector?: string | undefined;
    urls?: Array<{
        [k: string]: any;
    }> | undefined;
    /**
     * Not yet implemented - The start of the measurement window, in milliseconds relative to the unit's first exposure to a flag variation
     */
    windowStartOffset?: number | undefined;
    /**
     * Not yet implemented - The end of the measurement window, in milliseconds relative to the unit's first exposure to a flag variation
     */
    windowEndOffset?: number | undefined;
    /**
     * Lower winsorization percentile, expressed as a percent in the open interval (0, 100). When both bounds are set, defines a two-sided clamp range. Otherwise lower-only winsorization.
     */
    winsorLowerPercentile?: number | undefined;
    /**
     * Upper winsorization percentile, expressed as a percent in the open interval (0, 100). When both bounds are set, must be greater than winsorLowerPercentile.
     */
    winsorUpperPercentile?: number | undefined;
    /**
     * When true, the percentile bound calculation includes imputed zeros. Only meaningful when at least one bound is set and the metric includes units that didn't send events.
     */
    winsorIncludeImputed?: boolean | undefined;
    /**
     * For trace metrics, the trace query to use for the metric.
     */
    traceQuery?: string | undefined;
    /**
     * For trace metrics, the location in the trace to use for numeric values.
     */
    traceValueLocation?: string | undefined;
    /**
     * For count_distinct metrics, the column to count distinct values of
     */
    unitAggregationField?: string | undefined;
    denominator?: MetricDenominatorRep | undefined;
};
/** @internal */
export declare const MetricListingRepKind$inboundSchema: z.ZodNativeEnum<typeof MetricListingRepKind>;
/** @internal */
export declare const MetricListingRepKind$outboundSchema: z.ZodNativeEnum<typeof MetricListingRepKind>;
/** @internal */
export declare const MetricListingRepSuccessCriteria$inboundSchema: z.ZodNativeEnum<typeof MetricListingRepSuccessCriteria>;
/** @internal */
export declare const MetricListingRepSuccessCriteria$outboundSchema: z.ZodNativeEnum<typeof MetricListingRepSuccessCriteria>;
/** @internal */
export declare const MetricListingRepUnitAggregationType$inboundSchema: z.ZodNativeEnum<typeof MetricListingRepUnitAggregationType>;
/** @internal */
export declare const MetricListingRepUnitAggregationType$outboundSchema: z.ZodNativeEnum<typeof MetricListingRepUnitAggregationType>;
/** @internal */
export declare const MetricListingRepAnalysisType$inboundSchema: z.ZodNativeEnum<typeof MetricListingRepAnalysisType>;
/** @internal */
export declare const MetricListingRepAnalysisType$outboundSchema: z.ZodNativeEnum<typeof MetricListingRepAnalysisType>;
/** @internal */
export declare const MetricListingRep$inboundSchema: z.ZodType<MetricListingRep, z.ZodTypeDef, unknown>;
/** @internal */
export type MetricListingRep$Outbound = {
    experimentCount?: number | undefined;
    metricGroupCount?: number | undefined;
    activeExperimentCount?: number | undefined;
    activeGuardedRolloutCount?: number | undefined;
    _id: string;
    _versionId: string;
    _version?: number | undefined;
    key: string;
    name: string;
    kind: string;
    _attachedFlagCount?: number | undefined;
    _links: {
        [k: string]: Link$Outbound;
    };
    _site?: Link$Outbound | undefined;
    _access?: Access$Outbound | undefined;
    tags: Array<string>;
    _creationDate: number;
    lastModified?: Modification$Outbound | undefined;
    maintainerId?: string | undefined;
    _maintainer?: MemberSummary$Outbound | undefined;
    description?: string | undefined;
    category?: string | undefined;
    isNumeric?: boolean | undefined;
    successCriteria?: string | undefined;
    unit?: string | undefined;
    eventKey?: string | undefined;
    randomizationUnits?: Array<string> | undefined;
    analysisUnits?: Array<string> | undefined;
    filters?: Filter$Outbound | undefined;
    unitAggregationType?: string | undefined;
    analysisType?: string | undefined;
    percentileValue?: number | undefined;
    eventDefault?: MetricEventDefaultRep$Outbound | undefined;
    dataSource: MetricDataSourceRefRep$Outbound;
    lastSeen?: number | undefined;
    archived?: boolean | undefined;
    archivedAt?: number | undefined;
    selector?: string | undefined;
    urls?: Array<{
        [k: string]: any;
    }> | undefined;
    windowStartOffset?: number | undefined;
    windowEndOffset?: number | undefined;
    winsorLowerPercentile?: number | undefined;
    winsorUpperPercentile?: number | undefined;
    winsorIncludeImputed?: boolean | undefined;
    traceQuery?: string | undefined;
    traceValueLocation?: string | undefined;
    unitAggregationField?: string | undefined;
    denominator?: MetricDenominatorRep$Outbound | undefined;
};
/** @internal */
export declare const MetricListingRep$outboundSchema: z.ZodType<MetricListingRep$Outbound, z.ZodTypeDef, MetricListingRep>;
export declare function metricListingRepToJSON(metricListingRep: MetricListingRep): string;
export declare function metricListingRepFromJSON(jsonString: string): SafeParseResult<MetricListingRep, SDKValidationError>;
//# sourceMappingURL=metriclistingrep.d.ts.map