import { EventEmitter } from '../../stencil-public-runtime';
export type FormControlElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;
export type FormElementTypes = 'input' | 'textarea' | 'select';
export declare class BsFormControl {
  bsElement: FormControlElement;
  /**
   * Determines what form control the component is.
   */
  as: FormElementTypes;
  /**
   * Specifies how much of the input is shown.
   */
  htmlSize?: number;
  /**
   * Used to change the size of inputs and labels respectively.
   */
  size?: 'sm' | 'lg';
  /**
   * The value of the input is not editable.
   */
  readOnly?: boolean;
  /**
   * Disables the input / select / textarea from edit or copy.
   */
  disabled?: boolean;
  /**
   * The value of the input/
   */
  value?: string | string[] | number;
  /**
   * This specifies what type of input is.
   * View MDN docs https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input
   */
  type?: string;
  /**
   * The element id.
   */
  controlId?: string;
  /**
   * Determines the input as valid
   */
  isValid?: boolean;
  /**
   * Determines the input as invalid
   */
  isInvalid?: boolean;
  /**
   * The name is the input/textarea/select element name.
   */
  name: string;
  /**
   * The placeholder text for the input/textarea.
   */
  placeholder?: string;
  /**
   * Used for making form control required.
   */
  required: boolean;
  /**
   * Used to determine the constraints for validation.
   */
  pattern: string;
  /**
   * The event is emitted on keyboard input.
   */
  bsInput: EventEmitter<InputEvent>;
  /**
   *  The event is emitted on focus loss.
   */
  bsBlur: EventEmitter<FocusEvent>;
  /**
   * The event is emitted on focus
   */
  bsFocus: EventEmitter<FocusEvent>;
  disconnectedCallback(): void;
  handleSlotChange(): void;
  componentDidLoad(): void;
  render(): any;
}
