import { ALBEvent, ALBHandler, APIGatewayProxyEvent, APIGatewayProxyHandler, CloudFormationCustomResourceEvent, CloudFormationCustomResourceHandler, CloudFrontRequestHandler, CloudFrontResponseHandler, CloudWatchLogsEvent, CloudWatchLogsHandler, CloudWatchLogsLogEvent, CodePipelineCloudWatchActionHandler, CodePipelineCloudWatchHandler, CodePipelineCloudWatchPipelineHandler, CodePipelineCloudWatchStageHandler, CognitoUserPoolEvent, CognitoUserPoolTriggerHandler, Context, CustomAuthorizerEvent, CustomAuthorizerHandler, DynamoDBStreamEvent, DynamoDBStreamHandler, FirehoseTransformationHandler, KinesisStreamHandler, LexHandler, S3BatchEvent, S3BatchHandler, S3Event, S3Handler, ScheduledEvent, ScheduledHandler, SNSEvent, SNSHandler, SQSHandler } from "aws-lambda";
import { Format } from "../format/Format";
import { Logger } from "../logger";
export interface BaseHandlerArguments {
    inputFormat?: Format;
    outputFormat?: Format;
    logger?: Logger;
}
type Event = ALBEvent | APIGatewayProxyEvent | CloudFormationCustomResourceEvent | CloudWatchLogsEvent | CloudWatchLogsLogEvent | CognitoUserPoolEvent | CustomAuthorizerEvent | DynamoDBStreamEvent | S3BatchEvent | S3Event | SNSEvent | ScheduledEvent;
type Handler = ALBHandler | APIGatewayProxyHandler | CloudFormationCustomResourceHandler | CloudFrontRequestHandler | CloudFrontResponseHandler | CloudWatchLogsHandler | CodePipelineCloudWatchActionHandler | CodePipelineCloudWatchHandler | CodePipelineCloudWatchPipelineHandler | CodePipelineCloudWatchStageHandler | CognitoUserPoolTriggerHandler | CustomAuthorizerHandler | DynamoDBStreamHandler | FirehoseTransformationHandler | KinesisStreamHandler | LexHandler | S3BatchHandler | S3Handler | SNSHandler | SQSHandler | ScheduledHandler;
export declare abstract class BaseHandler {
    protected inputFormat: Format;
    protected outputFormat: Format;
    protected constructor(args?: BaseHandlerArguments);
    decorator(_target: unknown, _propertyName: string, propertyDescriptor: PropertyDescriptor): PropertyDescriptor;
    wrapper(method: (input: unknown, context: Context) => unknown): Handler;
    protected before(event: Event, context: Context): [unknown, Context];
    protected after(output: unknown): unknown;
    protected onException(exception: Error): unknown;
    protected formatInput(input: Event): unknown;
    protected formatOutput(output: unknown): unknown;
}
export {};
