/** * @name env * @description Enterprise-grade configuration management with environment variable validation, config file support, multi-environment profiles, and secure defaults. * @module config-runtime/env */ import { z } from 'zod'; import type { SapMcpConfig } from '../../core/src/types.js'; export type { SapMcpConfig, SapMcpMode, SapMcpMonetizationConfig, SapMcpMonetizationProvider, } from '../../core/src/types.js'; /** * Zod schema for environment-driven configuration. */ /** @name envSchema - Zod schema for validating environment variables and configuration file entries. */ export declare const envSchema: z.ZodObject<{ SAP_MCP_PROFILE: z.ZodOptional; SAP_MCP_CONFIG_PATH: z.ZodOptional; SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE: z.ZodDefault>; SAP_MCP_MODE: z.ZodDefault>; SAP_MCP_RPC_URL: z.ZodOptional; SAP_RPC_URL: z.ZodDefault; SAP_RPC_URL_DEVNET: z.ZodOptional; SAP_RPC_URL_TESTNET: z.ZodOptional; SAP_PROGRAM_ID: z.ZodDefault; SAP_COMMITMENT: z.ZodDefault>; SAP_MAX_RETRIES: z.ZodDefault; SAP_RETRY_DELAY_MS: z.ZodDefault; SAP_WALLET_PATH: z.ZodOptional; SAP_WALLET_ENCRYPTED: z.ZodDefault>; SAP_WALLET_PASSPHRASE_ENV: z.ZodOptional; SAP_EXTERNAL_SIGNER_URL: z.ZodOptional; SAP_EXTERNAL_SIGNER_TIMEOUT_MS: z.ZodDefault; SAP_ENABLE_HTTP: z.ZodDefault>; SAP_HTTP_PORT: z.ZodDefault; SAP_HTTP_HOST: z.ZodDefault; SAP_HTTP_CORS_ORIGINS: z.ZodOptional; SAP_MAX_TX_VALUE_SOL: z.ZodDefault; SAP_REQUIRE_APPROVAL_ABOVE_SOL: z.ZodDefault; SAP_DAILY_LIMIT_SOL: z.ZodDefault; SAP_ALLOWED_TOOLS: z.ZodOptional; SAP_MCP_CATALOG_READONLY: z.ZodDefault>; SAP_LOG_LEVEL: z.ZodDefault>; SAP_LOG_FORMAT: z.ZodDefault>; SAP_LOG_FILE: z.ZodOptional; SAP_ENABLE_METRICS: z.ZodDefault>; SAP_METRICS_PORT: z.ZodDefault; SAP_ENABLE_CACHE: z.ZodDefault>; SAP_CACHE_TTL_SECONDS: z.ZodDefault; SAP_ENABLE_RATE_LIMIT: z.ZodDefault>; SAP_RATE_LIMIT_PER_MINUTE: z.ZodDefault; SAP_MCP_JUPITER_API_BASE_URL: z.ZodDefault; SAP_MCP_JUPITER_TOKENS_API_BASE_URL: z.ZodOptional; SAP_MCP_JUPITER_API_KEY: z.ZodOptional; JUPITER_API_KEY: z.ZodOptional; JUP_API_KEY: z.ZodOptional; SAP_MCP_JUPITER_TIMEOUT_MS: z.ZodDefault; SAP_MCP_PERPS_MARKETS_URL: z.ZodOptional; SAP_MCP_PERPS_POSITIONS_URL: z.ZodOptional; SAP_MCP_PERPS_BUILDER_URL: z.ZodOptional; SAP_MCP_PERPS_API_KEY: z.ZodOptional; SAP_MCP_PERPS_ADRENA_PROGRAM_ID: z.ZodDefault; SAP_MCP_PERPS_TIMEOUT_MS: z.ZodDefault; SAP_MCP_PRIORITY_FEE_MICRO_LAMPORTS: z.ZodDefault; SAP_MCP_MONETIZATION_ENABLED: z.ZodDefault>; SAP_MCP_MONETIZATION_PROVIDER: z.ZodDefault>; SAP_MCP_MONETIZATION_PAY_TO: z.ZodOptional; SAP_MCP_MONETIZATION_NETWORK: z.ZodOptional; SAP_MCP_X402_FACILITATOR_URL: z.ZodOptional; SAP_MCP_X402_FACILITATOR_AUTH_TOKEN: z.ZodOptional; SAP_MCP_X402_MAX_TIMEOUT_SECONDS: z.ZodDefault; SAP_MCP_PAY_SH_CHECKOUT_URL: z.ZodOptional; SAP_MCP_MONETIZATION_STRICT_TOOLS: z.ZodDefault>; SAP_MCP_PRICE_MICRO_READ_USD: z.ZodDefault; SAP_MCP_PRICE_READ_PREMIUM_USD: z.ZodDefault; SAP_MCP_PRICE_BUILDER_USD: z.ZodDefault; SAP_MCP_PRICE_VALUE_FIXED_USD: z.ZodDefault; SAP_MCP_PRICE_HEAVY_VALUE_USD: z.ZodDefault; SAP_MCP_PRICE_VALUE_BPS: z.ZodDefault; SAP_MCP_PRICE_MIN_USD: z.ZodDefault; SAP_MCP_PRICE_MAX_USD: z.ZodDefault; }, "strip", z.ZodTypeAny, { SAP_MCP_MODE: "readonly" | "local-dev-keypair" | "external-signer" | "delegated-session" | "hosted-api"; SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE: boolean; SAP_RPC_URL: string; SAP_PROGRAM_ID: string; SAP_COMMITMENT: "confirmed" | "processed" | "finalized"; SAP_MAX_RETRIES: number; SAP_RETRY_DELAY_MS: number; SAP_WALLET_ENCRYPTED: boolean; SAP_EXTERNAL_SIGNER_TIMEOUT_MS: number; SAP_ENABLE_HTTP: boolean; SAP_HTTP_PORT: number; SAP_HTTP_HOST: string; SAP_MAX_TX_VALUE_SOL: number; SAP_REQUIRE_APPROVAL_ABOVE_SOL: number; SAP_DAILY_LIMIT_SOL: number; SAP_MCP_CATALOG_READONLY: boolean; SAP_LOG_LEVEL: "info" | "debug" | "warn" | "error"; SAP_LOG_FORMAT: "json" | "pretty"; SAP_ENABLE_METRICS: boolean; SAP_METRICS_PORT: number; SAP_ENABLE_CACHE: boolean; SAP_CACHE_TTL_SECONDS: number; SAP_ENABLE_RATE_LIMIT: boolean; SAP_RATE_LIMIT_PER_MINUTE: number; SAP_MCP_JUPITER_API_BASE_URL: string; SAP_MCP_JUPITER_TIMEOUT_MS: number; SAP_MCP_PERPS_ADRENA_PROGRAM_ID: string; SAP_MCP_PERPS_TIMEOUT_MS: number; SAP_MCP_PRIORITY_FEE_MICRO_LAMPORTS: number; SAP_MCP_MONETIZATION_ENABLED: boolean; SAP_MCP_MONETIZATION_PROVIDER: "x402" | "pay-sh"; SAP_MCP_X402_MAX_TIMEOUT_SECONDS: number; SAP_MCP_MONETIZATION_STRICT_TOOLS: boolean; SAP_MCP_PRICE_MICRO_READ_USD: number; SAP_MCP_PRICE_READ_PREMIUM_USD: number; SAP_MCP_PRICE_BUILDER_USD: number; SAP_MCP_PRICE_VALUE_FIXED_USD: number; SAP_MCP_PRICE_HEAVY_VALUE_USD: number; SAP_MCP_PRICE_VALUE_BPS: number; SAP_MCP_PRICE_MIN_USD: number; SAP_MCP_PRICE_MAX_USD: number; SAP_MCP_PROFILE?: string | undefined; SAP_MCP_CONFIG_PATH?: string | undefined; SAP_MCP_RPC_URL?: string | undefined; SAP_RPC_URL_DEVNET?: string | undefined; SAP_RPC_URL_TESTNET?: string | undefined; SAP_WALLET_PATH?: string | undefined; SAP_WALLET_PASSPHRASE_ENV?: string | undefined; SAP_EXTERNAL_SIGNER_URL?: string | undefined; SAP_HTTP_CORS_ORIGINS?: string | undefined; SAP_ALLOWED_TOOLS?: string | undefined; SAP_LOG_FILE?: string | undefined; SAP_MCP_JUPITER_TOKENS_API_BASE_URL?: string | undefined; SAP_MCP_JUPITER_API_KEY?: string | undefined; JUPITER_API_KEY?: string | undefined; JUP_API_KEY?: string | undefined; SAP_MCP_PERPS_MARKETS_URL?: string | undefined; SAP_MCP_PERPS_POSITIONS_URL?: string | undefined; SAP_MCP_PERPS_BUILDER_URL?: string | undefined; SAP_MCP_PERPS_API_KEY?: string | undefined; SAP_MCP_MONETIZATION_PAY_TO?: string | undefined; SAP_MCP_MONETIZATION_NETWORK?: string | undefined; SAP_MCP_X402_FACILITATOR_URL?: string | undefined; SAP_MCP_X402_FACILITATOR_AUTH_TOKEN?: string | undefined; SAP_MCP_PAY_SH_CHECKOUT_URL?: string | undefined; }, { SAP_MCP_MODE?: "readonly" | "local-dev-keypair" | "external-signer" | "delegated-session" | "hosted-api" | undefined; SAP_MCP_PROFILE?: string | undefined; SAP_MCP_CONFIG_PATH?: string | undefined; SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE?: unknown; SAP_MCP_RPC_URL?: string | undefined; SAP_RPC_URL?: string | undefined; SAP_RPC_URL_DEVNET?: string | undefined; SAP_RPC_URL_TESTNET?: string | undefined; SAP_PROGRAM_ID?: string | undefined; SAP_COMMITMENT?: "confirmed" | "processed" | "finalized" | undefined; SAP_MAX_RETRIES?: number | undefined; SAP_RETRY_DELAY_MS?: number | undefined; SAP_WALLET_PATH?: string | undefined; SAP_WALLET_ENCRYPTED?: unknown; SAP_WALLET_PASSPHRASE_ENV?: string | undefined; SAP_EXTERNAL_SIGNER_URL?: string | undefined; SAP_EXTERNAL_SIGNER_TIMEOUT_MS?: number | undefined; SAP_ENABLE_HTTP?: unknown; SAP_HTTP_PORT?: number | undefined; SAP_HTTP_HOST?: string | undefined; SAP_HTTP_CORS_ORIGINS?: string | undefined; SAP_MAX_TX_VALUE_SOL?: number | undefined; SAP_REQUIRE_APPROVAL_ABOVE_SOL?: number | undefined; SAP_DAILY_LIMIT_SOL?: number | undefined; SAP_ALLOWED_TOOLS?: string | undefined; SAP_MCP_CATALOG_READONLY?: unknown; SAP_LOG_LEVEL?: "info" | "debug" | "warn" | "error" | undefined; SAP_LOG_FORMAT?: "json" | "pretty" | undefined; SAP_LOG_FILE?: string | undefined; SAP_ENABLE_METRICS?: unknown; SAP_METRICS_PORT?: number | undefined; SAP_ENABLE_CACHE?: unknown; SAP_CACHE_TTL_SECONDS?: number | undefined; SAP_ENABLE_RATE_LIMIT?: unknown; SAP_RATE_LIMIT_PER_MINUTE?: number | undefined; SAP_MCP_JUPITER_API_BASE_URL?: string | undefined; SAP_MCP_JUPITER_TOKENS_API_BASE_URL?: string | undefined; SAP_MCP_JUPITER_API_KEY?: string | undefined; JUPITER_API_KEY?: string | undefined; JUP_API_KEY?: string | undefined; SAP_MCP_JUPITER_TIMEOUT_MS?: number | undefined; SAP_MCP_PERPS_MARKETS_URL?: string | undefined; SAP_MCP_PERPS_POSITIONS_URL?: string | undefined; SAP_MCP_PERPS_BUILDER_URL?: string | undefined; SAP_MCP_PERPS_API_KEY?: string | undefined; SAP_MCP_PERPS_ADRENA_PROGRAM_ID?: string | undefined; SAP_MCP_PERPS_TIMEOUT_MS?: number | undefined; SAP_MCP_PRIORITY_FEE_MICRO_LAMPORTS?: number | undefined; SAP_MCP_MONETIZATION_ENABLED?: unknown; SAP_MCP_MONETIZATION_PROVIDER?: "x402" | "pay-sh" | undefined; SAP_MCP_MONETIZATION_PAY_TO?: string | undefined; SAP_MCP_MONETIZATION_NETWORK?: string | undefined; SAP_MCP_X402_FACILITATOR_URL?: string | undefined; SAP_MCP_X402_FACILITATOR_AUTH_TOKEN?: string | undefined; SAP_MCP_X402_MAX_TIMEOUT_SECONDS?: number | undefined; SAP_MCP_PAY_SH_CHECKOUT_URL?: string | undefined; SAP_MCP_MONETIZATION_STRICT_TOOLS?: unknown; SAP_MCP_PRICE_MICRO_READ_USD?: number | undefined; SAP_MCP_PRICE_READ_PREMIUM_USD?: number | undefined; SAP_MCP_PRICE_BUILDER_USD?: number | undefined; SAP_MCP_PRICE_VALUE_FIXED_USD?: number | undefined; SAP_MCP_PRICE_HEAVY_VALUE_USD?: number | undefined; SAP_MCP_PRICE_VALUE_BPS?: number | undefined; SAP_MCP_PRICE_MIN_USD?: number | undefined; SAP_MCP_PRICE_MAX_USD?: number | undefined; }>; /** * Parsed environment configuration before conversion to runtime config. */ /** @name SapEnvConfig - Inferred configuration type from the env Zod schema. */ export type SapEnvConfig = z.infer; /** * Get user-specific configuration directory * * Follows XDG Base Directory Specification: * - Linux/macOS: ~/.config/mcp-sap/ or $XDG_CONFIG_HOME/mcp-sap/ * - Windows: %APPDATA%/mcp-sap/ */ /** @name getConfigDir - Returns the canonical configuration directory path for the active platform. */ export declare function getConfigDir(): string; /** * Get data directory for cache, logs, etc. * * - Linux/macOS: ~/.local/share/mcp-sap/ or $XDG_DATA_HOME/mcp-sap/ * - Windows: %LOCALAPPDATA%/mcp-sap/ */ /** @name getDataDir - Returns the canonical data directory path for persistent state. */ export declare function getDataDir(): string; /** * Get log directory */ /** @name getLogDir - Returns the log directory path for the active platform. */ export declare function getLogDir(): string; /** * Get cache directory */ /** @name getCacheDir - Returns the cache directory path for the active platform. */ export declare function getCacheDir(): string; /** * Load configuration from multiple sources (priority order): * * 1. Environment variables (highest priority) * 2. Config file (~/.config/mcp-sap/config.json or config.yaml) * 3. .env file in project directory * 4. Default values (lowest priority) */ /** @name loadConfig - Loads and validates the SAP MCP configuration from the active profile, merging environment variables and config file values. */ export declare function loadConfig(configPath?: string): SapMcpConfig; /** * Ensure all required directories exist */ /** @name ensureDirectories - Creates all required configuration, data, log, and cache directories if they do not exist. */ export declare function ensureDirectories(): void; /** * Get config file path for writing */ /** @name getConfigFilePath - Returns the path to the active profile configuration file. */ export declare function getConfigFilePath(): string; /** * Save configuration to file */ /** @name saveConfig - Persists a partial configuration update to the active profile config file with atomic write and validation. */ export declare function saveConfig(config: Partial): void; /** * Validate configuration for specific mode */ /** @name validateConfigForMode - Validates that a configuration is complete and correct for the specified runtime mode (hosted, local-dev-keypair, etc.). */ export declare function validateConfigForMode(config: SapMcpConfig): { valid: boolean; errors: string[]; }; //# sourceMappingURL=env.d.ts.map