import * as plugins from '../plugins.js'; import * as authInterfaces from '../data/auth.js'; export interface IConfigData { system: { baseDir: string; dataDir: string; publicIp: string | null; proxyIps: string[]; uptime: number; storageBackend: 'filesystem' | 'custom' | 'memory'; storagePath: string | null; }; smartProxy: { enabled: boolean; routeCount: number; acme: { enabled: boolean; accountEmail: string; useProduction: boolean; autoRenew: boolean; renewThresholdDays: number; } | null; }; email: { enabled: boolean; ports: number[]; portMapping: Record | null; hostname: string | null; domains: string[]; emailRouteCount: number; receivedEmailsPath: string | null; }; dns: { enabled: boolean; port: number; nsDomains: string[]; scopes: string[]; recordCount: number; records: Array<{ name: string; type: string; value: string; ttl?: number }>; dnsChallenge: boolean; }; tls: { contactEmail: string | null; domain: string | null; source: 'acme' | 'static' | 'none'; certPath: string | null; keyPath: string | null; }; cache: { enabled: boolean; storagePath: string | null; dbName: string | null; defaultTTLDays: number; cleanupIntervalHours: number; ttlConfig: Record; }; radius: { enabled: boolean; authPort: number | null; acctPort: number | null; bindAddress: string | null; clientCount: number; vlanDefaultVlan: number | null; vlanAllowUnknownMacs: boolean | null; vlanMappingCount: number; }; remoteIngress: { enabled: boolean; tunnelPort: number | null; hubDomain: string | null; tlsConfigured: boolean; }; } // Get Configuration (read-only) export interface IReq_GetConfiguration extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetConfiguration > { method: 'getConfiguration'; request: { identity?: authInterfaces.IIdentity; section?: string; }; response: { config: IConfigData; section?: string; }; }