import type { ReturnCache } from '../cache';
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(mode?: 'rest' | 'flow'): Promise<GuildStructure<'cached' | 'api'>>;
    guild(mode: 'cache'): ReturnCache<GuildStructure<'cached'> | undefined>;
    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>;
    };
}
