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 TerraformResource {
    type: string;
    name: string;
    address: string;
    values: {
        function_name?: string;
        handler?: string;
        source_dir?: string;
        source_file?: string;
        query?: {
            source_path?: string;
        };
    };
    depends_on: Array<string>;
}
/**
 * Support for Terraform framework
 */
export declare class TerraformFramework implements IFramework {
    /**
     * Framework name
     */
    get name(): string;
    /**
     * Name of the framework in logs
     */
    protected get logName(): string;
    /**
     * Get Terraform state CI command
     */
    protected get stateCommand(): string;
    /**
     *
     * @returns Get command to check if Terraform is installed
     */
    protected get checkInstalledCommand(): 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(resources: TerraformResource[]): {
        functionName: string;
        sourceDir?: string;
        sourceFilename?: string;
        handler: string;
    }[];
    protected readTerraformState(): Promise<TerraformResource[]>;
    /**
     * Get the outDir from tsconfig.json
     */
    protected getTsConfigOutDir(): Promise<string | undefined>;
}
export declare const terraformFramework: TerraformFramework;
export {};
