/**
 * Security context for Lisp/VLM evaluation.
 *
 * Controls what a Lisp expression can do:
 * - Which primitives are allowed
 * - Resource limits (depth, time, memory)
 * - Communication capabilities (call, emit, spawn)
 *
 * See: Vision/18-VIRTUAL-LISP-MACHINE.md
 * See: Vision/27-SECURITY-FEDERATION-DRAFT.md Section 5
 */
export interface ILispSecurityContext {
    /** Context identifier */
    id: string;
    /** Security principal (who is running this code) */
    principal: string;
    /** When this context was created */
    createdAt: number;
    /**
     * Primitive access mode:
     * - 'allowlist': Only primitives in primitiveList are allowed
     * - 'blocklist': All primitives except those in primitiveList are allowed
     * - 'unrestricted': All primitives allowed (developer mode)
     */
    primitiveMode: 'allowlist' | 'blocklist' | 'unrestricted';
    /** List of primitive names (interpretation depends on primitiveMode) */
    primitiveList?: string[];
    /** Maximum evaluation depth (prevents infinite recursion) */
    maxEvalDepth: number;
    /** Maximum execution time in milliseconds */
    maxExecutionMs: number;
    /** Maximum memory in bytes (optional, Phase 2+) */
    maxMemoryBytes?: number;
    /**
     * Mount patterns allowed for 'call' primitive.
     * - ['*'] = any target allowed
     * - [] = no calls allowed
     * - ['app/*'] = only app subtree
     */
    callTargets: string[];
    /** Whether 'emit' primitive is allowed */
    emitAllowed: boolean;
    /** Whether 'spawn' primitive is allowed */
    spawnAllowed: boolean;
}
/**
 * Sandbox context - safe for user-provided code.
 *
 * Allows only pure computation, no side effects.
 */
export declare const SANDBOX_CONTEXT: ILispSecurityContext;
/**
 * Component context - for trusted component code.
 *
 * Allows communication within the component's realm.
 */
export declare const COMPONENT_CONTEXT: ILispSecurityContext;
/**
 * Developer context - for development and testing.
 *
 * All capabilities enabled, long timeouts.
 *
 * Mark Miller (E Language, Capability Security):
 *   "Security code must always run. blocklist:[] achieves same permissive
 *    behavior as 'unrestricted' but the checking code IS executed."
 *
 * Joe Armstrong (Erlang, "Programming Erlang"):
 *   "Same mechanism, different policy. Dev mode is permissive policy,
 *    not bypassed mechanism."
 */
export declare const DEVELOPER_CONTEXT: ILispSecurityContext;
/**
 * Create a custom security context by merging with sandbox defaults.
 */
export declare function createLispSecurityContext(overrides: Partial<ILispSecurityContext>): ILispSecurityContext;
/**
 * Check if a primitive is allowed in the given context.
 *
 * Mark Miller (E Language):
 *   "Every primitive check goes through this function. No bypass."
 */
export declare function isPrimitiveAllowed(primitiveName: string, context: ILispSecurityContext): boolean;
/**
 * Check if a call target is allowed in the given context.
 */
export declare function isCallTargetAllowed(target: string, context: ILispSecurityContext): boolean;
//# sourceMappingURL=LispSecurityContext.d.ts.map