/**
 * Configuration Schema
 * Defines the structure and types for ZinTrust configuration
 */
export interface DatabaseConfig {
    connection: 'sqlite' | 'postgres' | 'mysql' | 'mariadb';
    host?: string;
    port?: number;
    database?: string;
    username?: string;
    password?: string;
    charset?: string;
    collation?: string;
    synchronize?: boolean;
    logging?: boolean;
}
export interface ServerConfig {
    port: number;
    host: string;
    environment: 'development' | 'production' | 'testing';
    debug: boolean;
    profiling: boolean;
    tracing: boolean;
}
export interface AuthConfig {
    enabled: boolean;
    strategy: 'jwt' | 'session' | 'apikey';
    jwtSecret?: string;
    sessionSecret?: string;
    expiresIn: string;
}
export interface MicroservicesConfig {
    enabled: boolean;
    port: number;
    apiGatewayPort?: number;
    discoveryType: 'filesystem' | 'consul' | 'kubernetes';
    healthCheckInterval: number;
}
export interface FeatureConfig {
    auth: boolean;
    database: boolean;
    cache: boolean;
    queue: boolean;
    storage: boolean;
    email: boolean;
    webhooks: boolean;
    monitoring: boolean;
}
export interface ProjectConfig {
    name: string;
    version: string;
    description?: string;
    author?: string;
    database: DatabaseConfig;
    server: ServerConfig;
    auth: AuthConfig;
    microservices: MicroservicesConfig;
    features: FeatureConfig;
    [key: string]: unknown;
}
/**
 * Default configuration values
 */
export declare const DEFAULT_CONFIG: Readonly<{
    name: string;
    version: string;
    description: string;
    author: string;
    database: {
        connection: "sqlite";
        charset: string;
        collation: string;
        synchronize: true;
        logging: false;
    };
    server: {
        port: number;
        host: string;
        environment: "development";
        debug: false;
        profiling: false;
        tracing: false;
    };
    auth: {
        enabled: false;
        strategy: "jwt";
        expiresIn: string;
    };
    microservices: {
        enabled: false;
        port: number;
        discoveryType: "filesystem";
        healthCheckInterval: number;
    };
    features: {
        auth: false;
        database: true;
        cache: false;
        queue: false;
        storage: false;
        email: false;
        webhooks: false;
        monitoring: false;
    };
}>;
/**
 * Configuration paths
 * Sealed namespace for immutability
 */
export declare const ConfigPaths: Readonly<{
    GLOBAL_DIR: string;
    GLOBAL_CONFIG: `${string}/config.json`;
    PROJECT_CONFIG: ".zintrust.json";
    PROJECT_CONFIG_TS: "zintrust.config.ts";
    ENV_FILE: ".env";
    ENV_EXAMPLE: ".env.example";
}>;
/**
 * Validation rule interface
 */
export interface ValidationRule {
    type?: string;
    required?: boolean;
    minLength?: number;
    maxLength?: number;
    pattern?: RegExp;
    min?: number;
    max?: number;
    enum?: string[];
    description?: string;
}
/**
 * Validation rules for each config section
 * Sealed namespace for immutability
 */
export declare const CONFIG_RULES: Readonly<{
    name: {
        type: string;
        required: boolean;
        minLength: number;
        maxLength: number;
        pattern: RegExp;
        description: string;
    };
    version: {
        type: string;
        required: boolean;
        pattern: RegExp;
        description: string;
    };
    'server.port': {
        type: string;
        required: boolean;
        min: number;
        max: number;
        description: string;
    };
    'server.environment': {
        type: string;
        required: boolean;
        enum: string[];
        description: string;
    };
    'database.connection': {
        type: string;
        required: boolean;
        enum: string[];
        description: string;
    };
    'auth.strategy': {
        type: string;
        required: boolean;
        enum: string[];
        description: string;
    };
    'microservices.discoveryType': {
        type: string;
        required: boolean;
        enum: string[];
        description: string;
    };
}>;
/**
 * Get default config for a specific key
 */
export declare function getDefaultValue(key: string): unknown;
/**
 * Set config value in object (deep set)
 */
export declare function setConfigValue(obj: Record<string, unknown>, path: string, value: unknown): void;
/**
 * Get config value from object (deep get)
 */
export declare function getConfigValue(obj: Record<string, unknown>, path: string): unknown;
//# sourceMappingURL=ConfigSchema.d.ts.map