import type { ILispSecurityContext } from './LispSecurityContext';
/**
 * Security runtime mode.
 *
 * Determines which default security context is used.
 */
export type SecurityMode = 'production' | 'development' | 'test';
/**
 * Security configuration for the runtime.
 */
export interface ISecurityConfiguration {
    /** Runtime mode */
    mode: SecurityMode;
    /** Default context for new components */
    defaultContext: ILispSecurityContext;
    /** Whether env vars can override */
    allowEnvOverride: boolean;
}
/**
 * Get the security configuration for current environment.
 *
 * Mark Miller (E Language):
 *   "Configuration is computed once, then cached. Mode detection
 *    at startup prevents mid-session changes."
 */
export declare function getSecurityConfiguration(): ISecurityConfiguration;
/**
 * Get the default security context for components.
 *
 * This is the context used when no explicit context is provided.
 *
 * Robert C. Martin (SOLID, "Clean Code"):
 *   "Single point of access for default context. Easy to audit."
 */
export declare function getDefaultSecurityContext(): ILispSecurityContext;
/**
 * Check if we're in development mode.
 */
export declare function isDevMode(): boolean;
/**
 * Check if we're in production mode.
 */
export declare function isProductionMode(): boolean;
/**
 * Check if we're in test mode.
 */
export declare function isTestMode(): boolean;
/**
 * Reset cached configuration (for testing only).
 *
 * Kent Beck (TDD):
 *   "Tests need to reset state. Production code should never call this."
 */
export declare function _resetSecurityConfigurationForTesting(): void;
/**
 * Get security context by name.
 *
 * Provides access to predefined contexts by name.
 */
export declare function getSecurityContextByName(name: 'sandbox' | 'component' | 'developer' | 'default'): ILispSecurityContext;
//# sourceMappingURL=SecurityConfiguration.d.ts.map