/** * Directory Structure Management * * Creates and manages AgenShield directory structure. * Supports dynamic configuration based on UserConfig. */ import type { UserConfig, PathsConfig } from '@agenshield/ipc'; /** * Directory definition with ownership and permissions */ export interface DirectoryDefinition { mode: number; owner: string; group: string; /** macOS ACL entries to apply (e.g. "username allow add_subdirectory,...") */ acl?: string[]; } /** * Directory structure type */ export interface DirectoryStructure { system: Record; agent: Record; } /** * Create directory structure based on UserConfig * * @param config - Optional UserConfig, uses defaults if not provided * @returns Directory structure with all paths and permissions */ export declare function createDirectoryStructure(config?: UserConfig): DirectoryStructure; /** * Create paths configuration based on UserConfig * * @param config - Optional UserConfig, uses defaults if not provided * @returns PathsConfig with all paths */ export declare function createPathsConfig(config?: UserConfig): PathsConfig; export interface DirectoryResult { success: boolean; path: string; message: string; error?: Error; } /** * Verbose logging options */ export interface VerboseOptions { verbose?: boolean; } /** * Create a directory with specific ownership and permissions */ export declare function createDirectory(dirPath: string, options: { mode: number; owner: string; group: string; acl?: string[]; }, verboseOptions?: VerboseOptions): Promise; /** * Create all system directories * * @param config - Optional UserConfig, uses defaults if not provided * @param options - Optional verbose options */ export declare function createSystemDirectories(config?: UserConfig, options?: VerboseOptions): Promise; /** * Seed configuration files inside agent directories so the broker can * read/write them at runtime without needing to create them (which would * require root and result in wrong ownership). */ export declare function seedConfigFiles(config?: UserConfig, options?: VerboseOptions): Promise; /** * Create all agent directories * * @param config - Optional UserConfig, uses defaults if not provided * @param options - Optional verbose options */ export declare function createAgentDirectories(config?: UserConfig, options?: VerboseOptions): Promise; /** * Create all directories * * @param config - Optional UserConfig, uses defaults if not provided * @param options - Optional verbose options */ export declare function createAllDirectories(config?: UserConfig, options?: VerboseOptions): Promise; /** * Verify directory structure * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function verifyDirectories(config?: UserConfig): Promise<{ valid: boolean; missing: string[]; incorrect: Array<{ path: string; issue: string; }>; }>; /** * Setup socket directory with correct permissions * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function setupSocketDirectory(config?: UserConfig): Promise; /** * Get directory info */ export declare function getDirectoryInfo(dirPath: string): Promise<{ exists: boolean; mode?: string; owner?: string; group?: string; } | null>; /** * Remove all directories (for uninstall/cleanup) * WARNING: This is destructive! * * @param config - Optional UserConfig, uses defaults if not provided */ export declare function removeAllDirectories(config?: UserConfig): Promise; //# sourceMappingURL=directories.d.ts.map