import { RequestTypes } from 'detritus-client-rest';
import { ShardClient, VoiceConnectOptions } from '../client';
import { BaseSet } from '../collections/baseset';
import { BaseStructure, BaseStructureData } from './basestructure';
import { ChannelGuildStageVoice, ChannelGuildVoice } from './channel';
import { Guild } from './guild';
import { Member } from './member';
/**
 * Voice State Structure
 * @category Structure
 */
export declare class VoiceState extends BaseStructure {
    readonly _keys: BaseSet<string>;
    readonly _keysMerge: BaseSet<string>;
    readonly _keysSkipDifference: BaseSet<string>;
    _isSpeaking: boolean;
    channelId?: null | string;
    deaf: boolean;
    guildId?: null | string;
    member: Member | null;
    mute: boolean;
    requestToSpeakTimestampUnix: number;
    selfDeaf: boolean;
    selfMute: boolean;
    selfStream: boolean;
    selfVideo: boolean;
    sessionId: string;
    suppress: boolean;
    userId: string;
    constructor(client: ShardClient, data?: BaseStructureData, isClone?: boolean);
    get channel(): ChannelGuildStageVoice | ChannelGuildVoice | null;
    get guild(): Guild | null;
    get isAudience(): boolean;
    get isSpeaker(): boolean;
    get isSpeaking(): boolean;
    get requestToSpeakTimestamp(): Date | null;
    get serverId(): string;
    get streamKey(): string;
    fetchStreamPreview(): Promise<any>;
    edit(options: RequestTypes.EditGuildMember): Promise<any>;
    editState(options: RequestTypes.EditGuildVoiceState): Promise<any>;
    joinVoice(options?: VoiceConnectOptions): Promise<import("../client").VoiceConnectObject | null>;
    move(channelId: string): Promise<any>;
    setDeaf(deaf: boolean): Promise<any>;
    setMute(mute: boolean): Promise<any>;
    mergeValue(key: string, value: any): void;
}
