import { Publish } from '@millicast/sdk';
import { ILogger } from 'js-logger';
import { PublishOptions } from './types/options';
import { SourceIdentifier } from './sourceIdentifier';
/**
 * Represents a published source.
 */
export declare class PublishedSource {
    #private;
    /**
     * Gets the {@link SourceIdentifier} object representing the source identifier.
     */
    get sourceId(): SourceIdentifier;
    /**
     * Gets the audio track.
     */
    get audioTrack(): MediaStreamTrack;
    /**
     * Gets the video track.
     */
    get videoTrack(): MediaStreamTrack;
    /**
     * Gets the Millicast {@link !Publish Publish} object used to publish the source to the stream.
     */
    get publisher(): Publish;
    /** @hidden */
    constructor(logger: ILogger, streamName: string, sourceId: SourceIdentifier);
    /** @hidden */
    publish: (options: PublishOptions) => Promise<void>;
    /** @hidden */
    unpublish: () => void;
    /**
     * Threshold beyond which the publisher is considered to be speaking.
     * @hidden
     */
    readonly IS_SPEAKING_THRESHOLD = 0.002;
    /**
     * Gets if the publisher is considered to be speaking or not.
     *
     * @example
     * ```ts
     * import { Room } from '@millicast/sdk-interactivity';
     *
     * const room = new Room({
     *   streamName,
     *   streamAccountId,
     * });
     *
     * const localSource = await room.connect({
     *   publishToken,
     *   publisherName,
     *   constraints: {
     *     audio: true,
     *     video: true,
     *   },
     * });
     *
     * const videoElement = document.getElementById("local-video");
     * videoElement.srcObject = new MediaStream([localSource.videoTrack]);
     * videoElement.play();
     *
     * setInterval(async () => {
     *   const isSpeaking = await localSource.isSpeaking();
     *   console.log('is speaking', isSpeaking);
     * }, 1000);
     * ```
     *
     * @returns A {@link !Promise Promise} whose fulfillment handler receives a flag indicating if the publisher is considered to be speaking.
     */
    isSpeaking: () => Promise<boolean>;
    /**
     * Gets if the audio track is muted or not.
     * If no audio track is available, this returns `true`.
     */
    get isMuted(): boolean;
    /**
     * Mutes the audio track.
     */
    mute: () => void;
    /**
     * Unmutes the audio track.
     */
    unmute: () => void;
}
//# sourceMappingURL=publishedSource.d.ts.map