/**
 * Build UnifiedFieldControls props from field config and context
 *
 * Provides a unified way to construct props for UnifiedFieldControls
 * from various sources (field config, form context, metadata).
 */
import type { UnifiedFieldControlsProps } from './types.js';
import type { IconsBehaviour } from '../../../types/icons_behaviour.js';
import type { FieldMetadata, DataOkState } from '../field_state/types.js';
import type { NoteEntry } from '../../hazo_collab_form_base.js';
import { type ControlEnableSettings } from './resolve_field_controls.js';
/**
 * Field configuration for building control props
 */
export interface FieldControlConfig {
    id: string;
    label?: string;
    enable_lock?: boolean;
    enable_visibility_toggle?: boolean;
    enable_delete?: boolean;
    enable_data_ok?: boolean;
    enable_skip?: boolean;
    enable_notes?: boolean;
    enable_chat?: boolean;
    enable_edit_fields?: boolean;
}
/**
 * Form-level context for building control props
 */
export interface FormControlContext {
    icons_behaviour?: IconsBehaviour;
    active_role?: string;
    enable_lock?: boolean;
    enable_visibility_toggle?: boolean;
    enable_delete?: boolean;
    enable_data_ok?: boolean;
    enable_skip?: boolean;
    enable_notes?: boolean;
    enable_chat?: boolean;
    enable_edit_fields?: boolean;
    data_ok_mode?: 'checkbox' | 'multi_state';
    data_ok_editable?: boolean;
    data_ok_hidden_states?: DataOkState[];
    lock_editable?: boolean;
    visibility_editable?: boolean;
    skip_editable?: boolean;
    chat_group_id?: string;
    chat_api_base_url?: string;
    chat_timezone?: string;
    chat_read_only?: boolean;
    notes_panel_style?: 'popover' | 'slide_panel';
    notes_background_color?: string;
    notes_save_mode?: 'explicit' | 'auto';
    notes_mode?: 'controlled' | 'api';
    current_user?: {
        id?: string;
        name: string;
        email: string;
        profile_image?: string;
    };
    on_data_ok_hidden?: boolean;
    on_data_ok_protected?: boolean;
}
/**
 * Callbacks for building control props
 */
export interface FormControlCallbacks {
    on_data_ok_change?: (field_id: string, value: boolean | DataOkState) => void;
    on_skip_change?: (field_id: string, skipped: boolean) => void;
    on_notes_change?: (field_id: string, notes: NoteEntry[]) => void;
    on_visibility_change?: (field_id: string, visibility: 'visible' | 'hidden') => void;
    on_lock_change?: (field_id: string, locked: boolean) => void;
    on_delete?: (field_id: string) => void;
    on_chat_click?: (field_id: string) => void;
    on_add_field?: (field_id: string) => void;
}
/**
 * Build UnifiedFieldControls props from field config and form context
 *
 * This function consolidates all the logic for building control props:
 * - Resolves field-level > group-level > form-level cascade
 * - Builds metadata from field_metadata
 * - Wraps callbacks to include field_id
 * - Configures auto-actions
 *
 * @param field - Field configuration
 * @param parent_group - Parent group configuration (if nested)
 * @param context - Form-level context
 * @param field_metadata - Current field metadata state
 * @param callbacks - Form-level callbacks
 * @returns Props ready for UnifiedFieldControls
 *
 * @example
 * ```tsx
 * const props = build_control_props(
 *   field,
 *   parent_group,
 *   formContext,
 *   field_metadata[field.id],
 *   formCallbacks
 * );
 *
 * <UnifiedFieldControls {...props} />
 * ```
 */
export declare function build_control_props(field: FieldControlConfig, parent_group: ControlEnableSettings | null | undefined, context: FormControlContext, field_metadata: FieldMetadata | undefined, callbacks: FormControlCallbacks): UnifiedFieldControlsProps;
//# sourceMappingURL=build_control_props.d.ts.map