import { Renderable } from '@tempots/dom';
import { InputOptions } from './input-options';
/**
 * Converts empty string to null, preserving non-empty strings.
 */
export declare const emptyToNull: (value: string | null) => string | null;
/**
 * Converts null to empty string, preserving non-null strings.
 */
export declare const nullToEmpty: (value: null | string) => string;
/**
 * Factory function to create nullable string input components.
 * Eliminates duplication across nullable text-based inputs.
 *
 * @param BaseInput - The base input component (e.g., TextInput, EmailInput, PasswordInput)
 * @returns A nullable version of the input component
 *
 * @example
 * ```ts
 * export const NullableTextInput = createNullableStringInput(TextInput)
 * export const NullableEmailInput = createNullableStringInput(EmailInput)
 * ```
 */
export declare function createNullableStringInput(BaseInput: (options: InputOptions<string>) => Renderable): (options: InputOptions<null | string>) => Renderable;
