import { UniFiClientOptions } from './types';
import { EventEmitter } from 'events';
import { LogLevel } from './utils/logger';
import { DeviceEndpoints, ClientEndpoints, SiteEndpoints } from './endpoints';
import { ClientIdentifier, PaginationOptions, SortOptions } from './types/clients';
import { NetworkEndpoints } from './endpoints/networks';
import { Network, FirewallRule } from './types/network';
import { WirelessEndpoints, WlanConfig, RadioSettings } from './endpoints/wireless';
import { StatsOptions } from './endpoints/stats';
import { SystemEndpoints } from './endpoints/system';
import { SystemStatus, SystemSettings, SystemSettingsUpdate, BackupOptions, BackupResponse, RestoreOptions, RestoreResponse, FirmwareInfo, UpdateResponse, LogEntry, Alert } from './types';
export declare class UniFiClient extends EventEmitter {
    private httpClient;
    private auth;
    private logger;
    devices: DeviceEndpoints;
    clients: ClientEndpoints;
    sites: SiteEndpoints;
    networks: NetworkEndpoints;
    wireless: WirelessEndpoints;
    private statsEndpoints;
    systemEndpoints: SystemEndpoints;
    private username?;
    private password?;
    constructor(controllerUrl: string, options?: UniFiClientOptions);
    setLogLevel(level: LogLevel): void;
    login(username?: string, password?: string): Promise<boolean>;
    logout(): Promise<boolean>;
    isLoggedIn(): boolean;
    setSite(site: string): void;
    getSite(): string;
    request(method: 'get' | 'post' | 'put' | 'delete', path: string, data?: any, params?: any): Promise<any>;
    /**
     * List all active clients.
     */
    getActiveClients(options?: PaginationOptions & SortOptions): Promise<import("./types").Client[]>;
    /**
     * List all clients (active and historical).
     */
    getAllClients(options?: PaginationOptions & SortOptions): Promise<import("./types").Client[]>;
    /**
     * Get client details by identifier (MAC, IP, or name).
     */
    getClientDetails(identifier: ClientIdentifier): Promise<import("./types").Client | null>;
    /**
     * Block a client by MAC address.
     */
    blockClient(mac: string): Promise<boolean>;
    /**
     * Unblock a client by MAC address.
     */
    unblockClient(mac: string): Promise<boolean>;
    /**
     * Reconnect (kick) a client by MAC address.
     */
    reconnectClient(mac: string): Promise<boolean>;
    /**
     * Authorize a guest client for a given number of minutes.
     */
    authorizeGuest(mac: string, minutes?: number): Promise<boolean>;
    /**
     * Unauthorize a guest client by MAC address.
     */
    unauthorizeGuest(mac: string): Promise<boolean>;
    /**
     * List all networks.
     */
    getNetworks(): Promise<Network[]>;
    /**
     * Create a new network.
     */
    createNetwork(network: Network): Promise<Network>;
    /**
     * Update an existing network.
     */
    updateNetwork(networkId: string, network: Partial<Network>): Promise<Network>;
    /**
     * Delete a network.
     */
    deleteNetwork(networkId: string): Promise<boolean>;
    /**
     * List all firewall rules.
     */
    getFirewallRules(): Promise<FirewallRule[]>;
    /**
     * Create a new firewall rule.
     */
    createFirewallRule(rule: FirewallRule): Promise<FirewallRule>;
    /**
     * Update an existing firewall rule.
     */
    updateFirewallRule(ruleId: string, rule: Partial<FirewallRule>): Promise<FirewallRule>;
    /**
     * Delete a firewall rule.
     */
    deleteFirewallRule(ruleId: string): Promise<boolean>;
    /**
     * List all wireless networks (WLANs).
     */
    getWlanConfigs(): Promise<WlanConfig[]>;
    /**
     * Create a new wireless network (WLAN).
     */
    createWlanConfig(wlanConfig: WlanConfig): Promise<WlanConfig>;
    /**
     * Update an existing wireless network (WLAN).
     */
    updateWlanConfig(wlanId: string, wlanConfig: Partial<WlanConfig>): Promise<WlanConfig>;
    /**
     * Delete a wireless network (WLAN).
     */
    deleteWlanConfig(wlanId: string): Promise<boolean>;
    /**
     * Get radio settings for a device.
     */
    getRadioSettings(deviceMac: string): Promise<RadioSettings[]>;
    /**
     * Update radio settings for a device.
     */
    updateRadioSettings(deviceMac: string, radioSettings: Partial<RadioSettings>): Promise<boolean>;
    /**
     * Get wireless networks utilization statistics.
     */
    getWlanUtilization(): Promise<any>;
    getSiteStats(options?: StatsOptions): Promise<import("./types").SiteStats[]>;
    getClientStats(options?: StatsOptions): Promise<import("./types").ClientStats[]>;
    getDeviceStats(options?: StatsOptions): Promise<import("./types").DeviceStats[]>;
    getSessions(options?: StatsOptions): Promise<import("./types/stats").SessionStats[]>;
    getHourlySiteStats(options?: StatsOptions): Promise<import("./types").SiteStats[]>;
    getTrafficStats(options?: StatsOptions): Promise<import("./types/stats").TrafficStats[]>;
    getAllUsers(options?: StatsOptions): Promise<import("./types").ClientStats[]>;
    get5MinuteSiteStats(options?: StatsOptions): Promise<import("./types").SiteStats[]>;
    getGatewayStats(options?: StatsOptions): Promise<import("./types").DeviceStats[]>;
    /**
     * Get controller system status
     */
    getSystemStatus(): Promise<SystemStatus>;
    /**
     * Get controller system settings
     */
    getSystemSettings(): Promise<SystemSettings>;
    /**
     * Update controller system settings
     */
    updateSystemSettings(settings: SystemSettingsUpdate): Promise<SystemSettings>;
    /**
     * Create a system backup
     */
    createSystemBackup(options?: BackupOptions): Promise<BackupResponse>;
    /**
     * Restore a system backup
     */
    restoreSystemBackup(backupId: string, options?: RestoreOptions): Promise<RestoreResponse>;
    /**
     * Get available firmware versions
     */
    getAvailableFirmware(): Promise<FirmwareInfo[]>;
    /**
     * Update device firmware
     */
    updateDeviceFirmware(deviceId: string, firmwareVersion: string): Promise<UpdateResponse>;
    /**
     * Reboot the controller
     */
    rebootController(): Promise<boolean>;
    /**
     * Get system logs
     */
    getSystemLogs(limit?: number): Promise<LogEntry[]>;
    /**
     * Get current system alerts
     */
    getSystemAlerts(): Promise<Alert[]>;
    /**
     * Reboot the system (with confirmation)
     */
    rebootSystem(confirm: boolean): Promise<boolean>;
    /**
     * Factory reset the system (destructive!)
     */
    factoryReset(confirm: boolean): Promise<boolean>;
    /**
     * Export a site backup as a Buffer (binary .unf file)
     * @returns {Promise<Buffer>} The backup file contents
     */
    exportSiteBackup(): Promise<Buffer>;
}
