/**
 * JSON Schema definition for the `fetch` tool.
 *
 * The fetch tool performs HTTP requests in batch, with per-URL extract modes,
 * timeout support, and token-efficient verbosity output.
 */
export declare const FETCH_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly urls: {
            readonly type: "array";
            readonly description: "URLs to fetch. Processed as a batch in one call.";
            readonly items: {
                readonly type: "object";
                readonly properties: {
                    readonly url: {
                        readonly type: "string";
                        readonly description: "The URL to fetch.";
                    };
                    readonly method: {
                        readonly type: "string";
                        readonly enum: readonly ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"];
                        readonly description: "HTTP method. Defaults to GET.";
                    };
                    readonly params: {
                        readonly type: "object";
                        readonly description: "Query parameters to append to the URL as a query string.";
                        readonly additionalProperties: {
                            readonly type: "string";
                        };
                    };
                    readonly headers: {
                        readonly type: "object";
                        readonly description: "HTTP headers to include in the request.";
                        readonly additionalProperties: {
                            readonly type: "string";
                        };
                    };
                    readonly body: {
                        readonly type: "string";
                        readonly description: "Request body string.";
                    };
                    readonly body_base64: {
                        readonly type: "string";
                        readonly description: "Base64-encoded request body. Decoded before sending. Takes precedence over body.";
                    };
                    readonly body_type: {
                        readonly type: "string";
                        readonly enum: readonly ["json", "form", "raw", "multipart"];
                        readonly description: string;
                    };
                    readonly body_data: {
                        readonly type: "object";
                        readonly description: string;
                        readonly additionalProperties: {
                            readonly type: "string";
                        };
                    };
                    readonly extract: {
                        readonly type: "string";
                        readonly enum: readonly ["raw", "text", "json", "markdown", "readable", "code_blocks", "links", "metadata", "structured", "tables", "pdf", "summary"];
                        readonly description: string;
                    };
                    readonly selectors: {
                        readonly type: "array";
                        readonly items: {
                            readonly type: "string";
                        };
                        readonly description: "CSS selectors for structured extraction mode. Each matched element text is returned as an array item.";
                    };
                    readonly timeout_ms: {
                        readonly type: "integer";
                        readonly minimum: 1;
                        readonly description: "Per-URL timeout in milliseconds. Default 30000.";
                    };
                    readonly max_content_length: {
                        readonly type: "integer";
                        readonly minimum: 1;
                        readonly description: "Maximum response body size in bytes. Responses exceeding this are truncated. Overrides global max_content_length.";
                    };
                    readonly retry_on_auth: {
                        readonly type: "boolean";
                        readonly description: "When a service is specified and a 401 is returned, attempt to refresh auth and retry once. Defaults to true when service is specified.";
                    };
                    readonly service: {
                        readonly type: "string";
                        readonly description: "Named service for automatic credential lookup from the service registry. Services are configured in .goodvibes/goodvibes/services.json. Use the registry tool or check .goodvibes/goodvibes/services.json to discover available service names.";
                    };
                    readonly auth: {
                        readonly type: "object";
                        readonly description: "Inline auth configuration. Applied directly without registry lookup.";
                        readonly properties: {
                            readonly type: {
                                readonly type: "string";
                                readonly enum: readonly ["bearer", "basic", "api-key"];
                                readonly description: "Auth type.";
                            };
                            readonly token: {
                                readonly type: "string";
                                readonly description: "Bearer token (for type bearer).";
                            };
                            readonly username: {
                                readonly type: "string";
                                readonly description: "Username (for type basic).";
                            };
                            readonly password: {
                                readonly type: "string";
                                readonly description: "Password (for type basic).";
                            };
                            readonly header: {
                                readonly type: "string";
                                readonly description: "Header name (for type api-key). Defaults to X-API-Key.";
                            };
                            readonly key: {
                                readonly type: "string";
                                readonly description: "API key value (for type api-key).";
                            };
                        };
                        readonly required: readonly ["type"];
                    };
                };
                readonly required: readonly ["url"];
            };
            readonly minItems: 1;
        };
        readonly extract: {
            readonly type: "string";
            readonly enum: readonly ["raw", "text", "json", "markdown", "readable", "code_blocks", "links", "metadata", "structured", "tables", "pdf", "summary"];
            readonly description: "Global extraction mode applied to all URLs unless overridden per-URL. Defaults to raw.";
        };
        readonly parallel: {
            readonly type: "boolean";
            readonly description: "Fetch URLs in parallel using Promise.all. Default true.";
        };
        readonly verbosity: {
            readonly type: "string";
            readonly enum: readonly ["count_only", "minimal", "standard", "verbose"];
            readonly description: string;
        };
        readonly cache_ttl_seconds: {
            readonly type: "integer";
            readonly minimum: 0;
            readonly description: "Cache GET responses by URL+params for this many seconds. 0 disables caching (default).";
        };
        readonly rate_limit_ms: {
            readonly type: "integer";
            readonly minimum: 0;
            readonly description: "Minimum delay in milliseconds between sequential requests. 0 disables rate limiting (default). Has no effect in parallel mode.";
        };
        readonly max_content_length: {
            readonly type: "integer";
            readonly minimum: 1;
            readonly description: "Global maximum response body size in bytes. Responses exceeding this are truncated. Can be overridden per-URL.";
        };
        readonly sanitize_mode: {
            readonly type: "string";
            readonly enum: readonly ["none", "safe-text", "strict"];
            readonly description: string;
        };
        readonly trusted_hosts: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly description: "Hostnames or glob patterns explicitly trusted. Trusted hosts may use sanitize_mode: none.";
        };
        readonly blocked_hosts: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly description: "Hostnames or glob patterns explicitly blocked. Denied pre-request regardless of other config.";
        };
    };
    readonly required: readonly ["urls"];
};
/** Extraction mode for a single URL or globally. */
export type FetchExtractMode = 'raw' | 'text' | 'json' | 'markdown' | 'readable' | 'code_blocks' | 'links' | 'metadata' | 'structured' | 'tables' | 'pdf' | 'summary';
/** Output verbosity format. */
export type FetchVerbosity = 'count_only' | 'minimal' | 'standard' | 'verbose';
/** Auth config for a single URL. */
export interface FetchAuthInput {
    type: 'bearer' | 'basic' | 'api-key';
    /** Bearer token (used with type 'bearer'). */
    token?: string;
    /** Username for basic auth (used with type 'basic'). */
    username?: string;
    /** Password for basic auth (used with type 'basic'). */
    password?: string;
    /** Header name for API key auth (used with type 'api-key'). Defaults to X-API-Key. */
    header?: string;
    /** API key value (used with type 'api-key'). */
    key?: string;
}
/** Input shape for a single URL entry. */
export interface FetchUrlInput {
    url: string;
    method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
    /** Query parameters appended as a query string to the URL. */
    params?: Record<string, string>;
    headers?: Record<string, string>;
    body?: string;
    /** Base64-encoded request body. Decoded before sending. Takes precedence over body. */
    body_base64?: string;
    body_type?: 'json' | 'form' | 'raw' | 'multipart';
    /** Key-value pairs used when body_type is 'form' or 'multipart'. */
    body_data?: Record<string, string>;
    extract?: FetchExtractMode;
    /** CSS selectors for structured extraction mode. */
    selectors?: string[];
    timeout_ms?: number;
    /** Maximum response body size in bytes. Overrides global max_content_length. */
    max_content_length?: number;
    /** When a service is specified and a 401 is returned, refresh auth and retry once. */
    retry_on_auth?: boolean;
    /** Named service for automatic credential lookup from the service registry. */
    service?: string;
    /** Inline auth configuration. Applied directly without registry lookup. */
    auth?: FetchAuthInput;
}
/**
 * Sanitization mode for response content.
 *
 * Re-exported from sanitizer.ts to avoid duplication. `FetchSanitizeMode`
 * is an alias for `SanitizeMode`.
 */
import type { SanitizeMode } from './sanitizer.js';
/** Sanitization mode alias — re-exported from sanitizer.ts to avoid duplication. */
export type FetchSanitizeMode = SanitizeMode;
/** Full input shape for the fetch tool. */
export interface FetchInput {
    urls: FetchUrlInput[];
    extract?: FetchExtractMode;
    parallel?: boolean;
    verbosity?: FetchVerbosity;
    /** Cache GET responses by URL+params for this many seconds. 0 = disabled (default). */
    cache_ttl_seconds?: number;
    /** Minimum delay in ms between sequential requests. 0 = disabled (default). */
    rate_limit_ms?: number;
    /** Global maximum response body size in bytes. */
    max_content_length?: number;
    /**
     * Response sanitization mode applied to all URL responses.
     * Defaults to `'safe-text'` when omitted (rollback-safe default for fetch sanitization).
     */
    sanitize_mode?: FetchSanitizeMode;
    /** Hostnames or glob patterns explicitly trusted. Trusted hosts may use sanitize_mode: none. */
    trusted_hosts?: string[];
    /** Hostnames or glob patterns explicitly blocked. Denied pre-request regardless of other config. */
    blocked_hosts?: string[];
}
//# sourceMappingURL=schema.d.ts.map