export { B as BrowserClient, H as HttpClient, a as HttpMethod, b as HttpRequestOptions, c as HttpResponse, J as JobDetails, d as JobDetailsResult, e as JobListing, f as JobLocation, L as ListingsResult, M as MetadataMap, g as MetadataValue, P as PaginationCursor, R as RenderPageOptions, h as RenderedPage, S as ScrapeOutcome, i as ScraperCategory, j as ScraperContext, k as ScraperLogger, l as ScraperProvider, m as ScraperProviderManifest, n as ScraperRuntimeConfig, o as ScraperTransport, V as ValidationResult, p as defineProvider } from './provider-Ce-KxEDG.js'; /** * @jobo/scraper-sdk — Error Types * * Typed error classes that scrapers should throw to communicate * specific failure modes to the platform. The platform uses the error * type to decide retry strategy, alerting, and reporting. */ /** * Base error class for all scraper errors. * Extends the native `Error` with a machine-readable `code` field. */ declare class ScraperError extends Error { /** Machine-readable error code for programmatic handling. */ readonly code: string; /** Whether the platform should retry this operation. */ readonly retryable: boolean; constructor(message: string, code: string, retryable?: boolean); } /** * Thrown when an HTTP request fails due to a network-level issue * (DNS resolution, connection refused, TLS handshake, etc.). * * Always retryable — the platform will rotate proxies and retry. */ declare class NetworkError extends ScraperError { /** The URL that failed. */ readonly url: string; constructor(message: string, url: string); } /** * Thrown when the ATS returns an HTTP error status (4xx / 5xx). * * - 429 (Too Many Requests) and 5xx are retryable. * - 401/403 are retryable (proxy rotation may help). * - 404 is not retryable. * - Other 4xx are not retryable. */ declare class HttpError extends ScraperError { /** HTTP status code. */ readonly status: number; /** The URL that returned the error. */ readonly url: string; /** Response body, if available. */ readonly responseBody?: string; constructor(message: string, status: number, url: string, responseBody?: string); } /** * Thrown when the ATS rate-limits the scraper (HTTP 429 or equivalent). * * Always retryable. The platform will back off and retry with a different proxy. * If `retryAfterMs` is provided, the platform will wait at least that long. */ declare class RateLimitError extends ScraperError { /** Suggested wait time in milliseconds before retrying. */ readonly retryAfterMs?: number; /** The URL that was rate-limited. */ readonly url: string; constructor(message: string, url: string, retryAfterMs?: number); } /** * Thrown when the scraper cannot parse the response from the ATS. * * This indicates the ATS changed its HTML structure or API schema. * Not retryable — requires a scraper code update. */ declare class ParseError extends ScraperError { /** The selector or JSON path that failed to match. */ readonly selector?: string; /** A snippet of the content that could not be parsed. */ readonly contentSnippet?: string; constructor(message: string, selector?: string, contentSnippet?: string); } /** * Thrown when the ATS requires authentication (login wall, CAPTCHA, etc.) * and the scraper cannot proceed. * * Not retryable without human intervention or credential provisioning. */ declare class AuthenticationError extends ScraperError { /** The type of authentication barrier encountered. */ readonly barrier: 'login' | 'captcha' | 'mfa' | 'cookie_consent' | 'unknown'; constructor(message: string, barrier?: AuthenticationError['barrier']); } /** * Thrown when a page or job posting is detected as expired, removed, or unavailable. * * Not retryable — the content no longer exists. */ declare class ExpiredError extends ScraperError { /** The external ID of the expired job, if known. */ readonly externalId?: string; constructor(message: string, externalId?: string); } export { AuthenticationError, ExpiredError, HttpError, NetworkError, ParseError, RateLimitError, ScraperError };