import { Effect, Context, Layer } from "effect"; import { LinuxUserService, LinuxUser } from "./LinuxUserService"; import { DirectoryService } from "./DirectoryService"; import { QuotaService, DiskQuota } from "./QuotaService"; /** * User Management Service * * High-level orchestration service that coordinates Linux user creation, * directory setup, and resource management for multi-user environments. * * This service integrates: * - LinuxUserService: System user creation and management * - DirectoryService: Home directory and Claude config setup * - QuotaService: Disk quotas and resource limits * * Workflow: * 1. Sanitize and validate username * 2. Create Linux system user * 3. Set up home directory structure * 4. Configure Claude Code environment * 5. Apply resource limits and quotas * 6. Return complete user setup information */ export interface CreateUserRequest { username: string; email: string; claudeApiKey?: string; diskQuotaMB?: number; shell?: "/bin/rbash" | "/usr/sbin/nologin" | "/bin/bash"; } export interface UserSetupResult { linuxUser: LinuxUser; homeDir: string; claudeConfigPath: string; workspacePath: string; quotaApplied: boolean; limitsApplied: boolean; } export interface UserManagementError { readonly _tag: "UserManagementError"; readonly message: string; readonly cause?: unknown; } declare const UserManagementService_base: Context.TagClass Effect.Effect; /** * Delete user and clean up all resources */ readonly deleteUser: (username: string) => Effect.Effect; /** * Get user information */ readonly getUserInfo: (username: string) => Effect.Effect; /** * Update user quotas */ readonly updateQuota: (username: string, quota: DiskQuota) => Effect.Effect; /** * Check if username is available */ readonly isUsernameAvailable: (username: string) => Effect.Effect; }>; export declare class UserManagementService extends UserManagementService_base { static Live: Layer.Layer; } export {}; //# sourceMappingURL=UserManagementService.d.ts.map