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 { ClientSideAvailabilityPost, ClientSideAvailabilityPost$Outbound } from "./clientsideavailabilitypost.js";
import { CustomProperty, CustomProperty$Outbound } from "./customproperty.js";
import { Defaults, Defaults$Outbound } from "./defaults.js";
import { FlagPrerequisitePost, FlagPrerequisitePost$Outbound } from "./flagprerequisitepost.js";
import { MigrationSettingsPost, MigrationSettingsPost$Outbound } from "./migrationsettingspost.js";
import { Variation, Variation$Outbound } from "./variation.js";
/**
 * Purpose of the flag
 */
export declare const Purpose: {
    readonly Migration: "migration";
    readonly Holdout: "holdout";
};
/**
 * Purpose of the flag
 */
export type Purpose = ClosedEnum<typeof Purpose>;
export type FeatureFlagBody = {
    /**
     * A human-friendly name for the feature flag
     */
    name: string;
    /**
     * A unique key used to reference the flag in your code
     */
    key: string;
    /**
     * Description of the feature flag. Defaults to an empty string.
     */
    description?: string | undefined;
    /**
     * Deprecated, use <code>clientSideAvailability</code>. Whether this flag should be made available to the client-side JavaScript SDK. Defaults to <code>false</code>.
     *
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    includeInSnippet?: boolean | undefined;
    clientSideAvailability?: ClientSideAvailabilityPost | undefined;
    /**
     * An array of possible variations for the flag. The variation values must be unique. If omitted, two boolean variations of <code>true</code> and <code>false</code> will be used.
     */
    variations?: Array<Variation> | undefined;
    /**
     * Whether the flag is a temporary flag. Defaults to <code>true</code>.
     */
    temporary?: boolean | undefined;
    /**
     * Tags for the feature flag. Defaults to an empty array.
     */
    tags?: Array<string> | undefined;
    customProperties?: {
        [k: string]: CustomProperty;
    } | undefined;
    defaults?: Defaults | undefined;
    /**
     * Purpose of the flag
     */
    purpose?: Purpose | undefined;
    migrationSettings?: MigrationSettingsPost | undefined;
    /**
     * The ID of the member who maintains this feature flag
     */
    maintainerId?: string | undefined;
    /**
     * The key of the team that maintains this feature flag
     */
    maintainerTeamKey?: string | undefined;
    /**
     * Initial set of prerequisite flags for all environments
     */
    initialPrerequisites?: Array<FlagPrerequisitePost> | undefined;
    /**
     * Whether to automatically turn the flag on across all environments at creation. Defaults to <code>false</code>.
     */
    isFlagOn?: boolean | undefined;
};
/** @internal */
export declare const Purpose$inboundSchema: z.ZodNativeEnum<typeof Purpose>;
/** @internal */
export declare const Purpose$outboundSchema: z.ZodNativeEnum<typeof Purpose>;
/** @internal */
export declare const FeatureFlagBody$inboundSchema: z.ZodType<FeatureFlagBody, z.ZodTypeDef, unknown>;
/** @internal */
export type FeatureFlagBody$Outbound = {
    name: string;
    key: string;
    description?: string | undefined;
    includeInSnippet?: boolean | undefined;
    clientSideAvailability?: ClientSideAvailabilityPost$Outbound | undefined;
    variations?: Array<Variation$Outbound> | undefined;
    temporary?: boolean | undefined;
    tags?: Array<string> | undefined;
    customProperties?: {
        [k: string]: CustomProperty$Outbound;
    } | undefined;
    defaults?: Defaults$Outbound | undefined;
    purpose?: string | undefined;
    migrationSettings?: MigrationSettingsPost$Outbound | undefined;
    maintainerId?: string | undefined;
    maintainerTeamKey?: string | undefined;
    initialPrerequisites?: Array<FlagPrerequisitePost$Outbound> | undefined;
    isFlagOn?: boolean | undefined;
};
/** @internal */
export declare const FeatureFlagBody$outboundSchema: z.ZodType<FeatureFlagBody$Outbound, z.ZodTypeDef, FeatureFlagBody>;
export declare function featureFlagBodyToJSON(featureFlagBody: FeatureFlagBody): string;
export declare function featureFlagBodyFromJSON(jsonString: string): SafeParseResult<FeatureFlagBody, SDKValidationError>;
//# sourceMappingURL=featureflagbody.d.ts.map