/**
 * Types for field traversal and utility functions
 */
/**
 * Minimal field structure required for traversal
 * Matches the essential shape of FieldConfig without full dependency
 */
export interface TraversableField {
    id: string;
    field_type?: 'field' | 'inputbox' | 'textarea' | 'checkbox' | 'combo' | 'radio' | 'date' | 'group' | 'data_table' | 'doc' | 'currency' | 'percentage' | 'computed' | 'static_text' | 'summary_row' | 'masked' | 'table';
    fields?: TraversableField[];
    dependency?: string;
    visibility?: 'visible' | 'hidden';
}
/**
 * Minimal section structure required for traversal
 * Matches the essential shape of Section without full dependency
 */
export interface TraversableSection {
    section_name?: string;
    groups?: TraversableField[];
}
/**
 * Callback type for field traversal
 */
export type FieldVisitor<T extends TraversableField = TraversableField> = (field: T, parent_group?: T, depth?: number) => void;
/**
 * Options for field traversal
 */
export interface TraverseOptions {
    /**
     * Include groups in traversal (calls visitor for group nodes)
     * Default: true
     */
    include_groups?: boolean;
    /**
     * Maximum depth to traverse (-1 for unlimited)
     * Default: -1
     */
    max_depth?: number;
}
/**
 * Options for should_render_field
 */
export interface RenderCheckOptions {
    /**
     * Check dependency conditions against form data
     * Default: true
     */
    check_dependencies?: boolean;
    /**
     * Check visibility state
     * Default: true
     */
    check_visibility?: boolean;
    /**
     * Check deleted state
     * Default: true
     */
    check_deleted?: boolean;
    /**
     * User role for visibility filtering
     * Responders cannot see hidden fields
     */
    user_role?: 'author' | 'responder';
    /**
     * Force-hide fields with visibility='hidden' regardless of user_role.
     * Used when the active_role doesn't have visibility toggle capability.
     */
    force_hide_hidden?: boolean;
}
//# sourceMappingURL=types.d.ts.map