import { ActionData, EventData, EventNotificationMode } from './actions';
import { RequestContext } from '../servers/requestContext';
import { QueryData } from './query';
import { IContainer } from '../di/resolvers';
import { IScopedComponent } from '../di/annotations';
import 'reflect-metadata';
export interface IActionMetadata {
    eventMode?: EventNotificationMode;
    action: string;
    scope?: string;
    schema: string;
    inputSchema?: string;
}
export declare abstract class AbstractHandler implements IScopedComponent {
    protected container: IContainer;
    private _requestContext;
    constructor(container: IContainer);
    requestContext: RequestContext;
    readonly metadata: IActionMetadata;
    readonly metadataActions: any;
}
export declare abstract class AbstractActionHandler extends AbstractHandler {
    action: ActionData;
}
export interface IEventMetadata {
    action: string;
    schema: string;
}
export declare abstract class AbstractEventHandler extends AbstractHandler {
    event: EventData;
}
export interface IQueryMetadata {
    action: string;
    scope?: string;
    schema: string;
    inputSchema?: string;
}
export declare abstract class AbstractQueryHandler extends AbstractHandler {
    query: QueryData;
}
