import { BooleanOption, EnumOption, StringOption, getOptionValues, } from "../../RendererOptions/index.js";
import { TargetLanguage } from "../../TargetLanguage.js";
import { HaskellRenderer } from "./HaskellRenderer.js";
export const haskellOptions = {
    justTypes: new BooleanOption("just-types", "Plain types only", false),
    useList: new EnumOption("array-type", "Use Array or List", {
        array: false,
        list: true,
    }, "array"),
    moduleName: new StringOption("module", "Generated module name", "NAME", "QuickType"),
};
export const haskellLanguageConfig = {
    displayName: "Haskell",
    names: ["haskell"],
    extension: "haskell",
};
export class HaskellTargetLanguage extends TargetLanguage {
    constructor() {
        super(haskellLanguageConfig);
    }
    getOptions() {
        return haskellOptions;
    }
    get supportsOptionalClassProperties() {
        return true;
    }
    get supportsUnionsWithBothNumberTypes() {
        return true;
    }
    makeRenderer(renderContext, untypedOptionValues) {
        return new HaskellRenderer(this, renderContext, getOptionValues(haskellOptions, untypedOptionValues));
    }
}
