artalk
    Preparing search index...

    Class default

    Artalk

    Index
    • Parameters

      • conf: {
            apiVersion?: string;
            avatarURLBuilder?: (comment: CommentData) => string;
            beforeSubmit?: (editor: Editor, next: () => void) => void;
            countEl?: string;
            darkMode?: boolean | "auto";
            dateFormatter?: (date: Date) => string;
            editorTravel?: boolean;
            el?: string | HTMLElement;
            emoticons?: string | false | object | any[];
            fetchCommentsOnInit?: boolean;
            flatMode?: boolean | "auto";
            gravatar?: { mirror?: string; params?: string };
            heightLimit?: { children?: number; content?: number; scrollable?: boolean };
            imgLazyLoad?: false | "native" | "data-src";
            imgUpload?: boolean;
            imgUploader?: (file: File) => Promise<string>;
            listFetchParamsModifier?: (params: any) => void;
            listSort?: boolean;
            listUnreadHighlight?: boolean;
            locale?:
                | string
                | {
                    accountMergeConfirm?: string;
                    accountMergeNotice?: string;
                    accountMergeSelectOne?: string;
                    actionConfirm?: string;
                    admin?: string;
                    adminCheck?: string;
                    approved?: string;
                    cancel?: string;
                    captchaCheck?: string;
                    changePassword?: string;
                    client?: string;
                    closeComment?: string;
                    collapse?: string;
                    collapsed?: string;
                    collapsedMsg?: string;
                    commentFail?: string;
                    confirm?: string;
                    confirmPassword?: string;
                    counter?: string;
                    ctrlCenter?: string;
                    currentVersion?: string;
                    days?: string;
                    delete?: string;
                    deleteConfirm?: string;
                    deleteFail?: string;
                    deleting?: string;
                    dismiss?: string;
                    edit?: string;
                    editCancel?: string;
                    editFail?: string;
                    editing?: string;
                    email?: string;
                    emailVerified?: string;
                    emoticon?: string;
                    expand?: string;
                    forgetPassword?: string;
                    haveAccountPrompt?: string;
                    hours?: string;
                    ignore?: string;
                    link?: string;
                    listLoadFailMsg?: string;
                    listRetry?: string;
                    loadFail?: string;
                    loading?: string;
                    loadMore?: string;
                    logoutConfirm?: string;
                    merge?: string;
                    minutes?: string;
                    msgCenter?: string;
                    nextStep?: string;
                    nick?: string;
                    noAccountPrompt?: string;
                    noComment?: string;
                    now?: string;
                    onlyAdminCanReply?: string;
                    open?: string;
                    openComment?: string;
                    openName?: string;
                    password?: string;
                    passwordMismatch?: string;
                    pending?: string;
                    pendingMsg?: string;
                    pin?: string;
                    placeholder?: string;
                    preview?: string;
                    readMore?: string;
                    reply?: string;
                    reqAborted?: string;
                    reqGot?: string;
                    resetPassword?: string;
                    restoredMsg?: string;
                    save?: string;
                    seconds?: string;
                    send?: string;
                    server?: string;
                    signIn?: string;
                    signUp?: string;
                    skipVerify?: string;
                    sortAuthor?: string;
                    sortBest?: string;
                    sortLatest?: string;
                    sortOldest?: string;
                    unpin?: string;
                    updateMsg?: string;
                    uploadFail?: string;
                    uploadImage?: string;
                    uploadLoginMsg?: string;
                    username?: string;
                    userProfile?: string;
                    verificationCode?: string;
                    verifyResend?: string;
                    verifySend?: string;
                    voteDown?: string;
                    voteFail?: string;
                    voteUp?: string;
                    waitSeconds?: string;
                };
            markedOptions?: {
                async?: boolean;
                breaks?: boolean;
                extensions?: | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null;
                gfm?: boolean;
                hooks?: | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null;
                pedantic?: boolean;
                renderer?: | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null;
                silent?: boolean;
                tokenizer?: | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    obj: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null;
                walkTokens?: | (
                    (token: Token) => void | Promise<void> | (void | Promise<void>)[]
                )
                | null;
            };
            markedReplacers?: ((raw: string) => string)[];
            nestMax?: number;
            nestSort?: "DATE_ASC" | "DATE_DESC";
            noComment?: string;
            pageKey?: string;
            pageTitle?: string;
            pageVote?:
                | boolean
                | {
                    activeClass?: string;
                    downBtnEl?: string;
                    downCountEl?: string;
                    upBtnEl?: string;
                    upCountEl?: string;
                };
            pagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean };
            placeholder?: string;
            pluginURLs?: string[];
            preferRemoteConf?: boolean;
            preview?: boolean;
            pvAdd?: boolean;
            pvEl?: string;
            reqTimeout?: number;
            scrollRelativeTo?: () => HTMLElement;
            sendBtn?: string;
            server?: string;
            site?: string;
            statPageKeyAttr?: string;
            uaBadge?: boolean;
            useBackendConf?: boolean;
            versionCheck?: boolean;
            vote?: boolean;
            voteDown?: boolean;
        }
        • OptionalapiVersion?: string

          Backend API version (system data, not allowed for user modification)

        • OptionalavatarURLBuilder?: (comment: CommentData) => string

          Avatar URL generator function

        • OptionalbeforeSubmit?: (editor: Editor, next: () => void) => void

          Callback before submitting a comment

        • OptionalcountEl?: string

          Selector for the element binding to the comment count

        • OptionaldarkMode?: boolean | "auto"

          Dark mode settings

        • OptionaldateFormatter?: (date: Date) => string

          Custom date formatter

        • OptionaleditorTravel?: boolean

          Movable comment box (display below the comment to be replied)

        • Optionalel?: string | HTMLElement

          Element selector or Element to mount the Artalk

        • Optionalemoticons?: string | false | object | any[]

          Emoticons settings

        • OptionalfetchCommentsOnInit?: boolean

          Immediately fetch comments when Artalk instance is initialized

        • OptionalflatMode?: boolean | "auto"

          Flat mode for comment display

        • Optionalgravatar?: { mirror?: string; params?: string }

          Gravatar avatar settings

          • Optionalmirror?: string

            API endpoint

          • Optionalparams?: string

            API parameters

        • OptionalheightLimit?: { children?: number; content?: number; scrollable?: boolean }

          Height limit configuration

          • Optionalchildren?: number

            Maximum height for child comments

          • Optionalcontent?: number

            Maximum height for comment content

          • Optionalscrollable?: boolean

            Whether the content is scrollable

        • OptionalimgLazyLoad?: false | "native" | "data-src"

          Image lazy load mode

        • OptionalimgUpload?: boolean

          Enable image upload feature

        • OptionalimgUploader?: (file: File) => Promise<string>

          Image uploader function

        • OptionallistFetchParamsModifier?: (params: any) => void

          Modifier for list fetch request parameters

        • OptionallistSort?: boolean

          Show sorting dropdown for comment list

        • OptionallistUnreadHighlight?: boolean

          List unread highlight (enable by default in artalk-sidebar)

        • Optionallocale?:
              | string
              | {
                  accountMergeConfirm?: string;
                  accountMergeNotice?: string;
                  accountMergeSelectOne?: string;
                  actionConfirm?: string;
                  admin?: string;
                  adminCheck?: string;
                  approved?: string;
                  cancel?: string;
                  captchaCheck?: string;
                  changePassword?: string;
                  client?: string;
                  closeComment?: string;
                  collapse?: string;
                  collapsed?: string;
                  collapsedMsg?: string;
                  commentFail?: string;
                  confirm?: string;
                  confirmPassword?: string;
                  counter?: string;
                  ctrlCenter?: string;
                  currentVersion?: string;
                  days?: string;
                  delete?: string;
                  deleteConfirm?: string;
                  deleteFail?: string;
                  deleting?: string;
                  dismiss?: string;
                  edit?: string;
                  editCancel?: string;
                  editFail?: string;
                  editing?: string;
                  email?: string;
                  emailVerified?: string;
                  emoticon?: string;
                  expand?: string;
                  forgetPassword?: string;
                  haveAccountPrompt?: string;
                  hours?: string;
                  ignore?: string;
                  link?: string;
                  listLoadFailMsg?: string;
                  listRetry?: string;
                  loadFail?: string;
                  loading?: string;
                  loadMore?: string;
                  logoutConfirm?: string;
                  merge?: string;
                  minutes?: string;
                  msgCenter?: string;
                  nextStep?: string;
                  nick?: string;
                  noAccountPrompt?: string;
                  noComment?: string;
                  now?: string;
                  onlyAdminCanReply?: string;
                  open?: string;
                  openComment?: string;
                  openName?: string;
                  password?: string;
                  passwordMismatch?: string;
                  pending?: string;
                  pendingMsg?: string;
                  pin?: string;
                  placeholder?: string;
                  preview?: string;
                  readMore?: string;
                  reply?: string;
                  reqAborted?: string;
                  reqGot?: string;
                  resetPassword?: string;
                  restoredMsg?: string;
                  save?: string;
                  seconds?: string;
                  send?: string;
                  server?: string;
                  signIn?: string;
                  signUp?: string;
                  skipVerify?: string;
                  sortAuthor?: string;
                  sortBest?: string;
                  sortLatest?: string;
                  sortOldest?: string;
                  unpin?: string;
                  updateMsg?: string;
                  uploadFail?: string;
                  uploadImage?: string;
                  uploadLoginMsg?: string;
                  username?: string;
                  userProfile?: string;
                  verificationCode?: string;
                  verifyResend?: string;
                  verifySend?: string;
                  voteDown?: string;
                  voteFail?: string;
                  voteUp?: string;
                  waitSeconds?: string;
              }

          Localization settings

        • OptionalmarkedOptions?: {
              async?: boolean;
              breaks?: boolean;
              extensions?:
                  | {
                      block?: TokenizerExtensionFunction[];
                      childTokens?: { [key: string]: string[]
                      | undefined };
                      inline?: TokenizerExtensionFunction[];
                      renderers?: {
                          [key: string]: RendererExtensionFunction<string, string> | undefined;
                      };
                      startBlock?: TokenizerStartFunction[];
                      startInline?: TokenizerStartFunction[];
                  }
                  | null;
              gfm?: boolean;
              hooks?: | {
                  block?: boolean;
                  emStrongMask?: (src: string) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  postprocess?: (html: string) => string;
                  preprocess?: (markdown: string) => string;
                  processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                  provideLexer?: (
                      block?: boolean,
                  ) => <ParserOutput = string, RendererOutput = string>(
                      src: string,
                      options?: MarkedOptions<ParserOutput, RendererOutput>,
                  ) => Token[];
                  provideParser?: (
                      block?: boolean,
                  ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
              }
              | null;
              pedantic?: boolean;
              renderer?: | {
                  blockquote?: (__namedParameters: Blockquote) => string;
                  br?: (token: Br) => string;
                  checkbox?: (__namedParameters: Checkbox) => string;
                  code?: (__namedParameters: Code) => string;
                  codespan?: (__namedParameters: Codespan) => string;
                  def?: (token: Def) => string;
                  del?: (__namedParameters: Del) => string;
                  em?: (__namedParameters: Em) => string;
                  heading?: (__namedParameters: Heading) => string;
                  hr?: (token: Hr) => string;
                  html?: (__namedParameters: HTML | Tag) => string;
                  image?: (__namedParameters: Image) => string;
                  link?: (__namedParameters: Link) => string;
                  list?: (token: List) => string;
                  listitem?: (item: ListItem) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (__namedParameters: Paragraph) => string;
                  parser?: {
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      parse?: (tokens: Token[]) => string;
                      parseInline?: (
                          tokens: Token[],
                          renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                      ) => string;
                      renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                      textRenderer?: {
                          br?: () => ...;
                          checkbox?: (__namedParameters: ...) => ...;
                          codespan?: (__namedParameters: ...) => ...;
                          del?: (__namedParameters: ...) => ...;
                          em?: (__namedParameters: ...) => ...;
                          html?: (__namedParameters: ...) => ...;
                          image?: (__namedParameters: ...) => ...;
                          link?: (__namedParameters: ...) => ...;
                          strong?: (__namedParameters: ...) => ...;
                          text?: (__namedParameters: ...) => ...;
                      };
                  };
                  space?: (token: Space) => string;
                  strong?: (__namedParameters: Strong) => string;
                  table?: (token: Table) => string;
                  tablecell?: (token: TableCell) => string;
                  tablerow?: (__namedParameters: TableRow<string>) => string;
                  text?: (token: Escape | Text) => string;
              }
              | null;
              silent?: boolean;
              tokenizer?: | {
                  autolink?: (src: string) => Link | undefined;
                  blockquote?: (src: string) => Blockquote | undefined;
                  br?: (src: string) => Br | undefined;
                  code?: (src: string) => Code | undefined;
                  codespan?: (src: string) => Codespan | undefined;
                  def?: (src: string) => Def | undefined;
                  del?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Del | undefined;
                  emStrong?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Em | Strong | undefined;
                  escape?: (src: string) => Escape | undefined;
                  fences?: (src: string) => Code | undefined;
                  heading?: (src: string) => Heading | undefined;
                  hr?: (src: string) => Hr | undefined;
                  html?: (src: string) => HTML | undefined;
                  inlineText?: (src: string) => Text | undefined;
                  lexer?: {
                      blockTokens?: {
                          (
                              src: string,
                              tokens?: (...)[],
                              lastParagraphClipped?: boolean,
                          ): Token[];
                          (
                              src: string,
                              tokens?: TokensList,
                              lastParagraphClipped?: boolean,
                          ): TokensList;
                      };
                      inline?: (src: string, tokens?: (...)[]) => Token[];
                      inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                      inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                      lex?: (src: string) => TokensList;
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                      tokens?: {
                          "[unscopables]": {
                              "[iterator]"?: (...) | (...) | (...);
                              "[unscopables]"?: (...) | (...) | (...);
                              at?: (...) | (...) | (...);
                              concat?: (...) | (...) | (...);
                              copyWithin?: (...) | (...) | (...);
                              entries?: (...) | (...) | (...);
                              every?: (...) | (...) | (...);
                              fill?: (...) | (...) | (...);
                              filter?: (...) | (...) | (...);
                              find?: (...) | (...) | (...);
                              findIndex?: (...) | (...) | (...);
                              findLast?: (...) | (...) | (...);
                              findLastIndex?: (...) | (...) | (...);
                              flat?: (...) | (...) | (...);
                              flatMap?: (...) | (...) | (...);
                              forEach?: (...) | (...) | (...);
                              includes?: (...) | (...) | (...);
                              indexOf?: (...) | (...) | (...);
                              join?: (...) | (...) | (...);
                              keys?: (...) | (...) | (...);
                              lastIndexOf?: (...) | (...) | (...);
                              length?: (...) | (...) | (...);
                              map?: (...) | (...) | (...);
                              pop?: (...) | (...) | (...);
                              push?: (...) | (...) | (...);
                              reduce?: (...) | (...) | (...);
                              reduceRight?: (...) | (...) | (...);
                              reverse?: (...) | (...) | (...);
                              shift?: (...) | (...) | (...);
                              slice?: (...) | (...) | (...);
                              some?: (...) | (...) | (...);
                              sort?: (...) | (...) | (...);
                              splice?: (...) | (...) | (...);
                              toLocaleString?: (...) | (...) | (...);
                              toReversed?: (...) | (...) | (...);
                              toSorted?: (...) | (...) | (...);
                              toSpliced?: (...) | (...) | (...);
                              toString?: (...) | (...) | (...);
                              unshift?: (...) | (...) | (...);
                              values?: (...) | (...) | (...);
                              with?: (...) | (...) | (...);
                              [key: number]: (...) | (...) | (...);
                          };
                          length: number;
                          links: { [key: string]: (...)
                          | (...) };
                          "[iterator]"(): ArrayIterator<Token>;
                          at(index: number): Token | undefined;
                          concat(...items: ConcatArray<(...)>[]): Token[];
                          concat(...items: ((...) | (...))[]): Token[];
                          copyWithin(target: number, start: number, end?: number): this;
                          entries(): ArrayIterator<[(...), (...)]>;
                          every<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): this is S[];
                          every(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          fill(value: Token, start?: number, end?: number): this;
                          filter<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S[];
                          filter(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token[];
                          find<S extends Token>(
                              predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          find(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findIndex(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          findLast<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          findLast(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findLastIndex(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          flat<A, D extends number = 1>(
                              this: A,
                              depth?: D,
                          ): FlatArray<(...), (...)>[];
                          flatMap<U, This = undefined>(
                              callback: (
                                  this: This,
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => (...) | (...),
                              thisArg?: This,
                          ): U[];
                          forEach(
                              callbackfn: (value: Token, index: number, array: (...)[]) => void,
                              thisArg?: any,
                          ): void;
                          includes(searchElement: Token, fromIndex?: number): boolean;
                          indexOf(searchElement: Token, fromIndex?: number): number;
                          join(separator?: string): string;
                          keys(): ArrayIterator<number>;
                          lastIndexOf(searchElement: Token, fromIndex?: number): number;
                          map<U>(
                              callbackfn: (value: Token, index: number, array: (...)[]) => U,
                              thisArg?: any,
                          ): U[];
                          pop(): Token | undefined;
                          push(...items: Token[]): number;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduce<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduceRight<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reverse(): Token[];
                          shift(): Token | undefined;
                          slice(start?: number, end?: number): Token[];
                          some(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          sort(compareFn?: (a: ..., b: ...) => ...): this;
                          splice(start: number, deleteCount?: number): Token[];
                          splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                          toLocaleString(): string;
                          toLocaleString(
                              locales: string | (...)[],
                              options?: (...) & (...),
                          ): string;
                          toReversed(): Token[];
                          toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                          toSpliced(
                              start: number,
                              deleteCount: number,
                              ...items: Token[],
                          ): Token[];
                          toSpliced(start: number, deleteCount?: number): Token[];
                          toString(): string;
                          unshift(...items: Token[]): number;
                          values(): ArrayIterator<Token>;
                          with(index: number, value: Token): Token[];
                          [key: number]:
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { checked?: ...; raw?: ...; type?: ... }
                              | {
                                  codeBlockStyle?: ...;
                                  escaped?: ...;
                                  lang?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  items?: ...;
                                  loose?: ...;
                                  ordered?: ...;
                                  raw?: ...;
                                  start?: ...;
                                  type?: ...;
                              }
                              | {
                                  checked?: ...;
                                  loose?: ...;
                                  raw?: ...;
                                  task?: ...;
                                  text?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                              | {
                                  block?: ...;
                                  inLink?: ...;
                                  inRawBlock?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                      };
                  };
                  lheading?: (src: string) => Heading | undefined;
                  link?: (src: string) => Image | Link | undefined;
                  list?: (src: string) => List | undefined;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (src: string) => Paragraph | undefined;
                  reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                  rules?: {
                      block?: {
                          blockquote?: RegExp;
                          code?: RegExp;
                          def?: RegExp;
                          fences?: RegExp;
                          heading?: RegExp;
                          hr?: RegExp;
                          html?: RegExp;
                          lheading?: RegExp;
                          list?: RegExp;
                          newline?: RegExp;
                          paragraph?: RegExp;
                          table?: RegExp;
                          text?: RegExp;
                      };
                      inline?: {
                          _backpedal?: RegExp;
                          anyPunctuation?: RegExp;
                          autolink?: RegExp;
                          blockSkip?: RegExp;
                          br?: RegExp;
                          code?: RegExp;
                          del?: RegExp;
                          delLDelim?: RegExp;
                          delRDelim?: RegExp;
                          emStrongLDelim?: RegExp;
                          emStrongRDelimAst?: RegExp;
                          emStrongRDelimUnd?: RegExp;
                          escape?: RegExp;
                          link?: RegExp;
                          nolink?: RegExp;
                          punctuation?: RegExp;
                          reflink?: RegExp;
                          reflinkSearch?: RegExp;
                          tag?: RegExp;
                          text?: RegExp;
                          url?: RegExp;
                      };
                      other?: {
                          anyLine?: RegExp;
                          beginningSpace?: RegExp;
                          blankLine?: RegExp;
                          blockquoteBeginRegex?: (indent: ...) => ...;
                          blockquoteSetextReplace?: RegExp;
                          blockquoteSetextReplace2?: RegExp;
                          blockquoteStart?: RegExp;
                          caret?: RegExp;
                          carriageReturn?: RegExp;
                          codeRemoveIndent?: RegExp;
                          doubleBlankLine?: RegExp;
                          endAngleBracket?: RegExp;
                          endATag?: RegExp;
                          endingHash?: RegExp;
                          endingNewline?: RegExp;
                          endingSpaceChar?: RegExp;
                          endPreScriptTag?: RegExp;
                          escapeReplace?: RegExp;
                          escapeReplaceNoEncode?: RegExp;
                          escapeTest?: RegExp;
                          escapeTestNoEncode?: RegExp;
                          fencesBeginRegex?: (indent: ...) => ...;
                          findPipe?: RegExp;
                          headingBeginRegex?: (indent: ...) => ...;
                          hrefBrackets?: RegExp;
                          hrRegex?: (indent: ...) => ...;
                          htmlBeginRegex?: (indent: ...) => ...;
                          indentCodeCompensation?: RegExp;
                          listIsTask?: RegExp;
                          listItemRegex?: (bull: ...) => ...;
                          listReplaceNesting?: RegExp;
                          listReplaceTask?: RegExp;
                          listTaskCheckbox?: RegExp;
                          multipleSpaceGlobal?: RegExp;
                          newLineCharGlobal?: RegExp;
                          nextBulletRegex?: (indent: ...) => ...;
                          nonSpaceChar?: RegExp;
                          notSpaceStart?: RegExp;
                          outputLinkReplace?: RegExp;
                          pedanticHrefTitle?: RegExp;
                          percentDecode?: RegExp;
                          slashPipe?: RegExp;
                          spaceLine?: RegExp;
                          splitPipe?: RegExp;
                          startAngleBracket?: RegExp;
                          startATag?: RegExp;
                          startingSpaceChar?: RegExp;
                          startPreScriptTag?: RegExp;
                          tabCharGlobal?: RegExp;
                          tableAlignCenter?: RegExp;
                          tableAlignChars?: RegExp;
                          tableAlignLeft?: RegExp;
                          tableAlignRight?: RegExp;
                          tableDelimiter?: RegExp;
                          tableRowBlankLine?: RegExp;
                          unicodeAlphaNumeric?: RegExp;
                      };
                  };
                  space?: (src: string) => Space | undefined;
                  table?: (src: string) => Table | undefined;
                  tag?: (src: string) => Tag | undefined;
                  text?: (src: string) => Text | undefined;
                  url?: (src: string) => Link | undefined;
              }
              | null;
              walkTokens?: | (
                  (token: Token) => void | Promise<void> | (void | Promise<void>)[]
              )
              | null;
          }

          Options for the marked (Markdown parser)

          • Optionalasync?: boolean

            True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string.

          • Optionalbreaks?: boolean

            Enable GFM line breaks. This option requires the gfm option to be true.

          • Optionalextensions?:
                | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null

            Custom extensions

          • Optionalgfm?: boolean

            Enable GitHub flavored markdown.

          • Optionalhooks?:
                | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null

            Hooks are methods that hook into some part of marked.

          • Optionalpedantic?: boolean

            Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior.

          • Optionalrenderer?:
                | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null

            Type: object Default: new Renderer()

            An object containing functions to render tokens to HTML.

          • Optionalsilent?: boolean

            Shows an HTML error message when rendering fails.

          • Optionaltokenizer?:
                | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null

            The tokenizer defines how to turn markdown text into tokens.

          • OptionalwalkTokens?: ((token: Token) => void | Promise<void> | (void | Promise<void>)[]) | null

            walkTokens function returns array of values for Promise.all

        • OptionalmarkedReplacers?: ((raw: string) => string)[]

          Replacers for the marked (Markdown parser)

        • OptionalnestMax?: number

          Maximum number of levels for nested comments

        • OptionalnestSort?: "DATE_ASC" | "DATE_DESC"

          Sorting order for nested comments

        • OptionalnoComment?: string

          Text to display when there are no comments

        • OptionalpageKey?: string

          Unique page identifier

        • OptionalpageTitle?: string

          Title of the page

        • OptionalpageVote?:
              | boolean
              | {
                  activeClass?: string;
                  downBtnEl?: string;
                  downCountEl?: string;
                  upBtnEl?: string;
                  upCountEl?: string;
              }

          Page Vote Widget

        • Optionalpagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean }

          Pagination settings

          • OptionalautoLoad?: boolean

            Automatically load more comments when scrolled to the bottom

          • OptionalpageSize?: number

            Number of comments to fetch per request

          • OptionalreadMore?: boolean

            "Read more" mode

        • Optionalplaceholder?: string

          Placeholder text for the comment input box

        • OptionalpluginURLs?: string[]

          URLs for plugin scripts

        • OptionalpreferRemoteConf?: boolean

          Prefer to use the local configuration if available

          If true, the local config will be used as a fallback (remote config first).

          If false, the local config will override the remote config (local config first).

          false
          
        • Optionalpreview?: boolean

          Preview feature for comments

        • OptionalpvAdd?: boolean

          Page view increment when comment list is loaded

        • OptionalpvEl?: string

          Selector for the element binding to the page views (PV) count

        • OptionalreqTimeout?: number

          Request timeout (in seconds)

        • OptionalscrollRelativeTo?: () => HTMLElement

          The relative element for scrolling (useful if artalk is in a scrollable container)

        • OptionalsendBtn?: string

          Text for the send button

        • Optionalserver?: string

          Server address

        • Optionalsite?: string

          Site name

        • OptionalstatPageKeyAttr?: string

          Attribute name for the PageKey in statistics components

        • OptionaluaBadge?: boolean

          Display UA badge (user agent badge)

        • OptionaluseBackendConf?: boolean

          Use remote configuration (from the backend server)

          The useBackendConf is always true and planned to be removed in the future.

          Please use preferRemoteConf to control the priority of the remote and local configuration.

          true
          
        • OptionalversionCheck?: boolean

          Enable version check

        • Optionalvote?: boolean

          Voting feature for comments

        • OptionalvoteDown?: boolean

          Downvote button for comments

      Returns default

    ctx: Context
    • Update config of Artalk

      Parameters

      • conf: {
            apiVersion?: string;
            avatarURLBuilder?: (comment: CommentData) => string;
            beforeSubmit?: (editor: Editor, next: () => void) => void;
            countEl?: string;
            darkMode?: boolean | "auto";
            dateFormatter?: (date: Date) => string;
            editorTravel?: boolean;
            el?: string | HTMLElement;
            emoticons?: string | false | object | any[];
            fetchCommentsOnInit?: boolean;
            flatMode?: boolean | "auto";
            gravatar?: { mirror?: string; params?: string };
            heightLimit?: { children?: number; content?: number; scrollable?: boolean };
            imgLazyLoad?: false | "native" | "data-src";
            imgUpload?: boolean;
            imgUploader?: (file: File) => Promise<string>;
            listFetchParamsModifier?: (params: any) => void;
            listSort?: boolean;
            listUnreadHighlight?: boolean;
            locale?:
                | string
                | {
                    accountMergeConfirm?: string;
                    accountMergeNotice?: string;
                    accountMergeSelectOne?: string;
                    actionConfirm?: string;
                    admin?: string;
                    adminCheck?: string;
                    approved?: string;
                    cancel?: string;
                    captchaCheck?: string;
                    changePassword?: string;
                    client?: string;
                    closeComment?: string;
                    collapse?: string;
                    collapsed?: string;
                    collapsedMsg?: string;
                    commentFail?: string;
                    confirm?: string;
                    confirmPassword?: string;
                    counter?: string;
                    ctrlCenter?: string;
                    currentVersion?: string;
                    days?: string;
                    delete?: string;
                    deleteConfirm?: string;
                    deleteFail?: string;
                    deleting?: string;
                    dismiss?: string;
                    edit?: string;
                    editCancel?: string;
                    editFail?: string;
                    editing?: string;
                    email?: string;
                    emailVerified?: string;
                    emoticon?: string;
                    expand?: string;
                    forgetPassword?: string;
                    haveAccountPrompt?: string;
                    hours?: string;
                    ignore?: string;
                    link?: string;
                    listLoadFailMsg?: string;
                    listRetry?: string;
                    loadFail?: string;
                    loading?: string;
                    loadMore?: string;
                    logoutConfirm?: string;
                    merge?: string;
                    minutes?: string;
                    msgCenter?: string;
                    nextStep?: string;
                    nick?: string;
                    noAccountPrompt?: string;
                    noComment?: string;
                    now?: string;
                    onlyAdminCanReply?: string;
                    open?: string;
                    openComment?: string;
                    openName?: string;
                    password?: string;
                    passwordMismatch?: string;
                    pending?: string;
                    pendingMsg?: string;
                    pin?: string;
                    placeholder?: string;
                    preview?: string;
                    readMore?: string;
                    reply?: string;
                    reqAborted?: string;
                    reqGot?: string;
                    resetPassword?: string;
                    restoredMsg?: string;
                    save?: string;
                    seconds?: string;
                    send?: string;
                    server?: string;
                    signIn?: string;
                    signUp?: string;
                    skipVerify?: string;
                    sortAuthor?: string;
                    sortBest?: string;
                    sortLatest?: string;
                    sortOldest?: string;
                    unpin?: string;
                    updateMsg?: string;
                    uploadFail?: string;
                    uploadImage?: string;
                    uploadLoginMsg?: string;
                    username?: string;
                    userProfile?: string;
                    verificationCode?: string;
                    verifyResend?: string;
                    verifySend?: string;
                    voteDown?: string;
                    voteFail?: string;
                    voteUp?: string;
                    waitSeconds?: string;
                };
            markedOptions?: {
                async?: boolean;
                breaks?: boolean;
                extensions?: | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null;
                gfm?: boolean;
                hooks?: | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null;
                pedantic?: boolean;
                renderer?: | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null;
                silent?: boolean;
                tokenizer?: | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    obj: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null;
                walkTokens?: | (
                    (token: Token) => void | Promise<void> | (void | Promise<void>)[]
                )
                | null;
            };
            markedReplacers?: ((raw: string) => string)[];
            nestMax?: number;
            nestSort?: "DATE_ASC" | "DATE_DESC";
            noComment?: string;
            pageKey?: string;
            pageTitle?: string;
            pageVote?:
                | boolean
                | {
                    activeClass?: string;
                    downBtnEl?: string;
                    downCountEl?: string;
                    upBtnEl?: string;
                    upCountEl?: string;
                };
            pagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean };
            placeholder?: string;
            pluginURLs?: string[];
            preferRemoteConf?: boolean;
            preview?: boolean;
            pvAdd?: boolean;
            pvEl?: string;
            reqTimeout?: number;
            scrollRelativeTo?: () => HTMLElement;
            sendBtn?: string;
            server?: string;
            site?: string;
            statPageKeyAttr?: string;
            uaBadge?: boolean;
            useBackendConf?: boolean;
            versionCheck?: boolean;
            vote?: boolean;
            voteDown?: boolean;
        }
        • OptionalapiVersion?: string

          Backend API version (system data, not allowed for user modification)

        • OptionalavatarURLBuilder?: (comment: CommentData) => string

          Avatar URL generator function

        • OptionalbeforeSubmit?: (editor: Editor, next: () => void) => void

          Callback before submitting a comment

        • OptionalcountEl?: string

          Selector for the element binding to the comment count

        • OptionaldarkMode?: boolean | "auto"

          Dark mode settings

        • OptionaldateFormatter?: (date: Date) => string

          Custom date formatter

        • OptionaleditorTravel?: boolean

          Movable comment box (display below the comment to be replied)

        • Optionalel?: string | HTMLElement

          Element selector or Element to mount the Artalk

        • Optionalemoticons?: string | false | object | any[]

          Emoticons settings

        • OptionalfetchCommentsOnInit?: boolean

          Immediately fetch comments when Artalk instance is initialized

        • OptionalflatMode?: boolean | "auto"

          Flat mode for comment display

        • Optionalgravatar?: { mirror?: string; params?: string }

          Gravatar avatar settings

          • Optionalmirror?: string

            API endpoint

          • Optionalparams?: string

            API parameters

        • OptionalheightLimit?: { children?: number; content?: number; scrollable?: boolean }

          Height limit configuration

          • Optionalchildren?: number

            Maximum height for child comments

          • Optionalcontent?: number

            Maximum height for comment content

          • Optionalscrollable?: boolean

            Whether the content is scrollable

        • OptionalimgLazyLoad?: false | "native" | "data-src"

          Image lazy load mode

        • OptionalimgUpload?: boolean

          Enable image upload feature

        • OptionalimgUploader?: (file: File) => Promise<string>

          Image uploader function

        • OptionallistFetchParamsModifier?: (params: any) => void

          Modifier for list fetch request parameters

        • OptionallistSort?: boolean

          Show sorting dropdown for comment list

        • OptionallistUnreadHighlight?: boolean

          List unread highlight (enable by default in artalk-sidebar)

        • Optionallocale?:
              | string
              | {
                  accountMergeConfirm?: string;
                  accountMergeNotice?: string;
                  accountMergeSelectOne?: string;
                  actionConfirm?: string;
                  admin?: string;
                  adminCheck?: string;
                  approved?: string;
                  cancel?: string;
                  captchaCheck?: string;
                  changePassword?: string;
                  client?: string;
                  closeComment?: string;
                  collapse?: string;
                  collapsed?: string;
                  collapsedMsg?: string;
                  commentFail?: string;
                  confirm?: string;
                  confirmPassword?: string;
                  counter?: string;
                  ctrlCenter?: string;
                  currentVersion?: string;
                  days?: string;
                  delete?: string;
                  deleteConfirm?: string;
                  deleteFail?: string;
                  deleting?: string;
                  dismiss?: string;
                  edit?: string;
                  editCancel?: string;
                  editFail?: string;
                  editing?: string;
                  email?: string;
                  emailVerified?: string;
                  emoticon?: string;
                  expand?: string;
                  forgetPassword?: string;
                  haveAccountPrompt?: string;
                  hours?: string;
                  ignore?: string;
                  link?: string;
                  listLoadFailMsg?: string;
                  listRetry?: string;
                  loadFail?: string;
                  loading?: string;
                  loadMore?: string;
                  logoutConfirm?: string;
                  merge?: string;
                  minutes?: string;
                  msgCenter?: string;
                  nextStep?: string;
                  nick?: string;
                  noAccountPrompt?: string;
                  noComment?: string;
                  now?: string;
                  onlyAdminCanReply?: string;
                  open?: string;
                  openComment?: string;
                  openName?: string;
                  password?: string;
                  passwordMismatch?: string;
                  pending?: string;
                  pendingMsg?: string;
                  pin?: string;
                  placeholder?: string;
                  preview?: string;
                  readMore?: string;
                  reply?: string;
                  reqAborted?: string;
                  reqGot?: string;
                  resetPassword?: string;
                  restoredMsg?: string;
                  save?: string;
                  seconds?: string;
                  send?: string;
                  server?: string;
                  signIn?: string;
                  signUp?: string;
                  skipVerify?: string;
                  sortAuthor?: string;
                  sortBest?: string;
                  sortLatest?: string;
                  sortOldest?: string;
                  unpin?: string;
                  updateMsg?: string;
                  uploadFail?: string;
                  uploadImage?: string;
                  uploadLoginMsg?: string;
                  username?: string;
                  userProfile?: string;
                  verificationCode?: string;
                  verifyResend?: string;
                  verifySend?: string;
                  voteDown?: string;
                  voteFail?: string;
                  voteUp?: string;
                  waitSeconds?: string;
              }

          Localization settings

        • OptionalmarkedOptions?: {
              async?: boolean;
              breaks?: boolean;
              extensions?:
                  | {
                      block?: TokenizerExtensionFunction[];
                      childTokens?: { [key: string]: string[]
                      | undefined };
                      inline?: TokenizerExtensionFunction[];
                      renderers?: {
                          [key: string]: RendererExtensionFunction<string, string> | undefined;
                      };
                      startBlock?: TokenizerStartFunction[];
                      startInline?: TokenizerStartFunction[];
                  }
                  | null;
              gfm?: boolean;
              hooks?: | {
                  block?: boolean;
                  emStrongMask?: (src: string) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  postprocess?: (html: string) => string;
                  preprocess?: (markdown: string) => string;
                  processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                  provideLexer?: (
                      block?: boolean,
                  ) => <ParserOutput = string, RendererOutput = string>(
                      src: string,
                      options?: MarkedOptions<ParserOutput, RendererOutput>,
                  ) => Token[];
                  provideParser?: (
                      block?: boolean,
                  ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
              }
              | null;
              pedantic?: boolean;
              renderer?: | {
                  blockquote?: (__namedParameters: Blockquote) => string;
                  br?: (token: Br) => string;
                  checkbox?: (__namedParameters: Checkbox) => string;
                  code?: (__namedParameters: Code) => string;
                  codespan?: (__namedParameters: Codespan) => string;
                  def?: (token: Def) => string;
                  del?: (__namedParameters: Del) => string;
                  em?: (__namedParameters: Em) => string;
                  heading?: (__namedParameters: Heading) => string;
                  hr?: (token: Hr) => string;
                  html?: (__namedParameters: HTML | Tag) => string;
                  image?: (__namedParameters: Image) => string;
                  link?: (__namedParameters: Link) => string;
                  list?: (token: List) => string;
                  listitem?: (item: ListItem) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (__namedParameters: Paragraph) => string;
                  parser?: {
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      parse?: (tokens: Token[]) => string;
                      parseInline?: (
                          tokens: Token[],
                          renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                      ) => string;
                      renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                      textRenderer?: {
                          br?: () => ...;
                          checkbox?: (__namedParameters: ...) => ...;
                          codespan?: (__namedParameters: ...) => ...;
                          del?: (__namedParameters: ...) => ...;
                          em?: (__namedParameters: ...) => ...;
                          html?: (__namedParameters: ...) => ...;
                          image?: (__namedParameters: ...) => ...;
                          link?: (__namedParameters: ...) => ...;
                          strong?: (__namedParameters: ...) => ...;
                          text?: (__namedParameters: ...) => ...;
                      };
                  };
                  space?: (token: Space) => string;
                  strong?: (__namedParameters: Strong) => string;
                  table?: (token: Table) => string;
                  tablecell?: (token: TableCell) => string;
                  tablerow?: (__namedParameters: TableRow<string>) => string;
                  text?: (token: Escape | Text) => string;
              }
              | null;
              silent?: boolean;
              tokenizer?: | {
                  autolink?: (src: string) => Link | undefined;
                  blockquote?: (src: string) => Blockquote | undefined;
                  br?: (src: string) => Br | undefined;
                  code?: (src: string) => Code | undefined;
                  codespan?: (src: string) => Codespan | undefined;
                  def?: (src: string) => Def | undefined;
                  del?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Del | undefined;
                  emStrong?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Em | Strong | undefined;
                  escape?: (src: string) => Escape | undefined;
                  fences?: (src: string) => Code | undefined;
                  heading?: (src: string) => Heading | undefined;
                  hr?: (src: string) => Hr | undefined;
                  html?: (src: string) => HTML | undefined;
                  inlineText?: (src: string) => Text | undefined;
                  lexer?: {
                      blockTokens?: {
                          (
                              src: string,
                              tokens?: (...)[],
                              lastParagraphClipped?: boolean,
                          ): Token[];
                          (
                              src: string,
                              tokens?: TokensList,
                              lastParagraphClipped?: boolean,
                          ): TokensList;
                      };
                      inline?: (src: string, tokens?: (...)[]) => Token[];
                      inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                      inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                      lex?: (src: string) => TokensList;
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                      tokens?: {
                          "[unscopables]": {
                              "[iterator]"?: (...) | (...) | (...);
                              "[unscopables]"?: (...) | (...) | (...);
                              at?: (...) | (...) | (...);
                              concat?: (...) | (...) | (...);
                              copyWithin?: (...) | (...) | (...);
                              entries?: (...) | (...) | (...);
                              every?: (...) | (...) | (...);
                              fill?: (...) | (...) | (...);
                              filter?: (...) | (...) | (...);
                              find?: (...) | (...) | (...);
                              findIndex?: (...) | (...) | (...);
                              findLast?: (...) | (...) | (...);
                              findLastIndex?: (...) | (...) | (...);
                              flat?: (...) | (...) | (...);
                              flatMap?: (...) | (...) | (...);
                              forEach?: (...) | (...) | (...);
                              includes?: (...) | (...) | (...);
                              indexOf?: (...) | (...) | (...);
                              join?: (...) | (...) | (...);
                              keys?: (...) | (...) | (...);
                              lastIndexOf?: (...) | (...) | (...);
                              length?: (...) | (...) | (...);
                              map?: (...) | (...) | (...);
                              pop?: (...) | (...) | (...);
                              push?: (...) | (...) | (...);
                              reduce?: (...) | (...) | (...);
                              reduceRight?: (...) | (...) | (...);
                              reverse?: (...) | (...) | (...);
                              shift?: (...) | (...) | (...);
                              slice?: (...) | (...) | (...);
                              some?: (...) | (...) | (...);
                              sort?: (...) | (...) | (...);
                              splice?: (...) | (...) | (...);
                              toLocaleString?: (...) | (...) | (...);
                              toReversed?: (...) | (...) | (...);
                              toSorted?: (...) | (...) | (...);
                              toSpliced?: (...) | (...) | (...);
                              toString?: (...) | (...) | (...);
                              unshift?: (...) | (...) | (...);
                              values?: (...) | (...) | (...);
                              with?: (...) | (...) | (...);
                              [key: number]: (...) | (...) | (...);
                          };
                          length: number;
                          links: { [key: string]: (...)
                          | (...) };
                          "[iterator]"(): ArrayIterator<Token>;
                          at(index: number): Token | undefined;
                          concat(...items: ConcatArray<(...)>[]): Token[];
                          concat(...items: ((...) | (...))[]): Token[];
                          copyWithin(target: number, start: number, end?: number): this;
                          entries(): ArrayIterator<[(...), (...)]>;
                          every<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): this is S[];
                          every(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          fill(value: Token, start?: number, end?: number): this;
                          filter<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S[];
                          filter(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token[];
                          find<S extends Token>(
                              predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          find(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findIndex(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          findLast<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          findLast(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findLastIndex(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          flat<A, D extends number = 1>(
                              this: A,
                              depth?: D,
                          ): FlatArray<(...), (...)>[];
                          flatMap<U, This = undefined>(
                              callback: (
                                  this: This,
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => (...) | (...),
                              thisArg?: This,
                          ): U[];
                          forEach(
                              callbackfn: (value: Token, index: number, array: (...)[]) => void,
                              thisArg?: any,
                          ): void;
                          includes(searchElement: Token, fromIndex?: number): boolean;
                          indexOf(searchElement: Token, fromIndex?: number): number;
                          join(separator?: string): string;
                          keys(): ArrayIterator<number>;
                          lastIndexOf(searchElement: Token, fromIndex?: number): number;
                          map<U>(
                              callbackfn: (value: Token, index: number, array: (...)[]) => U,
                              thisArg?: any,
                          ): U[];
                          pop(): Token | undefined;
                          push(...items: Token[]): number;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduce<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduceRight<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reverse(): Token[];
                          shift(): Token | undefined;
                          slice(start?: number, end?: number): Token[];
                          some(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          sort(compareFn?: (a: ..., b: ...) => ...): this;
                          splice(start: number, deleteCount?: number): Token[];
                          splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                          toLocaleString(): string;
                          toLocaleString(
                              locales: string | (...)[],
                              options?: (...) & (...),
                          ): string;
                          toReversed(): Token[];
                          toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                          toSpliced(
                              start: number,
                              deleteCount: number,
                              ...items: Token[],
                          ): Token[];
                          toSpliced(start: number, deleteCount?: number): Token[];
                          toString(): string;
                          unshift(...items: Token[]): number;
                          values(): ArrayIterator<Token>;
                          with(index: number, value: Token): Token[];
                          [key: number]:
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { checked?: ...; raw?: ...; type?: ... }
                              | {
                                  codeBlockStyle?: ...;
                                  escaped?: ...;
                                  lang?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  items?: ...;
                                  loose?: ...;
                                  ordered?: ...;
                                  raw?: ...;
                                  start?: ...;
                                  type?: ...;
                              }
                              | {
                                  checked?: ...;
                                  loose?: ...;
                                  raw?: ...;
                                  task?: ...;
                                  text?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                              | {
                                  block?: ...;
                                  inLink?: ...;
                                  inRawBlock?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                      };
                  };
                  lheading?: (src: string) => Heading | undefined;
                  link?: (src: string) => Image | Link | undefined;
                  list?: (src: string) => List | undefined;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (src: string) => Paragraph | undefined;
                  reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                  rules?: {
                      block?: {
                          blockquote?: RegExp;
                          code?: RegExp;
                          def?: RegExp;
                          fences?: RegExp;
                          heading?: RegExp;
                          hr?: RegExp;
                          html?: RegExp;
                          lheading?: RegExp;
                          list?: RegExp;
                          newline?: RegExp;
                          paragraph?: RegExp;
                          table?: RegExp;
                          text?: RegExp;
                      };
                      inline?: {
                          _backpedal?: RegExp;
                          anyPunctuation?: RegExp;
                          autolink?: RegExp;
                          blockSkip?: RegExp;
                          br?: RegExp;
                          code?: RegExp;
                          del?: RegExp;
                          delLDelim?: RegExp;
                          delRDelim?: RegExp;
                          emStrongLDelim?: RegExp;
                          emStrongRDelimAst?: RegExp;
                          emStrongRDelimUnd?: RegExp;
                          escape?: RegExp;
                          link?: RegExp;
                          nolink?: RegExp;
                          punctuation?: RegExp;
                          reflink?: RegExp;
                          reflinkSearch?: RegExp;
                          tag?: RegExp;
                          text?: RegExp;
                          url?: RegExp;
                      };
                      other?: {
                          anyLine?: RegExp;
                          beginningSpace?: RegExp;
                          blankLine?: RegExp;
                          blockquoteBeginRegex?: (indent: ...) => ...;
                          blockquoteSetextReplace?: RegExp;
                          blockquoteSetextReplace2?: RegExp;
                          blockquoteStart?: RegExp;
                          caret?: RegExp;
                          carriageReturn?: RegExp;
                          codeRemoveIndent?: RegExp;
                          doubleBlankLine?: RegExp;
                          endAngleBracket?: RegExp;
                          endATag?: RegExp;
                          endingHash?: RegExp;
                          endingNewline?: RegExp;
                          endingSpaceChar?: RegExp;
                          endPreScriptTag?: RegExp;
                          escapeReplace?: RegExp;
                          escapeReplaceNoEncode?: RegExp;
                          escapeTest?: RegExp;
                          escapeTestNoEncode?: RegExp;
                          fencesBeginRegex?: (indent: ...) => ...;
                          findPipe?: RegExp;
                          headingBeginRegex?: (indent: ...) => ...;
                          hrefBrackets?: RegExp;
                          hrRegex?: (indent: ...) => ...;
                          htmlBeginRegex?: (indent: ...) => ...;
                          indentCodeCompensation?: RegExp;
                          listIsTask?: RegExp;
                          listItemRegex?: (bull: ...) => ...;
                          listReplaceNesting?: RegExp;
                          listReplaceTask?: RegExp;
                          listTaskCheckbox?: RegExp;
                          multipleSpaceGlobal?: RegExp;
                          newLineCharGlobal?: RegExp;
                          nextBulletRegex?: (indent: ...) => ...;
                          nonSpaceChar?: RegExp;
                          notSpaceStart?: RegExp;
                          outputLinkReplace?: RegExp;
                          pedanticHrefTitle?: RegExp;
                          percentDecode?: RegExp;
                          slashPipe?: RegExp;
                          spaceLine?: RegExp;
                          splitPipe?: RegExp;
                          startAngleBracket?: RegExp;
                          startATag?: RegExp;
                          startingSpaceChar?: RegExp;
                          startPreScriptTag?: RegExp;
                          tabCharGlobal?: RegExp;
                          tableAlignCenter?: RegExp;
                          tableAlignChars?: RegExp;
                          tableAlignLeft?: RegExp;
                          tableAlignRight?: RegExp;
                          tableDelimiter?: RegExp;
                          tableRowBlankLine?: RegExp;
                          unicodeAlphaNumeric?: RegExp;
                      };
                  };
                  space?: (src: string) => Space | undefined;
                  table?: (src: string) => Table | undefined;
                  tag?: (src: string) => Tag | undefined;
                  text?: (src: string) => Text | undefined;
                  url?: (src: string) => Link | undefined;
              }
              | null;
              walkTokens?: | (
                  (token: Token) => void | Promise<void> | (void | Promise<void>)[]
              )
              | null;
          }

          Options for the marked (Markdown parser)

          • Optionalasync?: boolean

            True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string.

          • Optionalbreaks?: boolean

            Enable GFM line breaks. This option requires the gfm option to be true.

          • Optionalextensions?:
                | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null

            Custom extensions

          • Optionalgfm?: boolean

            Enable GitHub flavored markdown.

          • Optionalhooks?:
                | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null

            Hooks are methods that hook into some part of marked.

          • Optionalpedantic?: boolean

            Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior.

          • Optionalrenderer?:
                | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null

            Type: object Default: new Renderer()

            An object containing functions to render tokens to HTML.

          • Optionalsilent?: boolean

            Shows an HTML error message when rendering fails.

          • Optionaltokenizer?:
                | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null

            The tokenizer defines how to turn markdown text into tokens.

          • OptionalwalkTokens?: ((token: Token) => void | Promise<void> | (void | Promise<void>)[]) | null

            walkTokens function returns array of values for Promise.all

        • OptionalmarkedReplacers?: ((raw: string) => string)[]

          Replacers for the marked (Markdown parser)

        • OptionalnestMax?: number

          Maximum number of levels for nested comments

        • OptionalnestSort?: "DATE_ASC" | "DATE_DESC"

          Sorting order for nested comments

        • OptionalnoComment?: string

          Text to display when there are no comments

        • OptionalpageKey?: string

          Unique page identifier

        • OptionalpageTitle?: string

          Title of the page

        • OptionalpageVote?:
              | boolean
              | {
                  activeClass?: string;
                  downBtnEl?: string;
                  downCountEl?: string;
                  upBtnEl?: string;
                  upCountEl?: string;
              }

          Page Vote Widget

        • Optionalpagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean }

          Pagination settings

          • OptionalautoLoad?: boolean

            Automatically load more comments when scrolled to the bottom

          • OptionalpageSize?: number

            Number of comments to fetch per request

          • OptionalreadMore?: boolean

            "Read more" mode

        • Optionalplaceholder?: string

          Placeholder text for the comment input box

        • OptionalpluginURLs?: string[]

          URLs for plugin scripts

        • OptionalpreferRemoteConf?: boolean

          Prefer to use the local configuration if available

          If true, the local config will be used as a fallback (remote config first).

          If false, the local config will override the remote config (local config first).

          false
          
        • Optionalpreview?: boolean

          Preview feature for comments

        • OptionalpvAdd?: boolean

          Page view increment when comment list is loaded

        • OptionalpvEl?: string

          Selector for the element binding to the page views (PV) count

        • OptionalreqTimeout?: number

          Request timeout (in seconds)

        • OptionalscrollRelativeTo?: () => HTMLElement

          The relative element for scrolling (useful if artalk is in a scrollable container)

        • OptionalsendBtn?: string

          Text for the send button

        • Optionalserver?: string

          Server address

        • Optionalsite?: string

          Site name

        • OptionalstatPageKeyAttr?: string

          Attribute name for the PageKey in statistics components

        • OptionaluaBadge?: boolean

          Display UA badge (user agent badge)

        • OptionaluseBackendConf?: boolean

          Use remote configuration (from the backend server)

          The useBackendConf is always true and planned to be removed in the future.

          Please use preferRemoteConf to control the priority of the remote and local configuration.

          true
          
        • OptionalversionCheck?: boolean

          Enable version check

        • Optionalvote?: boolean

          Voting feature for comments

        • OptionalvoteDown?: boolean

          Downvote button for comments

      Returns void

    • Init Artalk

      Parameters

      • conf: {
            apiVersion?: string;
            avatarURLBuilder?: (comment: CommentData) => string;
            beforeSubmit?: (editor: Editor, next: () => void) => void;
            countEl?: string;
            darkMode?: boolean | "auto";
            dateFormatter?: (date: Date) => string;
            editorTravel?: boolean;
            el?: string | HTMLElement;
            emoticons?: string | false | object | any[];
            fetchCommentsOnInit?: boolean;
            flatMode?: boolean | "auto";
            gravatar?: { mirror?: string; params?: string };
            heightLimit?: { children?: number; content?: number; scrollable?: boolean };
            imgLazyLoad?: false | "native" | "data-src";
            imgUpload?: boolean;
            imgUploader?: (file: File) => Promise<string>;
            listFetchParamsModifier?: (params: any) => void;
            listSort?: boolean;
            listUnreadHighlight?: boolean;
            locale?:
                | string
                | {
                    accountMergeConfirm?: string;
                    accountMergeNotice?: string;
                    accountMergeSelectOne?: string;
                    actionConfirm?: string;
                    admin?: string;
                    adminCheck?: string;
                    approved?: string;
                    cancel?: string;
                    captchaCheck?: string;
                    changePassword?: string;
                    client?: string;
                    closeComment?: string;
                    collapse?: string;
                    collapsed?: string;
                    collapsedMsg?: string;
                    commentFail?: string;
                    confirm?: string;
                    confirmPassword?: string;
                    counter?: string;
                    ctrlCenter?: string;
                    currentVersion?: string;
                    days?: string;
                    delete?: string;
                    deleteConfirm?: string;
                    deleteFail?: string;
                    deleting?: string;
                    dismiss?: string;
                    edit?: string;
                    editCancel?: string;
                    editFail?: string;
                    editing?: string;
                    email?: string;
                    emailVerified?: string;
                    emoticon?: string;
                    expand?: string;
                    forgetPassword?: string;
                    haveAccountPrompt?: string;
                    hours?: string;
                    ignore?: string;
                    link?: string;
                    listLoadFailMsg?: string;
                    listRetry?: string;
                    loadFail?: string;
                    loading?: string;
                    loadMore?: string;
                    logoutConfirm?: string;
                    merge?: string;
                    minutes?: string;
                    msgCenter?: string;
                    nextStep?: string;
                    nick?: string;
                    noAccountPrompt?: string;
                    noComment?: string;
                    now?: string;
                    onlyAdminCanReply?: string;
                    open?: string;
                    openComment?: string;
                    openName?: string;
                    password?: string;
                    passwordMismatch?: string;
                    pending?: string;
                    pendingMsg?: string;
                    pin?: string;
                    placeholder?: string;
                    preview?: string;
                    readMore?: string;
                    reply?: string;
                    reqAborted?: string;
                    reqGot?: string;
                    resetPassword?: string;
                    restoredMsg?: string;
                    save?: string;
                    seconds?: string;
                    send?: string;
                    server?: string;
                    signIn?: string;
                    signUp?: string;
                    skipVerify?: string;
                    sortAuthor?: string;
                    sortBest?: string;
                    sortLatest?: string;
                    sortOldest?: string;
                    unpin?: string;
                    updateMsg?: string;
                    uploadFail?: string;
                    uploadImage?: string;
                    uploadLoginMsg?: string;
                    username?: string;
                    userProfile?: string;
                    verificationCode?: string;
                    verifyResend?: string;
                    verifySend?: string;
                    voteDown?: string;
                    voteFail?: string;
                    voteUp?: string;
                    waitSeconds?: string;
                };
            markedOptions?: {
                async?: boolean;
                breaks?: boolean;
                extensions?: | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null;
                gfm?: boolean;
                hooks?: | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null;
                pedantic?: boolean;
                renderer?: | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null;
                silent?: boolean;
                tokenizer?: | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    obj: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null;
                walkTokens?: | (
                    (token: Token) => void | Promise<void> | (void | Promise<void>)[]
                )
                | null;
            };
            markedReplacers?: ((raw: string) => string)[];
            nestMax?: number;
            nestSort?: "DATE_ASC" | "DATE_DESC";
            noComment?: string;
            pageKey?: string;
            pageTitle?: string;
            pageVote?:
                | boolean
                | {
                    activeClass?: string;
                    downBtnEl?: string;
                    downCountEl?: string;
                    upBtnEl?: string;
                    upCountEl?: string;
                };
            pagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean };
            placeholder?: string;
            pluginURLs?: string[];
            preferRemoteConf?: boolean;
            preview?: boolean;
            pvAdd?: boolean;
            pvEl?: string;
            reqTimeout?: number;
            scrollRelativeTo?: () => HTMLElement;
            sendBtn?: string;
            server?: string;
            site?: string;
            statPageKeyAttr?: string;
            uaBadge?: boolean;
            useBackendConf?: boolean;
            versionCheck?: boolean;
            vote?: boolean;
            voteDown?: boolean;
        }
        • OptionalapiVersion?: string

          Backend API version (system data, not allowed for user modification)

        • OptionalavatarURLBuilder?: (comment: CommentData) => string

          Avatar URL generator function

        • OptionalbeforeSubmit?: (editor: Editor, next: () => void) => void

          Callback before submitting a comment

        • OptionalcountEl?: string

          Selector for the element binding to the comment count

        • OptionaldarkMode?: boolean | "auto"

          Dark mode settings

        • OptionaldateFormatter?: (date: Date) => string

          Custom date formatter

        • OptionaleditorTravel?: boolean

          Movable comment box (display below the comment to be replied)

        • Optionalel?: string | HTMLElement

          Element selector or Element to mount the Artalk

        • Optionalemoticons?: string | false | object | any[]

          Emoticons settings

        • OptionalfetchCommentsOnInit?: boolean

          Immediately fetch comments when Artalk instance is initialized

        • OptionalflatMode?: boolean | "auto"

          Flat mode for comment display

        • Optionalgravatar?: { mirror?: string; params?: string }

          Gravatar avatar settings

          • Optionalmirror?: string

            API endpoint

          • Optionalparams?: string

            API parameters

        • OptionalheightLimit?: { children?: number; content?: number; scrollable?: boolean }

          Height limit configuration

          • Optionalchildren?: number

            Maximum height for child comments

          • Optionalcontent?: number

            Maximum height for comment content

          • Optionalscrollable?: boolean

            Whether the content is scrollable

        • OptionalimgLazyLoad?: false | "native" | "data-src"

          Image lazy load mode

        • OptionalimgUpload?: boolean

          Enable image upload feature

        • OptionalimgUploader?: (file: File) => Promise<string>

          Image uploader function

        • OptionallistFetchParamsModifier?: (params: any) => void

          Modifier for list fetch request parameters

        • OptionallistSort?: boolean

          Show sorting dropdown for comment list

        • OptionallistUnreadHighlight?: boolean

          List unread highlight (enable by default in artalk-sidebar)

        • Optionallocale?:
              | string
              | {
                  accountMergeConfirm?: string;
                  accountMergeNotice?: string;
                  accountMergeSelectOne?: string;
                  actionConfirm?: string;
                  admin?: string;
                  adminCheck?: string;
                  approved?: string;
                  cancel?: string;
                  captchaCheck?: string;
                  changePassword?: string;
                  client?: string;
                  closeComment?: string;
                  collapse?: string;
                  collapsed?: string;
                  collapsedMsg?: string;
                  commentFail?: string;
                  confirm?: string;
                  confirmPassword?: string;
                  counter?: string;
                  ctrlCenter?: string;
                  currentVersion?: string;
                  days?: string;
                  delete?: string;
                  deleteConfirm?: string;
                  deleteFail?: string;
                  deleting?: string;
                  dismiss?: string;
                  edit?: string;
                  editCancel?: string;
                  editFail?: string;
                  editing?: string;
                  email?: string;
                  emailVerified?: string;
                  emoticon?: string;
                  expand?: string;
                  forgetPassword?: string;
                  haveAccountPrompt?: string;
                  hours?: string;
                  ignore?: string;
                  link?: string;
                  listLoadFailMsg?: string;
                  listRetry?: string;
                  loadFail?: string;
                  loading?: string;
                  loadMore?: string;
                  logoutConfirm?: string;
                  merge?: string;
                  minutes?: string;
                  msgCenter?: string;
                  nextStep?: string;
                  nick?: string;
                  noAccountPrompt?: string;
                  noComment?: string;
                  now?: string;
                  onlyAdminCanReply?: string;
                  open?: string;
                  openComment?: string;
                  openName?: string;
                  password?: string;
                  passwordMismatch?: string;
                  pending?: string;
                  pendingMsg?: string;
                  pin?: string;
                  placeholder?: string;
                  preview?: string;
                  readMore?: string;
                  reply?: string;
                  reqAborted?: string;
                  reqGot?: string;
                  resetPassword?: string;
                  restoredMsg?: string;
                  save?: string;
                  seconds?: string;
                  send?: string;
                  server?: string;
                  signIn?: string;
                  signUp?: string;
                  skipVerify?: string;
                  sortAuthor?: string;
                  sortBest?: string;
                  sortLatest?: string;
                  sortOldest?: string;
                  unpin?: string;
                  updateMsg?: string;
                  uploadFail?: string;
                  uploadImage?: string;
                  uploadLoginMsg?: string;
                  username?: string;
                  userProfile?: string;
                  verificationCode?: string;
                  verifyResend?: string;
                  verifySend?: string;
                  voteDown?: string;
                  voteFail?: string;
                  voteUp?: string;
                  waitSeconds?: string;
              }

          Localization settings

        • OptionalmarkedOptions?: {
              async?: boolean;
              breaks?: boolean;
              extensions?:
                  | {
                      block?: TokenizerExtensionFunction[];
                      childTokens?: { [key: string]: string[]
                      | undefined };
                      inline?: TokenizerExtensionFunction[];
                      renderers?: {
                          [key: string]: RendererExtensionFunction<string, string> | undefined;
                      };
                      startBlock?: TokenizerStartFunction[];
                      startInline?: TokenizerStartFunction[];
                  }
                  | null;
              gfm?: boolean;
              hooks?: | {
                  block?: boolean;
                  emStrongMask?: (src: string) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  postprocess?: (html: string) => string;
                  preprocess?: (markdown: string) => string;
                  processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                  provideLexer?: (
                      block?: boolean,
                  ) => <ParserOutput = string, RendererOutput = string>(
                      src: string,
                      options?: MarkedOptions<ParserOutput, RendererOutput>,
                  ) => Token[];
                  provideParser?: (
                      block?: boolean,
                  ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
              }
              | null;
              pedantic?: boolean;
              renderer?: | {
                  blockquote?: (__namedParameters: Blockquote) => string;
                  br?: (token: Br) => string;
                  checkbox?: (__namedParameters: Checkbox) => string;
                  code?: (__namedParameters: Code) => string;
                  codespan?: (__namedParameters: Codespan) => string;
                  def?: (token: Def) => string;
                  del?: (__namedParameters: Del) => string;
                  em?: (__namedParameters: Em) => string;
                  heading?: (__namedParameters: Heading) => string;
                  hr?: (token: Hr) => string;
                  html?: (__namedParameters: HTML | Tag) => string;
                  image?: (__namedParameters: Image) => string;
                  link?: (__namedParameters: Link) => string;
                  list?: (token: List) => string;
                  listitem?: (item: ListItem) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (__namedParameters: Paragraph) => string;
                  parser?: {
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      parse?: (tokens: Token[]) => string;
                      parseInline?: (
                          tokens: Token[],
                          renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                      ) => string;
                      renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                      textRenderer?: {
                          br?: () => ...;
                          checkbox?: (__namedParameters: ...) => ...;
                          codespan?: (__namedParameters: ...) => ...;
                          del?: (__namedParameters: ...) => ...;
                          em?: (__namedParameters: ...) => ...;
                          html?: (__namedParameters: ...) => ...;
                          image?: (__namedParameters: ...) => ...;
                          link?: (__namedParameters: ...) => ...;
                          strong?: (__namedParameters: ...) => ...;
                          text?: (__namedParameters: ...) => ...;
                      };
                  };
                  space?: (token: Space) => string;
                  strong?: (__namedParameters: Strong) => string;
                  table?: (token: Table) => string;
                  tablecell?: (token: TableCell) => string;
                  tablerow?: (__namedParameters: TableRow<string>) => string;
                  text?: (token: Escape | Text) => string;
              }
              | null;
              silent?: boolean;
              tokenizer?: | {
                  autolink?: (src: string) => Link | undefined;
                  blockquote?: (src: string) => Blockquote | undefined;
                  br?: (src: string) => Br | undefined;
                  code?: (src: string) => Code | undefined;
                  codespan?: (src: string) => Codespan | undefined;
                  def?: (src: string) => Def | undefined;
                  del?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Del | undefined;
                  emStrong?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Em | Strong | undefined;
                  escape?: (src: string) => Escape | undefined;
                  fences?: (src: string) => Code | undefined;
                  heading?: (src: string) => Heading | undefined;
                  hr?: (src: string) => Hr | undefined;
                  html?: (src: string) => HTML | undefined;
                  inlineText?: (src: string) => Text | undefined;
                  lexer?: {
                      blockTokens?: {
                          (
                              src: string,
                              tokens?: (...)[],
                              lastParagraphClipped?: boolean,
                          ): Token[];
                          (
                              src: string,
                              tokens?: TokensList,
                              lastParagraphClipped?: boolean,
                          ): TokensList;
                      };
                      inline?: (src: string, tokens?: (...)[]) => Token[];
                      inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                      inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                      lex?: (src: string) => TokensList;
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                      tokens?: {
                          "[unscopables]": {
                              "[iterator]"?: (...) | (...) | (...);
                              "[unscopables]"?: (...) | (...) | (...);
                              at?: (...) | (...) | (...);
                              concat?: (...) | (...) | (...);
                              copyWithin?: (...) | (...) | (...);
                              entries?: (...) | (...) | (...);
                              every?: (...) | (...) | (...);
                              fill?: (...) | (...) | (...);
                              filter?: (...) | (...) | (...);
                              find?: (...) | (...) | (...);
                              findIndex?: (...) | (...) | (...);
                              findLast?: (...) | (...) | (...);
                              findLastIndex?: (...) | (...) | (...);
                              flat?: (...) | (...) | (...);
                              flatMap?: (...) | (...) | (...);
                              forEach?: (...) | (...) | (...);
                              includes?: (...) | (...) | (...);
                              indexOf?: (...) | (...) | (...);
                              join?: (...) | (...) | (...);
                              keys?: (...) | (...) | (...);
                              lastIndexOf?: (...) | (...) | (...);
                              length?: (...) | (...) | (...);
                              map?: (...) | (...) | (...);
                              pop?: (...) | (...) | (...);
                              push?: (...) | (...) | (...);
                              reduce?: (...) | (...) | (...);
                              reduceRight?: (...) | (...) | (...);
                              reverse?: (...) | (...) | (...);
                              shift?: (...) | (...) | (...);
                              slice?: (...) | (...) | (...);
                              some?: (...) | (...) | (...);
                              sort?: (...) | (...) | (...);
                              splice?: (...) | (...) | (...);
                              toLocaleString?: (...) | (...) | (...);
                              toReversed?: (...) | (...) | (...);
                              toSorted?: (...) | (...) | (...);
                              toSpliced?: (...) | (...) | (...);
                              toString?: (...) | (...) | (...);
                              unshift?: (...) | (...) | (...);
                              values?: (...) | (...) | (...);
                              with?: (...) | (...) | (...);
                              [key: number]: (...) | (...) | (...);
                          };
                          length: number;
                          links: { [key: string]: (...)
                          | (...) };
                          "[iterator]"(): ArrayIterator<Token>;
                          at(index: number): Token | undefined;
                          concat(...items: ConcatArray<(...)>[]): Token[];
                          concat(...items: ((...) | (...))[]): Token[];
                          copyWithin(target: number, start: number, end?: number): this;
                          entries(): ArrayIterator<[(...), (...)]>;
                          every<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): this is S[];
                          every(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          fill(value: Token, start?: number, end?: number): this;
                          filter<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S[];
                          filter(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token[];
                          find<S extends Token>(
                              predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          find(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findIndex(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          findLast<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          findLast(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findLastIndex(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          flat<A, D extends number = 1>(
                              this: A,
                              depth?: D,
                          ): FlatArray<(...), (...)>[];
                          flatMap<U, This = undefined>(
                              callback: (
                                  this: This,
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => (...) | (...),
                              thisArg?: This,
                          ): U[];
                          forEach(
                              callbackfn: (value: Token, index: number, array: (...)[]) => void,
                              thisArg?: any,
                          ): void;
                          includes(searchElement: Token, fromIndex?: number): boolean;
                          indexOf(searchElement: Token, fromIndex?: number): number;
                          join(separator?: string): string;
                          keys(): ArrayIterator<number>;
                          lastIndexOf(searchElement: Token, fromIndex?: number): number;
                          map<U>(
                              callbackfn: (value: Token, index: number, array: (...)[]) => U,
                              thisArg?: any,
                          ): U[];
                          pop(): Token | undefined;
                          push(...items: Token[]): number;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduce<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduceRight<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reverse(): Token[];
                          shift(): Token | undefined;
                          slice(start?: number, end?: number): Token[];
                          some(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          sort(compareFn?: (a: ..., b: ...) => ...): this;
                          splice(start: number, deleteCount?: number): Token[];
                          splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                          toLocaleString(): string;
                          toLocaleString(
                              locales: string | (...)[],
                              options?: (...) & (...),
                          ): string;
                          toReversed(): Token[];
                          toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                          toSpliced(
                              start: number,
                              deleteCount: number,
                              ...items: Token[],
                          ): Token[];
                          toSpliced(start: number, deleteCount?: number): Token[];
                          toString(): string;
                          unshift(...items: Token[]): number;
                          values(): ArrayIterator<Token>;
                          with(index: number, value: Token): Token[];
                          [key: number]:
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { checked?: ...; raw?: ...; type?: ... }
                              | {
                                  codeBlockStyle?: ...;
                                  escaped?: ...;
                                  lang?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  items?: ...;
                                  loose?: ...;
                                  ordered?: ...;
                                  raw?: ...;
                                  start?: ...;
                                  type?: ...;
                              }
                              | {
                                  checked?: ...;
                                  loose?: ...;
                                  raw?: ...;
                                  task?: ...;
                                  text?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                              | {
                                  block?: ...;
                                  inLink?: ...;
                                  inRawBlock?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                      };
                  };
                  lheading?: (src: string) => Heading | undefined;
                  link?: (src: string) => Image | Link | undefined;
                  list?: (src: string) => List | undefined;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (src: string) => Paragraph | undefined;
                  reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                  rules?: {
                      block?: {
                          blockquote?: RegExp;
                          code?: RegExp;
                          def?: RegExp;
                          fences?: RegExp;
                          heading?: RegExp;
                          hr?: RegExp;
                          html?: RegExp;
                          lheading?: RegExp;
                          list?: RegExp;
                          newline?: RegExp;
                          paragraph?: RegExp;
                          table?: RegExp;
                          text?: RegExp;
                      };
                      inline?: {
                          _backpedal?: RegExp;
                          anyPunctuation?: RegExp;
                          autolink?: RegExp;
                          blockSkip?: RegExp;
                          br?: RegExp;
                          code?: RegExp;
                          del?: RegExp;
                          delLDelim?: RegExp;
                          delRDelim?: RegExp;
                          emStrongLDelim?: RegExp;
                          emStrongRDelimAst?: RegExp;
                          emStrongRDelimUnd?: RegExp;
                          escape?: RegExp;
                          link?: RegExp;
                          nolink?: RegExp;
                          punctuation?: RegExp;
                          reflink?: RegExp;
                          reflinkSearch?: RegExp;
                          tag?: RegExp;
                          text?: RegExp;
                          url?: RegExp;
                      };
                      other?: {
                          anyLine?: RegExp;
                          beginningSpace?: RegExp;
                          blankLine?: RegExp;
                          blockquoteBeginRegex?: (indent: ...) => ...;
                          blockquoteSetextReplace?: RegExp;
                          blockquoteSetextReplace2?: RegExp;
                          blockquoteStart?: RegExp;
                          caret?: RegExp;
                          carriageReturn?: RegExp;
                          codeRemoveIndent?: RegExp;
                          doubleBlankLine?: RegExp;
                          endAngleBracket?: RegExp;
                          endATag?: RegExp;
                          endingHash?: RegExp;
                          endingNewline?: RegExp;
                          endingSpaceChar?: RegExp;
                          endPreScriptTag?: RegExp;
                          escapeReplace?: RegExp;
                          escapeReplaceNoEncode?: RegExp;
                          escapeTest?: RegExp;
                          escapeTestNoEncode?: RegExp;
                          fencesBeginRegex?: (indent: ...) => ...;
                          findPipe?: RegExp;
                          headingBeginRegex?: (indent: ...) => ...;
                          hrefBrackets?: RegExp;
                          hrRegex?: (indent: ...) => ...;
                          htmlBeginRegex?: (indent: ...) => ...;
                          indentCodeCompensation?: RegExp;
                          listIsTask?: RegExp;
                          listItemRegex?: (bull: ...) => ...;
                          listReplaceNesting?: RegExp;
                          listReplaceTask?: RegExp;
                          listTaskCheckbox?: RegExp;
                          multipleSpaceGlobal?: RegExp;
                          newLineCharGlobal?: RegExp;
                          nextBulletRegex?: (indent: ...) => ...;
                          nonSpaceChar?: RegExp;
                          notSpaceStart?: RegExp;
                          outputLinkReplace?: RegExp;
                          pedanticHrefTitle?: RegExp;
                          percentDecode?: RegExp;
                          slashPipe?: RegExp;
                          spaceLine?: RegExp;
                          splitPipe?: RegExp;
                          startAngleBracket?: RegExp;
                          startATag?: RegExp;
                          startingSpaceChar?: RegExp;
                          startPreScriptTag?: RegExp;
                          tabCharGlobal?: RegExp;
                          tableAlignCenter?: RegExp;
                          tableAlignChars?: RegExp;
                          tableAlignLeft?: RegExp;
                          tableAlignRight?: RegExp;
                          tableDelimiter?: RegExp;
                          tableRowBlankLine?: RegExp;
                          unicodeAlphaNumeric?: RegExp;
                      };
                  };
                  space?: (src: string) => Space | undefined;
                  table?: (src: string) => Table | undefined;
                  tag?: (src: string) => Tag | undefined;
                  text?: (src: string) => Text | undefined;
                  url?: (src: string) => Link | undefined;
              }
              | null;
              walkTokens?: | (
                  (token: Token) => void | Promise<void> | (void | Promise<void>)[]
              )
              | null;
          }

          Options for the marked (Markdown parser)

          • Optionalasync?: boolean

            True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string.

          • Optionalbreaks?: boolean

            Enable GFM line breaks. This option requires the gfm option to be true.

          • Optionalextensions?:
                | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null

            Custom extensions

          • Optionalgfm?: boolean

            Enable GitHub flavored markdown.

          • Optionalhooks?:
                | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null

            Hooks are methods that hook into some part of marked.

          • Optionalpedantic?: boolean

            Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior.

          • Optionalrenderer?:
                | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null

            Type: object Default: new Renderer()

            An object containing functions to render tokens to HTML.

          • Optionalsilent?: boolean

            Shows an HTML error message when rendering fails.

          • Optionaltokenizer?:
                | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null

            The tokenizer defines how to turn markdown text into tokens.

          • OptionalwalkTokens?: ((token: Token) => void | Promise<void> | (void | Promise<void>)[]) | null

            walkTokens function returns array of values for Promise.all

        • OptionalmarkedReplacers?: ((raw: string) => string)[]

          Replacers for the marked (Markdown parser)

        • OptionalnestMax?: number

          Maximum number of levels for nested comments

        • OptionalnestSort?: "DATE_ASC" | "DATE_DESC"

          Sorting order for nested comments

        • OptionalnoComment?: string

          Text to display when there are no comments

        • OptionalpageKey?: string

          Unique page identifier

        • OptionalpageTitle?: string

          Title of the page

        • OptionalpageVote?:
              | boolean
              | {
                  activeClass?: string;
                  downBtnEl?: string;
                  downCountEl?: string;
                  upBtnEl?: string;
                  upCountEl?: string;
              }

          Page Vote Widget

        • Optionalpagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean }

          Pagination settings

          • OptionalautoLoad?: boolean

            Automatically load more comments when scrolled to the bottom

          • OptionalpageSize?: number

            Number of comments to fetch per request

          • OptionalreadMore?: boolean

            "Read more" mode

        • Optionalplaceholder?: string

          Placeholder text for the comment input box

        • OptionalpluginURLs?: string[]

          URLs for plugin scripts

        • OptionalpreferRemoteConf?: boolean

          Prefer to use the local configuration if available

          If true, the local config will be used as a fallback (remote config first).

          If false, the local config will override the remote config (local config first).

          false
          
        • Optionalpreview?: boolean

          Preview feature for comments

        • OptionalpvAdd?: boolean

          Page view increment when comment list is loaded

        • OptionalpvEl?: string

          Selector for the element binding to the page views (PV) count

        • OptionalreqTimeout?: number

          Request timeout (in seconds)

        • OptionalscrollRelativeTo?: () => HTMLElement

          The relative element for scrolling (useful if artalk is in a scrollable container)

        • OptionalsendBtn?: string

          Text for the send button

        • Optionalserver?: string

          Server address

        • Optionalsite?: string

          Site name

        • OptionalstatPageKeyAttr?: string

          Attribute name for the PageKey in statistics components

        • OptionaluaBadge?: boolean

          Display UA badge (user agent badge)

        • OptionaluseBackendConf?: boolean

          Use remote configuration (from the backend server)

          The useBackendConf is always true and planned to be removed in the future.

          Please use preferRemoteConf to control the priority of the remote and local configuration.

          true
          
        • OptionalversionCheck?: boolean

          Enable version check

        • Optionalvote?: boolean

          Voting feature for comments

        • OptionalvoteDown?: boolean

          Downvote button for comments

      Returns default

    • Load count widget

      Parameters

      • c: {
            apiVersion?: string;
            avatarURLBuilder?: (comment: CommentData) => string;
            beforeSubmit?: (editor: Editor, next: () => void) => void;
            countEl?: string;
            darkMode?: boolean | "auto";
            dateFormatter?: (date: Date) => string;
            editorTravel?: boolean;
            el?: string | HTMLElement;
            emoticons?: string | false | object | any[];
            fetchCommentsOnInit?: boolean;
            flatMode?: boolean | "auto";
            gravatar?: { mirror?: string; params?: string };
            heightLimit?: { children?: number; content?: number; scrollable?: boolean };
            imgLazyLoad?: false | "native" | "data-src";
            imgUpload?: boolean;
            imgUploader?: (file: File) => Promise<string>;
            listFetchParamsModifier?: (params: any) => void;
            listSort?: boolean;
            listUnreadHighlight?: boolean;
            locale?:
                | string
                | {
                    accountMergeConfirm?: string;
                    accountMergeNotice?: string;
                    accountMergeSelectOne?: string;
                    actionConfirm?: string;
                    admin?: string;
                    adminCheck?: string;
                    approved?: string;
                    cancel?: string;
                    captchaCheck?: string;
                    changePassword?: string;
                    client?: string;
                    closeComment?: string;
                    collapse?: string;
                    collapsed?: string;
                    collapsedMsg?: string;
                    commentFail?: string;
                    confirm?: string;
                    confirmPassword?: string;
                    counter?: string;
                    ctrlCenter?: string;
                    currentVersion?: string;
                    days?: string;
                    delete?: string;
                    deleteConfirm?: string;
                    deleteFail?: string;
                    deleting?: string;
                    dismiss?: string;
                    edit?: string;
                    editCancel?: string;
                    editFail?: string;
                    editing?: string;
                    email?: string;
                    emailVerified?: string;
                    emoticon?: string;
                    expand?: string;
                    forgetPassword?: string;
                    haveAccountPrompt?: string;
                    hours?: string;
                    ignore?: string;
                    link?: string;
                    listLoadFailMsg?: string;
                    listRetry?: string;
                    loadFail?: string;
                    loading?: string;
                    loadMore?: string;
                    logoutConfirm?: string;
                    merge?: string;
                    minutes?: string;
                    msgCenter?: string;
                    nextStep?: string;
                    nick?: string;
                    noAccountPrompt?: string;
                    noComment?: string;
                    now?: string;
                    onlyAdminCanReply?: string;
                    open?: string;
                    openComment?: string;
                    openName?: string;
                    password?: string;
                    passwordMismatch?: string;
                    pending?: string;
                    pendingMsg?: string;
                    pin?: string;
                    placeholder?: string;
                    preview?: string;
                    readMore?: string;
                    reply?: string;
                    reqAborted?: string;
                    reqGot?: string;
                    resetPassword?: string;
                    restoredMsg?: string;
                    save?: string;
                    seconds?: string;
                    send?: string;
                    server?: string;
                    signIn?: string;
                    signUp?: string;
                    skipVerify?: string;
                    sortAuthor?: string;
                    sortBest?: string;
                    sortLatest?: string;
                    sortOldest?: string;
                    unpin?: string;
                    updateMsg?: string;
                    uploadFail?: string;
                    uploadImage?: string;
                    uploadLoginMsg?: string;
                    username?: string;
                    userProfile?: string;
                    verificationCode?: string;
                    verifyResend?: string;
                    verifySend?: string;
                    voteDown?: string;
                    voteFail?: string;
                    voteUp?: string;
                    waitSeconds?: string;
                };
            markedOptions?: {
                async?: boolean;
                breaks?: boolean;
                extensions?: | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null;
                gfm?: boolean;
                hooks?: | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null;
                pedantic?: boolean;
                renderer?: | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null;
                silent?: boolean;
                tokenizer?: | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    obj: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null;
                walkTokens?: | (
                    (token: Token) => void | Promise<void> | (void | Promise<void>)[]
                )
                | null;
            };
            markedReplacers?: ((raw: string) => string)[];
            nestMax?: number;
            nestSort?: "DATE_ASC" | "DATE_DESC";
            noComment?: string;
            pageKey?: string;
            pageTitle?: string;
            pageVote?:
                | boolean
                | {
                    activeClass?: string;
                    downBtnEl?: string;
                    downCountEl?: string;
                    upBtnEl?: string;
                    upCountEl?: string;
                };
            pagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean };
            placeholder?: string;
            pluginURLs?: string[];
            preferRemoteConf?: boolean;
            preview?: boolean;
            pvAdd?: boolean;
            pvEl?: string;
            reqTimeout?: number;
            scrollRelativeTo?: () => HTMLElement;
            sendBtn?: string;
            server?: string;
            site?: string;
            statPageKeyAttr?: string;
            uaBadge?: boolean;
            useBackendConf?: boolean;
            versionCheck?: boolean;
            vote?: boolean;
            voteDown?: boolean;
        }
        • OptionalapiVersion?: string

          Backend API version (system data, not allowed for user modification)

        • OptionalavatarURLBuilder?: (comment: CommentData) => string

          Avatar URL generator function

        • OptionalbeforeSubmit?: (editor: Editor, next: () => void) => void

          Callback before submitting a comment

        • OptionalcountEl?: string

          Selector for the element binding to the comment count

        • OptionaldarkMode?: boolean | "auto"

          Dark mode settings

        • OptionaldateFormatter?: (date: Date) => string

          Custom date formatter

        • OptionaleditorTravel?: boolean

          Movable comment box (display below the comment to be replied)

        • Optionalel?: string | HTMLElement

          Element selector or Element to mount the Artalk

        • Optionalemoticons?: string | false | object | any[]

          Emoticons settings

        • OptionalfetchCommentsOnInit?: boolean

          Immediately fetch comments when Artalk instance is initialized

        • OptionalflatMode?: boolean | "auto"

          Flat mode for comment display

        • Optionalgravatar?: { mirror?: string; params?: string }

          Gravatar avatar settings

          • Optionalmirror?: string

            API endpoint

          • Optionalparams?: string

            API parameters

        • OptionalheightLimit?: { children?: number; content?: number; scrollable?: boolean }

          Height limit configuration

          • Optionalchildren?: number

            Maximum height for child comments

          • Optionalcontent?: number

            Maximum height for comment content

          • Optionalscrollable?: boolean

            Whether the content is scrollable

        • OptionalimgLazyLoad?: false | "native" | "data-src"

          Image lazy load mode

        • OptionalimgUpload?: boolean

          Enable image upload feature

        • OptionalimgUploader?: (file: File) => Promise<string>

          Image uploader function

        • OptionallistFetchParamsModifier?: (params: any) => void

          Modifier for list fetch request parameters

        • OptionallistSort?: boolean

          Show sorting dropdown for comment list

        • OptionallistUnreadHighlight?: boolean

          List unread highlight (enable by default in artalk-sidebar)

        • Optionallocale?:
              | string
              | {
                  accountMergeConfirm?: string;
                  accountMergeNotice?: string;
                  accountMergeSelectOne?: string;
                  actionConfirm?: string;
                  admin?: string;
                  adminCheck?: string;
                  approved?: string;
                  cancel?: string;
                  captchaCheck?: string;
                  changePassword?: string;
                  client?: string;
                  closeComment?: string;
                  collapse?: string;
                  collapsed?: string;
                  collapsedMsg?: string;
                  commentFail?: string;
                  confirm?: string;
                  confirmPassword?: string;
                  counter?: string;
                  ctrlCenter?: string;
                  currentVersion?: string;
                  days?: string;
                  delete?: string;
                  deleteConfirm?: string;
                  deleteFail?: string;
                  deleting?: string;
                  dismiss?: string;
                  edit?: string;
                  editCancel?: string;
                  editFail?: string;
                  editing?: string;
                  email?: string;
                  emailVerified?: string;
                  emoticon?: string;
                  expand?: string;
                  forgetPassword?: string;
                  haveAccountPrompt?: string;
                  hours?: string;
                  ignore?: string;
                  link?: string;
                  listLoadFailMsg?: string;
                  listRetry?: string;
                  loadFail?: string;
                  loading?: string;
                  loadMore?: string;
                  logoutConfirm?: string;
                  merge?: string;
                  minutes?: string;
                  msgCenter?: string;
                  nextStep?: string;
                  nick?: string;
                  noAccountPrompt?: string;
                  noComment?: string;
                  now?: string;
                  onlyAdminCanReply?: string;
                  open?: string;
                  openComment?: string;
                  openName?: string;
                  password?: string;
                  passwordMismatch?: string;
                  pending?: string;
                  pendingMsg?: string;
                  pin?: string;
                  placeholder?: string;
                  preview?: string;
                  readMore?: string;
                  reply?: string;
                  reqAborted?: string;
                  reqGot?: string;
                  resetPassword?: string;
                  restoredMsg?: string;
                  save?: string;
                  seconds?: string;
                  send?: string;
                  server?: string;
                  signIn?: string;
                  signUp?: string;
                  skipVerify?: string;
                  sortAuthor?: string;
                  sortBest?: string;
                  sortLatest?: string;
                  sortOldest?: string;
                  unpin?: string;
                  updateMsg?: string;
                  uploadFail?: string;
                  uploadImage?: string;
                  uploadLoginMsg?: string;
                  username?: string;
                  userProfile?: string;
                  verificationCode?: string;
                  verifyResend?: string;
                  verifySend?: string;
                  voteDown?: string;
                  voteFail?: string;
                  voteUp?: string;
                  waitSeconds?: string;
              }

          Localization settings

        • OptionalmarkedOptions?: {
              async?: boolean;
              breaks?: boolean;
              extensions?:
                  | {
                      block?: TokenizerExtensionFunction[];
                      childTokens?: { [key: string]: string[]
                      | undefined };
                      inline?: TokenizerExtensionFunction[];
                      renderers?: {
                          [key: string]: RendererExtensionFunction<string, string> | undefined;
                      };
                      startBlock?: TokenizerStartFunction[];
                      startInline?: TokenizerStartFunction[];
                  }
                  | null;
              gfm?: boolean;
              hooks?: | {
                  block?: boolean;
                  emStrongMask?: (src: string) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  postprocess?: (html: string) => string;
                  preprocess?: (markdown: string) => string;
                  processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                  provideLexer?: (
                      block?: boolean,
                  ) => <ParserOutput = string, RendererOutput = string>(
                      src: string,
                      options?: MarkedOptions<ParserOutput, RendererOutput>,
                  ) => Token[];
                  provideParser?: (
                      block?: boolean,
                  ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
              }
              | null;
              pedantic?: boolean;
              renderer?: | {
                  blockquote?: (__namedParameters: Blockquote) => string;
                  br?: (token: Br) => string;
                  checkbox?: (__namedParameters: Checkbox) => string;
                  code?: (__namedParameters: Code) => string;
                  codespan?: (__namedParameters: Codespan) => string;
                  def?: (token: Def) => string;
                  del?: (__namedParameters: Del) => string;
                  em?: (__namedParameters: Em) => string;
                  heading?: (__namedParameters: Heading) => string;
                  hr?: (token: Hr) => string;
                  html?: (__namedParameters: HTML | Tag) => string;
                  image?: (__namedParameters: Image) => string;
                  link?: (__namedParameters: Link) => string;
                  list?: (token: List) => string;
                  listitem?: (item: ListItem) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (__namedParameters: Paragraph) => string;
                  parser?: {
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      parse?: (tokens: Token[]) => string;
                      parseInline?: (
                          tokens: Token[],
                          renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                      ) => string;
                      renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                      textRenderer?: {
                          br?: () => ...;
                          checkbox?: (__namedParameters: ...) => ...;
                          codespan?: (__namedParameters: ...) => ...;
                          del?: (__namedParameters: ...) => ...;
                          em?: (__namedParameters: ...) => ...;
                          html?: (__namedParameters: ...) => ...;
                          image?: (__namedParameters: ...) => ...;
                          link?: (__namedParameters: ...) => ...;
                          strong?: (__namedParameters: ...) => ...;
                          text?: (__namedParameters: ...) => ...;
                      };
                  };
                  space?: (token: Space) => string;
                  strong?: (__namedParameters: Strong) => string;
                  table?: (token: Table) => string;
                  tablecell?: (token: TableCell) => string;
                  tablerow?: (__namedParameters: TableRow<string>) => string;
                  text?: (token: Escape | Text) => string;
              }
              | null;
              silent?: boolean;
              tokenizer?: | {
                  autolink?: (src: string) => Link | undefined;
                  blockquote?: (src: string) => Blockquote | undefined;
                  br?: (src: string) => Br | undefined;
                  code?: (src: string) => Code | undefined;
                  codespan?: (src: string) => Codespan | undefined;
                  def?: (src: string) => Def | undefined;
                  del?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Del | undefined;
                  emStrong?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Em | Strong | undefined;
                  escape?: (src: string) => Escape | undefined;
                  fences?: (src: string) => Code | undefined;
                  heading?: (src: string) => Heading | undefined;
                  hr?: (src: string) => Hr | undefined;
                  html?: (src: string) => HTML | undefined;
                  inlineText?: (src: string) => Text | undefined;
                  lexer?: {
                      blockTokens?: {
                          (
                              src: string,
                              tokens?: (...)[],
                              lastParagraphClipped?: boolean,
                          ): Token[];
                          (
                              src: string,
                              tokens?: TokensList,
                              lastParagraphClipped?: boolean,
                          ): TokensList;
                      };
                      inline?: (src: string, tokens?: (...)[]) => Token[];
                      inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                      inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                      lex?: (src: string) => TokensList;
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                      tokens?: {
                          "[unscopables]": {
                              "[iterator]"?: (...) | (...) | (...);
                              "[unscopables]"?: (...) | (...) | (...);
                              at?: (...) | (...) | (...);
                              concat?: (...) | (...) | (...);
                              copyWithin?: (...) | (...) | (...);
                              entries?: (...) | (...) | (...);
                              every?: (...) | (...) | (...);
                              fill?: (...) | (...) | (...);
                              filter?: (...) | (...) | (...);
                              find?: (...) | (...) | (...);
                              findIndex?: (...) | (...) | (...);
                              findLast?: (...) | (...) | (...);
                              findLastIndex?: (...) | (...) | (...);
                              flat?: (...) | (...) | (...);
                              flatMap?: (...) | (...) | (...);
                              forEach?: (...) | (...) | (...);
                              includes?: (...) | (...) | (...);
                              indexOf?: (...) | (...) | (...);
                              join?: (...) | (...) | (...);
                              keys?: (...) | (...) | (...);
                              lastIndexOf?: (...) | (...) | (...);
                              length?: (...) | (...) | (...);
                              map?: (...) | (...) | (...);
                              pop?: (...) | (...) | (...);
                              push?: (...) | (...) | (...);
                              reduce?: (...) | (...) | (...);
                              reduceRight?: (...) | (...) | (...);
                              reverse?: (...) | (...) | (...);
                              shift?: (...) | (...) | (...);
                              slice?: (...) | (...) | (...);
                              some?: (...) | (...) | (...);
                              sort?: (...) | (...) | (...);
                              splice?: (...) | (...) | (...);
                              toLocaleString?: (...) | (...) | (...);
                              toReversed?: (...) | (...) | (...);
                              toSorted?: (...) | (...) | (...);
                              toSpliced?: (...) | (...) | (...);
                              toString?: (...) | (...) | (...);
                              unshift?: (...) | (...) | (...);
                              values?: (...) | (...) | (...);
                              with?: (...) | (...) | (...);
                              [key: number]: (...) | (...) | (...);
                          };
                          length: number;
                          links: { [key: string]: (...)
                          | (...) };
                          "[iterator]"(): ArrayIterator<Token>;
                          at(index: number): Token | undefined;
                          concat(...items: ConcatArray<(...)>[]): Token[];
                          concat(...items: ((...) | (...))[]): Token[];
                          copyWithin(target: number, start: number, end?: number): this;
                          entries(): ArrayIterator<[(...), (...)]>;
                          every<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): this is S[];
                          every(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          fill(value: Token, start?: number, end?: number): this;
                          filter<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S[];
                          filter(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token[];
                          find<S extends Token>(
                              predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          find(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findIndex(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          findLast<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          findLast(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findLastIndex(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          flat<A, D extends number = 1>(
                              this: A,
                              depth?: D,
                          ): FlatArray<(...), (...)>[];
                          flatMap<U, This = undefined>(
                              callback: (
                                  this: This,
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => (...) | (...),
                              thisArg?: This,
                          ): U[];
                          forEach(
                              callbackfn: (value: Token, index: number, array: (...)[]) => void,
                              thisArg?: any,
                          ): void;
                          includes(searchElement: Token, fromIndex?: number): boolean;
                          indexOf(searchElement: Token, fromIndex?: number): number;
                          join(separator?: string): string;
                          keys(): ArrayIterator<number>;
                          lastIndexOf(searchElement: Token, fromIndex?: number): number;
                          map<U>(
                              callbackfn: (value: Token, index: number, array: (...)[]) => U,
                              thisArg?: any,
                          ): U[];
                          pop(): Token | undefined;
                          push(...items: Token[]): number;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduce<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduceRight<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reverse(): Token[];
                          shift(): Token | undefined;
                          slice(start?: number, end?: number): Token[];
                          some(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          sort(compareFn?: (a: ..., b: ...) => ...): this;
                          splice(start: number, deleteCount?: number): Token[];
                          splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                          toLocaleString(): string;
                          toLocaleString(
                              locales: string | (...)[],
                              options?: (...) & (...),
                          ): string;
                          toReversed(): Token[];
                          toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                          toSpliced(
                              start: number,
                              deleteCount: number,
                              ...items: Token[],
                          ): Token[];
                          toSpliced(start: number, deleteCount?: number): Token[];
                          toString(): string;
                          unshift(...items: Token[]): number;
                          values(): ArrayIterator<Token>;
                          with(index: number, value: Token): Token[];
                          [key: number]:
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { checked?: ...; raw?: ...; type?: ... }
                              | {
                                  codeBlockStyle?: ...;
                                  escaped?: ...;
                                  lang?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  items?: ...;
                                  loose?: ...;
                                  ordered?: ...;
                                  raw?: ...;
                                  start?: ...;
                                  type?: ...;
                              }
                              | {
                                  checked?: ...;
                                  loose?: ...;
                                  raw?: ...;
                                  task?: ...;
                                  text?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                              | {
                                  block?: ...;
                                  inLink?: ...;
                                  inRawBlock?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                      };
                  };
                  lheading?: (src: string) => Heading | undefined;
                  link?: (src: string) => Image | Link | undefined;
                  list?: (src: string) => List | undefined;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (src: string) => Paragraph | undefined;
                  reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                  rules?: {
                      block?: {
                          blockquote?: RegExp;
                          code?: RegExp;
                          def?: RegExp;
                          fences?: RegExp;
                          heading?: RegExp;
                          hr?: RegExp;
                          html?: RegExp;
                          lheading?: RegExp;
                          list?: RegExp;
                          newline?: RegExp;
                          paragraph?: RegExp;
                          table?: RegExp;
                          text?: RegExp;
                      };
                      inline?: {
                          _backpedal?: RegExp;
                          anyPunctuation?: RegExp;
                          autolink?: RegExp;
                          blockSkip?: RegExp;
                          br?: RegExp;
                          code?: RegExp;
                          del?: RegExp;
                          delLDelim?: RegExp;
                          delRDelim?: RegExp;
                          emStrongLDelim?: RegExp;
                          emStrongRDelimAst?: RegExp;
                          emStrongRDelimUnd?: RegExp;
                          escape?: RegExp;
                          link?: RegExp;
                          nolink?: RegExp;
                          punctuation?: RegExp;
                          reflink?: RegExp;
                          reflinkSearch?: RegExp;
                          tag?: RegExp;
                          text?: RegExp;
                          url?: RegExp;
                      };
                      other?: {
                          anyLine?: RegExp;
                          beginningSpace?: RegExp;
                          blankLine?: RegExp;
                          blockquoteBeginRegex?: (indent: ...) => ...;
                          blockquoteSetextReplace?: RegExp;
                          blockquoteSetextReplace2?: RegExp;
                          blockquoteStart?: RegExp;
                          caret?: RegExp;
                          carriageReturn?: RegExp;
                          codeRemoveIndent?: RegExp;
                          doubleBlankLine?: RegExp;
                          endAngleBracket?: RegExp;
                          endATag?: RegExp;
                          endingHash?: RegExp;
                          endingNewline?: RegExp;
                          endingSpaceChar?: RegExp;
                          endPreScriptTag?: RegExp;
                          escapeReplace?: RegExp;
                          escapeReplaceNoEncode?: RegExp;
                          escapeTest?: RegExp;
                          escapeTestNoEncode?: RegExp;
                          fencesBeginRegex?: (indent: ...) => ...;
                          findPipe?: RegExp;
                          headingBeginRegex?: (indent: ...) => ...;
                          hrefBrackets?: RegExp;
                          hrRegex?: (indent: ...) => ...;
                          htmlBeginRegex?: (indent: ...) => ...;
                          indentCodeCompensation?: RegExp;
                          listIsTask?: RegExp;
                          listItemRegex?: (bull: ...) => ...;
                          listReplaceNesting?: RegExp;
                          listReplaceTask?: RegExp;
                          listTaskCheckbox?: RegExp;
                          multipleSpaceGlobal?: RegExp;
                          newLineCharGlobal?: RegExp;
                          nextBulletRegex?: (indent: ...) => ...;
                          nonSpaceChar?: RegExp;
                          notSpaceStart?: RegExp;
                          outputLinkReplace?: RegExp;
                          pedanticHrefTitle?: RegExp;
                          percentDecode?: RegExp;
                          slashPipe?: RegExp;
                          spaceLine?: RegExp;
                          splitPipe?: RegExp;
                          startAngleBracket?: RegExp;
                          startATag?: RegExp;
                          startingSpaceChar?: RegExp;
                          startPreScriptTag?: RegExp;
                          tabCharGlobal?: RegExp;
                          tableAlignCenter?: RegExp;
                          tableAlignChars?: RegExp;
                          tableAlignLeft?: RegExp;
                          tableAlignRight?: RegExp;
                          tableDelimiter?: RegExp;
                          tableRowBlankLine?: RegExp;
                          unicodeAlphaNumeric?: RegExp;
                      };
                  };
                  space?: (src: string) => Space | undefined;
                  table?: (src: string) => Table | undefined;
                  tag?: (src: string) => Tag | undefined;
                  text?: (src: string) => Text | undefined;
                  url?: (src: string) => Link | undefined;
              }
              | null;
              walkTokens?: | (
                  (token: Token) => void | Promise<void> | (void | Promise<void>)[]
              )
              | null;
          }

          Options for the marked (Markdown parser)

          • Optionalasync?: boolean

            True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string.

          • Optionalbreaks?: boolean

            Enable GFM line breaks. This option requires the gfm option to be true.

          • Optionalextensions?:
                | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null

            Custom extensions

          • Optionalgfm?: boolean

            Enable GitHub flavored markdown.

          • Optionalhooks?:
                | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null

            Hooks are methods that hook into some part of marked.

          • Optionalpedantic?: boolean

            Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior.

          • Optionalrenderer?:
                | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null

            Type: object Default: new Renderer()

            An object containing functions to render tokens to HTML.

          • Optionalsilent?: boolean

            Shows an HTML error message when rendering fails.

          • Optionaltokenizer?:
                | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null

            The tokenizer defines how to turn markdown text into tokens.

          • OptionalwalkTokens?: ((token: Token) => void | Promise<void> | (void | Promise<void>)[]) | null

            walkTokens function returns array of values for Promise.all

        • OptionalmarkedReplacers?: ((raw: string) => string)[]

          Replacers for the marked (Markdown parser)

        • OptionalnestMax?: number

          Maximum number of levels for nested comments

        • OptionalnestSort?: "DATE_ASC" | "DATE_DESC"

          Sorting order for nested comments

        • OptionalnoComment?: string

          Text to display when there are no comments

        • OptionalpageKey?: string

          Unique page identifier

        • OptionalpageTitle?: string

          Title of the page

        • OptionalpageVote?:
              | boolean
              | {
                  activeClass?: string;
                  downBtnEl?: string;
                  downCountEl?: string;
                  upBtnEl?: string;
                  upCountEl?: string;
              }

          Page Vote Widget

        • Optionalpagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean }

          Pagination settings

          • OptionalautoLoad?: boolean

            Automatically load more comments when scrolled to the bottom

          • OptionalpageSize?: number

            Number of comments to fetch per request

          • OptionalreadMore?: boolean

            "Read more" mode

        • Optionalplaceholder?: string

          Placeholder text for the comment input box

        • OptionalpluginURLs?: string[]

          URLs for plugin scripts

        • OptionalpreferRemoteConf?: boolean

          Prefer to use the local configuration if available

          If true, the local config will be used as a fallback (remote config first).

          If false, the local config will override the remote config (local config first).

          false
          
        • Optionalpreview?: boolean

          Preview feature for comments

        • OptionalpvAdd?: boolean

          Page view increment when comment list is loaded

        • OptionalpvEl?: string

          Selector for the element binding to the page views (PV) count

        • OptionalreqTimeout?: number

          Request timeout (in seconds)

        • OptionalscrollRelativeTo?: () => HTMLElement

          The relative element for scrolling (useful if artalk is in a scrollable container)

        • OptionalsendBtn?: string

          Text for the send button

        • Optionalserver?: string

          Server address

        • Optionalsite?: string

          Site name

        • OptionalstatPageKeyAttr?: string

          Attribute name for the PageKey in statistics components

        • OptionaluaBadge?: boolean

          Display UA badge (user agent badge)

        • OptionaluseBackendConf?: boolean

          Use remote configuration (from the backend server)

          The useBackendConf is always true and planned to be removed in the future.

          Please use preferRemoteConf to control the priority of the remote and local configuration.

          true
          
        • OptionalversionCheck?: boolean

          Enable version check

        • Optionalvote?: boolean

          Voting feature for comments

        • OptionalvoteDown?: boolean

          Downvote button for comments

      Returns void