import type { Service, Logging } from 'homebridge';
import type { TelnetAvr } from '../telnet-avr/telnetAvr';
import type { AVState } from './pioneerAvr';
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 input management methods to a base class, including input setup, handling,
 * and monitoring functionality.
 * @param Base - The base class to extend with input management methods.
 * @returns A new class that extends the base class with added input handling capabilities.
 */
export declare function InputManagementMixin<TBase extends new (...args: any[]) => {
    log: Logging;
    state: AVState;
    pioneerAvrClassCallback?: () => Promise<void>;
    lastUserInteraction: number;
    telnetAvr: TelnetAvr;
    isReady: boolean;
    platform: any;
    device: Device;
}>(Base: TBase): {
    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;
        /**
         * Loads all available inputs, either from cache or by refreshing.
         * @param callback - Optional callback function to run after loading inputs.
         */
        loadInputs(callback?: () => void): Promise<void>;
        /**
         * Saves the current inputs to the cache file.
         */
        saveInputs(): void;
        /**
         * Retrieves the current input status.
         * @param callback - The callback function to handle the input status result.
         */
        inputStatus(callback: (err: any, inputStatus?: number) => void): void;
        /**
         * Sets a specific input on the AVR.
         * @param id - The identifier of the input to set.
         */
        setInput(id: string): void;
        /**
         * Renames an existing input on the AVR.
         * @param id - The identifier of the input to rename.
         * @param newName - The new name to assign to the input.
         */
        renameInput(id: string, newName: string): Promise<void>;
        /**
         * Placeholder for adding an input source service; should be overridden externally.
         */
        addInputSourceService(_error: any, _key: any): void;
        /**
         * Placeholder for setting the power state of the AVR.
         * Intended to be overridden externally.
         */
        functionSetActiveIdentifier(_set: number): void;
        /**
         * Updates the current input on the AVR.
         * @param callback - The callback function to execute after updating.
         */
        __updateInput(callback: () => void): Promise<void>;
        log: Logging;
        state: AVState;
        pioneerAvrClassCallback?: () => Promise<void>;
        lastUserInteraction: number;
        telnetAvr: TelnetAvr;
        isReady: boolean;
        platform: any;
        device: Device;
    };
} & TBase;
//# sourceMappingURL=inputs.d.ts.map