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 { AnalysisConfigRep, AnalysisConfigRep$Outbound } from "./analysisconfigrep.js";
import { IterationRep, IterationRep$Outbound } from "./iterationrep.js";
import { Link, Link$Outbound } from "./link.js";
import { MutableFieldsByStatusRep, MutableFieldsByStatusRep$Outbound } from "./mutablefieldsbystatusrep.js";
/**
 * The results analysis approach.
 */
export declare const ExperimentMethodology: {
    readonly Bayesian: "bayesian";
    readonly Frequentist: "frequentist";
    readonly ExportOnly: "export_only";
};
/**
 * The results analysis approach.
 */
export type ExperimentMethodology = ClosedEnum<typeof ExperimentMethodology>;
/**
 * The source of metric data in order to analyze results. Defaults to "launchdarkly" when not provided.
 */
export declare const ExperimentDataSource: {
    readonly Launchdarkly: "launchdarkly";
    readonly Snowflake: "snowflake";
};
/**
 * The source of metric data in order to analyze results. Defaults to "launchdarkly" when not provided.
 */
export type ExperimentDataSource = ClosedEnum<typeof ExperimentDataSource>;
export type Experiment = {
    /**
     * The experiment ID
     */
    id?: string | undefined;
    /**
     * The experiment key
     */
    key: string;
    /**
     * The experiment name
     */
    name: string;
    /**
     * The experiment description
     */
    description?: string | undefined;
    /**
     * The ID of the member who maintains this experiment.
     */
    maintainerId: string;
    creationDate: number;
    environmentKey: string;
    /**
     * The results analysis approach.
     */
    methodology?: ExperimentMethodology | undefined;
    /**
     * The source of metric data in order to analyze results. Defaults to "launchdarkly" when not provided.
     */
    dataSource?: ExperimentDataSource | undefined;
    archivedDate?: number | undefined;
    /**
     * Tags for the experiment
     */
    tags?: Array<string> | undefined;
    /**
     * The location and content type of related resources
     */
    links: {
        [k: string]: Link;
    };
    /**
     * The holdout ID
     */
    holdoutId?: string | undefined;
    currentIteration?: IterationRep | undefined;
    /**
     * The experiment type
     */
    type?: string | undefined;
    access?: Access | undefined;
    draftIteration?: IterationRep | undefined;
    /**
     * Details on the previous iterations for this experiment.
     */
    previousIterations?: Array<IterationRep> | undefined;
    analysisConfig?: AnalysisConfigRep | undefined;
    mutableFieldsByStatus?: MutableFieldsByStatusRep | undefined;
};
/** @internal */
export declare const ExperimentMethodology$inboundSchema: z.ZodNativeEnum<typeof ExperimentMethodology>;
/** @internal */
export declare const ExperimentMethodology$outboundSchema: z.ZodNativeEnum<typeof ExperimentMethodology>;
/** @internal */
export declare const ExperimentDataSource$inboundSchema: z.ZodNativeEnum<typeof ExperimentDataSource>;
/** @internal */
export declare const ExperimentDataSource$outboundSchema: z.ZodNativeEnum<typeof ExperimentDataSource>;
/** @internal */
export declare const Experiment$inboundSchema: z.ZodType<Experiment, z.ZodTypeDef, unknown>;
/** @internal */
export type Experiment$Outbound = {
    _id?: string | undefined;
    key: string;
    name: string;
    description?: string | undefined;
    _maintainerId: string;
    _creationDate: number;
    environmentKey: string;
    methodology?: string | undefined;
    dataSource?: string | undefined;
    archivedDate?: number | undefined;
    tags?: Array<string> | undefined;
    _links: {
        [k: string]: Link$Outbound;
    };
    holdoutId?: string | undefined;
    currentIteration?: IterationRep$Outbound | undefined;
    type?: string | undefined;
    _access?: Access$Outbound | undefined;
    draftIteration?: IterationRep$Outbound | undefined;
    previousIterations?: Array<IterationRep$Outbound> | undefined;
    analysisConfig?: AnalysisConfigRep$Outbound | undefined;
    mutableFieldsByStatus?: MutableFieldsByStatusRep$Outbound | undefined;
};
/** @internal */
export declare const Experiment$outboundSchema: z.ZodType<Experiment$Outbound, z.ZodTypeDef, Experiment>;
export declare function experimentToJSON(experiment: Experiment): string;
export declare function experimentFromJSON(jsonString: string): SafeParseResult<Experiment, SDKValidationError>;
//# sourceMappingURL=experiment.d.ts.map