import { CloudProvider } from '../../../../src/modules/providers/enums/cloud-provider.enum';
import { ProviderFactory } from '../../../../src/modules/providers/core/factories/provider.factory';
import { SubnetType } from '../../../../src/modules/infrastructure/vnets/entities/vnet-subnet.entity';
import { CliVnetRepository } from '../repositories/cli-vnet.repository';
export interface EnvVnetSpec {
    provider: CloudProvider;
    name: string;
    ipRange?: string;
    subnetIpRange?: string;
    /** Hetzner: networkZone (eu-central). Scaleway: regional, ignored. */
    networkZone?: string;
    /** Scaleway: region (fr-par, nl-ams, pl-waw). Hetzner: ignored. */
    region?: string;
}
export interface EnvVnetInfo {
    vnetId: string;
    vnetProviderResourceId: string;
    vnetName: string;
    vnetIpRange: string;
    subnetId: string;
    subnetProviderResourceId: string;
    subnetIpRange: string;
    subnetType: SubnetType;
    networkZone: string;
}
export declare class VnetProvisioningService {
    private readonly providerFactory;
    private readonly vnetRepo;
    private readonly logger;
    constructor(providerFactory: ProviderFactory, vnetRepo: CliVnetRepository);
    ensureEnvVnet(spec: EnvVnetSpec): Promise<EnvVnetInfo>;
    private createHetznerVnet;
    private createScalewayVnet;
    destroyEnvVnet(): Promise<void>;
    hetznerNetworkZoneFor(region: string): string;
    private toInfo;
}
