export {
  canonicalOffsetToEditorOffset,
  detectLatexLineEnding,
  hasMixedLatexLineEndings,
  editorInsertedTextToCanonical,
  editorOffsetToCanonicalOffset,
  latexSourceToEditorText,
  normalizeLatexLineEndings,
} from './line-endings';
export type { LatexLineEnding } from './line-endings';
export { createLatexListStructureMutation } from './list';
export type {
  LatexListItemSourceRange,
  LatexListStructureMutation,
  LatexListStructureOperation,
} from './list';

export {
  createLatexTableStructureMutation,
  createLatexTableTemplate,
  parseLatexTabular,
} from './table';
export type {
  LatexColumnToken,
  LatexTableCellRange,
  LatexTableRowRange,
  LatexTableSize,
  LatexTableStructureMutation,
  LatexTableStructureOperation,
  LatexTableTemplate,
  LatexTableTemplateOptions,
  LatexTabularModel,
} from './table';

export { createLatexImageInsertion } from './image-insertion';
export type {
  LatexImageInsertion,
  LatexImageInsertionOptions,
} from './image-insertion';
export {
  canEditLatexMathWithMathLive,
  createLatexMathContentEdit,
  createLatexMathInsertion,
  createLatexMathReplacementEdit,
  findLatexMathAtPosition,
  findLatexMathRegions,
  latexMathRegionToMathLiveValue,
  mathLiveValueToLatexMathContent,
} from './math';
export type {
  LatexMathDelimiter,
  LatexMathInsertionStyle,
  LatexMathKind,
  LatexMathRegion,
} from './math';
export {
  applySourceTextEdit,
  applySourceTextEdits,
  computeMinimalSourceTextEdit,
} from './text-edit';
export type { SourceMutationOrigin, SourceTextEdit } from './text-edit';
export {
  CANONICAL_LATEX_HARD_BREAK,
  CANONICAL_LATEX_PARAGRAPH_BREAK,
  CANONICAL_LATEX_PARAGRAPH_SEPARATOR,
  canonicalEmptySourceAnchor,
  createSourceBackedBlockDeletion,
  createLatexInlineSplitMutation,
} from './structural-break';
export type {
  LatexInlineSplitMutation,
  LatexInlineWrapperRange,
  SourceBackedBlockDeletion,
} from './structural-break';
export {
  findLatexEditorCommandDefinition,
  getLatexEditorCommandDefinition,
  LATEX_EDITOR_COMMAND_DEFINITIONS,
} from './editor-commands';
export type {
  LatexEditorCommandDefinition,
  LatexVisualSemanticCommand,
} from './editor-commands';

export { captureSourceAnchor, resolveSourceAnchor } from './source-anchor';
export type {
  CaptureSourceAnchorOptions,
  ResolveSourceAnchorOptions,
  ResolvedSourceAnchor,
  SourceAnchor,
  SourceAnchorRecoveryStrategy,
  SourceAnchorResolution,
} from './source-anchor';
