interface Request {
    headers: Record<string, string>;
    connection: {
        remoteAddress: string;
    };
    url?: string;
}
interface CheckResponse {
    success: boolean;
    [key: string]: any;
}
export declare class BotBlocker {
    private readonly apiKey;
    /**
     * Constructor for the BotBlocker class that initializes with an API key.
     * @param apiKey - The API key necessary to access the remote BotBlocker service.
     */
    constructor(apiKey: string);
    /**
     * Extracts the IP address and User-Agent from an HTTP request object.
     * @param req - The HTTP request object from which to extract the IP and User-Agent.
     * @returns An object containing the IP address and User-Agent string.
     */
    extractInfoFromReq(req: Request): {
        ip: string;
        userAgent: string;
        url: string;
    };
    /**
     * Processes an HTTP request object to check if it should be blocked based on IP and User-Agent.
     * @param req - The request object to be checked.
     * @returns A promise that resolves to the blocking decision.
     */
    checkReq(req: Request): Promise<CheckResponse>;
    /**
     * Checks if the IP and User-Agent should be blocked by consulting the BotBlocker API.
     * Throws an error if the IP address is invalid.
     * @param ip - The IP address to check.
     * @param userAgent - The User-Agent string to check.
     * @param url - The URL string to check.
     * @returns A promise that resolves to the API response.
     */
    check(ip: string, userAgent: string, url: string): Promise<CheckResponse>;
    /**
     * Makes an HTTP GET request and returns the JSON-parsed response.
     * @param options - The options for the HTTP request.
     * @returns A promise that resolves to the parsed JSON response or rejects with an error.
     */
    private httpGet;
    /**
     * Validates if an IP address is valid.
     * @param ip - The IP address to validate.
     * @returns True if the IP address is valid, false otherwise.
     */
    private isValidIp;
}
export {};
