import { Gadget } from './Gadgets.js';
import BaseURLDirector from './util/builders/url/base.director.js';
import WikimediaDesktopURLDirector from './util/builders/url/desktop.director.js';
import WikimediaMobileURLDirector from './util/builders/url/mobile.director.js';
import VisualEditorURLDirector from './util/builders/url/visual-editor.director.js';
import RestApiURLDirector from './util/builders/url/rest-api.director.js';
import ActionParseURLDirector from './util/builders/url/action-parse.director.js';
export interface QueryOpts {
    action: string;
    format: string;
    prop: string;
    rdlimit: string;
    rdnamespace: string | number;
    rdprop: string;
    redirects?: boolean;
    formatversion: string;
    maxlag: string;
}
export interface SiteInfoResponse {
    batchcomplete: boolean;
    query: SiteInfoQueryResponse;
    warnings?: {
        [key: string]: {
            [key: string]: string;
        };
    };
}
export interface SiteInfoQueryResponse {
    general: SiteInfoGeneral;
    skins: SiteInfoSkin[];
    rightsinfo: {
        url: string;
        text: string;
    };
    namespaces: {
        [key: string]: {
            id: number;
            name: string;
            canonical: string;
            content: boolean;
            subpages: boolean;
        };
    };
    namespacealiases: {
        id: number;
        alias: string;
    }[];
    allmessages: {
        name: string;
        content: string;
    }[];
    gadgets?: Gadget[];
}
export interface SiteInfoGeneral {
    generator: string;
    mainpage: string;
    mainpageisdomainroot: boolean;
    sitename: string;
    logo: string;
    lang: string;
    rtl: boolean;
    articlepath: string;
    script: string;
    scriptpath: string;
    fallback: {
        code: string;
    }[];
    variants?: {
        code: string;
    }[];
}
export interface SiteInfoSkin {
    code: string;
    name: string;
    default?: boolean;
    unusable?: boolean;
}
declare class MediaWiki {
    #private;
    private static instance;
    static getInstance(): MediaWiki;
    metaData: MWMetaData;
    baseUrl: URL;
    getCategories: boolean;
    namespaces: MWNamespaces;
    namespacesToMirror: string[];
    apiCheckArticleId: string;
    queryOpts: QueryOpts;
    urlDirector: BaseURLDirector;
    skin: string;
    wikimediaDesktopUrlDirector: WikimediaDesktopURLDirector;
    wikimediaMobileUrlDirector: WikimediaMobileURLDirector;
    visualEditorUrlDirector: VisualEditorURLDirector;
    restApiUrlDirector: RestApiURLDirector;
    actionParseUrlDirector: ActionParseURLDirector;
    visualEditorApiUrl: URL;
    actionApiUrl: URL;
    restApiUrl: URL;
    webUrl: URL;
    wikimediaDesktopApiUrl: URL;
    wikimediaMobileApiUrl: URL;
    modulePath: string;
    mobileModulePath: string;
    set username(value: string);
    set password(value: string);
    get actionApiPath(): string;
    set actionApiPath(value: string);
    set restApiPath(value: string);
    set domain(value: string);
    set wikiPath(value: string);
    set indexPhpPath(value: string);
    set base(value: string);
    set modulePathOpt(value: string);
    private initializeMediaWikiDefaults;
    private constructor();
    hasWikimediaDesktopApi(): Promise<boolean>;
    hasWikimediaMobileApi(): Promise<boolean>;
    hasVisualEditorApi(): Promise<boolean>;
    hasRestApi(): Promise<boolean>;
    hasActionParseApi(): Promise<boolean>;
    hasCoordinates(): Promise<boolean>;
    hasModuleApi(): Promise<boolean>;
    private setWikimediaDesktopApiUrl;
    private setWikimediaMobileApiUrl;
    private setRestApiURL;
    private setVisualEditorURL;
    private setModuleURL;
    private setMobileModuleUrl;
    login(): Promise<void>;
    setNamespaces(json: SiteInfoQueryResponse, addNamespaces: number[]): void;
    extractPageTitleFromHref(href: any): any;
    getCreatorName(): string;
    getDefaultSkin(skins: SiteInfoSkin[]): string;
    getSiteInfo({ mwWikiPath, mwIndexPhpPath, addNamespaces, mwRestApiPath, mwModulePath, forceSkin, langVariant }?: SiteInfoArgv): Promise<{
        mainPage: string;
        mainPageIsDomainRoot: boolean;
        siteName: string;
        textDir: string;
        langMw: string;
        langVar: string;
        langIso2: any;
        langIso3: any;
        logo: string;
        licenseName: string;
        licenseUrl: string;
        subTitle: string;
    }>;
    getMwMetaData(argvOpts?: SiteInfoArgv): Promise<MWMetaData>;
    reset(): void;
}
declare const _default: MediaWiki;
export default _default;
