import type * as tae from 'typescript-api-extractor';
/**
 * Metadata for an external type discovered during formatting.
 * These are types referenced in props/params that are not publicly exported,
 * but whose definitions may be useful for documentation (e.g., union types).
 */
export interface ExternalTypeMeta {
  /** The type name (e.g., "Orientation") */
  name: string;
  /** The type definition as a string (e.g., "'horizontal' | 'vertical'") */
  definition: string;
}
/**
 * Collector for external types discovered during formatting.
 * Pass this to formatType/formatProperties/formatParameters to collect
 * external types as they are encountered in the formatted output.
 */
export interface ExternalTypesCollector {
  /** Map to accumulate results (type name -> ExternalTypeMeta) */
  collected: Map<string, ExternalTypeMeta>;
  /** All exports in the module, used to identify own types */
  allExports: tae.ExportNode[];
  /** Optional pattern to filter which external types to include */
  pattern?: RegExp;
  /** Map of original export names to dotted display names, used to identify renamed own types */
  typeNameMap?: Record<string, string>;
}
/**
 * Checks if a type name belongs to a built-in namespace that should be skipped
 * during external type collection.
 */
export declare function isBuiltInTypeName(typeName: tae.TypeName): boolean;
/**
 * Checks whether a type name belongs to one of the module's own exports.
 * Matches both direct export names (e.g., `AlertDialogRootChangeEventReason`)
 * and short names that appear as the last segment of a typeNameMap value
 * (e.g., `ChangeEventReason` matching `AlertDialog.Root.ChangeEventReason`).
 */
export declare function isOwnTypeName(typeName: string, collector: ExternalTypesCollector): boolean;
/**
 * Formats an external type definition as a simple type string.
 * This produces a concise representation suitable for documentation.
 * Note: This function always expands types - it's used for showing the full
 * definition in the "External Types" section, not for inline type display.
 */
export declare function formatExternalTypeDefinition(type: tae.AnyType): string;
/**
 * Formats a function type signature for external type documentation.
 * Produces a readable representation like `(data: { side: Side; align: Align }) => number`.
 */
export declare function formatFunctionSignature(type: tae.FunctionNode): string;
/**
 * Attempts to collect a named union type as an external type during formatting.
 * Only collects if:
 * - The type has a name
 * - ALL members are literals or simple intrinsics (string, number, boolean)
 * - The type is not in allExports (not an own type)
 * - The type is not a built-in namespace
 * - The optional pattern filter matches
 */
export declare function maybeCollectExternalUnion(type: tae.UnionNode, collector: ExternalTypesCollector): void;
/**
 * Attempts to collect a named function type as an external type during formatting.
 * Only collects named function types that aren't ComponentRenderFn, own types, or built-in.
 */
export declare function maybeCollectExternalFunction(type: tae.FunctionNode, collector: ExternalTypesCollector): void;
/**
 * Attempts to collect an external type reference (from node_modules) as an external type.
 * Looks up the type in allExports to see if it's a re-exported union/literal.
 */
export declare function maybeCollectExternalReference(type: tae.ExternalTypeNode, collector: ExternalTypesCollector): void;