import { FexiosFinalContext } from 'fexios';
import { MwApiResponseError } from '../types.js';
/**
 * Error codes for WikiSaikouError
 */
export declare enum WikiSaikouErrorCode {
    HTTP_ERROR = "HTTP_ERROR",
    LOGIN_FAILED = "LOGIN_FAILED",
    LOGIN_RETRY_LIMIT_EXCEEDED = "LOGIN_RETRY_LIMIT_EXCEEDED",
    TOKEN_RETRY_LIMIT_EXCEEDED = "TOKEN_RETRY_LIMIT_EXCEEDED"
}
/**
 * WikiSaikou Error:
 * - Transport/network failures (e.g., fetch failure, HTTP layer issues)
 * - SDK behavioral errors such as exhausted internal retries or misconfigurations
 * Note: When MediaWiki API responds with JSON containing error/errors, a MediaWikiApiError should be thrown instead
 */
export declare class WikiSaikouError extends Error {
    readonly code: WikiSaikouErrorCode;
    readonly message: string;
    readonly cause?: FexiosFinalContext | undefined;
    readonly name = "WikiSaikouError";
    constructor(code: WikiSaikouErrorCode, message?: string, cause?: FexiosFinalContext | undefined);
    static is(data?: any, code?: WikiSaikouErrorCode): data is WikiSaikouError;
}
/**
 * Server-side (MediaWiki API) business error:
 * - fetch succeeded but JSON includes `error` or `errors.length > 0`
 * - Special states (e.g., login NeedToken/WrongToken) are also considered API-side errors
 * Note: network/retry issues belong to WikiSaikouError, not this class
 */
export declare class MediaWikiApiError extends Error {
    readonly errors: MwApiResponseError[];
    readonly cause?: FexiosFinalContext | undefined;
    readonly name = "MediaWikiApiError";
    readonly code: string;
    constructor(errors: MwApiResponseError[], cause?: FexiosFinalContext | undefined);
    get firstError(): MwApiResponseError;
    isBadTokenError(): boolean;
    toString(): string;
    static is(data?: any): data is MediaWikiApiError;
    static normalizeErrors(errors: MwApiResponseError[]): MwApiResponseError[];
}
/**
 * Helper functions for WikiSaikouError and MediaWikiApiError
 */
export declare namespace WikiSaikouError {
    function includesMediaWikiApiError(data?: any): boolean;
    const normalizeMwApiErrors: typeof MediaWikiApiError.normalizeErrors;
    function extractMediaWikiApiErrors(data?: any): MwApiResponseError[];
    function isBadTokenError(data?: any): boolean;
}
