import type { IApplicationRepository } from '../../ports/output/repositories/application-repository.interface.js';
import type { IFileSystemService } from '../../ports/output/services/file-system-service.interface.js';
import type { ICloudDeploymentEventBus } from '../../ports/output/services/cloud-deployment-event-bus.interface.js';
import type { ICloudDeploymentProviderRegistry } from '../../ports/output/services/cloud-deployment-provider-registry.interface.js';
import type { ILogger } from '../../ports/output/services/logger.interface.js';
import type { IOperationLogService } from '../../ports/output/services/operation-log-service.interface.js';
import type { IProjectBuildService } from '../../ports/output/services/project-build-service.interface.js';
import { CloudDeploymentProvider } from '../../../domain/generated/output.js';
export interface InitiateCloudDeploymentInput {
    applicationId: string;
    /** Optional override — falls back to Application.cloudDeploymentProvider. */
    provider?: CloudDeploymentProvider;
}
export interface InitiateCloudDeploymentResult {
    deploymentId: string;
    url: string;
}
export declare class InitiateCloudDeploymentUseCase {
    private readonly applicationRepo;
    private readonly registry;
    private readonly fs;
    private readonly eventBus;
    private readonly logger;
    private readonly opLog;
    private readonly buildService;
    constructor(applicationRepo: IApplicationRepository, registry: ICloudDeploymentProviderRegistry, fs: IFileSystemService, eventBus: ICloudDeploymentEventBus, logger: ILogger, opLog: IOperationLogService, buildService: IProjectBuildService);
    execute(input: InitiateCloudDeploymentInput): Promise<InitiateCloudDeploymentResult>;
    /**
     * Single funnel for provider-emitted log lines — translates the
     * level enum into the right opLog method. Kept private so callers
     * can't accidentally bypass the level→method mapping.
     */
    private appendInternalLog;
    /**
     * Walk the provider registry in declared order and return the first
     * provider that is both `enabled` AND `isConnected()`. Used to pick
     * a sensible default when a deploy is initiated on an application
     * that has no explicit `cloudDeploymentProvider` yet.
     *
     * Returns `null` if nothing is connected — the caller then throws
     * NoProviderSelectedError with a friendlier "connect something first"
     * message.
     */
    private findFirstConnectedProvider;
    private resolveBuildOutputDir;
    private publish;
}
//# sourceMappingURL=initiate-cloud-deployment.use-case.d.ts.map