/**
 * koishi-plugin-mediawiki
 * @desc MediaWiki plugin for Koishijs
 * @author Koishijs(机智的小鱼君) <dragon-fish@qq.com>
 * @license Apache-2.0
 */
import { Context, h, Logger, Schema } from 'koishi';
import type { Config } from './types/Config';
import type { InfoboxDefinition } from './types/Infobox';
declare module 'koishi' {
    interface Channel {
        mwApi?: string;
    }
}
export declare const name = "mediawiki";
export default class PluginMediawiki {
    #private;
    ctx: Context;
    config: Partial<Config>;
    static inject: string[];
    INFOBOX_DEFINITION: InfoboxDefinition[];
    static Config: Schema<Schemastery.ObjectS<{
        cmdAuthWiki: Schema<number, number>;
        cmdAuthConnect: Schema<number, number>;
        cmdAuthSearch: Schema<number, number>;
        searchIfNotExist: Schema<boolean, boolean>;
        showDetailsByDefault: Schema<boolean, boolean>;
        customInfoboxes: Schema<({
            match?: string | null | undefined;
            selector?: string[] | null | undefined;
            injectStyles?: string | null | undefined;
            skin?: string | null | undefined;
        } & import("koishi").Dict)[], Schemastery.ObjectT<{
            match: Schema<string, string>;
            selector: Schema<string[], string[]>;
            injectStyles: Schema<string, string>;
            skin: Schema<string, string>;
        }>[]>;
    }>, Schemastery.ObjectT<{
        cmdAuthWiki: Schema<number, number>;
        cmdAuthConnect: Schema<number, number>;
        cmdAuthSearch: Schema<number, number>;
        searchIfNotExist: Schema<boolean, boolean>;
        showDetailsByDefault: Schema<boolean, boolean>;
        customInfoboxes: Schema<({
            match?: string | null | undefined;
            selector?: string[] | null | undefined;
            injectStyles?: string | null | undefined;
            skin?: string | null | undefined;
        } & import("koishi").Dict)[], Schemastery.ObjectT<{
            match: Schema<string, string>;
            selector: Schema<string[], string[]>;
            injectStyles: Schema<string, string>;
            skin: Schema<string, string>;
        }>[]>;
    }>>;
    constructor(ctx: Context, config?: Partial<Config>);
    get logger(): Logger;
    shotInfobox(url: string, silence?: boolean): Promise<string | h>;
    createInjectStylesFromDefinition({ selector, injectStyles, }: InfoboxDefinition): string;
}
