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';
import { ScalewayInstancesAdapter } from './scaleway-instances.adapter';
import { ScalewayIamAdapter } from './scaleway-iam.adapter';
export declare class ScalewayFirewallService implements IFirewallProvider {
    private readonly credentialProvider;
    private readonly labelService;
    private readonly instancesAdapter;
    private readonly iamAdapter;
    private readonly logger;
    constructor(credentialProvider: ICredentialProvider, labelService: LabelService, instancesAdapter: ScalewayInstancesAdapter, iamAdapter: ScalewayIamAdapter);
    private buildFirewallId;
    private parseFirewallId;
    private parseResourceId;
    /**
     * Convert Flui FirewallRule[] to Scaleway SetSecurityGroupRules rules[].
     * Scaleway requires one rule per CIDR — if sourceIps/destinationIps has multiple entries,
     * we emit one rule per CIDR.
     */
    private fluiRulesToScaleway;
    private mapProtocol;
    private parsePort;
    private scalewayRulesToFlui;
    /**
     * Inverse of fluiRulesToScaleway. Translates raw security-group rules from
     * the Scaleway API into Flui's normalized FirewallRule shape so callers
     * (BootstrapSeeder, Dashboard) see the actual ruleset instead of an empty
     * array. Rules with the same protocol/port/direction/action are merged into
     * a single Flui rule with the union of CIDRs.
     */
    private scalewayRuleToFlui;
    private mergeScalewayRules;
    private tagsToLabels;
    private labelsToTags;
    createFirewall(config: CreateFirewallConfig): Promise<FirewallCreationResult>;
    getFirewall(firewallId: string): Promise<FirewallDetails | null>;
    listFirewalls(filters?: FirewallFilters): Promise<FirewallDetails[]>;
    updateFirewallRules(firewallId: string, rules: FirewallRule[]): Promise<void>;
    deleteFirewall(firewallId: string): Promise<void>;
    applyToServers(firewallId: string, serverIds: string[]): Promise<void>;
    removeFromServers(firewallId: string, serverIds: string[]): Promise<void>;
}
