import z from "zod";
/**
 * Feature flag definition with key and Zod schema for parsing.
 */
export interface FeatureFlag<T = unknown> {
    key: string;
    schema: z.ZodType<T>;
    defaultValue?: T;
}
/**
 * Extract the output type from a Zod schema.
 */
type InferSchemaType<T> = T extends z.ZodType<infer U> ? U : never;
/**
 * Convert a flag definitions object into a type with inferred return types.
 */
type FlagValue<T extends FeatureFlag> = T extends {
    defaultValue: infer _Default;
} ? InferSchemaType<T["schema"]> : InferSchemaType<T["schema"]> | undefined;
type FlagGetters<T extends Record<string, FeatureFlag>> = {
    readonly [K in keyof T]: FlagValue<T[K]>;
};
/**
 * Feature flag definitions for AI service.
 *
 * To add a new flag, simply add a property here with key and schema:
 * ```
 * myNewFlag: {
 *   key: 'ai.my-new-flag',
 *   schema: z.number()
 * }
 * ```
 *
 * Then access it type-safely: `flags.myNewFlag`
 */
declare const FLAG_DEFINITIONS: {
    readonly metadataCacheMaxTotalSizeMB: {
        readonly key: "ai.metadata-cache-size-mb";
        readonly schema: z.ZodNumber;
    };
    readonly metadataCacheMaxSingleFileSizeMB: {
        readonly key: "ai.metadata-file-size-mb";
        readonly schema: z.ZodNumber;
    };
    readonly unifiedProviderEnabled: {
        readonly key: "superblocks.ai.provider.unified";
        readonly schema: z.ZodBoolean;
    };
    readonly safetyGuidancePrompt: {
        readonly key: "ai.prompt.safety-guidance";
        readonly schema: z.ZodString;
    };
    readonly safetyClassificationEnabled: {
        readonly key: "superblocks.ai.safety-classification.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly secretRedactionLevel: {
        readonly key: "superblocks.ai.secret-redaction.level";
        readonly schema: z.ZodEnum<["full", "initial-prompt", "off"]>;
    };
    readonly fallbackStrategy: {
        readonly key: "ai.fallback.strategy";
        readonly schema: z.ZodEnum<["model-then-provider", "provider-then-model", "model-then-provider-no-retry", "provider-then-model-no-retry", "only-model", "only-provider", "disabled"]>;
    };
    readonly parameterizedApisEnabled: {
        readonly key: "clark.parameterized-apis.v2.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly webToolsEnabled: {
        readonly key: "superblocks.ai.web-tools.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly superblocksDocsMcpEnabled: {
        readonly key: "superblocks.ai.docs-mcp.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly enableClarkAiReadAccessPermission: {
        readonly key: "ui.clark-ai.read-access-permission";
        readonly schema: z.ZodBoolean;
    };
    readonly thirdPartyImportEnabled: {
        readonly key: "ui.third-party-import.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly apiRunLogsEnabled: {
        readonly key: "ai.get-logs.api-runs.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly useSystemSkills: {
        readonly key: "clark.use_system_skills";
        readonly schema: z.ZodBoolean;
    };
    readonly sessionRecordingEnabled: {
        readonly key: "clark.session-recording.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly sessionManagementEnabled: {
        readonly key: "clark.session-management.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly promptUsageAlarmThreshold: {
        readonly key: "superblocks.ai.prompt.usage-alarm-threshold";
        readonly schema: z.ZodNumber;
        readonly defaultValue: 10;
    };
    /** Derived from application templateName in CLI (not LD). See isSdkApiTemplate(). */
    readonly sdkApiEnabled: {
        readonly key: "clark.sdk-api.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly aiFileUploadEnabled: {
        readonly key: "ai.file-upload.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly clarkAttachmentDownloadEnabled: {
        readonly key: "ai.clark-attachment-download.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly appKnowledgeEnabled: {
        readonly key: "ai.app-knowledge.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly nativeGitEnabled: {
        readonly key: "superblocks.native-git.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly nativeGitRawEnabled: {
        readonly key: "superblocks.native-git-raw.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly enableDeletingLockfiles: {
        readonly key: "ai.clark-delete-package-lock.enabled";
        readonly schema: z.ZodBoolean;
    };
    readonly suggestWhatsNext: {
        readonly key: "ai.suggest-whats-next";
        readonly schema: z.ZodBoolean;
    };
    readonly integrationSetupEnabled: {
        readonly key: "clark.integration-setup.enabled";
        readonly schema: z.ZodBoolean;
    };
};
/**
   Type-safe feature flags for AI service.

   Automatically parses and validates flag values using Zod schemas.
 * All flag definitions are in FLAG_DEFINITIONS above.
 */
export type AiServiceFeatureFlags = FlagGetters<typeof FLAG_DEFINITIONS>;
export declare const AiServiceFeatureFlags: {
    /**
     * Create a new feature flags instance with the given flag values.
     */
    create(flags?: Record<string, unknown>): AiServiceFeatureFlags;
};
export {};
//# sourceMappingURL=features.d.ts.map