## API Report File for "@eigenpal/docx-editor-core"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

import { Command } from 'prosemirror-state';
import { EditorState } from 'prosemirror-state';
import { MarkSpec } from 'prosemirror-model';
import { Node as Node_2 } from 'prosemirror-model';
import { NodeSpec } from 'prosemirror-model';
import { Plugin as Plugin_2 } from 'prosemirror-state';
import { Schema } from 'prosemirror-model';
import { Transaction } from 'prosemirror-state';

// @public (undocumented)
export type AnyExtension = Extension | NodeExtension | MarkExtension;

// @public
export function clearTrackedChanges(state: EditorState): Transaction;

// @public (undocumented)
export type CommandMap = Record<string, (...args: any[]) => Command>;

// @public
export function createExtension<TOptions extends Record<string, unknown> = Record<string, unknown>>(def: ExtensionDefinition<TOptions>): (options?: Partial<TOptions>) => Extension;

// @public
export function createMarkExtension<TOptions extends Record<string, unknown> = Record<string, unknown>>(def: MarkExtensionDefinition<TOptions>): (options?: Partial<TOptions>) => MarkExtension;

// @public
export function createNodeExtension<TOptions extends Record<string, unknown> = Record<string, unknown>>(def: NodeExtensionDefinition<TOptions>): (options?: Partial<TOptions>) => NodeExtension;

// @public
export function createStarterKit(options?: StarterKitOptions): AnyExtension[];

// @public (undocumented)
export interface Extension {
    // (undocumented)
    config: ExtensionConfig;
    // (undocumented)
    onSchemaReady(ctx: ExtensionContext): ExtensionRuntime;
    // (undocumented)
    type: 'extension';
}

// @public (undocumented)
export interface ExtensionConfig {
    // (undocumented)
    name: string;
    // (undocumented)
    options: Record<string, unknown>;
    // (undocumented)
    priority: ExtensionPriority;
}

// @public (undocumented)
export interface ExtensionContext {
    manager: ExtensionManager;
    // (undocumented)
    schema: Schema;
}

// @public (undocumented)
export interface ExtensionDefinition<TOptions = Record<string, unknown>> {
    // (undocumented)
    defaultOptions?: TOptions;
    // (undocumented)
    name: string;
    // (undocumented)
    onSchemaReady(ctx: ExtensionContext, options: TOptions): ExtensionRuntime;
    // (undocumented)
    priority?: ExtensionPriority;
}

// @public
export class ExtensionManager {
    constructor(extensions: AnyExtension[]);
    buildSchema(): void;
    destroy(): void;
    getCommand(name: string): ((...args: any[]) => Command) | undefined;
    getCommands(): CommandMap;
    getPlugins(): Plugin_2[];
    getSchema(): Schema;
    initializeRuntime(): void;
}

// @public
export type ExtensionPriority = number;

// @public (undocumented)
export interface ExtensionRuntime {
    // (undocumented)
    commands?: CommandMap;
    // (undocumented)
    keyboardShortcuts?: KeyboardShortcutMap;
    // (undocumented)
    plugins?: Plugin_2[];
}

// @public
export function getChangedParagraphIds(state: EditorState): Set<string>;

// @public
export function hasStructuralChanges(state: EditorState): boolean;

// @public
export function hasUntrackedChanges(state: EditorState): boolean;

// @public (undocumented)
export type KeyboardShortcutMap = Record<string, Command>;

// @public (undocumented)
export interface MarkExtension {
    // (undocumented)
    config: MarkExtensionConfig;
    // (undocumented)
    onSchemaReady(ctx: ExtensionContext): ExtensionRuntime;
    // (undocumented)
    type: 'mark';
}

// @public (undocumented)
export interface MarkExtensionConfig extends ExtensionConfig {
    // (undocumented)
    markSpec: MarkSpec;
    // (undocumented)
    schemaMarkName: string;
}

// @public (undocumented)
export interface MarkExtensionDefinition<TOptions = Record<string, unknown>> {
    // (undocumented)
    defaultOptions?: TOptions;
    // (undocumented)
    markSpec: MarkSpec | ((options: TOptions) => MarkSpec);
    // (undocumented)
    name: string;
    // (undocumented)
    onSchemaReady?(ctx: ExtensionContext, options: TOptions): ExtensionRuntime;
    // (undocumented)
    priority?: ExtensionPriority;
    // (undocumented)
    schemaMarkName: string;
}

// @public (undocumented)
export interface NodeExtension {
    // (undocumented)
    config: NodeExtensionConfig;
    // (undocumented)
    onSchemaReady(ctx: ExtensionContext): ExtensionRuntime;
    // (undocumented)
    type: 'node';
}

// @public (undocumented)
export interface NodeExtensionConfig extends ExtensionConfig {
    // (undocumented)
    nodeSpec: NodeSpec;
    // (undocumented)
    schemaNodeName: string;
}

// @public (undocumented)
export interface NodeExtensionDefinition<TOptions = Record<string, unknown>> {
    // (undocumented)
    defaultOptions?: TOptions;
    // (undocumented)
    name: string;
    // (undocumented)
    nodeSpec: NodeSpec | ((options: TOptions) => NodeSpec);
    // (undocumented)
    onSchemaReady?(ctx: ExtensionContext, options: TOptions): ExtensionRuntime;
    // (undocumented)
    priority?: ExtensionPriority;
    // (undocumented)
    schemaNodeName: string;
}

// @public (undocumented)
export const ParagraphChangeTrackerExtension: (options?: Partial<{}> | undefined) => Extension;

// @public (undocumented)
export const Priority: {
    readonly Highest: 0;
    readonly High: 50;
    readonly Default: 100;
    readonly Low: 150;
    readonly Lowest: 200;
};

// @public
export interface StarterKitOptions {
    disable?: string[];
    historyDepth?: number;
    historyNewGroupDelay?: number;
    onSelectionChange?: SelectionChangeCallback;
}

// @public (undocumented)
export const TableCellExtension: (options?: Partial<Record<string, unknown>> | undefined) => NodeExtension;

// @public
export interface TableContextInfo {
    // (undocumented)
    canSplitCell?: boolean;
    cellBackgroundColor?: string;
    cellBorderColor?: ColorValue;
    // (undocumented)
    columnCount?: number;
    // (undocumented)
    columnIndex?: number;
    // (undocumented)
    hasMultiCellSelection?: boolean;
    // (undocumented)
    isInTable: boolean;
    // (undocumented)
    rowCount?: number;
    // (undocumented)
    rowIndex?: number;
    // (undocumented)
    table?: Node_2;
    // (undocumented)
    tablePos?: number;
}

// @public (undocumented)
export const TableHeaderExtension: (options?: Partial<Record<string, unknown>> | undefined) => NodeExtension;

// @public (undocumented)
export const TableNodeExtension: (options?: Partial<Record<string, unknown>> | undefined) => NodeExtension;

// @public (undocumented)
export const TableRowExtension: (options?: Partial<Record<string, unknown>> | undefined) => NodeExtension;

```
