import React from 'react';
import type { FieldConfig } from '../fields/types';
/**
 * Context passed to a display label resolver, providing access to sibling field values.
 */
export type ResolverCallContext = {
    getSiblingValue: (fieldId: string) => unknown;
};
/**
 * A function that resolves a stored field value to a human-readable display label.
 *
 * Returns null if the value can't be resolved (caller falls back to raw value).
 */
export type DisplayLabelResolver = (value: unknown, fieldConfig: FieldConfig, context: ResolverCallContext) => Promise<string | null>;
/**
 * Map of field type to display label resolver.
 * Only field types that need async resolution register here.
 */
export type DisplayLabelResolverMap = Partial<Record<FieldConfig['type'], DisplayLabelResolver>>;
/**
 * Provides display label resolvers to descendant components.
 * Repeater items use these resolvers to show human-readable labels
 * instead of raw stored values (e.g. entry titles instead of slugs).
 */
export declare function DisplayLabelResolverProvider({ resolvers, children, }: {
    resolvers: DisplayLabelResolverMap;
    children: React.ReactNode;
}): import("react/jsx-runtime").JSX.Element;
/**
 * Access the display label resolver map.
 * Returns an empty map when no provider is present (resolvers are optional).
 */
export declare function useDisplayLabelResolvers(): DisplayLabelResolverMap;
