interface IAppwriteException {
    /**
     * The HTTP status code of the error
     */
    code?: number;
    /**
     * The error message
     */
    message: string;
    /**
     * The Appwrite error type (e.g., 'argument_invalid')
     */
    type?: string;
}

interface ITranslator {
    translate(exception: IAppwriteException, language?: string): string;
    setLanguage(language: string): void;
    getAvailableLanguages(): string[];
}

interface ITranslationProvider {
    /**
     * Get a translation for a given error type or code
     * @param errorIdentifier Error type or error code
     * @param language Target language code
     */
    getTranslation(errorIdentifier: string | number, language: string): string | null;
    /**
     * Get all available language codes
     */
    getAvailableLanguages(): string[];
    /**
     * Get the default language code
     */
    getDefaultLanguage(): string;
}

declare class AppwriteExceptionTranslator implements ITranslator {
    private translationProvider;
    private currentLanguage;
    constructor(translationProvider: ITranslationProvider);
    /**
     * Translate an exception to a user-friendly message
     */
    translate(exception: IAppwriteException, language?: string): string;
    /**
     * Check if an error is likely an Appwrite exception
     */
    private isAppwriteException;
    setLanguage(language: string): void;
    getAvailableLanguages(): string[];
}

declare class LocalTranslationProvider implements ITranslationProvider {
    private defaultLanguage;
    getTranslation(errorIdentifier: string | number, language: string): string | null;
    getAvailableLanguages(): string[];
    getDefaultLanguage(): string;
}

declare const createDefaultTranslator: () => AppwriteExceptionTranslator;

export { AppwriteExceptionTranslator, type IAppwriteException, type ITranslationProvider, type ITranslator, LocalTranslationProvider, createDefaultTranslator };
