import RTC from '../core/rtc';
import { LocaleServer } from '../types/interfaces';
import { Stream, DialogProps, Volumes, DialogPropsUsersContext } from '../types';
export declare const useConnection: ({ id, roomId, iceServers, server, port, userName, cleanAudioAnalyzer, locale, }: {
    id: number | string;
    roomId: number | string | null;
    iceServers: RTCConfiguration['iceServers'];
    server: string;
    port: number;
    userName: string;
    cleanAudioAnalyzer: (uid: string | number) => void;
    locale: LocaleServer['client'];
}) => {
    askFloor: () => void;
    askeds: (string | number)[];
    streams: Stream[];
    lenght: number;
    rtc: RTC;
    lostStreamHandler: (args: {
        target: string | number;
        roomId: string | number;
        connId: string;
        eventName: string;
    }) => void;
    screenShare: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => Promise<void>;
    shareScreen: boolean;
    muted: boolean;
    changeMuted: () => void;
    muteds: (string | number)[];
    video: boolean;
    offVideo: (string | number)[];
    changeVideoWrapper: (target: string | number) => () => void;
    isOwner: boolean;
    adminMuted: boolean;
    adminMuteds: (string | number)[];
    clickToMuteWrapper: (context: DialogProps<DialogPropsUsersContext>['context']) => () => void;
    clickToUnMuteWrapper: (context: DialogProps<DialogPropsUsersContext>['context']) => () => void;
    clickToBanWrapper: (context: DialogProps<DialogPropsUsersContext>['context']) => () => void;
    clickToVideoOffWrapper: ({ unitId }: DialogProps<DialogPropsUsersContext>['context']) => () => void;
    clickToSetAdminWrapper: ({ unitId, isOwner }: DialogProps<DialogPropsUsersContext>['context']) => () => void;
    onVideoTimer: number;
};
export declare const useVideoDimensions: ({ lenght, container, }: {
    lenght: number;
    container: HTMLDivElement | null;
}) => (e: React.SyntheticEvent<HTMLVideoElement, Event>, stream: MediaStream) => void;
export declare const useOnclickClose: ({ lenght, container }: {
    lenght: number;
    container: HTMLDivElement | null;
}) => (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
export declare const usePressEscape: () => (e: React.KeyboardEvent<HTMLDivElement>) => void;
export declare const useAudioAnalyzer: () => {
    analyzeSoundLevel: (uid: string | number) => void;
    createAudioAnalyzer: (item: Stream) => void;
    cleanAudioAnalyzer: (uid: string | number) => void;
    speaker: string | number;
};
export declare const useVolumeDialog: ({ roomId, container, userId, }: {
    roomId: string | number;
    container: React.MutableRefObject<HTMLDivElement | null>;
    userId: string | number;
}) => {
    dialog: Omit<DialogProps<DialogPropsUsersContext>, "children">;
    clickToVolume: (targetId: string | number) => (ev: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
    changeVolumeWrapper: (targetId: number | string) => (ev: {
        target: {
            value: React.ChangeEvent<HTMLInputElement>['target']['value'];
        };
    }) => void;
    volumes: Volumes;
};
export declare const useSettingsDialog: () => {
    dialogSettings: Omit<DialogProps<DialogPropsUsersContext>, "children">;
    clickToSettingsWrapper: ({ target, isOwner }: {
        target: string | number;
        isOwner: boolean;
    }) => (ev: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
};
export declare const useVideoStarted: ({ streams, rtc, lostStreamHandler, roomId, }: {
    streams: Stream[];
    rtc: RTC;
    lostStreamHandler: (args: {
        target: string | number;
        roomId: string | number;
        connId: string;
        eventName: string;
    }) => void;
    roomId: string | number;
}) => {
    played: Record<string, boolean>;
    setPlayed: import("react").Dispatch<import("react").SetStateAction<Record<string, boolean>>>;
};
export declare const useVideoHandlers: ({ analyzeSoundLevel, createAudioAnalyzer, lostStreamHandler, setPlayed, played, setVideoDimensions, roomId, }: {
    analyzeSoundLevel: (uid: string | number) => void;
    createAudioAnalyzer: (item: Stream) => void;
    lostStreamHandler: RTC['lostStreamHandler'];
    setPlayed: React.Dispatch<React.SetStateAction<Record<string, boolean>>>;
    played: Record<string, boolean>;
    setVideoDimensions: (e: React.SyntheticEvent<HTMLVideoElement, Event>, stream: MediaStream) => void;
    roomId: string | number;
}) => {
    onAbortWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
    onEmptiedWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
    onEndedWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
    onLoadedDataWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
    onLoadedMetadataWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
    onStalledWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
    onSuspendWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
    onWaitingWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
    onTimeUpdateWrapper: (item: Stream) => (e: React.SyntheticEvent<HTMLVideoElement, Event>) => void;
};
export declare const useMaxVideoStreams: ({ streams }: {
    streams: Stream[];
}) => {
    canPlayVideo: boolean;
    activeVideoLength: number;
};
