import { type ComponentPropsWithoutRef, type ReactNode } from "react";
/** `otp` = numeric, unmasked digits (e.g. SMS one-time passcode).
 *  `pin` = numeric, masked digits (e.g. wallet PIN, lock-screen code).
 *  `alphanumeric` = case-insensitive ASCII (e.g. backup recovery code).
 *
 *  All three share the same per-cell input, paste-handling, auto-advance
 *  and backspace-back behavior. `pin` is just a syntactic shortcut for
 *  `type="numeric" mask`. */
export type OTPInputMode = "otp" | "pin" | "alphanumeric";
export interface OTPInputHandle {
    /** Focus the first empty cell, or the last cell if the value is full. */
    focus(): void;
    /** Clear the value and return focus to the first cell. */
    clear(): void;
}
type WrapperPropsBase = Omit<ComponentPropsWithoutRef<"div">, "onChange" | "children">;
export interface OTPInputProps extends WrapperPropsBase {
    label?: ReactNode;
    length?: number;
    value: string;
    onChange?: (value: string) => void;
    onComplete?: (value: string) => void;
    disabled?: boolean;
    error?: ReactNode;
    /** Composite mode — `otp` (numeric, visible) is the default. Use `pin`
     *  for masked numeric, `alphanumeric` for ASCII a-z 0-9. */
    mode?: OTPInputMode;
    /** @deprecated — pass `mode="pin"` for masked numeric, or `mode` +
     *  `type` decomposed via the platform pattern. Kept for back-compat
     *  with v1 callers. */
    type?: "numeric" | "alphanumeric";
    /** @deprecated — pass `mode="pin"`. Mask still works as an override
     *  when combined with `mode`. */
    mask?: boolean;
    autoFocus?: boolean;
}
export declare const OTPInput: import("react").ForwardRefExoticComponent<OTPInputProps & import("react").RefAttributes<OTPInputHandle>>;
export {};
//# sourceMappingURL=OTPInput.d.ts.map