/// <reference types="node" />
import { Abstract } from "./Abstract";
import { TeamSpeak } from "../TeamSpeak";
import { ServerGroupList } from "../types/ResponseTypes";
export declare class TeamSpeakServerGroup extends Abstract {
    constructor(parent: TeamSpeak, list: ServerGroupList);
    get sgid(): 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 server group.
     * If force is set to 1, the server group will be deleted even if there are clients within.
     * @param force if set to 1 the servergroup will be deleted even when clients are in it
     */
    del(force?: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * Creates a copy of the server group specified with ssgid. If tsgid is set to 0, the server will create a new group.
     * To overwrite an existing group, simply set tsgid to the ID of a designated target group.
     * If a target group is set, the name parameter will be ignored.
     * @param tsgid the target group, 0 to create a new group
     * @param type type of the group (0 = Query Group | 1 = Normal Group)
     * @param name name of the group
     */
    copy(tsgid: number, type: number, name: string): Promise<import("../types/ResponseTypes").ServerGroupCopy>;
    /**
     * changes the name of the server group
     * @param name new name of the group
     */
    rename(name: string): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * returns a list of permissions assigned to the server group specified with sgid
     * @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 server 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[]>;
    /**
     * rmoves a set of specified permissions from the server 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[]>;
    /**
     * Adds a client to the server group. Please note that a client cannot be added to default groups or template groups.
     * @param cldbid the client database id which should be added to the Group
     */
    addClient(cldbid: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /**
     * removes a client specified with cldbid from the servergroup
     * @param cldbid the client database id which should be removed from the group
     */
    delClient(cldbid: number): Promise<import("../types/QueryResponse").QueryResponseTypes[]>;
    /** returns the ids of all clients currently residing in the server group */
    clientList(): Promise<import("../types/ResponseTypes").ServerGroupClientList[]>;
    /** returns a buffer with the icon of the servergroup */
    getIcon(): Promise<Buffer>;
    /** gets the icon name of the servergroup */
    getIconName(): Promise<string>;
}
