import { ConfigService } from '@nestjs/config';
import { IFirewallProvider, CreateFirewallConfig, FirewallCreationResult, FirewallDetails, FirewallRule, FirewallFilters } from '../interfaces/firewall-provider.interface';
import { ICredentialProvider } from '../interfaces/credential-provider.interface';
import { LabelService } from '../../common/services/label.service';
export declare class HetznerFirewallService implements IFirewallProvider {
    private readonly configService;
    private readonly credentialProvider;
    private readonly labelService;
    private readonly logger;
    private readonly basePath;
    private readonly timeout;
    constructor(configService: ConfigService, credentialProvider: ICredentialProvider, labelService: LabelService);
    /**
     * Create custom Axios instance with optimized configuration
     */
    private createAxiosInstance;
    /**
     * Create configured API client with proper headers
     */
    private createConfiguration;
    /**
     * Create FirewallsApi instance with custom Axios configuration
     */
    private createFirewallsApi;
    /**
     * Create FirewallActionsApi instance with custom Axios configuration
     */
    private createFirewallActionsApi;
    /**
     * Create ServersApi instance with custom Axios configuration
     */
    private createServersApi;
    createFirewall(config: CreateFirewallConfig): Promise<FirewallCreationResult>;
    updateFirewallRules(firewallId: string, rules: FirewallRule[]): Promise<void>;
    getFirewall(firewallId: string): Promise<FirewallDetails | null>;
    listFirewalls(filters?: FirewallFilters): Promise<FirewallDetails[]>;
    deleteFirewall(firewallId: string): Promise<void>;
    /**
     * Validate and transform firewall rules to Hetzner API format
     * Ensures required IP fields are present based on rule direction
     */
    private validateAndTransformRules;
    private sleep;
    getServerIdsByLabelSelector(labelSelector: string): Promise<string[]>;
    applyToServers(firewallId: string, serverIds: string[]): Promise<void>;
    removeFromServers(firewallId: string, serverIds: string[]): Promise<void>;
    updateFirewallLabels(firewallId: string, labels: Record<string, string>): Promise<void>;
}
