import type { API, Characteristic, Service, Logging } from 'homebridge';
import type { 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;
}
export interface AVState {
    volume: number;
    on: boolean;
    muted: boolean;
    input: number;
    listeningMode: string | null;
    listeningModeLM: string | null;
    lastGetPowerStatus: number | null;
}
declare const PioneerAvr_base: {
    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;
        setupTelnetConnection(): void;
        setupConnectionCallbacks(): Promise<void>;
        remoteKey(rk: string): void;
        log: Logging;
        host: string;
        port: number;
        state: AVState;
        isReady: boolean;
        lastUserInteraction: number;
        device: import("./initialize").Device;
    };
} & {
    new (...args: any[]): {
        accessory: any;
        prefsDir: string;
        inputCacheFile: string;
        inputBeingAdded: boolean | string;
        inputBeingAddedWaitCount: number;
        inputMissing: string[][];
        inputs: any[];
        tvService: Service;
        enabledServices: Service[];
        inputToType: Record<string, number>;
        pioneerAvrClassCallbackCalled: boolean;
        initCount: number;
        booleanToVisibilityState: (visible: boolean) => number;
        visibilityStateToBoolean: (state: number) => boolean;
        saveInputsTimeout: NodeJS.Timeout;
        loadInputs(callback?: (() => void) | undefined): Promise<void>;
        saveInputs(): void;
        inputStatus(callback: (err: any, inputStatus?: number) => void): void;
        setInput(id: string): void;
        renameInput(id: string, newName: string): Promise<void>;
        addInputSourceService(_error: any, _key: any): void;
        functionSetActiveIdentifier(_set: number): void;
        __updateInput(callback: () => void): Promise<void>;
        log: Logging;
        state: AVState;
        pioneerAvrClassCallback?: () => Promise<void>;
        lastUserInteraction: number;
        telnetAvr: TelnetAvr;
        isReady: boolean;
        platform: any;
        device: import("./inputs").Device;
    };
} & {
    new (...args: any[]): {
        telnetAvr: TelnetAvr;
        functionSetPowerState(_state: boolean): void;
        __updatePower(callback: () => void): Promise<void>;
        powerStatus(callback: (err: any, status?: boolean) => void): Promise<void>;
        powerOn(): Promise<void>;
        powerOff(): Promise<void>;
        log: Logging;
        state: AVState;
        lastUserInteraction: number;
    };
} & {
    new (...args: any[]): {
        telnetAvr: TelnetAvr;
        device: import("./volume").Device;
        platform: any;
        updateVolumeTimeout: NodeJS.Timeout | null;
        cancelVolumeDownSteps: boolean;
        activeVolumeDownStepTimeouts: NodeJS.Timeout[];
        lastSetVolume: string;
        functionSetLightbulbVolume(_argument?: any): void;
        functionSetLightbulbMuted(_argument?: any): void;
        functionSetSwitchListeningMode(_argument?: any): void;
        __updateVolume(callback: (error: any, response: string) => void): Promise<void>;
        __updateMute(callback: (error: any, response: string) => void): Promise<void>;
        volumeStatus(callback: (err: any, volume?: number) => void): void;
        setVolume(targetVolume: number, callback?: ((error: any, response: string) => void) | undefined): void;
        volumeUp(): void;
        volumeDown(): void;
        muteStatus(callback: (err: any, muted?: boolean) => void): void;
        muteOn(): void;
        muteOff(): void;
        __updateListeningMode(callback: (error: any, response: string) => void): void;
        toggleListeningMode(callback?: ((error: any, response: string) => void) | undefined): void;
        log: Logging;
        state: AVState;
        lastUserInteraction: number;
        isReady: boolean;
        maxVolume: number;
        minVolume: number;
    };
} & {
    new (platform: any, accessory: any, pioneerAvrClassCallback?: () => Promise<void>): {
        api: API;
        log: Logging;
        host: string;
        port: number;
        platform: any;
        maxVolume: number;
        minVolume: number;
        state: AVState;
        pioneerAvrClassCallback: any;
        characteristic: Characteristic;
        service: Service;
        isReady: boolean;
        accessory: any;
        device: Device;
        lastUserInteraction: number;
        telnetAvr: TelnetAvr;
    };
};
/**
 * The main PioneerAvr class responsible for handling AVR functionality.
 * Mixins are applied in a specific order to ensure proper initialization.
 */
declare class PioneerAvr extends PioneerAvr_base {
}
export default PioneerAvr;
//# sourceMappingURL=pioneerAvr.d.ts.map