import type { GuildRoleStructure, GuildStructure } from '../client';
import type { UsingClient } from '../commands';
import { type MethodContext, type ObjectToLower } from '../common';
import type { APIRole, RESTPatchAPIGuildRoleJSONBody, RESTPatchAPIGuildRolePositionsJSONBody, RESTPostAPIGuildRoleJSONBody } from '../types';
import { DiscordBase } from './extra/DiscordBase';
import { PermissionsBitField } from './extra/Permissions';
export interface GuildRole extends DiscordBase, ObjectToLower<Omit<APIRole, 'permissions'>> {
}
export declare class GuildRole extends DiscordBase {
    readonly guildId: string;
    permissions: PermissionsBitField;
    constructor(client: UsingClient, data: APIRole, guildId: string);
    guild(force?: boolean): Promise<GuildStructure<'api'> | undefined>;
    fetch(force?: boolean): Promise<GuildRoleStructure>;
    edit(body: RESTPatchAPIGuildRoleJSONBody): Promise<GuildRoleStructure>;
    delete(reason?: string): Promise<GuildRoleStructure>;
    toString(): `<@&${string}>`;
    static methods(ctx: MethodContext<{
        guildId: string;
    }>): {
        create: (body: RESTPostAPIGuildRoleJSONBody) => Promise<GuildRoleStructure>;
        list: (force?: boolean) => Promise<GuildRoleStructure[]>;
        edit: (roleId: string, body: RESTPatchAPIGuildRoleJSONBody, reason?: string) => Promise<GuildRoleStructure>;
        delete: (roleId: string, reason?: string) => Promise<GuildRoleStructure>;
        editPositions: (body: RESTPatchAPIGuildRolePositionsJSONBody) => Promise<GuildRoleStructure[]>;
    };
}
