/// <reference types="node" />
import OT, { Device } from '@opentok/client';
import { EventEmitter } from 'events';
import { Analytics } from '../analytics';
import { VideoFilter } from '../utils/types';
declare interface CameraPublisher {
    on(event: 'audioLevelUpdated', listener: (audioLevel: number) => void): this;
    on(event: 'created', listener: (reason: string) => void): this;
    on(event: 'destroyed', listener: () => void): this;
    on(event: 'accessAllowed', listener: () => void): this;
    on(event: 'accessDenied', listener: () => void): this;
    on(event: 'accessDialogOpened', listener: () => void): this;
    on(event: 'accessDialogClosed', listener: (reason: string) => void): this;
}
declare class CameraPublisher extends EventEmitter {
    private _defaultTargetElement;
    private _cameraPub?;
    isVideoEnabled: () => boolean;
    isAudioEnabled: () => boolean;
    enableVideo: () => void;
    disableVideo: () => void;
    enableAudio: () => void;
    disableAudio: () => void;
    getVideoDevice: () => Device;
    setVideoDevice: (deviceId: string) => Promise<void>;
    getAudioDevice: () => Promise<Device>;
    setAudioDevice: (deviceId: string) => Promise<void>;
    destroyCameraPublisher: () => void;
    initPublisher: (publisherOptions?: {
        targetElement?: HTMLElement | string;
        publisherProperties?: OT.PublisherProperties;
    }) => Promise<void>;
    setVideoFilter: (videoFilter: VideoFilter) => Promise<void>;
    clearVideoFilter: () => Promise<void>;
    publish: () => Promise<void>;
    setDisabledImageURI: (imageURI: string) => void;
    constructor(session: OT.Session, defaultTargetElement: HTMLElement, analytics: Analytics, name: string, initials: string);
}
export default CameraPublisher;
