///
import { Abstract } from "./Abstract";
import { TeamSpeak } from "../TeamSpeak";
import { ChannelEntry, ClientEntry } from "../types/ResponseTypes";
import { ChannelEdit } from "../types/PropertyTypes";
import { TeamSpeakClient } from "./Client";
import { Permission } from "../util/Permission";
export declare class TeamSpeakChannel extends Abstract {
constructor(parent: TeamSpeak, list: ChannelEntry);
get cid(): string;
get pid(): string;
get order(): number;
get name(): string;
get topic(): string;
get flagDefault(): boolean;
get flagPassword(): boolean;
get flagPermanent(): boolean;
get flagSemiPermanent(): boolean;
get codec(): import("..").Codec;
get codecQuality(): number;
get neededTalkPower(): number;
get iconId(): string;
get secondsEmpty(): number;
get totalClientsFamily(): number;
get maxclients(): number;
get maxfamilyclients(): number;
get totalClients(): number;
get neededSubscribePower(): number;
get bannerGfxUrl(): string;
get bannerMode(): number;
/** returns detailed configuration information about a channel including ID, topic, description, etc */
getInfo(): Promise;
/**
* Moves a channel to a new parent channel with the ID cpid.
* If order is specified, the channel will be sorted right under the channel with the specified ID.
* If order is set to 0, the channel will be sorted right below the new parent.
* @param parent channel parent id
* @param order channel sort order
*/
move(parent: string | TeamSpeakChannel, order?: number): Promise<[]>;
/**
* sends a message to the specified channel
* @param msg message which should be sent to the channel
*/
message(msg: string): Promise;
/**
* Deletes an existing channel by ID.
* If force is set to 1, the channel will be deleted even if there are clients within.
* The clients will be kicked to the default channel with an appropriate reason message.
* @param {number} force if set to 1 the channel will be deleted even when clients are in it
*/
del(force?: boolean): Promise<[]>;
/**
* Changes a channels configuration using given properties. Note that this command accepts multiple properties which means that you're able to change all settings of the channel specified with cid at once.
* @param properties the properties of the channel which should get changed
*/
edit(properties: ChannelEdit): Promise<[]>;
/**
* Displays a list of permissions defined for a channel.
* @param permsid whether the permsid should be displayed aswell
*/
permList(permsid?: boolean): Promise[]>;
/**
* Adds a set of specified permissions to a channel.
* Multiple permissions can be added by providing the two parameters of each permission.
* A permission can be specified by permid or permsid.
* @param perm permission object to set
*/
setPerm(perm: Permission.PermType): Promise<[]>;
/**
* Adds a permission to a channel
* Multiple permissions can be added by providing the two parameters of each permission.
* A permission can be specified by permid or permsid.
* @param perm permission object to set
*/
createPerm(): Permission;
/**
* Removes a set of specified permissions from a channel.
* Multiple permissions can be removed at once.
* A permission can be specified by permid or permsid.
* @param perm the permid or permsid
*/
delPerm(perm: string | number): Promise<[]>;
/**
* Gets a List of Clients in the current Channel
* @param filter the filter object
*/
getClients(filter?: Partial): Promise;
/** returns a buffer with the icon of the channel */
getIcon(): Promise;
/** returns the icon name of the channel */
getIconId(): Promise;
/** retrieves the client id from a string or teamspeak client */
static getId(channel?: T): T extends undefined ? undefined : string;
/** retrieves the clients from an array */
static getMultipleIds(channels: TeamSpeakChannel.MultiChannelType): string[];
}
export declare namespace TeamSpeakChannel {
type ChannelType = string | TeamSpeakChannel;
type MultiChannelType = string[] | TeamSpeakChannel[] | ChannelType;
}