import 'reflect-metadata';
import { ActionMetadata, ActionHandlerMetadata, EventMetadata, ConsumeEventMetadata } from './actions';
import { QueryMetadata, QueryActionMetadata } from './query';
/**
 * Define an action handler class
 *
 * @export
 * @param {ActionHandlerMetadata} metadata
 * @returns
 */
export declare function ActionHandler(metadata: ActionHandlerMetadata): (target: Function) => void;
/**
 * Define an action handler
 *
 * @export
 * @param {ActionMetadata} [actionMetadata]
 * @returns
 */
export declare function Action(actionMetadata: ActionMetadata): (target: any, key: any) => void;
/**
 * Define a query handler class
 *
 * @export
 * @param {QueryMetadata} metadata
 * @returns
 */
export declare function QueryHandler(metadata: QueryMetadata): (target: Function) => void;
/**
 * Define a query handler
 *
 * @export
 * @param {QueryActionMetadata} [actionMetadata]
 * @returns
 */
export declare function Query(actionMetadata: QueryActionMetadata): (target: any, key: any) => void;
/**
 * Define an event handler class
 *
 * @export
 * @param {EventMetadata} [metadata]
 * @returns
 */
export declare function EventHandler(metadata?: EventMetadata): (target: Function) => void;
/**
 * Define an event handler
 *
 * @export
 * @param {ConsumeEventMetadata} [consumeMetadata]
 * @returns
 */
export declare function Consume(consumeMetadata?: ConsumeEventMetadata): (target: any, key: any) => void;
