import type { ActionDefinition } from '../types.js';
export interface IpBlockTarget {
    ipAddress: string;
    ipRange?: string;
    blockType: 'permanent' | 'temporary';
    expiresAt?: Date;
    reason: string;
}
export interface IpBlockResult {
    ipAddress: string;
    blocked: boolean;
    blockType: string;
    service: string;
    expiresAt?: Date;
    ruleId?: string;
    timestamp: Date;
}
export interface IpBlockRollbackData {
    blocks: IpBlockResult[];
    incidentId: string;
}
export interface IpBlockingService {
    /** Block IP at firewall level */
    blockAtFirewall(ip: string, rule: {
        permanent: boolean;
        expiresAt?: Date;
        reason: string;
    }): Promise<{
        success: boolean;
        ruleId: string;
    }>;
    /** Block IP at WAF level */
    blockAtWaf(ip: string, rule: {
        permanent: boolean;
        expiresAt?: Date;
        reason: string;
    }): Promise<{
        success: boolean;
        ruleId: string;
    }>;
    /** Block IP at CDN edge */
    blockAtCdn(ip: string, rule: {
        permanent: boolean;
        expiresAt?: Date;
        reason: string;
    }): Promise<{
        success: boolean;
        ruleId: string;
    }>;
    /** Block IP range (CIDR) */
    blockIpRange(cidr: string, rule: {
        permanent: boolean;
        expiresAt?: Date;
        reason: string;
    }): Promise<{
        success: boolean;
        ruleId: string;
        service: string;
    }>;
    /** Unblock an IP */
    unblockIp(ip: string, ruleId: string, service: string): Promise<boolean>;
    /** Check if IP is already blocked */
    isBlocked(ip: string): Promise<{
        blocked: boolean;
        service?: string;
        ruleId?: string;
    }>;
}
export declare function setIpBlockingService(service: IpBlockingService): void;
export declare function getIpBlockingService(): IpBlockingService;
/** Create a mock IP blocking service for testing only. */
export declare function createMockIpBlockingService(): IpBlockingService;
export declare const blockIpAction: ActionDefinition;
export default blockIpAction;
//# sourceMappingURL=block-ip.d.ts.map