// Type definitions for lambda-tester 3.6 // Project: https://github.com/vandium-io/lambda-tester#readme // Definitions by: Ivan Kerin // Hajo Aho-Mantila // Suntharesan Mohan // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 3.1 /* tslint:disable:no-unnecessary-generics */ import { Context, ClientContext, CognitoIdentity, Handler, Callback } from 'aws-lambda'; declare namespace lambdaTester { type HandlerEvent = T extends Handler ? TEvent : never; type HandlerResult = T extends Handler ? TResult : never; type HandlerError = T extends Handler ? NonNullable>['0']> : never; interface VerifierFn { (result: S, additional?: any): void | Promise; (result: S, additional?: any, done?: () => {}): void; } type Verifier = S extends HandlerError ? S extends string ? VerifierFn : S extends Error ? VerifierFn : never : VerifierFn; class LambdaTester { event(event: HandlerEvent): this; context(context: Context): this; clientContext(clientContext: ClientContext): this; identity(cognitoIdentityId: string, cognitoIdentityPoolId: string): this; timeout(seconds: number): this; xray(): this; expectSucceed(verifier: Verifier>): Promise; expectFail(verifier: Verifier>): Promise; expectResult(verifier: Verifier>): Promise; expectError(verifier: Verifier>): Promise; expectResolve(verifier: Verifier>): Promise; expectReject(verifier: Verifier>): Promise; } } declare function lambdaTester(handler: T): lambdaTester.LambdaTester; export = lambdaTester;