/**
 * GroupField helper functions
 * Extracted for testability and reusability
 */
import type { GroupFieldConfig } from '../fields/types';
/**
 * Determines if a group field should flatten its children when inside a repeater
 *
 * @param path - Current field path (e.g., "items.0.meta")
 * @param config - Group field configuration
 * @returns true if the group should flatten (children rendered at parent level)
 */
export declare function shouldFlattenInRepeater(path: string, config: GroupFieldConfig): boolean;
/**
 * Extracts the group preset from field configuration.
 *
 * @param config - Group field configuration
 * @returns Preset name or null
 */
export declare function getWidgetPreset(config: GroupFieldConfig): string | null;
/**
 * Builds a child field path, accounting for flattening behavior
 *
 * @param basePath - Base path for the group field
 * @param childId - Child field ID
 * @param shouldFlatten - Whether the group is flattened
 * @returns Full path to the child field
 */
export declare function buildChildPath(basePath: string, childId: string, shouldFlatten: boolean): string;
/**
 * Checks if field.ui contains visibleWhen configuration
 */
export declare function hasVisibleWhen(config: GroupFieldConfig): boolean;
/**
 * Checks if field should be hidden
 */
export declare function isHidden(config: GroupFieldConfig): boolean;
/**
 * Checks if label should be hidden
 */
export declare function shouldHideLabel(config: GroupFieldConfig): boolean;
/**
 * Gets the layout mode for a group field
 */
export declare function getLayout(config: GroupFieldConfig): 'stack' | 'grid';
/**
 * Gets the number of columns for grid layout
 */
export declare function getColumns(config: GroupFieldConfig): number;
/**
 * Validates and clamps colSpan to valid range
 */
export declare function getValidColSpan(colSpan: number | undefined, columns: number): number;
/**
 * Groups fields by their ui.row property
 * Fields without a row property each get their own row
 */
export declare function groupFieldsByRow<T extends {
    id: string;
    ui?: unknown;
}>(fields: T[]): T[][];
