import type { Node as ProsemirrorNode, Mark, Node } from 'prosemirror-model';
import type { MarkdownSerializerState } from 'prosemirror-markdown';
import type { MdSerializerState } from '../types';
export declare type MarkSerializerMethod = (state: MarkdownSerializerState, mark: Mark, parent: Node, index: number) => void;
declare type MarkSerializerSpec = {
    /**
      The string that should appear before a piece of content marked
      by this mark, either directly or as a function that returns an
      appropriate string.
      */
    open: string | ((state: MarkdownSerializerState, mark: Mark, parent: Node, index: number) => string);
    /**
      The string that should appear after a piece of content marked by
      this mark.
      */
    close: string | ((state: MarkdownSerializerState, mark: Mark, parent: Node, index: number) => string);
    /**
      When `true`, this indicates that the order in which the mark's
      opening and closing syntax appears relative to other mixable
      marks can be varied. (For example, you can say `**a *b***` and
      `*a **b***`, but not `` `a *b*` ``.)
      */
    mixable?: boolean;
    /**
      When enabled, causes the serializer to move enclosing whitespace
      from inside the marks to outside the marks. This is necessary
      for emphasis marks as CommonMark does not permit enclosing
      whitespace inside emphasis marks, see:
      http:spec.commonmark.org/0.26/#example-330
      */
    expelEnclosingWhitespace?: boolean;
    /**
      Can be set to `false` to disable character escaping in a mark. A
      non-escaping mark has to have the highest precedence (must
      always be the innermost mark).
      */
    escape?: boolean;
};
export declare function backticksFor(node: ProsemirrorNode, side: number): string;
export declare function isPlainURL(link: Mark, href: string, parent: Node, index: number, side: number): boolean;
export declare function wrapMark(token: string, close?: MarkSerializerMethod): MarkSerializerSpec;
export declare function writeDirectiveOptions(state: MdSerializerState, options: Record<string, any>): void;
export {};
