#pragma once

#include <string>
#include <vector>
#include <unordered_map>

// #include "../PSBFile.h"

namespace PSB {

    class BaseImageType {
    public:
        // virtual void link(PSBFile psb, FreeMountContext context,
        // std::vector<std::string> resPaths, std::string baseDir = null,
        // PsbLinkOrderBy order = PsbLinkOrderBy.Convention)
        // {
        //     PsbResHelper.LinkImages(psb, context, resPaths, baseDir, order);
        // }

        // virtual void Link(PSB psb, FreeMountContext context,
        // std::unordered_map<std::string, std::string> resPaths, string baseDir
        // = null)
        // {
        //     PsbResHelper.LinkImages(psb, context, resPaths, baseDir);
        // }

        // virtual List<Bitmap> Unlink(PSB psb, PsbLinkOrderBy order =
        // PsbLinkOrderBy.Name, bool disposeResInPsb = true)
        // {
        //     PsbResHelper.UnlinkImages(psb, order, disposeResInPsb);
        // }

        // virtual void UnlinkToFile(PSB psb, FreeMountContext context, string
        // name, string dirPath, bool outputUnlinkedPsb = true,
        //     PsbLinkOrderBy order = PsbLinkOrderBy.Name)
        // {
        //     PsbResHelper.UnlinkImagesToFile(psb, context, name, dirPath,
        //     outputUnlinkedPsb, order);
        // }

        // virtual Dictionary<string, string> OutputResources(PSB psb,
        // FreeMountContext context, string name, string dirPath,
        //     PsbExtractOption extractOption = PsbExtractOption.Original)
        // {
        //     return PsbResHelper.OutputImageResources(psb, context, name,
        //     dirPath, extractOption);
        // }
    };
}; // namespace PSB