import { EventEmitter } from '../../stencil-public-runtime';
/**
 * This component has been built for abstracting simple CSS transitions with
 * dynamically rendered elements (e.g. `v-if` in Vue). This is primarily used
 * internally within BSDS. Some implementation notes:
 * - By default the transition plays on mount.
 * - The immediate child element of this component will get the class and/or
 *   attribute added to it.
 * - If desired, leave transition may be played prior to removing from the DOM
 *   by setting the `leaveTrigger` prop to `true` and then wait for `leaveend`
 *   to emit before removing.
 * - Optionally, `enterControlled` may be set to `true` to prevent the enter
 *   on mount. Useful when the enter transition needs to be triggered manually
 *   (e.g. `v-show` in Vue). Set `enterTrigger` to `true` when ready to play.
 * - To function properly, there should only be one container child
 *   element of this component.
 */
export declare class BsTransition {
  /** Transition class name to be added when entering. */
  enterClass: string;
  /** Transition attribute to be added when entering. */
  enterAttribute: string;
  /** Duration of the enter transition in milliseconds. */
  enterDuration: number;
  /** Transition class name to be added when leaving. */
  leaveClass: string;
  /** Transition attribute to be added when leaving. */
  leaveAttribute: string;
  /**
   * Duration of the leave transition. If not given, will default to
   * `enterDuration` in milliseconds.
   */
  leaveDuration: number;
  /**
   * Whether or not the enter transition should be controlled manually. Useful
   * when the enter transition needs to be triggered manually (e.g. \`v-show\`
   * in Vue).
   */
  enterControlled: boolean;
  /**
   * Only used when \`enterControlled\` is \`true\`. When ready to play the
   * enter transition, set this to \`true\`.
   */
  enterTrigger: boolean;
  /**
   * If desired, leave transition needs to be triggered manually. Set this to
   * \`true\` when ready to fire leave transition.
   */
  leaveTrigger: boolean;
  /**
   * Emits when the enter transition has ended. The element should be fully
   * rendered by now and may be manipulated (e.g. setting focus).
   */
  enterend: EventEmitter;
  /**
   * Only emits when \`leaveTrigger\` is toggled and the leave transition has
   * ended. The element can be fully removed from the DOM now.
   */
  leaveend: EventEmitter;
  hostEl: HTMLElement;
  private _childEl;
  private timers;
  /** Lazy-load the child element if it's available. */
  get childEl(): HTMLElement;
  componentDidLoad(): void;
  handleEnterTrigger(newValue: boolean): void;
  handleLeaveTrigger(newValue: boolean): void;
  handleEnterTransition(): void;
  /** Adds the "enter" class and/or attribute */
  addEnterClassAndAttribute(): void;
  handleLeaveTransition(): void;
  /** Adds the "leave" class and/or attribute */
  addLeaveClassAndAttribute(): void;
  /** Removes the "enter" class and/or attribute */
  removeEnterClassAndAttribute(): void;
  disconnectedCallback(): void;
  render(): any;
}
