import { ShardClient, VoiceConnectOptions } from '../client';
import { BaseCollection } from '../collections/basecollection';
import { BaseSet } from '../collections/baseset';
import { VoiceConnection } from '../media/voiceconnection';
import { BaseStructure, BaseStructureData } from './basestructure';
import { Channel } from './channel';
import { User } from './user';
import { VoiceState } from './voicestate';
/**
 * VoiceCall Structure
 * a DM Channel's call
 * (non-bots only)
 * @category Structure
 */
export declare class VoiceCall extends BaseStructure {
    readonly _keys: BaseSet<string>;
    readonly _keysMerge: BaseSet<string>;
    readonly ringing: BaseCollection<string, User | null>;
    channelId: string;
    messageId: string;
    region: string;
    unavailable: boolean;
    constructor(client: ShardClient, data?: BaseStructureData, isClone?: boolean);
    get amBeingRinged(): boolean;
    get channel(): Channel | null;
    get joined(): boolean;
    get voiceConnection(): null | VoiceConnection;
    get voiceStates(): BaseCollection<string, VoiceState>;
    isRinging(userId: string): boolean;
    kill(): void;
    join(options: VoiceConnectOptions): Promise<import("../client").VoiceConnectObject | null>;
    startRinging(recipients?: Array<string>): Promise<any>;
    stopRinging(recipients?: Array<string>): Promise<any>;
    mergeValue(key: string, value: any): void;
}
