/**
 * Field UI Helper Functions
 *
 * Type-safe helpers for accessing field.ui properties.
 * Reduces repetitive type casting throughout the codebase.
 */
import type { FieldConfig } from '../fields/types';
/**
 * UI properties that can be set on fields.
 * This type covers common ui properties used across different field types.
 */
export type FieldUiProps = {
    renderInHeader?: boolean;
    intent?: FieldIntent;
    hidden?: boolean;
    visibleWhen?: unknown;
    widget?: string;
    preset?: 'disclosure';
    modalConfig?: {
        buttonLabel?: string;
        description?: string;
        buttonVariant?: 'outline' | 'default' | 'ghost' | 'secondary';
        showCustomizedIndicator?: boolean;
    };
};
export type FieldIntent = 'content' | 'display' | 'behavior' | 'style';
/**
 * Check if a field should render in the block header.
 * Header fields are rendered in the collapsed block header area.
 */
export declare function isHeaderField(field: FieldConfig): boolean;
/**
 * Check if a field is hidden.
 */
export declare function isHiddenField(field: FieldConfig): boolean;
/**
 * Check if a field has visibility conditions.
 */
export declare function hasVisibilityConditions(field: FieldConfig): boolean;
/**
 * Get the modal config from a field, if present.
 */
export declare function getModalConfig(field: FieldConfig): FieldUiProps['modalConfig'] | undefined;
/**
 * Get the widget hint from a field, if present.
 * Falls back to field.type if no widget is specified.
 */
export declare function getWidgetKey(field: FieldConfig): string;
/**
 * Resolve semantic intent for top-level form routing.
 * Priority:
 * 1) ui.intent (if valid)
 * 2) default content
 */
export declare function getFieldIntent(field: FieldConfig): FieldIntent;
export declare function partitionFieldsByIntent(fields: FieldConfig[]): {
    content: FieldConfig[];
    display: FieldConfig[];
    behavior: FieldConfig[];
    style: FieldConfig[];
};
/**
 * Filter out fields that should render in header.
 * Returns fields that should be rendered in the form body.
 */
export declare function filterBodyFields(fields: FieldConfig[]): FieldConfig[];
/**
 * Check if a single value is "non-empty" (meaningful).
 * Returns false for null, undefined, empty string, false, and empty objects/arrays.
 */
export declare function isNonEmptyValue(value: unknown): boolean;
/**
 * Check if a record has any non-empty values.
 * Used to determine if a group/modal field has been customized.
 */
export declare function hasNonEmptyValues(values: Record<string, unknown> | null | undefined): boolean;
/**
 * Type for fields that have nested schema fields (group, modal, repeater).
 */
export type FieldWithSchema = FieldConfig & {
    schema: {
        fields: FieldConfig[];
    };
};
/**
 * Check if a field has a nested schema with fields.
 * Works for group, modal, and monomorphic repeater fields.
 */
export declare function hasNestedFields(field: FieldConfig): field is FieldWithSchema;
/**
 * Get nested fields from a field config, if present.
 * Returns empty array if field doesn't have nested fields.
 */
export declare function getNestedFields(field: FieldConfig): FieldConfig[];
