import { INetworkProvider, CreateVNetConfig, VNetCreationResult, VNetDetails, VNetDeletionResult, AddSubnetConfig, AddSubnetResult, DeleteSubnetConfig, AddRouteConfig, DeleteRouteConfig, AttachServerToVNetConfig, DetachServerFromVNetConfig, ServerVNetAttachmentResult, ChangeIpRangeConfig } from '../interfaces/network-provider.interface';
export declare class HetznerNetworkService implements INetworkProvider {
    private readonly apiToken;
    private readonly logger;
    private readonly networksApi;
    private readonly networkActionsApi;
    constructor(apiToken: string);
    /**
     * Convert label array to Hetzner labels object
     */
    private labelsToRecord;
    /**
     * Convert Hetzner labels object to label array
     */
    private recordToLabels;
    /**
     * Create a new VNet (private network)
     */
    createVNet(config: CreateVNetConfig): Promise<VNetCreationResult>;
    /**
     * Delete a VNet
     */
    deleteVNet(vnetId: string): Promise<VNetDeletionResult>;
    /**
     * Get VNet details
     */
    getVNet(vnetId: string): Promise<VNetDetails | null>;
    /**
     * List all VNets
     */
    listVNets(): Promise<VNetDetails[]>;
    /**
     * Add subnet to VNet
     */
    addSubnet(config: AddSubnetConfig): Promise<AddSubnetResult>;
    private isFluiManagedVNet;
    private findExistingSubnet;
    /**
     * Delete subnet from VNet
     */
    deleteSubnet(config: DeleteSubnetConfig): Promise<{
        actionId?: number;
    }>;
    /**
     * Add route to VNet
     */
    addRoute(config: AddRouteConfig): Promise<{
        actionId?: number;
    }>;
    /**
     * Delete route from VNet
     */
    deleteRoute(config: DeleteRouteConfig): Promise<{
        actionId?: number;
    }>;
    /**
     * Change IP range of VNet (can only extend, not shrink)
     */
    changeIpRange(config: ChangeIpRangeConfig): Promise<{
        actionId?: number;
    }>;
    /**
     * Attach server to VNet
     * Note: This method is a placeholder - actual server attachment is done via ServerActionsApi
     * This should be implemented in HetznerProviderService which has access to ServerActionsApi
     */
    attachServerToVNet(config: AttachServerToVNetConfig): Promise<ServerVNetAttachmentResult>;
    /**
     * Detach server from VNet
     * Note: This method is a placeholder - actual server detachment is done via ServerActionsApi
     * This should be implemented in HetznerProviderService which has access to ServerActionsApi
     */
    detachServerFromVNet(config: DetachServerFromVNetConfig): Promise<{
        actionId?: number;
    }>;
    /**
     * Enable deletion protection for VNet
     */
    enableVNetProtection(vnetId: string): Promise<void>;
    /**
     * Disable deletion protection for VNet
     */
    disableVNetProtection(vnetId: string): Promise<void>;
}
