import type * as tae from 'typescript-api-extractor';
import { type FormattedProperty, type FormattedParameter, type FormatInlineTypeOptions, type DescriptionReplacement } from "./format.mjs";
import { type TypeRewriteContext } from "./rewriteTypes.mjs";
import type { ExternalTypesCollector } from "./externalTypes.mjs";
import type { HastRoot } from "../../CodeHighlighter/types.mjs";
export type HookTypeMeta = {
  name: string;
  description?: HastRoot;
  /** Plain text version of description for markdown generation */
  descriptionText?: string;
  /** Ordered function parameters */
  parameters?: FormattedParameter[];
  /**
   * Expanded properties from a single anonymous object parameter.
   * When populated, `parameters` should be omitted and headings should
   * say "Properties" instead of "Parameters".
   */
  expandedProperties?: Record<string, FormattedProperty>;
  returnValue: Record<string, FormattedProperty> | string;
  /** Plain text version of returnValue for markdown generation (when returnValue is string) */
  returnValueText?: string;
  /** Description of the return value (parsed markdown as HAST) */
  returnValueDescription?: HastRoot;
  /** Plain text version of returnValueDescription for markdown generation */
  returnValueDescriptionText?: string;
};
export interface FormatHookOptions {
  /** Pattern/replacement pairs to apply to descriptions */
  descriptionReplacements?: DescriptionReplacement[];
  /** Options for inline type formatting (e.g., unionPrintWidth) */
  formatting?: FormatInlineTypeOptions;
  /** Collector for external types discovered during formatting */
  externalTypes?: ExternalTypesCollector;
}
export declare function formatHookData(hook: tae.ExportNode & {
  type: tae.FunctionNode;
}, typeNameMap: Record<string, string>, rewriteContext: TypeRewriteContext, options?: FormatHookOptions): Promise<HookTypeMeta>;
export declare function isPublicHook(exportNode: tae.ExportNode): exportNode is tae.ExportNode & {
  type: tae.FunctionNode;
};