import type { BaseCDNUrlOptions } from '../api';
import type { GuildEmojiStructure, GuildStructure } from '../client';
import type { UsingClient } from '../commands';
import { type EmojiShorter, type MethodContext, type ObjectToLower } from '../common';
import type { APIEmoji, RESTPatchAPIChannelJSONBody, RESTPatchAPIGuildEmojiJSONBody } from '../types';
import { DiscordBase } from './extra/DiscordBase';
export interface GuildEmoji extends DiscordBase, ObjectToLower<Omit<APIEmoji, 'id'>> {
}
export declare class GuildEmoji extends DiscordBase {
    readonly guildId: string;
    constructor(client: UsingClient, data: APIEmoji, guildId: string);
    guild(force?: boolean): Promise<GuildStructure<'api'> | undefined>;
    edit(body: RESTPatchAPIChannelJSONBody, reason?: string): Promise<GuildEmojiStructure>;
    delete(reason?: string): Promise<void>;
    fetch(force?: boolean): Promise<GuildEmojiStructure>;
    url(options?: BaseCDNUrlOptions): string;
    toString(): string;
    toJSON(): {
        id: string;
        name: string | null;
        animated: boolean;
    };
    static methods({ client, guildId }: MethodContext<{
        guildId: string;
    }>): {
        edit: (emojiId: string, body: RESTPatchAPIGuildEmojiJSONBody, reason?: string) => Promise<GuildEmojiStructure>;
        create: (body: Parameters<EmojiShorter["create"]>[1]) => Promise<GuildEmojiStructure>;
        fetch: (emojiId: string, force?: boolean) => Promise<GuildEmojiStructure>;
        list: (force?: boolean) => Promise<GuildEmojiStructure[]>;
    };
}
