import * as React from 'react';

type MessageDescriptor = {
    id: string;
    defaultMessage: string;
    description: string;
};
type MessageValues = Record<string, string | React.ReactNode>;
/**
 * Shape of the i18n context value.
 * This mirrors the essential parts of react-intl's IntlShape without importing it.
 */
interface IntlContextValue {
    locale: string;
    formatMessage(descriptor: MessageDescriptor, values?: MessageValues): string | React.ReactNode[];
}
/**
 * Context for optional i18n support.
 * When this context has a value, translations will use react-intl.
 * When this context is null/undefined, translations will fall back to defaultMessage.
 */
declare const IntlContext: React.Context<IntlContextValue | null>;
/**
 * Hook to access the i18n context.
 * Returns null if no IntlProvider is present in the component tree.
 */
declare function useIntl(): IntlContextValue | null;

export { IntlContext, type IntlContextValue, type MessageDescriptor, type MessageValues, useIntl };
