import { ComponentInterface } from '../../stencil-public-runtime';
import { ElementAppenderShowConfig } from '../../helpers/ui/element-appender';
declare type ShowConfigFactoryType = (target?: ComponentInterface) => ElementAppenderShowConfig;
/**
 * - click: means the dropdown show/hide by click, it also listen global area click. example: VegaPopover
 * - hover: means the dropdown show/hide by hover, it also listen global area click. example: VegaDropdown VegaAppHeaderButton
 * - none: means element appender not listens any event, you should control the dropdown show/hide in component. example: VegaDatePicker
 * - custom: means element appender only listen the outer area click. when clicked the dropdown will hide. example: VegaTimePicker
 */
declare type TriggerType = 'click' | 'hover' | 'none' | 'custom';
declare type GetTriggerType = (target?: ComponentInterface) => TriggerType;
/**
 * It creates a proxy for the `ElementAppender` class and attaches it to the component class as a
 * property
 *
 * @param {ShowConfigFactoryType} showConfigFactory - A function that returns a ShowConfig object.
 * @param {GetTriggerType} [getTrigger] - The name of the property that will trigger the dropdown to
 * show/hide.
 * @param {string} [isDropdownShowName] - The name of the property that will be used to determine if
 * the dropdown is shown or not.
 * @returns {(target: ComponentInterface, key: string) => void} A function that takes a component class and a string.
 */
export declare function InjectElementAppender(showConfigFactory: ShowConfigFactoryType, getTrigger: GetTriggerType, isDropdownShowName: string): (target: ComponentInterface, key: string) => void;
export {};
