import type { AllGuildVoiceChannels, GuildStructure, ReturnCache, UserStructure, UsingClient, VoiceStateStructure } from '../';
import type { VoiceStateResource } from '../cache/resources/voice-states';
import { type GuildMemberStructure } from '../client/transformers';
import type { ObjectToLower } from '../common';
import type { APIVoiceState } from '../types';
import { Base } from './extra/Base';
export interface VoiceState extends Base, ObjectToLower<Omit<VoiceStateResource, 'member'>> {
}
export declare class VoiceState extends Base {
    protected withMember?: GuildMemberStructure;
    constructor(client: UsingClient, data: APIVoiceState);
    get isMuted(): boolean;
    member(force?: boolean): Promise<GuildMemberStructure>;
    user(force?: boolean): Promise<UserStructure>;
    channel(mode?: 'rest' | 'flow'): Promise<AllGuildVoiceChannels | undefined>;
    channel(mode: 'cache'): ReturnCache<AllGuildVoiceChannels | undefined>;
    setMute(mute?: boolean, reason?: string): Promise<GuildMemberStructure>;
    setDeaf(deaf?: boolean, reason?: string): Promise<GuildMemberStructure>;
    setSuppress(suppress?: boolean): Promise<void>;
    requestSpeak(date?: string | Date): Promise<undefined>;
    disconnect(reason?: string): Promise<GuildMemberStructure>;
    fetch(force?: boolean): Promise<VoiceStateStructure>;
    setChannel(channel_id: null | string, reason?: string): Promise<GuildMemberStructure>;
    guild(mode?: 'rest' | 'flow'): Promise<GuildStructure<'cached' | 'api'>>;
    guild(mode: 'cache'): ReturnCache<GuildStructure<'cached'> | undefined>;
}
