import { TapoCredentials } from '../types';
import { BaseDevice } from './base-device';
import { ProtocolType } from '../core/protocol-selector';
/**
 * Plug device implementation using composition pattern
 * Single responsibility: Plug-specific device behavior
 */
export declare class PlugDevice extends BaseDevice {
    private auth?;
    private klapAuth?;
    constructor(ip: string, credentials: TapoCredentials, deviceModel: string);
    /**
     * Initialize session based on selected protocol
     */
    protected initializeSession(protocol: ProtocolType): Promise<void>;
    /**
     * Initialize KLAP session
     */
    private initializeKlapSession;
    /**
     * Initialize Passthrough session
     */
    private initializePassthroughSession;
    /**
     * Get child devices (for multi-outlet plugs like P300)
     */
    getChildDevices(): Promise<any[]>;
    /**
     * Control child device (for multi-outlet plugs)
     */
    controlChildDevice(deviceId: string, turnOn: boolean): Promise<void>;
    /**
     * Check if device supports child devices
     */
    private supportsChildDevices;
    /**
     * Get plug-specific status
     */
    getPlugStatus(): Promise<{
        isOn: boolean;
        hasEnergyMonitoring: boolean;
        currentPower?: number;
        childDevices?: any[];
    }>;
}
