import { nothing, type TemplateResult } from 'lit';
import type { IgcFormControl } from '../mixins/forms/types.js';
/** Returns a unique id for native input elements rendered by input components. */
export declare function nextInputId(): string;
export interface InputShellOptions {
    /** Active theme name. The `material` theme uses the notch layout. */
    theme: string;
    /** The label text. Empty string skips label rendering. */
    label: string;
    /** The id of the input element used by the label `for` attribute. */
    labelId: string;
    /** Resolved part-name map for the container element. */
    containerParts: Record<string, boolean>;
    /** Renders the native `<input>` element. */
    renderInput: () => TemplateResult;
    /** Optional renderer for components that need extra parts inside the container (e.g. file-input). */
    renderFileParts?: () => TemplateResult | typeof nothing;
}
/**
 * Renders the shared input chrome (label, prefix, suffix, validator container)
 * around a leaf-provided input template, switching layouts between the
 * material notch and the standard flow.
 */
export declare function renderInputShell(host: IgcFormControl, { containerParts, renderFileParts, renderInput, theme, label, labelId, }: InputShellOptions): TemplateResult;
