import { Tool } from './Tool';
import { ToolCallContext } from '../models/ToolCallContext';
import { ToolCallResult } from '../models/ToolCallResult';
import { BaseToolGptParameters } from '../models/BaseToolGptParameters';
export interface DetectBrokenLinksToolCoreParameters {
    /**
     * (Optional) Whether to capture screenshots for dead links for visual verification.
     */
    captureScreenshots?: boolean;
}
export interface DetectBrokenLinksToolGptParameters extends BaseToolGptParameters, DetectBrokenLinksToolCoreParameters {
}
export declare class DetectBrokenLinksTool extends Tool<DetectBrokenLinksToolCoreParameters, DetectBrokenLinksToolGptParameters> {
    static readonly NAME = "detectBrokenLinks";
    constructor();
    call(context: ToolCallContext, parameters: DetectBrokenLinksToolCoreParameters): Promise<ToolCallResult>;
    callFromGpt(context: ToolCallContext, parameters: DetectBrokenLinksToolGptParameters): Promise<ToolCallResult>;
    /**
     * Returns an array of LinkInfo objects containing a URL and an array of all associated link texts.
     * Filters out invalid URLs.
     */
    private static getLinksForPage;
    /**
     * Checks all links concurrently and returns a map from the original URL to its traversal result.
     * If a link is a mailto, it is marked as skipped.
     */
    private static traverseLinks;
    /**
     * Traverses a single link, following redirects up to maxRedirects.
     * Returns a LinkTraversalResult that includes the full redirect chain.
     */
    private static traverseSingleLink;
    /**
     * Generates a JSON report of the link scan.
     * The report now includes a "linkTexts" field for each link.
     */
    private static generateJsonReport;
}
//# sourceMappingURL=DetectBrokenLinksTool.d.ts.map