import { Expression } from '../../../../common';
import { SystemEvent } from '../../event';
export declare type SystemEventMetadataRecord = {
    handler: SystemEventHandlerRef;
    events: SystemEvent | SystemEvent[];
    filterExpression: Expression;
};
/**
 * ** Type for one Handler interface.
 */
export declare type SystemEventHandlerRef = (payload: any, eventId?: SystemEvent) => Promise<any>;
/**
 * ** Event Handler record in registry.
 */
export declare type SystemEventHandlerRecord = {
    /**
     * ** Reference to Handler instance.
     */
    handlerRef: SystemEventHandlerRef;
    /**
     * ** Reference to the object where Handler belongs, for context purpose.
     */
    handlerClassInstance?: Record<any, any>;
    /**
     * ** Expression that filters if some Event should be dispatch to the Handler reference or not.
     */
    handlerFilterExpression?: Expression;
};
export declare type SystemEventHandlerFindByRef = {
    active: boolean;
    handlerRecord: SystemEventHandlerRecord;
    handlerRef: SystemEventHandlerRef;
};
export declare type SystemEventMetadataRecords = SystemEventMetadataRecord[];
