export declare namespace MathQuillLoader {
    /**
     * Sets up mathquill. When done returns the `window.MathQuill` object.
     * @param callback
     */
    function loadMathQuill(callback: (mathquill: IMathQuill) => any): void;
}
export interface IMathQuill {
    StaticMath: (htmlElement: HTMLElement) => BaseMethods;
    MathField: (htmlElement: HTMLElement, config?: MathQuillConfig) => MathFieldMethods;
    getInterface: (version: 1 | 2) => IMathQuill;
    noConflict: () => IMathQuill;
    config: (MathQuillConfig: any) => void;
    getLatexMathParser: () => LatexMathParser;
}
export interface LatexMathParser extends Parser {
    commandToBlock: (cmd: any) => any;
    joinBlocks: (blocks: any[]) => any;
}
export interface Parser {
    parse: (stream: string) => any;
}
export interface MathQuillConfig {
    spaceBehavesLikeTab?: boolean;
    leftRightIntoCmdGoes?: 'up' | 'down';
    restrictMismatchedBrackets?: boolean;
    sumStartsWithNEquals?: boolean;
    supSubsRequireOperand?: boolean;
    charsThatBreakOutOfSupSub?: string;
    autoSubscriptNumerals?: boolean;
    autoCommands?: string;
    autoOperatorNames?: string;
    substituteTextArea?: () => HTMLElement;
    handlers?: {
        edit?: (mathField: any) => any;
        enter?: (mathField: any) => any;
        upOutOf?: (mathField: any) => any;
        moveOutOf?: (dir: any, mathField: any) => any;
    };
}
export interface BaseMethods {
    revert: () => HTMLElement;
    reflow: () => void;
    el: () => HTMLElement;
    latex: (latex?: string) => any;
}
export interface MathFieldMethods extends BaseMethods {
    focus: () => this;
    blur: () => this;
    write: (latex: string) => this;
    cmd: (latex: string) => this;
    select: () => this;
    clearSelection: () => this;
    moveToLeftEnd: () => this;
    moveToRightEnd: () => this;
    movetoDirEnd: (direction: this) => this;
    keystroke: (keys: string) => this;
    typedText: (text: string) => this;
    config: (config: MathQuillConfig) => this;
    dropEmbedded: (pageX: any, pageY: any, options: any) => this;
    html: () => any;
}
