/**
 * Framework-agnostic i18n interfaces for prompt-kit
 */
export type Locale = string;
export type TranslationKey = string;
export type InterpolationValues = Record<string, string | number | boolean>;
export type TranslationFunction = (key: TranslationKey, values?: InterpolationValues) => string;
export interface PromptKitTranslations {
    codeBlock: {
        collapse: string;
        copied: string;
        copy: string;
        expand: string;
    };
    conversation: {
        loadMore: string;
        loading: string;
        welcomeDescription: string;
        welcomeTitle: string;
    };
    promptInput: {
        addContext: string;
        addQueue: string;
        attachFiles: string;
        cancel: string;
        enterMessageOrAttach: string;
        expand: string;
        failedToLoadModels: string;
        inputPlaceholder: string;
        loadingModels: string;
        modelMenuShortcuts: string;
        modelUnavailable: string;
        multimodalModelRequired: string;
        multimodalNotSupported: string;
        noModelsAvailable: string;
        pending: string;
        recording: string;
        remove: string;
        research: string;
        selectModel: string;
        send: string;
        stop: string;
        uploadFailed: string;
        voiceInput: string;
        voiceNotSupported: string;
        waitingForUpload: string;
        webSearch: string;
    };
    response: {
        attachmentsError: string;
        badResponse: string;
        cancelledContent: string;
        copyMessage: string;
        copyMessageSuccess: string;
        deleteMessage: string;
        goodResponse: string;
        messagePlaceholder: string;
        regenerateResponse: string;
        retryMessage: string;
        planningTitle: string;
        reasoningThoughtFor: string;
        deleteDialogCancel: string;
        deleteDialogConfirm: string;
        deleteDialogDescription: string;
        deleteDialogTitle: string;
        errorTitle: string;
        reasoningThinking: string;
        summaryTitle: string;
        toolCallArguments: string;
        toolCallResult: string;
        toolCallStatus: string;
        toolCallToolName: string;
        warningTitle: string;
    };
    dialog: {
        additionalFeedbackTitle: string;
        additionalFeedbackPlaceholder: string;
        cancel: string;
        description: string;
        reasonPlaceholder: string;
        reasonTitle: string;
        submit: string;
        title: string;
        additionalFeedbackNegativeReasons: {
            incorrect: string;
            unhelpful: string;
            confusing: string;
            incomplete: string;
            inappropriate: string;
            other: string;
        };
        additionalFeedbackPositiveReasons: {
            helpful: string;
            accurate: string;
            wellExplained: string;
            creative: string;
            comprehensive: string;
            other: string;
        };
    };
    header: {
        chatList: string;
        chatManagement: string;
        deleteCurrentChat: string;
        message: string;
        newChat: string;
        title: string;
    };
    dragZone: {
        labelDefault: string;
        labelUnsupported: string;
        descriptionDefault: string;
        descriptionUnsupported: string;
    };
}
export interface I18nAdapter {
    /**
     * Get current locale
     */
    locale: Locale;
    /**
     * Translate a key with optional interpolation
     */
    t: TranslationFunction;
    /**
     * Check if a translation key exists
     */
    has: (key: TranslationKey) => boolean;
    /**
     * Change locale (optional - some frameworks handle this differently)
     */
    changeLocale?: (locale: Locale) => void | Promise<void>;
    /**
     * Get all available locales (optional)
     */
    locales?: Locale[];
}
export interface NextI18nAdapter extends I18nAdapter {
    router?: unknown;
}
export interface RemixI18nAdapter extends I18nAdapter {
    loader?: unknown;
}
export interface ViteI18nAdapter extends I18nAdapter {
}
export interface PromptKitI18nProviderProps {
    children: React.ReactNode;
    /**
     * i18n adapter instance
     * If not provided, will use default built-in translations
     */
    adapter?: I18nAdapter;
    /**
     * Default locale to use if adapter is not provided
     * @default 'en'
     */
    defaultLocale?: Locale;
    /**
     * Custom translations to merge with defaults
     * Useful for overriding specific translations
     */
    translations?: Partial<Record<Locale, Partial<PromptKitTranslations>>>;
}
