import * as jwtValidator from './jwt-validator';
import * as AWSLambda from 'aws-lambda';
export declare type PolicyBuilderFunction = (event: AWSLambda.CustomAuthorizerEvent, principalId: string, decodedToken?: Jwt) => AWSLambda.PolicyDocument | Promise<AWSLambda.PolicyDocument>;
export declare type ContextBuilderFunction = (event: AWSLambda.CustomAuthorizerEvent, principalId: string, decodedToken?: Jwt) => AWSLambda.AuthResponseContext | Promise<AWSLambda.AuthResponseContext> | void;
export declare type AuthChecksFunction = (event: AWSLambda.CustomAuthorizerEvent, principalId: string, decodedToken?: Jwt) => void | Promise<void>;
export declare type PrincipalId = string;
export declare type JwtPrincipalIdSelectorFunction = (event: AWSLambda.CustomAuthorizerEvent, decodedToken?: Jwt) => PrincipalId | Promise<PrincipalId>;
export interface AuthorizerConfig {
    policyBuilder?: PolicyBuilderFunction;
    contextBuilder?: ContextBuilderFunction;
    authChecks?: AuthChecksFunction;
    jwtPrincipalIdSelector?: JwtPrincipalIdSelectorFunction;
}
export declare type Jwt = jwtValidator.Jwt;
export declare class ApiGatewayAuthorizer {
    private policyBuilder;
    private contextBuilder;
    private authChecks;
    private basicAuthenticationEnabled;
    private jwtAuthenticationEnabled;
    private principalIdSelectorFunction;
    constructor(authorizerConfig?: AuthorizerConfig);
    private assertSourceIp;
    private authorize;
    private deny;
    private log;
    private determineAuthorization;
    handler(event: AWSLambda.CustomAuthorizerEvent, _context: AWSLambda.Context, callback: AWSLambda.Callback): Promise<void>;
}
