import type { JSONSchema } from '../schema-context';
import type { InputWrapperOptions, Controller } from '../../form';
import type { Renderable } from '@tempots/dom';
import type { ResolvedWidget } from '../widgets/utils';
/**
 * Convert schema definition to input wrapper options
 */
export declare function definitionToInputWrapperOptions({ ctx, }: {
    ctx: import('../schema-context').SchemaContext;
}): Partial<InputWrapperOptions>;
/**
 * Create placeholder value from schema definition
 */
export declare function makePlaceholder<T>(definition: JSONSchema, converter: (value: unknown) => T): T | undefined;
/**
 * Convert multipleOf to integer step for integer inputs
 */
export declare function integerMultipleOf(multipleOf?: number): number;
/**
 * Check if a writeOnly field should be hidden
 */
export declare function shouldHideWriteOnly(ctx: import('../schema-context').SchemaContext): boolean;
/**
 * Determine if a control should be disabled based on readOnly or deprecated status
 */
export declare function shouldDisableControl(ctx: import('../schema-context').SchemaContext): boolean;
/**
 * Try to resolve and render a custom widget following the precedence order:
 * 1. Explicit x:ui widget in custom registry (highest priority)
 * 2. Explicit x:ui widget in global registry
 * 3. Matcher-based custom widgets (by priority)
 * 4. Matcher-based global widgets (lowest priority)
 *
 * Returns the rendered widget if found, or null if no custom widget matches
 */
export declare function tryResolveCustomWidget({ ctx, controller, resolved, }: {
    ctx: import('../schema-context').SchemaContext;
    controller: Controller<unknown>;
    resolved: ResolvedWidget | null | undefined;
}): Renderable | null;
