import { ConvenienceRenderer } from "../../ConvenienceRenderer.js";
import { type Name, type Namer } from "../../Naming.js";
import type { RenderContext } from "../../Renderer.js";
import type { OptionValues } from "../../RendererOptions/index.js";
import { type Sourcelike } from "../../Source.js";
import type { TargetLanguage } from "../../TargetLanguage.js";
import type { ClassProperty, ClassType, Type } from "../../Type/index.js";
import type { javaScriptOptions } from "./language.js";
export interface JavaScriptTypeAnnotations {
    any: string;
    anyArray: string;
    anyMap: string;
    boolean: string;
    never: string;
    string: string;
    stringArray: string;
}
export declare class JavaScriptRenderer extends ConvenienceRenderer {
    private readonly _jsOptions;
    constructor(targetLanguage: TargetLanguage, renderContext: RenderContext, _jsOptions: OptionValues<typeof javaScriptOptions>);
    protected nameStyle(original: string, upper: boolean): string;
    protected makeNamedTypeNamer(): Namer;
    protected namerForObjectProperty(): Namer;
    protected makeUnionMemberNamer(): null;
    protected makeEnumCaseNamer(): Namer;
    protected namedTypeToNameForTopLevel(type: Type): Type | undefined;
    protected makeNameForProperty(c: ClassType, className: Name, p: ClassProperty, jsonName: string, _assignedName: string | undefined): Name | undefined;
    protected emitDescriptionBlock(lines: Sourcelike[]): void;
    private typeMapTypeFor;
    private typeMapTypeForProperty;
    protected emitBlock(source: Sourcelike, end: Sourcelike, emit: () => void): void;
    private emitTypeMap;
    protected deserializerFunctionName(name: Name): Sourcelike;
    protected deserializerFunctionLine(_t: Type, name: Name): Sourcelike;
    protected serializerFunctionName(name: Name): Sourcelike;
    protected serializerFunctionLine(_t: Type, name: Name): Sourcelike;
    protected get moduleLine(): string | undefined;
    protected get castFunctionLines(): [string, string];
    protected get typeAnnotations(): JavaScriptTypeAnnotations;
    protected emitConvertModuleBody(): void;
    protected emitConvertModuleHelpers(): void;
    protected emitConvertModule(): void;
    protected emitTypes(): void;
    protected emitUsageImportComment(): void;
    protected emitUsageComments(): void;
    protected emitModuleExports(): void;
    protected emitSourceStructure(): void;
}
