import * as z from "zod/v3";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Access, Access$Outbound } from "./access.js";
import { FlagConfigEvaluation, FlagConfigEvaluation$Outbound } from "./flagconfigevaluation.js";
import { FlagConfigMigrationSettingsRep, FlagConfigMigrationSettingsRep$Outbound } from "./flagconfigmigrationsettingsrep.js";
import { FlagSummary, FlagSummary$Outbound } from "./flagsummary.js";
import { Link, Link$Outbound } from "./link.js";
import { Prerequisite, Prerequisite$Outbound } from "./prerequisite.js";
import { Rule, Rule$Outbound } from "./rule.js";
import { Target, Target$Outbound } from "./target.js";
import { VariationOrRolloutRep, VariationOrRolloutRep$Outbound } from "./variationorrolloutrep.js";
export type FeatureFlagConfig = {
    /**
     * Whether the flag is on
     */
    on: boolean;
    /**
     * Boolean indicating if the feature flag is archived
     */
    archived: boolean;
    salt: string;
    sel: string;
    lastModified: number;
    /**
     * Version of the feature flag
     */
    version: number;
    /**
     * An array of the individual targets that will receive a specific variation based on their key. Individual targets with a context kind of 'user' are included here.
     */
    targets?: Array<Target> | undefined;
    /**
     * An array of the individual targets that will receive a specific variation based on their key. Individual targets with context kinds other than 'user' are included here.
     */
    contextTargets?: Array<Target> | undefined;
    /**
     * An array of the rules for how to serve a variation to specific targets based on their attributes
     */
    rules?: Array<Rule> | undefined;
    fallthrough?: VariationOrRolloutRep | undefined;
    /**
     * The ID of the variation to serve when the flag is off
     */
    offVariation?: number | undefined;
    /**
     * An array of the prerequisite flags and their variations that are required before this flag takes effect
     */
    prerequisites?: Array<Prerequisite> | undefined;
    site: Link;
    access?: Access | undefined;
    /**
     * The environment name
     */
    environmentName: string;
    /**
     * Whether the SDK sends a detailed event for every evaluation of this flag, across all rules, instead of only summary counts. Required for Data Export, but doesn't enable Data Export on its own.
     */
    trackEvents: boolean;
    /**
     * Whether the SDK sends a detailed event for every evaluation of this flag's default rule, instead of only summary counts. Required for Data Export, but doesn't enable Data Export on its own.
     */
    trackEventsFallthrough: boolean;
    debugEventsUntilDate?: number | undefined;
    summary?: FlagSummary | undefined;
    evaluation?: FlagConfigEvaluation | undefined;
    migrationSettings?: FlagConfigMigrationSettingsRep | undefined;
};
/** @internal */
export declare const FeatureFlagConfig$inboundSchema: z.ZodType<FeatureFlagConfig, z.ZodTypeDef, unknown>;
/** @internal */
export type FeatureFlagConfig$Outbound = {
    on: boolean;
    archived: boolean;
    salt: string;
    sel: string;
    lastModified: number;
    version: number;
    targets?: Array<Target$Outbound> | undefined;
    contextTargets?: Array<Target$Outbound> | undefined;
    rules?: Array<Rule$Outbound> | undefined;
    fallthrough?: VariationOrRolloutRep$Outbound | undefined;
    offVariation?: number | undefined;
    prerequisites?: Array<Prerequisite$Outbound> | undefined;
    _site: Link$Outbound;
    _access?: Access$Outbound | undefined;
    _environmentName: string;
    trackEvents: boolean;
    trackEventsFallthrough: boolean;
    _debugEventsUntilDate?: number | undefined;
    _summary?: FlagSummary$Outbound | undefined;
    evaluation?: FlagConfigEvaluation$Outbound | undefined;
    migrationSettings?: FlagConfigMigrationSettingsRep$Outbound | undefined;
};
/** @internal */
export declare const FeatureFlagConfig$outboundSchema: z.ZodType<FeatureFlagConfig$Outbound, z.ZodTypeDef, FeatureFlagConfig>;
export declare function featureFlagConfigToJSON(featureFlagConfig: FeatureFlagConfig): string;
export declare function featureFlagConfigFromJSON(jsonString: string): SafeParseResult<FeatureFlagConfig, SDKValidationError>;
//# sourceMappingURL=featureflagconfig.d.ts.map