type InputValue = string | number | string[]; type InputValueChangeReason = "none"; type InputValueChangeDetails = { readonly event?: Event; readonly isCanceled: boolean; readonly isPropagationAllowed: boolean; readonly previousValue: string; readonly reason: InputValueChangeReason; readonly trigger?: Element; readonly value: string; allowPropagation(): void; cancel(): void; }; type InputOptions = { defaultValue?: InputValue; disabled?: boolean; onValueChange?: (value: string, details: InputValueChangeDetails) => void; value?: InputValue; }; type InputSetValueOptions = { emit?: boolean; event?: Event; trigger?: Element; }; type InputInstance = { readonly root: HTMLInputElement; destroy(): void; getValue(): string; setDisabled(disabled: boolean): void; setValue(value: InputValue, options?: InputSetValueOptions): void; subscribe(event: "valueChange", callback: (details: InputValueChangeDetails) => void): () => void; }; declare function createInput(root: HTMLElement, options?: InputOptions): InputInstance; export { type InputInstance, type InputOptions, type InputSetValueOptions, type InputValue, type InputValueChangeDetails, type InputValueChangeReason, createInput };