"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTestExternalDeclarations = getTestExternalDeclarations;
const tstl_1 = require("tstl");
function getTestExternalDeclarations(ctx) {
    return __awaiter(this, void 0, void 0, function* () {
        const compiler = yield ctx.compiler();
        return singleton.get(compiler.test);
    });
}
const singleton = new tstl_1.Singleton((compiler) => __awaiter(void 0, void 0, void 0, function* () {
    const records = yield compiler.getExternal();
    const external = (location) => {
        const content = records[location];
        if (content === undefined)
            throw new Error(`File not found: ${location}`);
        return { [location]: content };
    };
    const filter = (closure) => {
        const entries = Object.entries(records).filter(([key]) => closure(key));
        return Object.fromEntries(entries);
    };
    return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, external("node_modules/@nestia/e2e/lib/ArrayUtil.d.ts")), external("node_modules/@nestia/e2e/lib/RandomGenerator.d.ts")), external("node_modules/@nestia/e2e/lib/TestValidator.d.ts")), external("node_modules/@nestia/fetcher/lib/IConnection.d.ts")), external("node_modules/@samchon/openapi/lib/http/HttpError.d.ts")), external("node_modules/typia/lib/module.d.ts")), filter((key) => key.startsWith("node_modules/typia/lib/tags") && key.endsWith(".d.ts")));
}));
//# sourceMappingURL=getTestExternalDeclarations.js.map