/// <reference types="node" />
import { Abstract } from "./Abstract";
import { TeamSpeak } from "../TeamSpeak";
import { ChannelGroupList } from "../types/ResponseTypes";
export declare class TeamSpeakChannelGroup extends Abstract {
    constructor(parent: TeamSpeak, list: ChannelGroupList);
    get cgid(): number;
    get name(): string;
    get type(): number;
    get iconid(): number;
    get savedb(): number;
    get sortid(): number;
    get namemode(): number;
    get nModifyp(): number;
    get nMemberAddp(): number;
    get nMemberRemovep(): number;
    /**
     * Deletes the channel group. If force is set to 1, the channel group will be deleted even if there are clients within.
     * @param force if set to 1 the channelgroup will be deleted even when clients are in it
     */
    del(force?: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * Creates a copy of the channel group. If tcgid is set to 0, the server will create a new group.
     * To overwrite an existing group, simply set tcgid to the ID of a designated target group.
     * If a target group is set, the name parameter will be ignored.
     * @param tcgid the target group, 0 to create a new group
     * @param type the type of the group (0 = Template Group | 1 = Normal Group)
     * @param name name of the group
     */
    copy(tcgid: number, type: number, name: string): Promise<import("../types/ResponseTypes").ChannelGroupCopy>;
    /**
     * changes the name of the channelgroup
     * @param name new name of the group
     */
    rename(name: string): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * returns a list of permissions assigned to the channel group specified with cgid.
     * @param permsid if the permsid option is set to true the output will contain the permission names
     */
    permList(permsid?: boolean): Promise<import("../types/ResponseTypes").PermList[]>;
    /**
     * Adds a specified permissions to the channel group.
     * A permission can be specified by permid or permsid.
     * @param perm the permid or permsid
     * @param value value of the Permission
     * @param skip whether the skip flag should be set
     * @param negate whether the negate flag should be set
     */
    addPerm(perm: string | number, value: number, skip?: number, negate?: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * Removes a set of specified permissions from the channel group.
     * A permission can be specified by permid or permsid.
     * @param perm the permid or permsid
     */
    delPerm(perm: string | number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * sets the channel group of a client
     * @param cid the channel in which the client should be assigned the Group
     * @param cldbid the client database id which should be added to the Group
     */
    setClient(cid: number, cldbid: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * returns the ids of all clients currently residing in the channelgroup
     * @param cid the channel id
     */
    clientList(cid: number): Promise<import("../types/ResponseTypes").ChannelGroupClientList[]>;
    /** returns a buffer with the icon of the channelgroup */
    getIcon(): Promise<Buffer>;
    /** gets the icon name of the channelgroup */
    getIconName(): Promise<string>;
}
