import type { RenderContext } from "../../Renderer.js";
import { BooleanOption } from "../../RendererOptions/index.js";
import { TargetLanguage } from "../../TargetLanguage.js";
import type { StringTypeMapping } from "../../Type/TypeBuilderUtils.js";
import type { LanguageName, RendererOptions } from "../../types.js";
import { FlowRenderer } from "./FlowRenderer.js";
import { TypeScriptRenderer } from "./TypeScriptRenderer.js";
export declare const tsFlowOptions: {
    acronymStyle: import("../../RendererOptions/index.js").EnumOption<"acronym-style", {
        readonly original: import("../../support/Acronyms.js").AcronymStyleOptions.Original;
        readonly pascal: import("../../support/Acronyms.js").AcronymStyleOptions.Pascal;
        readonly camel: import("../../support/Acronyms.js").AcronymStyleOptions.Camel;
        readonly lowerCase: import("../../support/Acronyms.js").AcronymStyleOptions.Lower;
    }, import("../../support/Acronyms.js").AcronymStyleOptions>;
    runtimeTypecheck: BooleanOption<"runtime-typecheck">;
    runtimeTypecheckIgnoreUnknownProperties: BooleanOption<"runtime-typecheck-ignore-unknown-properties">;
    converters: import("../../RendererOptions/index.js").EnumOption<"converters", {
        readonly "top-level": import("../../support/Converters.js").ConvertersOptions.TopLevel;
        readonly "all-objects": import("../../support/Converters.js").ConvertersOptions.AllObjects;
    }, import("../../support/Converters.js").ConvertersOptions>;
    rawType: import("../../RendererOptions/index.js").EnumOption<"raw-type", {
        readonly json: "json";
        readonly any: "any";
    }, "any" | "json">;
} & {
    justTypes: BooleanOption<"just-types">;
    nicePropertyNames: BooleanOption<"nice-property-names">;
    declareUnions: BooleanOption<"explicit-unions">;
    preferUnions: BooleanOption<"prefer-unions">;
    preferTypes: BooleanOption<"prefer-types">;
    preferConstValues: BooleanOption<"prefer-const-values">;
    readonly: BooleanOption<"readonly">;
};
export declare const typeScriptLanguageConfig: {
    readonly displayName: "TypeScript";
    readonly names: readonly ["typescript", "ts", "tsx"];
    readonly extension: "ts";
};
export declare class TypeScriptTargetLanguage extends TargetLanguage<typeof typeScriptLanguageConfig> {
    constructor();
    getOptions(): typeof tsFlowOptions;
    get stringTypeMapping(): StringTypeMapping;
    get supportsOptionalClassProperties(): boolean;
    get supportsFullObjectType(): boolean;
    protected makeRenderer<Lang extends LanguageName = "typescript">(renderContext: RenderContext, untypedOptionValues: RendererOptions<Lang>): TypeScriptRenderer;
}
export declare const flowLanguageConfig: {
    readonly displayName: "Flow";
    readonly names: readonly ["flow"];
    readonly extension: "js";
};
export declare class FlowTargetLanguage extends TargetLanguage<typeof flowLanguageConfig> {
    constructor();
    getOptions(): typeof tsFlowOptions;
    get stringTypeMapping(): StringTypeMapping;
    get supportsOptionalClassProperties(): boolean;
    get supportsFullObjectType(): boolean;
    protected makeRenderer<Lang extends LanguageName = "flow">(renderContext: RenderContext, untypedOptionValues: RendererOptions<Lang>): FlowRenderer;
}
