import type { Token, TokenList } from "../schema/types";
import type { Theme } from "../types";
import type { MatcherType } from "./types";
export declare class TokenContext {
    text: string;
    type: string;
    value?: unknown;
    ignored?: boolean;
    constructor(text: string, type: string);
    accept(type: string, value?: unknown): void;
    ignore(): void;
}
export declare class SimpleLexer {
    private rules;
    private inputContent;
    private position;
    rule(pattern: RegExp, action: (ctx: TokenContext) => void): void;
    input(text: string): void;
    token(): {
        type: string;
        text: string;
        value?: unknown;
    } | null;
    private findMatchingToken;
    private consumeUnmatchedText;
    tokenize(input: string): ReadonlyArray<{
        type: string;
        text: string;
        value?: unknown;
    }>;
}
export declare function addWhitespaceRules(lexer: SimpleLexer): void;
export declare function addDefaultLogRules(lexer: SimpleLexer): void;
export declare function addTrimWhitespaceRules(lexer: SimpleLexer): void;
export declare function addTrimNewlineRules(lexer: SimpleLexer): void;
export declare function addWordMatchRules(lexer: SimpleLexer, matchWords: Record<string, unknown>): void;
export declare function addPatternMatchRules(lexer: SimpleLexer, matchPatterns: ReadonlyArray<{
    pattern: string | RegExp;
    name?: string;
    identifier?: string;
    options?: unknown;
}>): void;
export declare function addThemeRules(lexer: SimpleLexer, theme: Theme): void;
export declare function createLexer(theme?: Theme): SimpleLexer;
export declare function createDefaultToken(line: string): Token;
export declare function shouldUseDefaultToken(theme?: Theme): boolean;
export declare function createTokenMetadata(matchType: MatcherType, tokenType: string, tokenValue: unknown): Token["metadata"];
export declare function convertLexerToken(lexerToken: {
    type: string;
    text: string;
    value?: unknown;
}): Token;
export declare function convertLexerTokens(lexerTokens: ReadonlyArray<{
    type: string;
    text: string;
    value?: unknown;
}>): TokenList;
export declare function tokenize(line: string, theme?: Theme): TokenList;
export declare function findPatternByName(matchPatterns: unknown, name: unknown): {
    options?: unknown;
} | undefined;
export declare function findPatternByIndex(matchPatterns: unknown, index: number): {
    options?: unknown;
} | undefined;
export declare function applyWordStyle(token: Token, theme: Theme): Token | undefined;
export declare function applyPatternStyleByName(token: Token, theme: Theme): Token | undefined;
export declare function applyPatternStyleByIndex(token: Token, theme: Theme): Token | undefined;
export declare function applyDefaultStyle(token: Token, theme: Theme): Token;
export declare function applyTokenStyle(token: Token, theme: Theme): Token;
export declare function applyTheme(tokens: TokenList, theme: Theme): TokenList;
declare const _default: {
    tokenize: typeof tokenize;
    applyTheme: typeof applyTheme;
    createLexer: typeof createLexer;
};
export default _default;
