"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function createRuntimeTypeCheck(cls) {
    cls.implements = new Set();
    for (let baseClass of cls.baseClasses) {
        for (let i of baseClass.implements) {
            cls.implements.add(i);
        }
    }
    return (instance) => {
        var _a, _b, _c;
        return (_c = (_b = (_a = instance === null || instance === void 0 ? void 0 : instance.constructor) === null || _a === void 0 ? void 0 : _a.implements) === null || _b === void 0 ? void 0 : _b.has(cls)) !== null && _c !== void 0 ? _c : false;
    };
}
exports.default = createRuntimeTypeCheck;
