"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ElixirTargetLanguage = exports.elixirLanguageConfig = exports.elixirOptions = void 0;
const index_js_1 = require("../../RendererOptions/index.js");
const TargetLanguage_js_1 = require("../../TargetLanguage.js");
const ElixirRenderer_js_1 = require("./ElixirRenderer.js");
exports.elixirOptions = {
    justTypes: new index_js_1.BooleanOption("just-types", "Plain types only", false),
    namespace: new index_js_1.StringOption("namespace", "Specify a module namespace", "NAME", ""),
};
exports.elixirLanguageConfig = {
    displayName: "Elixir",
    names: ["elixir"],
    extension: "ex",
};
class ElixirTargetLanguage extends TargetLanguage_js_1.TargetLanguage {
    constructor() {
        super(exports.elixirLanguageConfig);
    }
    getOptions() {
        return exports.elixirOptions;
    }
    get supportsOptionalClassProperties() {
        return true;
    }
    get defaultIndentation() {
        return "  ";
    }
    makeRenderer(renderContext, untypedOptionValues) {
        return new ElixirRenderer_js_1.ElixirRenderer(this, renderContext, (0, index_js_1.getOptionValues)(exports.elixirOptions, untypedOptionValues));
    }
}
exports.ElixirTargetLanguage = ElixirTargetLanguage;
