/**
 * Spawn policy service interface.
 *
 * Evaluates spawn requests to determine if a component
 * is allowed to be created in a given context.
 *
 * See: Vision/27-SECURITY-FEDERATION-DRAFT.md Section 4.3
 */
export interface ISpawnPolicyService {
    /**
     * Evaluate a spawn request.
     *
     * @param request - The spawn request to evaluate
     * @returns Decision with allowed/denied and optional modifications
     */
    evaluate(request: ISpawnRequest): ISpawnDecision;
}
/**
 * Spawn request - information about a component being spawned.
 */
export interface ISpawnRequest {
    /** Component type/class name */
    componentType: string;
    /** Parent's mount path */
    parentMount: string;
    /** Optional slot name */
    slot?: string;
    /** Props being passed to the component */
    props?: Record<string, unknown>;
    /** Who is requesting the spawn */
    requestor: ISecurityPrincipal;
}
/**
 * Spawn decision - result of policy evaluation.
 */
export interface ISpawnDecision {
    /** Whether the spawn is allowed */
    allowed: boolean;
    /** Reason for denial (if not allowed) */
    reason?: string;
    /** Modified props to use instead (for sanitization) */
    modifiedProps?: Record<string, unknown>;
    /** Security context to assign to the spawned component */
    assignedContext?: IComponentTrustLevel;
}
/**
 * Security principal - who is making a request.
 */
export interface ISecurityPrincipal {
    /** Principal type */
    type: 'user' | 'component' | 'system';
    /** Principal identifier */
    id: string;
    /** Trust level */
    trustLevel: IComponentTrustLevel;
}
/**
 * Component trust levels.
 *
 * Determines what capabilities a component has.
 */
export type IComponentTrustLevel = 'system' | 'verified' | 'user' | 'untrusted';
/**
 * Spawn policy rules - configurable policy definition.
 */
export interface ISpawnPolicyRules {
    /** Default trust level for unknown components */
    defaultTrustLevel: IComponentTrustLevel;
    /** Component types that are always allowed */
    allowedTypes?: string[];
    /** Component types that are always denied */
    deniedTypes?: string[];
    /** Maximum children per parent (prevent fork bombs) */
    maxChildrenPerParent?: number;
    /** Maximum total depth in the component tree */
    maxTreeDepth?: number;
    /** Props that should be sanitized/removed */
    sanitizeProps?: string[];
}
//# sourceMappingURL=ISpawnPolicyService.d.ts.map