import { Lambda } from "@aws-sdk/client-lambda";
import { AsyncAction, JobInfo, Runner, RunnerParameters } from "@webda/async";
import { ServiceParameters } from "@webda/core";
export interface LambdaAsyncJobEvent {
    eventSource: string;
    jobInfo: JobInfo;
}
declare const LambdaCallerParameters_base: {
    new (...args: any[]): {
        endpoint?: string;
        credentials?: {
            accessKeyId: string;
            secretAccessKey: string;
            sessionToken?: string;
        };
        region?: string;
        type: string;
        url?: string;
        openapi?: import("@webda/core/lib/router").OpenAPIWebdaDefinition;
    };
} & typeof RunnerParameters;
/**
 *
 */
declare class LambdaCallerParameters extends LambdaCallerParameters_base {
    /**
     * Default ARN to use
     */
    arn: string;
}
export interface LambdaCommandEvent {
    command: "launch";
    service: string;
    method: string;
    args?: string[];
}
/**
 * A service that calls a Lambda function and retrieve its result
 *
 * @WebdaModda
 */
declare class LambdaCaller<T extends LambdaCallerParameters = LambdaCallerParameters> extends Runner<T> {
    /**
     * @inheritdoc
     */
    launchAction(action: AsyncAction, info: JobInfo): Promise<any>;
    /**
     * Lambda client
     */
    protected client: Lambda;
    /**
     * @inheritdoc
     */
    loadParameters(params: any): ServiceParameters;
    /**
     * @inheritdoc
     */
    resolve(): this;
    /**
     * Execute the Lambda function
     * @param params for the call
     * @param async wait for Lambda result
     * @param arn function to call default to the one from configuration
     * @returns
     */
    execute(params?: any, async?: boolean, arn?: string): Promise<any>;
}
export { LambdaCaller };
