/// <reference types="node" resolution-mode="require"/>
import { LambdaResource } from "../types/resourcesDiscovery.js";
import { exec } from "child_process";
import { IFramework } from "./iFrameworks.js";
import { LldConfigBase } from "../types/lldConfig.js";
export declare const execAsync: typeof exec.__promisify__;
interface TerraformState {
    resources: Array<{
        type: string;
        name: string;
        values: {
            function_name?: string;
            handler?: string;
            source_dir?: string;
            source_file?: string;
        };
        depends_on: Array<string>;
    }>;
}
/**
 * Support for Terraform framework
 */
export declare class TerraformFramework implements IFramework {
    /**
     * Framework name
     */
    get name(): string;
    /**
     * Can this class handle the current project
     * @returns
     */
    canHandle(): Promise<boolean>;
    /**
     * Get Lambda functions
     * @param config Configuration
     * @returns Lambda functions
     */
    getLambdas(config: LldConfigBase): Promise<LambdaResource[]>;
    protected extractLambdaInfo(state: TerraformState): {
        functionName: string;
        sourceDir?: string | undefined;
        sourceFilename?: string | undefined;
        handler: string;
    }[];
    protected readTerraformState(): Promise<TerraformState>;
    /**
     * Get the outDir from tsconfig.json
     */
    protected getTsConfigOutDir(): Promise<string | undefined>;
}
export declare const terraformFramework: TerraformFramework;
export {};
