import type { Module, RecordLocation } from "soiac"; export interface ClassName { /** * Name of the TypeScript class, e.g. "Bar". It is obtained by taking the * record name, as specified in the `.soia` file, and appending one or * multiple underscores if there is a conflict with another name. * If the class is nested, the `name` does not include the name of the parent * classes. */ readonly name: string; /** * Qualified type name, e.g. "Foo.Bar". * This is what you want to use in type declarations. */ readonly type: string; /** * Class expression, e.g. "Foo_Bar" if the class is defined in the same * module, or "x_other_module.Foo.Bar" if it is defined in a different module. * This is what you want to use in the TypeScript code that gets transpiled to * Javascript. */ readonly value: string; /** * Expression referring to the parent class if this class is nested, undefined * otherwise. */ parentClassValue: string | undefined; /** * Name of the record, as specified in the `.soia` file. This can be different * from `name` if for example the record name conflicts with a built-in class. * If the record is nested, the `recordName` does not include the name of the * parent records. */ readonly recordName: string; /** * Dot-separated record names, where the first record is a record defined at * the top-level, the last record is this record, and every record in the * chain is nested within the previous record. */ readonly recordQualifiedName: string; readonly recordType: "struct" | "enum"; /** True if the class is nested within another class. */ readonly isNested: boolean; } /** Returns the name of the frozen TypeScript class for the given record. */ export declare function getClassName(record: RecordLocation, origin: Module): ClassName; export declare function maybeEscapeTopLevelUpperCaseName(name: string): string; //# sourceMappingURL=class_speller.d.ts.map