import type { CloudConfig, CloudDriver, EnvironmentType } from '@ts-cloud/core';
import type { ECSClient, LambdaClient } from '../aws';
import type { RuntimeDiscoveryAdapter, RuntimeDiscoveryContext, RuntimeInventory } from './model';
interface EcsReader extends Pick<ECSClient, 'listClusters' | 'listServices' | 'describeServices' | 'listTasks' | 'describeTasks'> {
    describeTaskDefinition?: ECSClient['describeTaskDefinition'];
}
interface LambdaReader extends Pick<LambdaClient, 'listFunctions'> {
}
export interface RuntimeServiceDependencies {
    driver?: CloudDriver;
    ecs?: EcsReader;
    lambda?: LambdaReader;
}
export declare class EcsRuntimeAdapter implements RuntimeDiscoveryAdapter {
    private readonly client;
    private readonly prefix;
    readonly id = "ecs:aws";
    readonly provider: 'ecs';
    constructor(client: EcsReader, prefix: string);
    discover(context: RuntimeDiscoveryContext): Promise<import('./model').RuntimeWorkload[]>;
}
export declare class LambdaRuntimeAdapter implements RuntimeDiscoveryAdapter {
    private readonly client;
    private readonly prefix;
    readonly id = "lambda:aws";
    readonly provider: 'lambda';
    constructor(client: LambdaReader, prefix: string);
    discover(context: RuntimeDiscoveryContext): Promise<import('./model').RuntimeWorkload[]>;
}
export declare function createRuntimeAdapters(config: CloudConfig, environment: EnvironmentType, dependencies?: RuntimeServiceDependencies): Promise<RuntimeDiscoveryAdapter[]>;
export declare function resolveRuntimeInventory(config: CloudConfig, environment: EnvironmentType, dependencies?: RuntimeServiceDependencies): Promise<RuntimeInventory>;
export {};
