import type { GuildStructure, RawFile, StickerStructure, UsingClient } from '..';
import type { Attachment, AttachmentBuilder } from '../builders';
import { type UserStructure } from '../client/transformers';
import type { MethodContext, ObjectToLower } from '../common';
import type { APISticker, RESTPatchAPIGuildStickerJSONBody, RESTPostAPIGuildStickerFormDataBody } from '../types';
import { DiscordBase } from './extra/DiscordBase';
export interface Sticker extends DiscordBase, ObjectToLower<Omit<APISticker, 'user'>> {
}
export declare class Sticker extends DiscordBase {
    user?: UserStructure;
    constructor(client: UsingClient, data: APISticker);
    guild(force?: boolean): Promise<GuildStructure<'api'> | undefined>;
    edit(body: RESTPatchAPIGuildStickerJSONBody, reason?: string): Promise<StickerStructure | undefined>;
    fetch(force?: boolean): Promise<StickerStructure | undefined>;
    delete(reason?: string): Promise<void>;
    static methods({ client, guildId }: MethodContext<{
        guildId: string;
    }>): {
        list: () => Promise<StickerStructure[]>;
        create: (payload: CreateStickerBodyRequest, reason?: string) => Promise<StickerStructure>;
        edit: (stickerId: string, body: RESTPatchAPIGuildStickerJSONBody, reason?: string) => Promise<StickerStructure>;
        fetch: (stickerId: string, force?: boolean) => Promise<StickerStructure>;
        delete: (stickerId: string, reason?: string) => Promise<void>;
    };
}
export interface CreateStickerBodyRequest extends Omit<RESTPostAPIGuildStickerFormDataBody, 'file'> {
    file: Attachment | AttachmentBuilder | RawFile;
}
