/// <reference types="koa-router" />
import 'reflect-metadata';
import * as Router from 'koa-router';
import { Constructor } from './injection';
export declare const INPUT = "INPUT";
export declare const INPUT_METADATA_KEY: symbol;
/**
 * InputProvider class decorator will register the middlewares declared in
 * the provider to provide inputs when serving traffic.
 */
export declare function InputProvider(options?: {
    tags?: string[];
    meta?: object;
}): (constructor: Constructor) => void;
export declare function InputGenerator(options?: {}): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
export interface InputGeneratorMetadata {
    provider: string;
    name: string;
}
export interface RawInput {
    type: string;
    data: any;
}
export interface InputProvider {
    $generateInputs(ctx: Router.IRouterContext): RawInput[];
}
