"use strict";
/* eslint-disable @typescript-eslint/no-unused-vars */
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypedEntityCreator = exports.TypedEntityCreatorBase = void 0;
const constants_1 = require("../constants");
const entity_1 = require("../contracts/base/entity");
const asset_1 = require("../contracts/content/asset");
const guard_1 = __importDefault(require("../guard"));
class TypedEntityCreatorBase {
    createTypedEntity(args) {
        guard_1.default.notNullOrUndefined(args);
        guard_1.default.stringNotNullOrEmpty(args.definitionName);
        let entity;
        switch (args.definitionName) {
            case constants_1.DEFINITIONS["Asset"].definitionName:
                entity = this.createAsset(args);
                break;
            // // case DEFINITIONS["File"].definitionName:
            // //     entity = this.createFile(args);
            // //     break;
            // // case DEFINITIONS["Setting"].definitionName:
            // //     entity = this.createSetting(args);
            // //     break;
            // // case DEFINITIONS["User"].definitionName:
            // //     entity = this.createUser(args);
            // //     break;
            // // case DEFINITIONS["UserGroup"].definitionName:
            // //     entity = this.createUserGroup(args);
            // //     break;
            // // case DEFINITIONS["UserProfile"].definitionName:
            // //     entity = this.createUserProfile(args);
            // //     break;
            // // case DEFINITIONS["MailTemplate"].definitionName:
            // //     entity = this.createMailTemplate(args);
            // //     break;
            default:
                entity = this.createEntity(args);
                break;
        }
        return entity;
    }
}
exports.TypedEntityCreatorBase = TypedEntityCreatorBase;
class TypedEntityCreator extends TypedEntityCreatorBase {
    constructor(client) {
        super();
        this._client = client;
    }
    createEntity(args) {
        return new entity_1.Entity(this._client, args);
    }
    createFile(args) {
        throw new Error("Method not implemented.");
    }
    createAsset(args) {
        return new asset_1.Asset(this._client, args);
    }
    createSetting(args) {
        throw new Error("Method not implemented.");
    }
    createUser(args) {
        throw new Error("Method not implemented.");
    }
    createUserProfile(args) {
        throw new Error("Method not implemented.");
    }
    createUserGroup(args) {
        throw new Error("Method not implemented.");
    }
    createMailTemplate(args) {
        throw new Error("Method not implemented.");
    }
}
exports.TypedEntityCreator = TypedEntityCreator;
//# sourceMappingURL=typed-entity-creator.js.map