import { IEventEmitter } from '@breadstone/mosaik-elements';
import { IRecorderCancelEventDetail, IRecorderPauseEventDetail, IRecorderResumeEventDetail, IRecorderStartEventDetail, IRecorderStopEventDetail } from '../../../../events';
import { RecorderState } from '../../../../Types/RecorderState';
import { ChatToolBaseElement } from './Abstracts/ChatToolBaseElement';
import { IVoiceRecorderChatToolElementProps } from './IVoiceRecorderChatToolElementProps';
declare const VoiceRecorderChatToolElement_base: (abstract new (...args: Array<any>) => import("../../../../Behaviors/Themeable").IThemeableProps) & typeof ChatToolBaseElement & import("../../../../Behaviors/Themeable").IThemeableCtor;
/**
 * The `{@link VoiceRecorderChatToolElement}` element.
 *
 * @fires recorderCancel {RecorderCancelEvent} - Called when the recording is canceled.
 * @fires recorderStart {RecorderStartEvent} - Called when the recording is started.
 * @fires recorderPause {RecorderPauseEvent} - Called when the recording is paused.
 * @fires recorderResume {RecorderResumeEvent} - Called when the recording is resumed.
 * @fires recorderStop {RecorderStopEvent} - Called when the recording is stopped.
 *
 * @public
 */
export declare class VoiceRecorderChatToolElement extends VoiceRecorderChatToolElement_base implements IVoiceRecorderChatToolElementProps {
    private readonly _recCancel;
    private readonly _recStart;
    private readonly _recPause;
    private readonly _recResume;
    private readonly _recStop;
    private _state;
    private _elapsedTime;
    private _maxDurationTime;
    private _objectUrl;
    private _canPause;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `state` property.
     *
     * @public
     * @attr
     */
    get state(): RecorderState;
    set state(value: RecorderState);
    /**
     * Gets or sets the `elapsedTime` property.
     *
     * @public
     * @attr
     */
    get elapsedTime(): number;
    set elapsedTime(value: number);
    /**
     * Gets or sets the `maxDurationTime` property.
     *
     * @public
     * @attr
     */
    get maxDurationTime(): number;
    set maxDurationTime(value: number);
    /**
     * Gets or sets the `objectUrl` property.
     *
     * @public
     */
    get objectUrl(): string | null;
    set objectUrl(value: string | null);
    /**
     * Gets or sets the `canPause` property.
     *
     * @public
     * @attr
     */
    get canPause(): boolean;
    set canPause(value: boolean);
    /**
     * Called when the recording is canceled.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get recCancel(): IEventEmitter<IRecorderCancelEventDetail>;
    /**
     * Called when the recording is resumed.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get recResume(): IEventEmitter<IRecorderResumeEventDetail>;
    /**
     * Called when the recording is stopped.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get recStop(): IEventEmitter<IRecorderStopEventDetail>;
    /**
     * Called when the recording is started.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get recStart(): IEventEmitter<IRecorderStartEventDetail>;
    /**
     * Called when the recording is paused.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get recPause(): IEventEmitter<IRecorderPauseEventDetail>;
    execute(args: unknown): boolean;
    /**
     * Emits the {@link recCancel} event.
     *
     * @protected
     */
    protected onRecCancel(args: IRecorderCancelEventDetail): void;
    /**
     * Emits the {@link recStart} event.
     *
     * @protected
     */
    protected onRecStart(args: IRecorderStartEventDetail): void;
    /**
     * Emits the {@link recPause} event.
     *
     * @protected
     */
    protected onRecPause(args: IRecorderPauseEventDetail): void;
    /**
     * Emits the {@link recResume} event.
     *
     * @protected
     */
    protected onRecResume(args: IRecorderResumeEventDetail): void;
    /**
     * Emits the {@link recStop} event.
     *
     * @protected
     */
    protected onRecStop(args: IRecorderStopEventDetail): void;
}
/**
 * @public
 */
export declare namespace VoiceRecorderChatToolElement {
    type Props = IVoiceRecorderChatToolElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-voice-recorder-chat-tool': VoiceRecorderChatToolElement;
    }
}
export {};
//# sourceMappingURL=VoiceRecorderChatToolElement.d.ts.map