import { ButtonProps } from "../Button/Button.js";
import "../Button/index.js";
import * as react0 from "react";
import { ComponentProps, FC, InputHTMLAttributes, ReactNode, RefObject } from "react";
import * as class_variance_authority_types0 from "class-variance-authority/types";
import * as react_jsx_runtime1 from "react/jsx-runtime";

//#region src/components/Input/OTPInput.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;
  onComplete?: (...args: any[]) => unknown;
  onActiveSlotChange?: (activeSlotIndex: number | null) => 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: react0.Context<RenderProps>;
declare const OTPInput: FC<OTPInputProps>;
type InputOTPProps = Omit<ComponentProps<typeof OTPInput>, 'children'>;
declare const inputSlotVariants: (props?: {
  size?: "sm" | "md" | "lg" | "xl";
} & class_variance_authority_types0.ClassProp) => string;
declare const InputOTP: FC<InputOTPProps>;
declare const InputOTPGroup: ({
  className,
  ...props
}: ComponentProps<"div">) => react_jsx_runtime1.JSX.Element;
type InputOTPSlotProps = Omit<ButtonProps, 'variant' | 'label'> & {
  index: number;
};
declare const InputOTPSlot: FC<InputOTPSlotProps>;
declare const InputOTPSeparator: FC<ComponentProps<'div'>>;
declare const InputIndicator: FC<ComponentProps<'div'> & {
  ref: RefObject<HTMLDivElement | null>;
}>;
//#endregion
export { InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, OTPInput, OTPInputContext, OTPInputProps, RenderProps, SlotProps, inputSlotVariants, usePasswordManagerBadge, usePrevious };
//# sourceMappingURL=OTPInput.d.ts.map