import $ from './spellu-engine';
declare namespace grammar$son { }
declare namespace grammar$son {
    const enum Syntax {
        Array = "son.Array",
        Object = "son.Object",
        String = "son.String",
        Number = "son.Number",
        Boolean = "son.Boolean",
        Null = "son.Null",
        Comment = "son.Comment"
    }
    const enum Syntax {
        OpenBracketToken = "son.token.bracket-[",
        CloseBracketToken = "son.token.bracket-]",
        OpenBraceToken = "son.token.brace-{",
        CloseBraceToken = "son.token.brace-}",
        CommaToken = "son.token.comma",
        ColonToken = "son.token.colon",
        SingleQuote = "son.token.single-quote",
        DoubleQuote = "son.token.double-quote",
        IdentifierToken = "son.token.identifier",
        NumberToken = "son.token.number",
        BooleanToken = "son.token.boolean",
        NullToken = "son.token.null",
        TextToken = "son.token.text",
        EscapedUnicodeCharacterToken = "son.token.escaped-unicode-character",
        EscapedSignCharacterToken = "son.token.escaped-sign-character",
        ErrorToken = "son.token.error"
    }
    type WholeNodes = Array | Object | String | Number | Boolean | Null | Comment | Token;
    type Token = $.Token;
    type SyntaxScope = $.SyntaxScope;
    type Value = Array | Object | String | Number | Boolean | Null;
    interface Array extends $.Node {
        syntax: Syntax.Array;
        items: Value[];
    }
    interface Object extends $.Node {
        syntax: Syntax.Object;
        items: [Token, Value][];
    }
    interface String extends $.Node {
        syntax: Syntax.String;
        value: string;
        tokens: Token[];
    }
    interface Number extends $.Node {
        syntax: Syntax.Number;
        value: number;
        token: Token;
    }
    interface Boolean extends $.Node {
        syntax: Syntax.Boolean;
        value: boolean;
        token: Token;
    }
    interface Null extends $.Node {
        syntax: Syntax.Null;
        value: null;
        token: Token;
    }
    interface Comment extends $.Node {
        syntax: Syntax.Null;
        text: string;
        token: Token;
    }
}
declare namespace grammar$son {
    const recipe: $.Recipe;
}
declare namespace grammar$son {
    const processors: $.Dictionary<$.Processor>;
}
declare namespace grammar$son {
}
declare namespace grammar$son {
}
declare namespace grammar$son {
}
declare namespace grammar$son {
}
declare namespace grammar$son {
    enum ProcessorSuite {
        CST = "cst",
        AST = "ast",
        Syntax = "syntax",
        Value = "value"
    }
    function selectProcessorSuite(suite: ProcessorSuite): $.Processor[];
    function scan<V>(source: string | $.SourceDescriptor, suite?: ProcessorSuite, rule?: string, options?: Partial<$.ScanOptions>): V;
    function tokenize(source: string | $.SourceDescriptor, options?: Partial<$.ScanOptions>): $.SyntaxToken[];
    function parse<V>(source: string | $.SourceDescriptor, options?: Partial<$.ScanOptions>): V;
}
declare namespace grammar$son {
    type PrintOptions = {
        pretty?: boolean;
    };
    export function print(value: Value, options?: PrintOptions): string;
    export {};
}
export default grammar$son;
//# sourceMappingURL=grammar-son.d.ts.map