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 { ClientSideAvailability, ClientSideAvailability$Outbound } from "./clientsideavailability.js";
import { CustomProperty, CustomProperty$Outbound } from "./customproperty.js";
import { Defaults, Defaults$Outbound } from "./defaults.js";
import { ExperimentInfoRep, ExperimentInfoRep$Outbound } from "./experimentinforep.js";
import { FeatureFlagConfig, FeatureFlagConfig$Outbound } from "./featureflagconfig.js";
import { FlagMigrationSettingsRep, FlagMigrationSettingsRep$Outbound } from "./flagmigrationsettingsrep.js";
import { Link, Link$Outbound } from "./link.js";
import { MaintainerTeam, MaintainerTeam$Outbound } from "./maintainerteam.js";
import { MemberSummary, MemberSummary$Outbound } from "./membersummary.js";
import { StaleFlagData, StaleFlagData$Outbound } from "./staleflagdata.js";
import { Variation, Variation$Outbound } from "./variation.js";
/**
 * Kind of feature flag
 */
export declare const FeatureFlagKind: {
    readonly Boolean: "boolean";
    readonly Multivariate: "multivariate";
};
/**
 * Kind of feature flag
 */
export type FeatureFlagKind = ClosedEnum<typeof FeatureFlagKind>;
export type FeatureFlag = {
    /**
     * A human-friendly name for the feature flag
     */
    name: string;
    /**
     * Kind of feature flag
     */
    kind: FeatureFlagKind;
    /**
     * Description of the feature flag
     */
    description?: string | undefined;
    /**
     * A unique key used to reference the flag in your code
     */
    key: string;
    /**
     * Version of the feature flag
     */
    version: number;
    creationDate: number;
    /**
     * Deprecated, use <code>clientSideAvailability</code>. Whether this flag should be made available to the client-side JavaScript SDK
     *
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    includeInSnippet?: boolean | undefined;
    clientSideAvailability?: ClientSideAvailability | undefined;
    /**
     * An array of possible variations for the flag
     */
    variations: Array<Variation>;
    /**
     * Whether the flag is a temporary flag
     */
    temporary: boolean;
    /**
     * Tags for the feature flag
     */
    tags: Array<string>;
    /**
     * The location and content type of related resources
     */
    links: {
        [k: string]: Link;
    };
    /**
     * Associated maintainerId for the feature flag
     */
    maintainerId?: string | undefined;
    maintainer?: MemberSummary | undefined;
    /**
     * The key of the associated team that maintains this feature flag
     */
    maintainerTeamKey?: string | undefined;
    maintainerTeam?: MaintainerTeam | undefined;
    /**
     * Deprecated, use <code>experiments</code> instead
     *
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    goalIds?: Array<string> | undefined;
    experiments: ExperimentInfoRep;
    customProperties: {
        [k: string]: CustomProperty;
    };
    /**
     * Boolean indicating if the feature flag is archived
     */
    archived: boolean;
    archivedDate?: number | undefined;
    /**
     * Boolean indicating if the feature flag is deprecated
     */
    deprecated?: boolean | undefined;
    deprecatedDate?: number | undefined;
    defaults?: Defaults | undefined;
    purpose?: string | undefined;
    migrationSettings?: FlagMigrationSettingsRep | undefined;
    stale?: StaleFlagData | undefined;
    /**
     * Details on the environments for this flag. Only returned if the request is filtered by environment, using the <code>filterEnv</code> query parameter.
     */
    environments?: {
        [k: string]: FeatureFlagConfig;
    } | undefined;
};
/** @internal */
export declare const FeatureFlagKind$inboundSchema: z.ZodNativeEnum<typeof FeatureFlagKind>;
/** @internal */
export declare const FeatureFlagKind$outboundSchema: z.ZodNativeEnum<typeof FeatureFlagKind>;
/** @internal */
export declare const FeatureFlag$inboundSchema: z.ZodType<FeatureFlag, z.ZodTypeDef, unknown>;
/** @internal */
export type FeatureFlag$Outbound = {
    name: string;
    kind: string;
    description?: string | undefined;
    key: string;
    _version: number;
    creationDate: number;
    includeInSnippet?: boolean | undefined;
    clientSideAvailability?: ClientSideAvailability$Outbound | undefined;
    variations: Array<Variation$Outbound>;
    temporary: boolean;
    tags: Array<string>;
    _links: {
        [k: string]: Link$Outbound;
    };
    maintainerId?: string | undefined;
    _maintainer?: MemberSummary$Outbound | undefined;
    maintainerTeamKey?: string | undefined;
    _maintainerTeam?: MaintainerTeam$Outbound | undefined;
    goalIds?: Array<string> | undefined;
    experiments: ExperimentInfoRep$Outbound;
    customProperties: {
        [k: string]: CustomProperty$Outbound;
    };
    archived: boolean;
    archivedDate?: number | undefined;
    deprecated?: boolean | undefined;
    deprecatedDate?: number | undefined;
    defaults?: Defaults$Outbound | undefined;
    _purpose?: string | undefined;
    migrationSettings?: FlagMigrationSettingsRep$Outbound | undefined;
    stale?: StaleFlagData$Outbound | undefined;
    environments?: {
        [k: string]: FeatureFlagConfig$Outbound;
    } | undefined;
};
/** @internal */
export declare const FeatureFlag$outboundSchema: z.ZodType<FeatureFlag$Outbound, z.ZodTypeDef, FeatureFlag>;
export declare function featureFlagToJSON(featureFlag: FeatureFlag): string;
export declare function featureFlagFromJSON(jsonString: string): SafeParseResult<FeatureFlag, SDKValidationError>;
//# sourceMappingURL=featureflag.d.ts.map