/// <reference types="node" />
import { Abstract } from "./Abstract";
import { TeamSpeak } from "../TeamSpeak";
import { ChannelList, ClientList } from "../types/ResponseTypes";
import { ChannelEdit } from "../types/PropertyTypes";
import { TeamSpeakClient } from "./Client";
export declare class TeamSpeakChannel extends Abstract {
    constructor(parent: TeamSpeak, list: ChannelList);
    get cid(): number;
    get pid(): number;
    get order(): number;
    get name(): string;
    get topic(): string | undefined;
    get flagDefault(): number | undefined;
    get flagPassword(): number | undefined;
    get flagPermanent(): number | undefined;
    get flagSemiPermanent(): number | undefined;
    get codec(): import("../TeamSpeak").Codec | undefined;
    get codecQuality(): number | undefined;
    get neededTalkPower(): number | undefined;
    get iconId(): number | undefined;
    get secondsEmpty(): number | undefined;
    get totalClientsFamily(): number | undefined;
    get maxclients(): number | undefined;
    get maxfamilyclients(): number | undefined;
    get totalClients(): number;
    get neededSubscribePower(): number;
    /** returns detailed configuration information about a channel including ID, topic, description, etc */
    getInfo(): Promise<import("../types/ResponseTypes").ChannelInfo>;
    /**
     * 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 cpid channel parent id
     * @param order channel sort order
     */
    move(cpid: number, order?: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * 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?: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * 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<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * Displays a list of permissions defined for a channel.
     * @param permsid whether the permsid should be displayed aswell
     */
    permList(permsid?: boolean): Promise<import("../types/ResponseTypes").PermList[]>;
    /**
     * 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 the permid or permsid
     * @param value the value which should be set
     */
    setPerm(perm: string | number, value: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * 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<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * Gets a List of Clients in the current Channel
     * @param filter the filter object
     */
    getClients(filter?: Partial<ClientList>): Promise<TeamSpeakClient[]>;
    /** returns a buffer with the icon of the channel */
    getIcon(): Promise<Buffer>;
    /** returns the icon name of the channel */
    getIconName(): Promise<string>;
}
