import { IMaskedInputComponent, IMaskOptions } from '@boldpenguin/sdk-types';
import { EventEmitter } from '../../stencil-public-runtime';
import { MaskedInputService } from '../../services/masked-input.service';
export declare class BpSdkMaskedInput implements IMaskedInputComponent {
    /**
     * Answer id
     */
    answerId: string;
    /**
     * Autocomplete attribute value for input
     */
    autoComplete: string;
    /**
     * Aria label id's that describes input for screen readers
     */
    labelId: string;
    /**
     * Error messages
     */
    errors: any[];
    /**
     * question code
     */
    code: string;
    /**
     * Error message
     */
    errorText: string;
    /**
     * minimum value
     */
    min: number;
    /**
     * minimum date value
     */
    minDate: string;
    /**
     * maximum value
     */
    max: number;
    /**
     * maximum date value
     */
    maxDate: string;
    /**
     * Regex pattern to match
     */
    pattern: string;
    /**
     * Mask pattern to be applied to the input in visible mode.
     *
     * See [the documentation](https://github.com/RobinHerbots/Inputmask)
     * of the InputMask package for valid mask patterns.
     */
    mask: string;
    /**
     * Options for input mask. Supported options are:
     *
     * placeholder (string) - This character will be used in the mask and input placeholder
     * to represent where user input is expected (i.e. non-separator characters). For example,
     * a date mask of `dd/mm/yyyy` with `#` as a placeholder character will display as `##/##/####`.
     *
     * prefix (string) - This text will be displayed at the start of the mask and input placeholder.
     * For example, for a mask of `0.00`, a prefix of `$`, and a placeholder of `#`,
     * the mask displayed in the input will be `$#.##`.
     */
    options: IMaskOptions;
    /**
     * When true, the input can be toggled between text and password modes.
     *
     * In text mode, the input displays the text entered by the user as is.
     * In password mode, the input obfuscates the text value (usually with `*` or `•`).
     */
    canHide: boolean;
    /**
     * When this prop is true, and a valid answer for this question has been synced to the backend,
     * if the user edits the value without providing a valid answer, the original persisted answer
     * will be restored.
     *
     * Additionally, the formatting mask will be temporarily disabled until the user makes edits to
     * the answer field. This allows an obfuscated form of the answer (i.e. 12345 -> ***45) to be
     * provided by the backend without conflicting with the requirements of the mask pattern.
     */
    useComplexMaskLogic: boolean;
    /**
     * Determines if input is required
     */
    required: boolean;
    /**
     * Current value
     */
    value: string;
    /**
     * Placeholder to display
     */
    placeholder: string;
    /**
     * Is touched
     */
    touched: boolean;
    /**
     * Is pristine
     */
    pristine: boolean;
    /**
     * Is answer in complete state
     */
    isCompleted: boolean;
    /**
     * When true, the field will be readonly. It will display only the label and value as plain text.
     */
    isReadOnly: boolean;
    /**
     * field type
     */
    fieldType: string;
    /**
     * Question id
     */
    questionId: string;
    /**
     * Label to use
     */
    label: string;
    /**
     *  Labels that describe group
     */
    labelledBy: string;
    /**
     * Help text
     */
    helpText: string;
    /**
     * Specifically how the question was answered (ie. "ACORD 126")
     */
    answeredBySource: string | undefined;
    _labelledBy: string;
    _placeholder: string;
    _touched: boolean;
    isHidden: boolean;
    useExternal: boolean;
    hasFocus: boolean;
    valueUpdate: EventEmitter<string>;
    el: HTMLElement;
    shouldUpdateMask: boolean;
    shouldUpdatePlaceholder: boolean;
    completedValue: string;
    inputValue: string;
    ariaValue: string;
    service: MaskedInputService;
    private dateFormatRegex;
    private inputMaskClassName;
    onTouchedChange(): void;
    onIsCompletedChange(): void;
    onValueChange(value: string): void;
    onAnswerIdChange(): void;
    onCanHideChange(canHide: boolean): void;
    onPlaceholderChange(): void;
    onMaskChange(): void;
    onOptionsChange(options: IMaskOptions, oldOptions?: IMaskOptions): void;
    onUseComplexMaskLogicChange(): void;
    onLabelIdChange(labelId: string): void;
    onLabelledByChange(labelledBy: string): void;
    resetState(): void;
    connectedCallback(): void;
    componentWillLoad(): void;
    componentWillUpdate(): void;
    componentDidRender(): void;
    disconnectedCallback(): void;
    render(): any[];
    renderExternal(): any;
    renderInternal(): any;
    renderReadOnlyElement(value: string): any;
    renderPasswordInput(): any;
    renderTextInput(): any;
    /**
     * This input is intended to receive autocomplete data from a browser and forward it to the visible inputs.
     */
    renderAutocompleteInput(): any;
    renderInput(): any[];
    renderButton(): any;
    onFocus: () => void;
    onToggleVisibilityButton: () => void;
    onInput: (event: InputEvent) => void;
    onAutocompleteInput: (event: InputEvent) => void;
    onBlur: () => void;
    private updateAnswer;
    private hasValue;
    private serializeDateValue;
    private updateLabelledBy;
    /**
     * Attaches an instance of InputMask to whichever input element is currently rendered.
     * This should be called after the input is rendered as the InputMask library attaches
     * to an element in the DOM.
     */
    private addMaskToInput;
    private removeMaskFromInput;
    private getMaskForComplexLogic;
    private getValueForComplexLogic;
    private createCustomMaskInstance;
    private getInputCssClassSelector;
}
