/**
 *  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
 *  with the License. A copy of the License is located at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
 *  OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
 *  and limitations under the License.
 */
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as ec2 from "aws-cdk-lib/aws-ec2";
import { Construct } from 'constructs';
export interface BuildLambdaFunctionProps {
    /**
     * Existing instance of Lambda Function object, Providing both this and lambdaFunctionProps will cause an error.
     *
     * @default - None
     */
    readonly existingLambdaObj?: lambda.Function;
    /**
     * User provided props to override the default props for the Lambda function.
     *
     * @default - Default props are used
     */
    readonly lambdaFunctionProps?: lambda.FunctionProps;
    /**
     * A VPC where the Lambda function will access internal resources
     *
     * @default - none
     */
    readonly vpc?: ec2.IVpc;
}
/**
 * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
 */
export declare function buildLambdaFunction(scope: Construct, props: BuildLambdaFunctionProps, constructId?: string): lambda.Function;
/**
 * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
 */
export declare function deployLambdaFunction(scope: Construct, lambdaFunctionProps: lambda.FunctionProps, constructId?: string, vpc?: ec2.IVpc): lambda.Function;
/**
 * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
 *
 * A wrapper above Function.addPermission that
 * prevents two different calls to addPermission using
 * the same construct id.
 */
export declare function addPermission(targetFunction: lambda.Function, name: string, permission: lambda.Permission): any;
/**
 * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
 */
export declare function getLambdaVpcSecurityGroupIds(lambdaFunction: lambda.Function): string[];
export interface LambdaProps {
    readonly existingLambdaObj?: lambda.Function;
    readonly lambdaFunctionProps?: lambda.FunctionProps;
}
export declare function CheckLambdaProps(propsObject: LambdaProps | any): void;
