import type { Logging } from 'homebridge';
import type { AVState } from './pioneerAvr';
import { TelnetAvr } from '../telnet-avr/telnetAvr';
export interface Device {
    name: string;
    origName: string;
    host: string;
    port: number;
    source: string;
    fqdn: string;
    maxVolume?: number;
    minVolume?: number;
    inputSwitches?: string[];
    listeningMode?: string;
    listeningModeFallback?: string;
    listeningModeOther?: string;
}
/**
 * This mixin adds initialization and connection handling capabilities to a base class.
 * It includes methods to handle connection status, set up data handling, and regular state polling.
 * @param Base - The base class to extend.
 * @returns A new class that extends the base class with added initialization logic.
 */
export declare function InitializeMixin<TBase extends new (...args: any[]) => {
    log: Logging;
    host: string;
    port: number;
    state: AVState;
    isReady: boolean;
    lastUserInteraction: number;
    device: Device;
}>(Base: TBase): {
    new (...args: any[]): {
        allInterval: NodeJS.Timeout;
        telnetAvr: TelnetAvr;
        onData: (error: any, data: string, callback?: Function) => void;
        __updateVolume: any;
        __updatePower: any;
        __updateListeningMode: any;
        platform: any;
        functionSetPowerState: any;
        functionSetLightbulbMuted: any;
        functionSetSwitchListeningMode: any;
        functionSetSwitchTelnetConnected: any;
        allIntervalCounter: number;
        /**
         * Sets up the Telnet connection, handling connect/disconnect events.
         */
        setupTelnetConnection(): void;
        /**
         * Sets up connection and disconnection callbacks for the Telnet connection.
         */
        setupConnectionCallbacks(): Promise<void>;
        /**
         * Sends a remote key command based on the provided key.
         * @param rk - The remote key to be processed.
         */
        remoteKey(rk: string): void;
        log: Logging;
        host: string;
        port: number;
        state: AVState;
        isReady: boolean;
        lastUserInteraction: number;
        device: Device;
    };
} & TBase;
//# sourceMappingURL=initialize.d.ts.map