{"version":3,"sources":["../src/version.ts","../src/utils/errors.ts","../src/utils/http.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * SDK version\n * This should match package.json version\n */\nexport const VERSION = '1.0.1';\n","/**\n * Error handling for EmailListVerify SDK\n */\n\nimport type { ApiErrorResponse } from '../types';\n\n/**\n * Base error class for all EmailListVerify SDK errors\n */\nexport class EmailListVerifyError extends Error {\n  /**\n   * HTTP status code (if applicable)\n   */\n  public readonly statusCode?: number;\n\n  /**\n   * Error code/type from API\n   */\n  public readonly code?: string;\n\n  /**\n   * Original error response from API\n   */\n  public readonly response?: ApiErrorResponse;\n\n  /**\n   * Original cause of error (if applicable)\n   */\n  public readonly cause?: Error;\n\n  constructor(\n    message: string,\n    statusCode?: number,\n    code?: string,\n    response?: ApiErrorResponse,\n    cause?: Error\n  ) {\n    super(message);\n    this.name = 'EmailListVerifyError';\n    this.statusCode = statusCode;\n    this.code = code;\n    this.response = response;\n    this.cause = cause;\n\n    // Maintains proper stack trace for where error was thrown (V8 only)\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  }\n}\n\n/**\n * Authentication error - Invalid API key\n * HTTP 401\n */\nexport class AuthenticationError extends EmailListVerifyError {\n  constructor(message = 'Invalid API key', response?: ApiErrorResponse) {\n    super(message, 401, 'AUTH_ERROR', response);\n    this.name = 'AuthenticationError';\n  }\n}\n\n/**\n * Forbidden error - Insufficient permissions or credits\n * HTTP 403\n */\nexport class ForbiddenError extends EmailListVerifyError {\n  constructor(message = 'Forbidden', response?: ApiErrorResponse) {\n    super(message, 403, 'FORBIDDEN', response);\n    this.name = 'ForbiddenError';\n  }\n}\n\n/**\n * Not enough credits error\n * HTTP 403 with specific message\n */\nexport class InsufficientCreditsError extends EmailListVerifyError {\n  public readonly creditsRequired?: number;\n\n  constructor(message: string, creditsRequired?: number, response?: ApiErrorResponse) {\n    super(message, 403, 'INSUFFICIENT_CREDITS', response);\n    this.name = 'InsufficientCreditsError';\n    this.creditsRequired = creditsRequired;\n  }\n}\n\n/**\n * Too many concurrent jobs error\n * HTTP 403\n */\nexport class TooManyJobsError extends EmailListVerifyError {\n  constructor(message = 'Too many running email jobs', response?: ApiErrorResponse) {\n    super(message, 403, 'TOO_MANY_JOBS', response);\n    this.name = 'TooManyJobsError';\n  }\n}\n\n/**\n * Resource not found error\n * HTTP 404\n */\nexport class NotFoundError extends EmailListVerifyError {\n  public readonly resourceType?: string;\n  public readonly resourceId?: string;\n\n  constructor(\n    message = 'Resource not found',\n    resourceType?: string,\n    resourceId?: string,\n    response?: ApiErrorResponse\n  ) {\n    super(message, 404, 'NOT_FOUND', response);\n    this.name = 'NotFoundError';\n    this.resourceType = resourceType;\n    this.resourceId = resourceId;\n  }\n}\n\n/**\n * Email job not found error\n * HTTP 404\n */\nexport class EmailJobNotFoundError extends NotFoundError {\n  constructor(jobId: string, response?: ApiErrorResponse) {\n    super('Email job not found', 'EmailJob', jobId, response);\n    this.name = 'EmailJobNotFoundError';\n  }\n}\n\n/**\n * Email list not found error\n * HTTP 404\n */\nexport class MaillistNotFoundError extends NotFoundError {\n  constructor(listId: string, response?: ApiErrorResponse) {\n    super('Email list not found', 'Maillist', listId, response);\n    this.name = 'MaillistNotFoundError';\n  }\n}\n\n/**\n * Placement test not found error\n * HTTP 404\n */\nexport class PlacementTestNotFoundError extends NotFoundError {\n  constructor(code?: string, response?: ApiErrorResponse) {\n    super(\n      code ? `Placement test not found: ${code}` : 'Placement test not found',\n      'PlacementTest',\n      code,\n      response\n    );\n    this.name = 'PlacementTestNotFoundError';\n  }\n}\n\n/**\n * Bad request error - Invalid input\n * HTTP 400\n */\nexport class BadRequestError extends EmailListVerifyError {\n  constructor(message = 'Bad request', response?: ApiErrorResponse) {\n    super(message, 400, 'BAD_REQUEST', response);\n    this.name = 'BadRequestError';\n  }\n}\n\n/**\n * Invalid file error - File format or content issues\n * HTTP 400\n */\nexport class InvalidFileError extends EmailListVerifyError {\n  constructor(message: string, response?: ApiErrorResponse) {\n    super(message, 400, 'INVALID_FILE', response);\n    this.name = 'InvalidFileError';\n  }\n}\n\n/**\n * Email list not finished error - Trying to download/delete unfinished list\n * HTTP 400\n */\nexport class MaillistNotFinishedError extends EmailListVerifyError {\n  constructor(message = 'Maillist has not finished yet', response?: ApiErrorResponse) {\n    super(message, 400, 'MAILLIST_NOT_FINISHED', response);\n    this.name = 'MaillistNotFinishedError';\n  }\n}\n\n/**\n * Rate limit error - Too many requests\n * HTTP 429\n */\nexport class RateLimitError extends EmailListVerifyError {\n  public readonly retryAfter?: number;\n\n  constructor(message = 'Rate limit exceeded', retryAfter?: number, response?: ApiErrorResponse) {\n    super(message, 429, 'RATE_LIMIT', response);\n    this.name = 'RateLimitError';\n    this.retryAfter = retryAfter;\n  }\n}\n\n/**\n * Network error - Connection issues, timeout, etc.\n */\nexport class NetworkError extends EmailListVerifyError {\n  constructor(message: string, cause?: Error) {\n    super(message, undefined, 'NETWORK_ERROR', undefined, cause);\n    this.name = 'NetworkError';\n  }\n}\n\n/**\n * Request timeout error\n */\nexport class TimeoutError extends EmailListVerifyError {\n  constructor(message = 'Request timeout', cause?: Error) {\n    super(message, undefined, 'TIMEOUT', undefined, cause);\n    this.name = 'TimeoutError';\n  }\n}\n\n/**\n * Validation error - Client-side validation failed\n */\nexport class ValidationError extends EmailListVerifyError {\n  public readonly field?: string;\n\n  constructor(message: string, field?: string) {\n    super(message, undefined, 'VALIDATION_ERROR');\n    this.name = 'ValidationError';\n    this.field = field;\n  }\n}\n\n/**\n * Parse error - Failed to parse API response\n */\nexport class ParseError extends EmailListVerifyError {\n  constructor(message: string, cause?: Error) {\n    super(message, undefined, 'PARSE_ERROR', undefined, cause);\n    this.name = 'ParseError';\n  }\n}\n\n/**\n * Create appropriate error from HTTP response\n */\nexport function createErrorFromResponse(\n  statusCode: number,\n  responseBody: string | ApiErrorResponse | null,\n  defaultMessage = 'API request failed'\n): EmailListVerifyError {\n  let apiResponse: ApiErrorResponse | undefined;\n  let message = defaultMessage;\n\n  // Try to parse error response\n  if (typeof responseBody === 'object' && responseBody !== null) {\n    apiResponse = responseBody;\n    message = apiResponse.message || defaultMessage;\n  } else if (typeof responseBody === 'string') {\n    try {\n      apiResponse = JSON.parse(responseBody) as ApiErrorResponse;\n      message = apiResponse.message || defaultMessage;\n    } catch {\n      message = responseBody || defaultMessage;\n    }\n  }\n\n  // Map status codes to specific error types\n  switch (statusCode) {\n    case 400: {\n      // Check for specific 400 error types\n      if (message.toLowerCase().includes('file')) {\n        return new InvalidFileError(message, apiResponse);\n      }\n      if (message.toLowerCase().includes('not finished')) {\n        return new MaillistNotFinishedError(message, apiResponse);\n      }\n      return new BadRequestError(message, apiResponse);\n    }\n\n    case 401:\n      return new AuthenticationError(message, apiResponse);\n\n    case 403: {\n      // Check for specific 403 error types\n      if (message.toLowerCase().includes('credit')) {\n        // Try to extract credits required from message\n        const match = message.match(/(\\d+)\\s+required/);\n        const creditsRequired = match ? parseInt(match[1], 10) : undefined;\n        return new InsufficientCreditsError(message, creditsRequired, apiResponse);\n      }\n      if (message.toLowerCase().includes('too many')) {\n        return new TooManyJobsError(message, apiResponse);\n      }\n      return new ForbiddenError(message, apiResponse);\n    }\n\n    case 404: {\n      // Check for specific 404 error types\n      if (message.toLowerCase().includes('email job')) {\n        // Try to extract job ID from context\n        return new EmailJobNotFoundError('unknown', apiResponse);\n      }\n      if (\n        message.toLowerCase().includes('email list') ||\n        message.toLowerCase().includes('maillist')\n      ) {\n        return new MaillistNotFoundError('unknown', apiResponse);\n      }\n      if (message.toLowerCase().includes('placement test')) {\n        return new PlacementTestNotFoundError(undefined, apiResponse);\n      }\n      return new NotFoundError(message, undefined, undefined, apiResponse);\n    }\n\n    case 429:\n      return new RateLimitError(message, undefined, apiResponse);\n\n    default:\n      return new EmailListVerifyError(message, statusCode, 'API_ERROR', apiResponse);\n  }\n}\n\n/**\n * Check if an error is an instance of EmailListVerifyError\n */\nexport function isEmailListVerifyError(error: unknown): error is EmailListVerifyError {\n  return error instanceof EmailListVerifyError;\n}\n\n/**\n * Type guard for specific error types\n */\nexport function isAuthenticationError(error: unknown): error is AuthenticationError {\n  return error instanceof AuthenticationError;\n}\n\nexport function isInsufficientCreditsError(error: unknown): error is InsufficientCreditsError {\n  return error instanceof InsufficientCreditsError;\n}\n\nexport function isRateLimitError(error: unknown): error is RateLimitError {\n  return error instanceof RateLimitError;\n}\n\nexport function isNotFoundError(error: unknown): error is NotFoundError {\n  return error instanceof NotFoundError;\n}\n\nexport function isNetworkError(error: unknown): error is NetworkError {\n  return error instanceof NetworkError;\n}\n\nexport function isValidationError(error: unknown): error is ValidationError {\n  return error instanceof ValidationError;\n}\n\nexport function isPlacementTestNotFoundError(error: unknown): error is PlacementTestNotFoundError {\n  return error instanceof PlacementTestNotFoundError;\n}\n","/**\n * HTTP client wrapper using native fetch\n * Zero external dependencies - uses Node.js 20+ built-in fetch\n */\n\nimport type { ApiErrorResponse } from '../types';\nimport { createErrorFromResponse, NetworkError, TimeoutError, ParseError } from './errors';\n\n/**\n * HTTP request options\n */\nexport interface RequestOptions {\n  /** Request method */\n  method: 'GET' | 'POST' | 'DELETE';\n  /** Query parameters */\n  params?: Record<string, string | number | boolean | undefined>;\n  /** Request body (JSON object or FormData) */\n  body?: unknown;\n  /** Request headers */\n  headers?: Record<string, string>;\n  /** Request timeout in milliseconds */\n  timeout?: number;\n  /** Expected response type */\n  responseType?: 'json' | 'text' | 'blob';\n}\n\n/**\n * HTTP response wrapper\n */\nexport interface HttpResponse<T = unknown> {\n  /** Response data */\n  data: T;\n  /** HTTP status code */\n  status: number;\n  /** Response headers */\n  headers: Headers;\n}\n\n/**\n * HTTP client configuration\n */\nexport interface HttpClientConfig {\n  /** Base URL for all requests */\n  baseUrl: string;\n  /** API key for authentication */\n  apiKey: string;\n  /** Default timeout in milliseconds */\n  timeout: number;\n  /** Additional headers to include in all requests */\n  headers?: Record<string, string>;\n}\n\n/**\n * HTTP client for making API requests\n */\nexport class HttpClient {\n  private readonly config: HttpClientConfig;\n\n  constructor(config: HttpClientConfig) {\n    this.config = config;\n  }\n\n  /**\n   * Make an HTTP request\n   */\n  async request<T = unknown>(\n    path: string,\n    options: RequestOptions = { method: 'GET' }\n  ): Promise<HttpResponse<T>> {\n    const url = this.buildUrl(path, options.params);\n    const timeout = options.timeout ?? this.config.timeout;\n\n    // Create abort controller for timeout\n    const controller = new AbortController();\n    const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n    try {\n      const response = await fetch(url, {\n        method: options.method,\n        headers: this.buildHeaders(options.headers, options.body),\n        body: this.buildBody(options.body),\n        signal: controller.signal,\n      });\n\n      clearTimeout(timeoutId);\n\n      // Handle error responses\n      if (!response.ok) {\n        await this.handleErrorResponse(response);\n      }\n\n      // Parse response based on expected type\n      const data = await this.parseResponse<T>(response, options.responseType);\n\n      return {\n        data,\n        status: response.status,\n        headers: response.headers,\n      };\n    } catch (error) {\n      clearTimeout(timeoutId);\n\n      // Handle abort/timeout\n      if (error instanceof Error && error.name === 'AbortError') {\n        throw new TimeoutError(`Request timeout after ${timeout}ms`, error);\n      }\n\n      // Handle network errors\n      if (error instanceof TypeError) {\n        throw new NetworkError(`Network request failed: ${error.message}`, error);\n      }\n\n      // Re-throw our custom errors\n      throw error;\n    }\n  }\n\n  /**\n   * Convenience method for GET requests\n   */\n  async get<T = unknown>(\n    path: string,\n    params?: Record<string, string | number | boolean | undefined>\n  ): Promise<HttpResponse<T>> {\n    return this.request<T>(path, { method: 'GET', params });\n  }\n\n  /**\n   * Convenience method for POST requests with JSON body\n   */\n  async post<T = unknown>(\n    path: string,\n    body?: unknown,\n    params?: Record<string, string | number | boolean | undefined>\n  ): Promise<HttpResponse<T>> {\n    return this.request<T>(path, { method: 'POST', body, params });\n  }\n\n  /**\n   * Convenience method for POST requests with FormData\n   */\n  async postFormData<T = unknown>(\n    path: string,\n    formData: FormData,\n    params?: Record<string, string | number | boolean | undefined>\n  ): Promise<HttpResponse<T>> {\n    return this.request<T>(path, { method: 'POST', body: formData, params });\n  }\n\n  /**\n   * Convenience method for DELETE requests\n   */\n  async delete<T = unknown>(\n    path: string,\n    params?: Record<string, string | number | boolean | undefined>\n  ): Promise<HttpResponse<T>> {\n    return this.request<T>(path, { method: 'DELETE', params });\n  }\n\n  /**\n   * Build full URL with query parameters\n   */\n  private buildUrl(\n    path: string,\n    params?: Record<string, string | number | boolean | undefined>\n  ): string {\n    const url = new URL(path.startsWith('http') ? path : `${this.config.baseUrl}${path}`);\n\n    // Add API key to query params\n    url.searchParams.append('secret', this.config.apiKey);\n\n    // Add additional params\n    if (params) {\n      Object.entries(params).forEach(([key, value]) => {\n        if (value !== undefined && value !== null) {\n          url.searchParams.append(key, String(value));\n        }\n      });\n    }\n\n    return url.toString();\n  }\n\n  /**\n   * Build request headers\n   */\n  private buildHeaders(\n    customHeaders?: Record<string, string>,\n    body?: unknown\n  ): Record<string, string> {\n    const headers: Record<string, string> = {\n      ...this.config.headers,\n      ...customHeaders,\n    };\n\n    // Set Content-Type for JSON bodies (FormData sets its own)\n    if (body && !(body instanceof FormData)) {\n      headers['Content-Type'] = 'application/json';\n    }\n\n    return headers;\n  }\n\n  /**\n   * Build request body\n   */\n  private buildBody(body?: unknown): string | FormData | undefined {\n    if (!body) {\n      return undefined;\n    }\n\n    if (body instanceof FormData) {\n      return body;\n    }\n\n    return JSON.stringify(body);\n  }\n\n  /**\n   * Parse response based on content type\n   */\n  private async parseResponse<T>(\n    response: Response,\n    expectedType?: 'json' | 'text' | 'blob'\n  ): Promise<T> {\n    const contentType = response.headers.get('content-type') || '';\n\n    try {\n      // Use expected type if provided\n      if (expectedType === 'text') {\n        return (await response.text()) as T;\n      }\n      if (expectedType === 'blob') {\n        return (await response.blob()) as T;\n      }\n      if (expectedType === 'json') {\n        return (await response.json()) as T;\n      }\n\n      // Auto-detect based on content-type\n      if (contentType.includes('application/json')) {\n        return (await response.json()) as T;\n      }\n\n      if (contentType.includes('text/html') || contentType.includes('text/plain')) {\n        return (await response.text()) as T;\n      }\n\n      // Default to text for unknown types\n      return (await response.text()) as T;\n    } catch (error) {\n      throw new ParseError(\n        `Failed to parse response: ${error instanceof Error ? error.message : 'Unknown error'}`,\n        error instanceof Error ? error : undefined\n      );\n    }\n  }\n\n  /**\n   * Handle error responses from API\n   */\n  private async handleErrorResponse(response: Response): Promise<never> {\n    let errorBody: string | ApiErrorResponse | null = null;\n\n    try {\n      const contentType = response.headers.get('content-type') || '';\n\n      if (contentType.includes('application/json')) {\n        errorBody = (await response.json()) as ApiErrorResponse;\n      } else {\n        errorBody = await response.text();\n      }\n    } catch {\n      // Ignore parse errors, use null\n    }\n\n    throw createErrorFromResponse(\n      response.status,\n      errorBody,\n      `HTTP ${response.status}: ${response.statusText}`\n    );\n  }\n}\n\n/**\n * Create HTTP client instance\n */\nexport function createHttpClient(config: HttpClientConfig): HttpClient {\n  return new HttpClient(config);\n}\n","/**\n * Main EmailListVerify API client\n */\n\nimport type {\n  ClientConfig,\n  VerifyEmailResponse,\n  VerifyEmailDetailedResponse,\n  CreateEmailJobRequest,\n  CreateEmailJobResponse,\n  EmailJobResponse,\n  FindContactRequest,\n  FindContactResponse,\n  CheckDisposableResponse,\n  BulkUploadResponse,\n  MaillistProgressResponse,\n  DownloadMaillistOptions,\n  DownloadMaillistResponse,\n  CreditsResponse,\n  CreatePlacementTestRequest,\n  CreatePlacementTestResponse,\n  PlacementTestResponse,\n} from './types';\nimport { HttpClient, createHttpClient } from './utils/http';\nimport { ValidationError } from './utils/errors';\nimport { VERSION } from './version';\n\n/**\n * Default configuration values\n */\nconst DEFAULT_BASE_URL = 'https://api.emaillistverify.com';\nconst DEFAULT_TIMEOUT = 30000; // 30 seconds\n\n/**\n * EmailListVerify API Client\n * Provides methods for all EmailListVerify API endpoints\n */\nexport class EmailListVerifyClient {\n  private readonly http: HttpClient;\n\n  /**\n   * Create a new EmailListVerify client\n   *\n   * @param apiKey - Your EmailListVerify API key\n   * @param options - Optional configuration\n   *\n   * @example\n   * ```typescript\n   * const client = new EmailListVerifyClient('your-api-key');\n   * ```\n   */\n  constructor(apiKey: string, options?: Partial<Omit<ClientConfig, 'apiKey'>>) {\n    if (!apiKey || typeof apiKey !== 'string' || apiKey.trim() === '') {\n      throw new ValidationError('API key is required and must be a non-empty string', 'apiKey');\n    }\n\n    // Build User-Agent header\n    const userAgent = this.buildUserAgent();\n\n    this.http = createHttpClient({\n      apiKey: apiKey.trim(),\n      baseUrl: options?.baseUrl || DEFAULT_BASE_URL,\n      timeout: options?.timeout || DEFAULT_TIMEOUT,\n      headers: {\n        'User-Agent': userAgent,\n        ...options?.headers, // Custom headers override defaults\n      },\n    });\n  }\n\n  // ========================================================================\n  // Single Email Verification\n  // ========================================================================\n\n  /**\n   * Verify a single email address (simple)\n   * Returns only the deliverability status\n   *\n   * Credits: 1 per email\n   *\n   * @param email - Email address to verify\n   * @returns Verification result status\n   *\n   * @example\n   * ```typescript\n   * const result = await client.verifyEmail('test@example.com');\n   * console.log(result); // 'ok' | 'invalid' | 'disposable' | ...\n   * ```\n   */\n  async verifyEmail(email: string): Promise<VerifyEmailResponse> {\n    this.validateEmail(email);\n\n    const response = await this.http.get<VerifyEmailResponse>('/api/verifyEmail', { email });\n    return response.data;\n  }\n\n  /**\n   * Verify a single email address (detailed)\n   * Returns comprehensive verification data including ESP, name estimation, etc.\n   *\n   * Credits: 1 per email\n   *\n   * @param email - Email address to verify\n   * @returns Detailed verification result with metadata\n   *\n   * @example\n   * ```typescript\n   * const result = await client.verifyEmailDetailed('john.doe@gmail.com');\n   * console.log(result.esp); // 'Google'\n   * console.log(result.firstName); // 'John'\n   * console.log(result.isRole); // false\n   * ```\n   */\n  async verifyEmailDetailed(email: string): Promise<VerifyEmailDetailedResponse> {\n    this.validateEmail(email);\n\n    const response = await this.http.get<VerifyEmailDetailedResponse>('/api/verifyEmailDetailed', {\n      email,\n    });\n    return response.data;\n  }\n\n  // ========================================================================\n  // Async Email Jobs\n  // ========================================================================\n\n  /**\n   * Create an asynchronous email verification job\n   * Use for high-quality verification that may take up to 30 minutes due to greylisting\n   *\n   * Credits: 1 (standard) or 2 (high quality)\n   *\n   * @param request - Email and quality level\n   * @returns Created job information\n   *\n   * @example\n   * ```typescript\n   * const job = await client.createEmailJob({\n   *   email: 'test@example.com',\n   *   quality: 'high' // optional, defaults to 'standard'\n   * });\n   * console.log(job.id); // Use this ID to check status later\n   * ```\n   */\n  async createEmailJob(request: CreateEmailJobRequest): Promise<CreateEmailJobResponse> {\n    this.validateEmail(request.email);\n\n    const response = await this.http.post<CreateEmailJobResponse>('/api/emailJobs', request);\n    return response.data;\n  }\n\n  /**\n   * Get the status and result of an async email verification job\n   *\n   * @param jobId - Job ID returned from createEmailJob\n   * @returns Job status and result (if finished)\n   *\n   * @example\n   * ```typescript\n   * const job = await client.getEmailJob('job-id-123');\n   * if (job.status === 'finished') {\n   *   console.log(job.result); // Detailed verification result\n   * }\n   * ```\n   */\n  async getEmailJob(jobId: string): Promise<EmailJobResponse> {\n    this.validateRequired(jobId, 'jobId');\n\n    const response = await this.http.get<EmailJobResponse>(`/api/emailJobs/${jobId}`);\n    return response.data;\n  }\n\n  // ========================================================================\n  // Contact Finder\n  // ========================================================================\n\n  /**\n   * Find contact email addresses\n   * Search for professional email addresses by name and domain\n   *\n   * Credits: 5-10 per search\n   *\n   * @param request - Contact search parameters\n   * @returns Array of found emails with confidence levels\n   *\n   * @example\n   * ```typescript\n   * const contacts = await client.findContact({\n   *   firstName: 'John',\n   *   lastName: 'Doe',\n   *   domain: 'example.com'\n   * });\n   * contacts.forEach(c => console.log(`${c.email} (${c.confidence})`));\n   * ```\n   */\n  async findContact(request: FindContactRequest): Promise<FindContactResponse> {\n    this.validateRequired(request.domain, 'domain');\n\n    const response = await this.http.post<FindContactResponse>('/api/findContact', request);\n    return response.data;\n  }\n\n  // ========================================================================\n  // Disposable Domain Check\n  // ========================================================================\n\n  /**\n   * Check if a domain is disposable/temporary\n   * Fast check without full email verification\n   *\n   * Credits: 1 per check\n   *\n   * @param domain - Domain to check\n   * @returns Disposable check result\n   *\n   * @example\n   * ```typescript\n   * const result = await client.checkDisposable('tempmail.com');\n   * console.log(result.result); // 'disposable'\n   * ```\n   */\n  async checkDisposable(domain: string): Promise<CheckDisposableResponse> {\n    this.validateRequired(domain, 'domain');\n\n    // Note: API uses POST method with query parameter (unusual pattern)\n    const response = await this.http.post<CheckDisposableResponse>(\n      '/api/checkDisposable',\n      undefined, // No request body\n      { domain } // Query parameter\n    );\n    return response.data;\n  }\n\n  // ========================================================================\n  // Bulk Email List Verification\n  // ========================================================================\n\n  /**\n   * Upload a file for bulk email verification\n   * Accepts CSV or TXT files with email addresses\n   *\n   * @param file - File to upload (Blob, File, or Buffer)\n   * @param filename - Name of the file\n   * @returns File ID for tracking progress\n   *\n   * @example\n   * ```typescript\n   * const fileId = await client.uploadBulkFile(fileBlob, 'emails.csv');\n   * console.log(fileId); // Use this ID to check progress\n   * ```\n   */\n  async uploadBulkFile(file: Blob | Buffer, filename: string): Promise<BulkUploadResponse> {\n    this.validateRequired(file, 'file');\n    this.validateRequired(filename, 'filename');\n\n    const formData = new FormData();\n\n    // Handle both Blob (browser) and Buffer (Node.js)\n    // Note: API expects field name 'file_contents' (snake_case)\n    if (file instanceof Buffer) {\n      formData.append('file_contents', new Blob([file]), filename);\n    } else {\n      formData.append('file_contents', file, filename);\n    }\n\n    const response = await this.http.postFormData<BulkUploadResponse>(\n      '/api/verifyApiFile',\n      formData\n    );\n    return response.data;\n  }\n\n  /**\n   * Get the progress of a bulk email list verification\n   *\n   * @param fileId - File ID returned from uploadBulkFile\n   * @returns Progress information including status and completion percentage\n   *\n   * @example\n   * ```typescript\n   * const progress = await client.getBulkProgress('file-id-123');\n   * console.log(`${progress.progress}% complete`);\n   * console.log(`Status: ${progress.status}`);\n   * ```\n   */\n  async getBulkProgress(fileId: string): Promise<MaillistProgressResponse> {\n    this.validateRequired(fileId, 'fileId');\n\n    const response = await this.http.get<MaillistProgressResponse>(\n      `/api/maillists/${fileId}/progress`\n    );\n    return response.data;\n  }\n\n  /**\n   * Download bulk verification results\n   * List must be finished before downloading\n   *\n   * @param fileId - File ID returned from uploadBulkFile\n   * @param options - Download options (columns to include, format, filters)\n   * @returns File content (CSV or XLSX)\n   *\n   * @example\n   * ```typescript\n   * const results = await client.downloadBulkResults('file-id-123', {\n   *   format: 'csv',\n   *   addFirstName: true,\n   *   addLastName: true,\n   *   results: ['ok', 'unknown'] // Only include these statuses\n   * });\n   * ```\n   */\n  async downloadBulkResults(\n    fileId: string,\n    options?: DownloadMaillistOptions\n  ): Promise<DownloadMaillistResponse> {\n    this.validateRequired(fileId, 'fileId');\n\n    // Convert options to query params\n    const params: Record<string, string | number | boolean> = {};\n    if (options) {\n      Object.entries(options).forEach(([key, value]) => {\n        if (value !== undefined) {\n          // Handle array values (convert to comma-separated string)\n          if (Array.isArray(value)) {\n            params[key] = value.join(',');\n          } else if (\n            typeof value === 'string' ||\n            typeof value === 'number' ||\n            typeof value === 'boolean'\n          ) {\n            params[key] = value;\n          }\n        }\n      });\n    }\n\n    const response = await this.http.get<DownloadMaillistResponse>(\n      `/api/maillists/${fileId}`,\n      params\n    );\n    return response.data;\n  }\n\n  /**\n   * Delete a bulk email list\n   * Removes the list and frees up a concurrent slot\n   *\n   * @param fileId - File ID to delete\n   *\n   * @example\n   * ```typescript\n   * await client.deleteBulkList('file-id-123');\n   * ```\n   */\n  async deleteBulkList(fileId: string): Promise<void> {\n    this.validateRequired(fileId, 'fileId');\n\n    await this.http.delete(`/api/maillists/${fileId}`);\n  }\n\n  // ========================================================================\n  // Credits\n  // ========================================================================\n\n  /**\n   * Get your account credit balance\n   * Shows both on-demand credits and subscription credits (if applicable)\n   *\n   * @returns Credit information\n   *\n   * @example\n   * ```typescript\n   * const credits = await client.getCredits();\n   * console.log(`On-demand: ${credits.onDemand.available}`);\n   * if (credits.subscription) {\n   *   console.log(`Subscription: ${credits.subscription.available}`);\n   *   console.log(`Expires: ${credits.subscription.expiresAt}`);\n   * }\n   * ```\n   */\n  async getCredits(): Promise<CreditsResponse> {\n    const response = await this.http.get<CreditsResponse>('/api/credits');\n    return response.data;\n  }\n\n  // ========================================================================\n  // Inbox Placement Test\n  // ========================================================================\n\n  /**\n   * Create an inbox placement test\n   * Tests where your emails land across different ESPs (Gmail, Yahoo, Outlook, etc.)\n   *\n   * Credits: 100 per test\n   *\n   * @param request - Optional test configuration (name and webhook URL)\n   * @returns Test details including tracking code and seed email addresses\n   *\n   * @example\n   * ```typescript\n   * const test = await client.createPlacementTest({\n   *   name: 'Q1 2025 Campaign Test',\n   *   webhookUrl: 'https://yourapp.com/webhooks/placement-test'\n   * });\n   * console.log(test.code); // \"ELV-A1B2C3D4E5\"\n   * console.log(test.emails); // Array of seed emails to send to\n   * ```\n   */\n  async createPlacementTest(\n    request?: CreatePlacementTestRequest\n  ): Promise<CreatePlacementTestResponse> {\n    const response = await this.http.post<CreatePlacementTestResponse>(\n      '/api/inboxPlacementTests',\n      request || {}\n    );\n    return response.data;\n  }\n\n  /**\n   * Get placement test results\n   * Retrieves current status and results of a placement test\n   *\n   * @param code - Tracking code returned from createPlacementTest (e.g., \"ELV-A1B2C3D4E5\")\n   * @returns Complete test results including placement breakdown and summary\n   *\n   * @example\n   * ```typescript\n   * const results = await client.getPlacementTest('ELV-A1B2C3D4E5');\n   * console.log(results.status); // 'running' | 'complete'\n   * console.log(results.summary.inbox); // Percentage in inbox\n   * console.log(results.summary.spam); // Percentage in spam\n   *\n   * // Poll every 30-60 seconds while status is 'running'\n   * while (results.status === 'running') {\n   *   await sleep(60000); // Wait 60 seconds\n   *   results = await client.getPlacementTest(code);\n   * }\n   * ```\n   */\n  async getPlacementTest(code: string): Promise<PlacementTestResponse> {\n    this.validateRequired(code, 'code');\n\n    const response = await this.http.get<PlacementTestResponse>(`/api/inboxPlacementTests/${code}`);\n    return response.data;\n  }\n\n  // ========================================================================\n  // Validation Helpers\n  // ========================================================================\n\n  /**\n   * Validate email format (basic check)\n   */\n  private validateEmail(email: string): void {\n    if (!email || typeof email !== 'string') {\n      throw new ValidationError('Email is required and must be a string', 'email');\n    }\n\n    const trimmed = email.trim();\n    if (trimmed === '') {\n      throw new ValidationError('Email cannot be empty', 'email');\n    }\n\n    // Basic email format check\n    if (!trimmed.includes('@') || trimmed.length < 3) {\n      throw new ValidationError('Invalid email format', 'email');\n    }\n  }\n\n  /**\n   * Validate required field\n   */\n  private validateRequired(value: unknown, fieldName: string): void {\n    if (value === undefined || value === null || value === '') {\n      throw new ValidationError(`${fieldName} is required`, fieldName);\n    }\n  }\n\n  /**\n   * Build User-Agent header\n   */\n  private buildUserAgent(): string {\n    const runtime =\n      typeof process !== 'undefined' && process.versions?.node\n        ? `Node.js/${process.version}`\n        : 'Browser';\n\n    return `emaillistverify-sdk-js/${VERSION} (${runtime})`;\n  }\n}\n"]}