declare class ActivePlugin {
    define: PluginDefine;
    ctx: PackMcContext;

    constructor(define: PluginDefine, mcctx: PackMcContext);

    read(name: string, error?: (err: Error) => void): Buffer | string | undefined;

    write(name: string, data: any, error?: (err: Error) => void): void;

    file(p: string): boolean;
    
    json(p: string, callback: (data: object) => object)

    subId(id: string): string;

    onGenerate(): void;
}

declare class RePackMcPlugin extends ActivePlugin {
    func: (...args: any[]) => any;
    files: any[];

    constructor(define: PluginDefine, ctx: PackMcContext, func: (...args: any[]) => RePackMcModule);

    callMethod(createFile?: boolean, ...args: any[]): any;

    onGenerate(): void;
}

export { ActivePlugin, RePackMcPlugin };