import type { GuildStructure, GuildTemplateStructure } from '../client';
import type { UsingClient } from '../commands';
import type { MethodContext, ObjectToLower } from '../common';
import type { APITemplate, RESTPatchAPIGuildTemplateJSONBody, RESTPostAPIGuildTemplatesJSONBody } from '../types';
import { Base } from './extra/Base';
export interface GuildTemplate extends Base, ObjectToLower<APITemplate> {
}
export declare class GuildTemplate extends Base {
    constructor(client: UsingClient, data: APITemplate);
    guild(force?: boolean): Promise<GuildStructure<'api'>>;
    fetch(): Promise<GuildTemplateStructure>;
    sync(): Promise<GuildTemplateStructure>;
    edit(body: RESTPatchAPIGuildTemplateJSONBody): Promise<GuildTemplateStructure>;
    delete(): Promise<GuildTemplateStructure>;
    static methods(ctx: MethodContext<{
        guildId: string;
    }>): {
        fetch: (code: string) => Promise<GuildTemplateStructure>;
        list: () => Promise<GuildTemplateStructure[]>;
        create: (body: RESTPostAPIGuildTemplatesJSONBody) => Promise<GuildTemplateStructure>;
        sync: (code: string) => Promise<GuildTemplateStructure>;
        edit: (code: string, body: RESTPatchAPIGuildTemplateJSONBody) => Promise<GuildTemplateStructure>;
        delete: (code: string) => Promise<GuildTemplateStructure>;
    };
}
