export interface IFirewallProvider {
    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>;
}
export interface FirewallRule {
    id?: string;
    description: string;
    direction: 'in' | 'out';
    protocol: 'tcp' | 'udp' | 'icmp';
    port?: string;
    sourceIps?: string[];
    destinationIps?: string[];
}
export interface CreateFirewallConfig {
    name: string;
    labels: Array<{
        key: string;
        value: string;
    }>;
    rules: FirewallRule[];
    applyToServerIds?: string[];
    applyToLabelSelector?: string;
}
export interface FirewallCreationResult {
    firewallId: string;
    appliedToServerIds?: string[];
}
export interface FirewallDetails {
    id: string;
    name: string;
    rules: FirewallRule[];
    labels: Record<string, string>;
    appliedTo: Array<{
        serverId: string;
        serverName?: string;
    }>;
}
export interface FirewallFilters {
    clusterId?: string;
    name?: string;
    labelSelector?: string;
}
