import State from './state.js';
import StateMachineWS from "../stateMachineWS.js";
import { StatemachineInterface, StateMachineFactoryFunction, RegexpResult, ContextArray, StateInterface, ParseMethodReturnType } from "../types.js";
/**
 * State superclass specialized for whitespace (blank lines & indents).
 *
 * Use this class with `StateMachineWS`.  The transitions 'blank' (for blank
 * lines) and 'indent' (for indented text blocks) are added automatically,
 * before any other transitions.  The transition method `blank()` handles
 * blank lines and `indent()` handles nested indented blocks.  Indented
 * blocks trigger a new state machine to be created by `indent()` and run.
 * The class of the state machine to be created is in `indent_sm`, and the
 * constructor keyword arguments are in the dictionary `indent_sm_kwargs`.
 *
 * The methods `known_indent()` and `firstknown_indent()` are provided for
 * indented blocks where the indent (all lines' and first line's only,
 * respectively) is known to the transition method, along with the attributes
 * `known_indent_sm` and `known_indent_sm_kwargs`.  Neither transition method
 * is triggered automatically.
 *
 */
declare class StateWS extends State {
    /**
     * The `StateMachine` class handling indented text blocks.
     *
     * If left as ``None``, `indent_sm` defaults to the value of
     * `State.nested_sm`.  Override it in subclasses to avoid the default.
     */
    /**
     *  Keyword arguments dictionary, passed to the `indent_sm` constructor.
     *
     * If left as ``None``, `indent_sm_kwargs` defaults to the value of
     * `State.nested_sm_kwargs`. Override it in subclasses to avoid the default.
     **/
    /**
     *    The `StateMachine` class handling known-indented text blocks.
     *
     * If left as ``None``, `known_indent_sm` defaults to the value of
     * `indent_sm`.  Override it in subclasses to avoid the default.
     */
    /**
     * Keyword arguments dictionary, passed to the `known_indent_sm` constructor.
     *
     * If left as ``None``, `known_indent_sm_kwargs` defaults to the value of
     * `indent_sm_kwargs`. Override it in subclasses to avoid the default.
     */
    /** Patterns for default whitespace transitions.  May be overridden in subclasses. */
    private wsPatterns;
    /**
     * Default initial whitespace transitions, added before those listed in
     * `State.initial_transitions`.  May be overridden in subclasses.
     */
    private wsInitialTransitions;
    private wsStateMachine;
    private debugFn;
    createIndentedStateMachine: StateMachineFactoryFunction<StatemachineInterface> | undefined;
    constructor(stateMachine: StateMachineWS, debug?: boolean);
    addInitialTransitions(): void;
    blank(match: RegexpResult, context: ContextArray, nextState: StateInterface): any;
    indent(match: RegexpResult, context: ContextArray, nextState: StateInterface): ParseMethodReturnType;
    knownIndent(match: RegexpResult, context: ContextArray, nextState: StateInterface): ParseMethodReturnType;
    /**
     * Handle an indented text block (first line's indent known).
     *
     * Extend or override in subclasses.
     *
     * Recursively run the registered state machine for known-indent indented
     * blocks (`self.known_indent_sm`). The indent is the length of the
     * match, ``match.end()``.
     */
    firstKnownIndent(match: RegexpResult, context: ContextArray, nextState: StateInterface): ParseMethodReturnType;
}
export default StateWS;
