import { z } from '@frontmcp/lazy-zod'; import type { PubsubOptionsInterface, RedisOptionsInterface } from './interfaces'; /** * Supported storage providers schema. */ export declare const storageProviderSchema: import("@frontmcp/lazy-zod").ZodEnum<{ redis: "redis"; "vercel-kv": "vercel-kv"; }>; export type StorageProvider = z.infer; /** * Full Redis provider configuration */ export declare const redisProviderSchema: import("@frontmcp/lazy-zod").ZodObject<{ provider: import("@frontmcp/lazy-zod").ZodLiteral<"redis">; host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; export type RedisProviderOptions = z.infer; /** * Vercel KV provider configuration * Uses environment variables by default (KV_REST_API_URL, KV_REST_API_TOKEN) */ export declare const vercelKvProviderSchema: import("@frontmcp/lazy-zod").ZodObject<{ provider: import("@frontmcp/lazy-zod").ZodLiteral<"vercel-kv">; url: import("@frontmcp/lazy-zod").ZodOptional; token: import("@frontmcp/lazy-zod").ZodOptional; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; export type VercelKvProviderOptions = z.infer; /** * Shared storage configuration * Supports both Redis and Vercel KV providers. * * @example Redis (explicit provider) * ```typescript * { * provider: 'redis', * host: 'localhost', * port: 6379, * } * ``` * * @example Redis (legacy format - backwards compatible) * ```typescript * { * host: 'localhost', * port: 6379, * } * ``` * * @example Vercel KV (uses env vars by default) * ```typescript * { * provider: 'vercel-kv', * } * ``` * * @example Vercel KV (explicit config) * ```typescript * { * provider: 'vercel-kv', * url: 'https://my-kv.vercel-storage.com', * token: 'my-token', * } * ``` */ export declare const redisOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion; host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ provider: import("@frontmcp/lazy-zod").ZodLiteral<"vercel-kv">; url: import("@frontmcp/lazy-zod").ZodOptional; token: import("@frontmcp/lazy-zod").ZodOptional; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>, import("zod").ZodPipe>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>, import("zod").ZodTransform<{ provider: "redis"; host: string; port: number; db: number; tls: boolean; keyPrefix: string; defaultTtlMs: number; password?: string | undefined; }, { host: string; port: number; db: number; tls: boolean; keyPrefix: string; defaultTtlMs: number; password?: string | undefined; }>>]>; /** * Storage configuration type (with defaults applied) */ export type RedisOptions = z.infer; /** * Storage configuration input type (for user configuration). * Uses explicit interface for better IDE autocomplete. */ export type RedisOptionsInput = RedisOptionsInterface; /** * Pub/Sub configuration (requires Redis, not compatible with Vercel KV) * * Use this when you need pub/sub features like resource subscriptions * but want to use Vercel KV for sessions/cache. * * @example Hybrid config * ```typescript * { * redis: { provider: 'vercel-kv' }, // sessions/cache * pubsub: { host: 'localhost' }, // pub/sub * } * ``` */ export declare const pubsubOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion; host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>, import("zod").ZodPipe>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>, import("zod").ZodTransform<{ provider: "redis"; host: string; port: number; db: number; tls: boolean; keyPrefix: string; defaultTtlMs: number; password?: string | undefined; }, { host: string; port: number; db: number; tls: boolean; keyPrefix: string; defaultTtlMs: number; password?: string | undefined; }>>]>; /** * Pub/Sub configuration type (Redis-only) */ export type PubsubOptions = z.infer; /** * Pub/Sub configuration input type. * Uses explicit interface for better IDE autocomplete. */ export type PubsubOptionsInput = PubsubOptionsInterface; /** * Check if options are for Redis provider */ export declare function isRedisProvider(options: RedisOptions): options is RedisProviderOptions; /** * Check if options are for Vercel KV provider */ export declare function isVercelKvProvider(options: RedisOptions): options is VercelKvProviderOptions; /** * Check if pub/sub options are valid Redis config */ export declare function isPubsubConfigured(options: PubsubOptions): options is RedisProviderOptions; //# sourceMappingURL=schema.d.ts.map