import { COMPONENT_COLOR_TYPE } from '../enum/constants';
/**
 * OTP input type - determines which characters are allowed
 */
export type VcOtpInputType = 'numeric' | 'alphanumeric';
/**
 * Props interface for VcOtpInput component
 */
export interface IVcOtpInputProps {
    /**
     * v-model binding value - the concatenated OTP string
     */
    modelValue?: string;
    /**
     * Number of OTP digits/characters
     * @default 6
     */
    length?: number;
    /**
     * Input character type - numeric only or alphanumeric
     * @default 'numeric'
     */
    type?: VcOtpInputType;
    /**
     * Disable all inputs
     * @default false
     */
    disabled?: boolean;
    /**
     * Make inputs read-only
     * @default false
     */
    readonly?: boolean;
    /**
     * Show error state styling
     * @default false
     */
    isError?: boolean;
    /**
     * Show loading state with overlay
     * @default false
     */
    loading?: boolean;
    /**
     * Color scheme for the component
     * @default 'active'
     */
    color?: COMPONENT_COLOR_TYPE;
    /**
     * Placeholder character for empty inputs
     * @default ''
     */
    placeholder?: string;
    /**
     * Separator character to display between groups of inputs
     * @default ''
     */
    separator?: string;
    /**
     * Show separator after every N digits (only when separator is set)
     * @default 3
     */
    separatorAfter?: number;
    /**
     * Automatically focus the first input on mount
     * @default false
     */
    autofocus?: boolean;
    /**
     * Autocomplete attribute for the inputs
     * @default 'one-time-code'
     */
    autocomplete?: string;
    /**
     * Unique identifier for the component
     */
    id?: string;
    /**
     * Name attribute for the inputs
     */
    name?: string;
    /**
     * Data test name for testing purposes
     * @default 'otp-input'
     */
    dataTestName?: string;
}
/**
 * Emits interface for VcOtpInput component
 */
export interface IVcOtpInputEmits {
    /**
     * Emitted when value changes
     */
    (e: 'update:modelValue', value: string): void;
    /**
     * Emitted when all digits are filled
     */
    (e: 'complete', value: string): void;
    /**
     * Emitted on blur if value changed
     */
    (e: 'change', value: string): void;
}
/**
 * Exposed methods interface for VcOtpInput component
 */
export interface IVcOtpInputExposed {
    /**
     * Focus the first empty input or first input
     */
    focus: () => void;
    /**
     * Blur all inputs
     */
    blur: () => void;
    /**
     * Clear all inputs
     */
    clear: () => void;
    /**
     * Returns whether the OTP is complete (all digits filled)
     */
    getValidState: () => boolean;
}
