import type { RenderContext } from "../../Renderer.js";
import { BooleanOption, EnumOption } from "../../RendererOptions/index.js";
import { TargetLanguage } from "../../TargetLanguage.js";
import type { StringTypeMapping } from "../../Type/TypeBuilderUtils.js";
import { type Type } from "../../Type/index.js";
import type { LanguageName, RendererOptions } from "../../types.js";
import { PythonRenderer } from "./PythonRenderer.js";
export interface PythonFeatures {
    dataClasses: boolean;
    typeHints: boolean;
}
export declare const pythonOptions: {
    features: EnumOption<"python-version", {
        readonly "3.5": {
            readonly typeHints: false;
            readonly dataClasses: false;
        };
        readonly "3.6": {
            readonly typeHints: true;
            readonly dataClasses: false;
        };
        readonly "3.7": {
            readonly typeHints: true;
            readonly dataClasses: true;
        };
    }, "3.5" | "3.6" | "3.7">;
    justTypes: BooleanOption<"just-types">;
    nicePropertyNames: BooleanOption<"nice-property-names">;
    pydanticBaseModel: BooleanOption<"pydantic-base-model">;
};
export declare const pythonLanguageConfig: {
    readonly displayName: "Python";
    readonly names: readonly ["python", "py"];
    readonly extension: "py";
};
export declare class PythonTargetLanguage extends TargetLanguage<typeof pythonLanguageConfig> {
    constructor();
    getOptions(): typeof pythonOptions;
    get stringTypeMapping(): StringTypeMapping;
    get supportsUnionsWithBothNumberTypes(): boolean;
    get supportsOptionalClassProperties(): boolean;
    needsTransformerForType(t: Type): boolean;
    protected makeRenderer<Lang extends LanguageName = "python">(renderContext: RenderContext, untypedOptionValues: RendererOptions<Lang>): PythonRenderer;
}
