/** * User and Group Management * * Creates and manages AgenShield users and groups on macOS. * Supports dynamic configuration with optional prefix for testing/multiple instances. */ import type { UserConfig, UserDefinition } from '@agenshield/ipc'; /** * Default base UIDs/GIDs */ export declare const DEFAULT_BASE_UID = 5200; export declare const DEFAULT_BASE_GID = 5100; /** * Default base name for users/groups (the part after ash_ prefix) */ export declare const DEFAULT_BASE_NAME = "default"; /** * Required prefix for all AgenShield users/groups */ export declare const ASH_PREFIX = "ash_"; /** * Create user configuration with optional prefix, base IDs, and base name * * @param options - Configuration options * @param options.prefix - Optional additional prefix for all names (for testing multiple instances) * @param options.baseUid - Base UID for users (default: 5200) * @param options.baseGid - Base GID for groups (default: 5100) * @param options.baseName - Base name for users/groups (default: 'default') * @returns Complete UserConfig object * * Naming pattern: ash_{baseName}_{role} (or {prefix}_ash_{baseName}_{role} with prefix) * * @example * // Default configuration * const config = createUserConfig(); * // config.agentUser.username === 'ash_default_agent' * // config.groups.socket.name === 'ash_default' * * @example * // With custom base name * const customConfig = createUserConfig({ baseName: 'myapp' }); * // customConfig.agentUser.username === 'ash_myapp_agent' * * @example * // With prefix for testing multiple instances * const testConfig = createUserConfig({ prefix: 'test1', baseName: 'myapp' }); * // testConfig.agentUser.username === 'test1_ash_myapp_agent' * * @example * // With custom UIDs * const customConfig = createUserConfig({ baseName: 'ci', baseUid: 6200, baseGid: 6100 }); */ export declare function createUserConfig(options?: { prefix?: string; baseUid?: number; baseGid?: number; baseName?: string; }): UserConfig; export interface CreateResult { success: boolean; message: string; error?: Error; } /** * Check if a group exists */ export declare function groupExists(name: string): Promise; /** * Check if a user exists */ export declare function userExists(username: string): Promise; /** * Verbose logging options */ export interface VerboseOptions { verbose?: boolean; } /** * Create a group */ export declare function createGroup(name: string, gid: number, description?: string, options?: VerboseOptions): Promise; /** * Create all required groups from config * * @param config - Optional UserConfig, uses defaults if not provided * @param options - Optional verbose options */ export declare function createGroups(config?: UserConfig, options?: VerboseOptions): Promise; /** * Create a user from UserDefinition */ export declare function createUser(userDef: UserDefinition, options?: VerboseOptions): Promise; /** * Create the agent user * * @param config - Optional UserConfig, uses defaults if not provided * @param options - Optional verbose options */ export declare function createAgentUser(config?: UserConfig, options?: VerboseOptions): Promise; /** * Create the broker user * * @param config - Optional UserConfig, uses defaults if not provided * @param options - Optional verbose options */ export declare function createBrokerUser(config?: UserConfig, options?: VerboseOptions): Promise; /** * Create all required users * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function createUsers(config?: UserConfig): Promise; /** * Create all groups and users * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function createAllUsersAndGroups(config?: UserConfig): Promise<{ groups: CreateResult[]; users: CreateResult[]; }>; /** * Delete a group */ export declare function deleteGroup(name: string): Promise; /** * Delete a user */ export declare function deleteUser(username: string): Promise; /** * Delete all groups from config * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function deleteGroups(config?: UserConfig): Promise; /** * Delete all users from config * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function deleteUsers(config?: UserConfig): Promise; /** * Delete all users and groups (for uninstall/cleanup) * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function deleteAllUsersAndGroups(config?: UserConfig): Promise<{ users: CreateResult[]; groups: CreateResult[]; }>; /** * Get user info */ export declare function getUserInfo(username: string): Promise | null>; /** * Get group info */ export declare function getGroupInfo(name: string): Promise | null>; /** * Verify that all required users and groups exist * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function verifyUsersAndGroups(config?: UserConfig): Promise<{ valid: boolean; missingGroups: string[]; missingUsers: string[]; }>; //# sourceMappingURL=users.d.ts.map