import { Resource } from '../entity/Resource';
import { ResourceType } from '../interface';
export interface MagicProvide {
    /**
     * 初始化
     */
    init(reInit?: boolean): Promise<void>;
}
export interface MagicDefinition extends MagicProvide {
    /**
     * 资源类型
     */
    type: ResourceType;
    /**
     * 注册资源
     * @param resource
     * @param args
     */
    add(resource: Resource, ...args: any[]): Promise<void>;
    /**
     * 删除资源
     * @param id
     */
    removeById(id: string): Promise<void>;
}
/**
 * Magic处理器
 */
export declare class MagicProvideContainer {
    private static _MAGIC_TYPE_FILE_PATH;
    /**
     * 增加d.ts文件目录
     * @param path
     */
    static addTypeFilePath(path: string): void;
    /**
     * 获取d.ts文件目录
     */
    static getTypeFilePaths(): IterableIterator<string>;
    private static _MAGIC_PROVIDE_ARRAY;
    /**
     * Magic处理器初始化
     */
    static init(): Promise<void>;
    /**
     * 重新初始化
     */
    static reInit(): Promise<void>;
    /**
     * 根据类型重新初始化
     */
    static reInitByType(type: ResourceType): Promise<void>;
    /**
     * 注册Magic处理器
     * @param provide 处理器
     */
    static registerMagicProvide(provide: any): Promise<void>;
    /**
     * 根据类型获取magic处理器
     * @param type 资源类型
     */
    static getMagicProvide(type: ResourceType): Promise<MagicDefinition>;
    static getAllResource(): Promise<any>;
}
