export declare abstract class _CodeOrName { abstract readonly str: string; abstract readonly names: UsedNames; abstract toString(): string; abstract emptyStr(): boolean; } export declare const IDENTIFIER: RegExp; export declare class Name extends _CodeOrName { readonly str: string; constructor(s: string); toString(): string; emptyStr(): boolean; get names(): UsedNames; } export declare class _Code extends _CodeOrName { readonly _items: readonly CodeItem[]; private _str?; private _names?; constructor(code: string | readonly CodeItem[]); toString(): string; emptyStr(): boolean; get str(): string; get names(): UsedNames; } export declare type CodeItem = Name | string | number | boolean | null; export declare type UsedNames = Record; export declare type Code = _Code | Name; export declare type SafeExpr = Code | number | boolean | null; export declare const nil: _Code; declare type CodeArg = SafeExpr | string | undefined; export declare function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code; export declare function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code; export declare function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void; export declare function strConcat(c1: Code, c2: Code): Code; export declare function stringify(x: unknown): Code; export declare function safeStringify(x: unknown): string; export declare function getProperty(key: Code | string | number): Code; export declare function getEsmExportName(key: Code | string | number): Code; export declare function regexpCode(rx: RegExp): Code; export {};