import { AfterActionCallback, BeforeActionCallback, ConditionHook } from '../index';
import { PolyController } from './poly-controller';
import { PolyAction, PolyActionName } from './action-manager';
export interface PolyTriggerMap {
    trigger: HTMLElement;
    action: PolyActionName;
    payload?: string;
}
export interface PolyConfig {
    cooldown: number;
    deactivateAllOnOutsideAction: boolean;
    listenToKeydown: boolean;
    items: NodeListOf<HTMLElement> | HTMLElement[];
    isTrigger: (element: HTMLElement) => boolean;
    mapTriggerToAction: (trigger: HTMLElement) => PolyTriggerMap | false;
    getItemId: (item: HTMLElement) => string | false;
    conditionActivate: ConditionHook<PolyAction, PolyController>;
    conditionDeactivate: ConditionHook<PolyAction, PolyController>;
    conditionToggle: ConditionHook<PolyAction, PolyController>;
    conditionActivateAll: ConditionHook<PolyAction, PolyController>;
    conditionDeactivateAll: ConditionHook<PolyAction, PolyController>;
    conditionToggleAll: ConditionHook<PolyAction, PolyController>;
    beforeDeactivate: BeforeActionCallback<PolyAction, PolyController>;
    afterDeactivate: AfterActionCallback<PolyAction, PolyController>;
    itemIsActive: (item: HTMLElement, context: PolyController) => boolean;
    activateItem: (item: HTMLElement, context: PolyController) => void;
    deactivateItem: (item: HTMLElement, context: PolyController) => void;
    beforeActivate: BeforeActionCallback<PolyAction, PolyController>;
    afterActivate: AfterActionCallback<PolyAction, PolyController>;
    beforeAction: BeforeActionCallback<PolyAction, PolyController>;
    afterAction: AfterActionCallback<PolyAction, PolyController>;
    onOutsideAction: (context: PolyController) => void;
    onKeydown: (event: KeyboardEvent, context: PolyController) => void;
}
export declare const DEFAULT_CONFIG: PolyConfig;
