import { APIRole, Client } from "../client";
import { Base } from "../internal/Base";
import { PermissionsBitField } from "../PermissionCalculator";
import { Guild } from "./Guild";
/** Role object */
export declare class Role extends Base {
    readonly id: string;
    name: string;
    color: number;
    hoist: boolean;
    icon?: string;
    unicode_emoji?: string;
    position: number;
    permissions: string;
    managed: boolean;
    mentionable: boolean;
    tags?: {
        bot_id?: string;
        integration_id?: string;
    };
    flags: number;
    readonly guild_id: string;
    constructor(options: APIRole, client: Client);
    /**
     * Get the guild of the role
     *
     * @returns A guild object
     */
    get guild(): Guild;
    /**
     * Get the permissions of the role
     *
     * @returns An array of permissions
     */
    getPermissions(): (keyof typeof PermissionsBitField)[];
    /**
     * Check if the role has a specific permission
     *
     * @param permission The permission name
     * @returns Whether the role has this permission or not
     */
    hasPermission(permission: keyof typeof PermissionsBitField): boolean;
    /**
     * Update the role
     *
     * @param data The new data of the role
     */
    _patch(data: Role): void;
    toJson(): {
        id: string;
        name: string;
        color: number;
        hoist: boolean;
        icon: string;
        unicode_emoji: string;
        position: number;
        permissions: string;
        managed: boolean;
        mentionable: boolean;
        tags: {
            bot_id: string;
            integration_id: string;
        };
        flags: number;
        guild_id: string;
    };
}
