import type { EmitTarget } from "../lib.js"; import type { TypeNode } from "./ast.js"; export type NamespaceTarget = "typescript" | "python" | "csharp" | "java" | "go" | "rust" | "swift" | "markdown"; export interface NamespaceProjection { target: NamespaceTarget; sourceNamespace: string; semanticRoot: string; relativeNamespace: string[]; isOutsideSemanticRoot: boolean; targetNamespace?: string; packageName?: string; moduleName?: string; importPath?: string; filesystemPath: string[]; filesystemPathKind: "root-relative" | "package" | "flat"; symbolPrefix?: string; } export interface NamespaceProjectionOptions { target: NamespaceTarget; sourceNamespace: string; semanticRoot?: string; emitTarget?: Pick; } export interface NamespaceGroupSnapshot { node: TypeNode; group: string; } export type NamespaceOutputMode = "structural" | "flat"; export declare function projectNamespace(options: NamespaceProjectionOptions): NamespaceProjection; export declare function relativeNamespaceSegments(sourceNamespace: string, semanticRoot: string): string[]; export declare function applyNamespaceGroups(nodes: Iterable, options: { target: NamespaceTarget; semanticRoot?: string; emitTarget?: Pick; namespaceOutput?: NamespaceOutputMode; }): NamespaceGroupSnapshot[]; export declare function resolveNamespaceOutputMode(options: { namespaceOutput?: NamespaceOutputMode; emitTarget?: Pick; }): NamespaceOutputMode; export declare function restoreNamespaceGroups(snapshots: Iterable): void; export declare function relativeNamespaceProjection(sourceNamespace: string, semanticRoot: string): { segments: string[]; isOutsideSemanticRoot: boolean; }; export declare function javaPackageName(namespace: string): string; export declare function goPackageNameFromNamespace(namespace: string): string; export declare function swiftModuleName(rawName: string): string;