import type { Logger } from "@fishjam-cloud/ts-client";
import type { SetStateAction } from "react";
import type { DeviceError, DeviceItem, TrackMiddleware } from "../../../types/public";
type DeviceManagerProps = {
    mediaStream: MediaStream | null;
    setMediaStream: (action: SetStateAction<MediaStream | null>) => void;
    deviceError: DeviceError | null;
    setDeviceError: (action: SetStateAction<DeviceError | null>) => void;
    getInitialStream: () => Promise<MediaStream | null>;
    deviceType: "audio" | "video";
    allDevicesList: MediaDeviceInfo[];
    constraints?: MediaTrackConstraints | boolean;
    setSelectedDevice: (device: MediaDeviceInfo) => void;
    selectedDevice: MediaDeviceInfo | null;
    logger: Logger;
};
export type DeviceManager = {
    startDevice: (deviceId?: string | null) => Promise<[MediaStreamTrack, null] | [null, DeviceError]>;
    stopDevice: () => void;
    selectDevice: (deviceId: string) => Promise<[MediaStreamTrack, null] | [null, DeviceError]> | undefined;
    activeDevice: DeviceItem | null;
    deviceTrack: MediaStreamTrack | null;
    deviceList: DeviceItem[];
    deviceEnabled: boolean;
    enableDevice: () => void;
    disableDevice: () => void;
    currentMiddleware: TrackMiddleware;
    applyMiddleware: (middleware: TrackMiddleware) => Promise<MediaStreamTrack | null>;
    deviceError: DeviceError | null;
    selectedDevice: MediaDeviceInfo | null;
};
export declare const useDeviceManager: ({ mediaStream, setMediaStream, getInitialStream, deviceType, constraints, allDevicesList, setSelectedDevice, deviceError, setDeviceError, selectedDevice, logger, }: DeviceManagerProps) => DeviceManager;
export {};
//# sourceMappingURL=useDeviceManager.d.ts.map