import { Options } from 'linkifyjs/html';

declare const Console_2: ({ logs, styles, className, variant, logFilter, linkifyOptions, searchKeywords, logGrouping, ...rest }: Props) => JSX.Element;
export { Console_2 as Console }

export declare interface LogMessage {
    method: Method;
    data?: any[];
    amount?: number;
    id?: string;
    timestamp?: string;
}

declare type Method = (typeof methods)[number];

declare const methods: readonly ["source-editor", "source-console", "log", "debug", "info", "warn", "error", "table", "clear", "time", "timeEnd", "count", "assert", "command", "return", "dir"];

declare interface Props extends React.HTMLProps<HTMLDivElement> {
    logs: LogMessage[];
    variant?: Variants;
    className?: string;
    styles?: Theme;
    searchKeywords?: string;
    logFilter?: (log: LogMessage) => boolean;
    logGrouping?: boolean;
    linkifyOptions?: Options;
}

declare interface Theme {
    variant: Variants;
    styles: Theme_2;
}

declare interface Theme_2 {
    LOG_ICON_WIDTH?: string | number;
    LOG_ICON_HEIGHT?: string | number;
    LOG_COLOR?: string;
    LOG_ICON?: string;
    LOG_BACKGROUND?: string;
    LOG_ICON_BACKGROUND_SIZE?: string;
    LOG_BORDER?: string;
    LOG_INFO_COLOR?: string;
    LOG_INFO_ICON?: string;
    LOG_INFO_BACKGROUND?: string;
    LOG_INFO_BORDER?: string;
    LOG_COMMAND_COLOR?: string;
    LOG_COMMAND_ICON?: string;
    LOG_COMMAND_BACKGROUND?: string;
    LOG_COMMAND_BORDER?: string;
    LOG_RESULT_COLOR?: string;
    LOG_RESULT_ICON?: string;
    LOG_RESULT_BACKGROUND?: string;
    LOG_RESULT_BORDER?: string;
    LOG_WARN_COLOR?: string;
    LOG_WARN_ICON?: string;
    LOG_WARN_BACKGROUND?: string;
    LOG_WARN_BORDER?: string;
    LOG_ERROR_COLOR?: string;
    LOG_ERROR_ICON?: string;
    LOG_ERROR_BACKGROUND?: string;
    LOG_ERROR_BORDER?: string;
    BASE_FONT_FAMILY?: any;
    BASE_FONT_SIZE?: any;
    BASE_LINE_HEIGHT?: any;
    PADDING?: string;
    BASE_BACKGROUND_COLOR?: any;
    BASE_COLOR?: any;
    OBJECT_NAME_COLOR?: any;
    OBJECT_VALUE_NULL_COLOR?: any;
    OBJECT_VALUE_UNDEFINED_COLOR?: any;
    OBJECT_VALUE_REGEXP_COLOR?: any;
    OBJECT_VALUE_STRING_COLOR?: any;
    OBJECT_VALUE_SYMBOL_COLOR?: any;
    OBJECT_VALUE_NUMBER_COLOR?: any;
    OBJECT_VALUE_BOOLEAN_COLOR?: any;
    OBJECT_VALUE_FUNCTION_KEYWORD_COLOR?: any;
    HTML_TAG_COLOR?: any;
    HTML_TAGNAME_COLOR?: any;
    HTML_TAGNAME_TEXT_TRANSFORM?: any;
    HTML_ATTRIBUTE_NAME_COLOR?: any;
    HTML_ATTRIBUTE_VALUE_COLOR?: any;
    HTML_COMMENT_COLOR?: any;
    HTML_DOCTYPE_COLOR?: any;
    ARROW_COLOR?: any;
    ARROW_MARGIN_RIGHT?: any;
    ARROW_FONT_SIZE?: any;
    TREENODE_FONT_FAMILY?: any;
    TREENODE_FONT_SIZE?: any;
    TREENODE_LINE_HEIGHT?: any;
    TREENODE_PADDING_LEFT?: any;
    TABLE_BORDER_COLOR?: any;
    TABLE_TH_BACKGROUND_COLOR?: any;
    TABLE_TH_HOVER_COLOR?: any;
    TABLE_SORT_ICON_COLOR?: any;
    TABLE_DATA_BACKGROUND_IMAGE?: any;
    TABLE_DATA_BACKGROUND_SIZE?: any;
    [style: string]: any;
}

declare type Variants = "light" | "dark";

export { }

export declare namespace String {
    /**
     * @param {string} format
     * @param {?ArrayLike} substitutions
     * @param {!Object.<string, function(string, ...):Q>} formatters
     * @param {!T} initialValue
     * @param {function(T, Q): T|undefined} append
     * @param {!Array.<!Object>=} tokenizedFormat
     * @return {!{formattedResult: T, unusedSubstitutions: ?ArrayLike}};
     * @template T, Q
     */
    function format(format?: any, substitutions?: any, formatters?: any, initialValue?: any, append?: any, tokenizedFormat?: any): {
        formattedResult: any;
        unusedSubstitutions: any;
    };
}

