import * as react20 from "react";
import { FC, InputHTMLAttributes, ReactNode, RefObject } from "react";

//#region src/components/Input/OTPInput/Input.d.ts
type SlotProps = {
  isActive: boolean;
  char: string | null;
  placeholderChar: string | null;
  hasFakeCaret: boolean;
};
type RenderProps = {
  slots: SlotProps[];
  isFocused: boolean;
  isHovering: boolean;
  setSelection: (index: number) => void;
};
type OverrideProps<T, R> = Omit<T, keyof R> & R;
type OTPInputBaseProps = OverrideProps<InputHTMLAttributes<HTMLInputElement>, {
  value?: string;
  onChange?: (newValue: string) => unknown;
  maxLength: number;
  textAlign?: 'left' | 'center' | 'right';
  onComplete?: (...args: any[]) => unknown;
  pushPasswordManagerStrategy?: 'increase-width' | 'none';
  pasteTransformer?: (pasted: string) => string;
  containerClassName?: string;
  noScriptCSSFallback?: string | null;
}>;
type InputOTPRenderFn = (props: RenderProps) => ReactNode;
type OTPInputProps = OTPInputBaseProps & ({
  render: InputOTPRenderFn;
  children?: never;
} | {
  render?: never;
  children: ReactNode;
});
declare const usePasswordManagerBadge: ({
  containerRef,
  inputRef,
  pushPasswordManagerStrategy,
  isFocused
}: {
  containerRef: RefObject<HTMLDivElement | null>;
  inputRef: RefObject<HTMLInputElement | null>;
  pushPasswordManagerStrategy: OTPInputProps["pushPasswordManagerStrategy"];
  isFocused: boolean;
}) => {
  hasPWMBadge: boolean;
  willPushPWMBadge: boolean;
  PWM_BADGE_SPACE_WIDTH: "40px";
};
declare const usePrevious: <T>(value: T) => T | undefined;
declare const OTPInputContext: react20.Context<RenderProps>;
declare const OTPInput: FC<OTPInputProps>;
//#endregion
export { OTPInput, OTPInputContext, OTPInputProps, RenderProps, SlotProps, usePasswordManagerBadge, usePrevious };
//# sourceMappingURL=Input.d.ts.map