import { Node, Position, Location } from '../node'; import { Parser } from './parser'; export interface Resetter { (node: T, parent?: Node): Promise; test: () => Position; } export declare type ApplyFunc = { (node: Promise, parent?: Node): Promise; (node: T, parent?: Node): Promise; }; export declare type Applier = ApplyFunc & { reset: Resetter; test: () => Position; }; export interface Eater { (value: string): Applier; now: () => Location; } export declare type ParserAndEater = Parser & { eat: Eater; }; export declare type Tokenize = (value: string, location?: Location) => Promise; /** * Construct a tokenizer. This creates both * `tokenizeInline` and `tokenizeBlock`. * * @example * Parser.prototype.tokenizeInline = tokenizeFactory('inline') * * @param {string} type - Name of parser, used to find * its expressions (`%sMethods`) and tokenizers * (`%Tokenizers`). * @return {Function} - Tokenizer. */ export default function tokenizeFactory(parser: Parser, type: string): Tokenize;