{"version":3,"sources":["../src/errors.ts","../package.json","../src/client.ts","../src/resources/pay.ts","../src/resources/payment-intents.ts","../src/resources/rates.ts","../src/resources/products.ts","../src/resources/prices.ts","../src/resources/subscriptions.ts","../src/webhooks.ts","../src/catalog-plan-metadata.ts","../src/index.ts"],"names":["buildListQuery","createHmac","timingSafeEqual"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Base error class for all OrcaRail errors\n */\nexport class OrcaRailError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = 'OrcaRailError';\n    Error.captureStackTrace(this, this.constructor);\n  }\n}\n\n/**\n * Error thrown when the API returns a non-2xx status code\n */\nexport class OrcaRailAPIError extends OrcaRailError {\n  /**\n   * HTTP status code\n   */\n  public readonly statusCode: number;\n\n  /**\n   * Error type from the API response\n   */\n  public readonly type?: string;\n\n  /**\n   * Additional error details from the API\n   */\n  public readonly details?: unknown;\n\n  constructor(message: string, statusCode: number, type?: string, details?: unknown) {\n    super(message);\n    this.name = 'OrcaRailAPIError';\n    this.statusCode = statusCode;\n    this.type = type;\n    this.details = details;\n  }\n}\n\n/**\n * Error thrown when authentication fails (401)\n */\nexport class OrcaRailAuthenticationError extends OrcaRailAPIError {\n  constructor(message: string = 'Authentication failed. Please check your API key and secret.') {\n    super(message, 401, 'authentication_error');\n    this.name = 'OrcaRailAuthenticationError';\n  }\n}\n\n/**\n * Error thrown when webhook signature verification fails\n */\nexport class OrcaRailSignatureVerificationError extends OrcaRailError {\n  /**\n   * The signature that was provided\n   */\n  public readonly signature: string;\n\n  constructor(message: string = 'Webhook signature verification failed', signature?: string) {\n    super(message);\n    this.name = 'OrcaRailSignatureVerificationError';\n    this.signature = signature || '';\n  }\n}\n","{\n  \"name\": \"@orcarail/node\",\n  \"version\": \"3.3.0\",\n  \"description\": \"Official Node.js SDK for OrcaRail - Accept crypto payments with Payment Intents\",\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./dist/index.d.ts\",\n        \"default\": \"./dist/index.js\"\n      },\n      \"require\": {\n        \"types\": \"./dist/index.d.ts\",\n        \"default\": \"./dist/index.cjs\"\n      }\n    }\n  },\n  \"files\": [\n    \"dist\",\n    \"README.md\",\n    \"LICENSE\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsup\",\n    \"dev\": \"tsup --watch\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"lint\": \"eslint src tests examples --ext .ts\",\n    \"format\": \"prettier --write \\\"src/**/*.ts\\\" \\\"tests/**/*.ts\\\" \\\"examples/**/*.ts\\\"\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"prepublishOnly\": \"npm run build && npm test\"\n  },\n  \"keywords\": [\n    \"orcarail\",\n    \"crypto\",\n    \"payments\",\n    \"payment-intents\",\n    \"webhooks\",\n    \"blockchain\",\n    \"stablecoin\"\n  ],\n  \"author\": \"OrcaRail\",\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/OrcaRail/sdks-node.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/OrcaRail/sdks-node/issues\"\n  },\n  \"homepage\": \"https://github.com/OrcaRail/sdks-node#readme\",\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  },\n  \"devDependencies\": {\n    \"@types/express\": \"^5.0.6\",\n    \"@types/node\": \"^20.0.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.0.0\",\n    \"@typescript-eslint/parser\": \"^6.0.0\",\n    \"eslint\": \"^8.0.0\",\n    \"express\": \"^5.2.1\",\n    \"next\": \"^16.2.4\",\n    \"prettier\": \"^3.0.0\",\n    \"tsup\": \"^8.0.0\",\n    \"typescript\": \"^5.0.0\",\n    \"vitest\": \"^1.0.0\"\n  },\n  \"peerDependencies\": {\n    \"@types/express\": \"^4.17.0\",\n    \"@types/node\": \"^18.0.0 || ^20.0.0\"\n  },\n  \"peerDependenciesMeta\": {\n    \"@types/express\": {\n      \"optional\": true\n    },\n    \"@types/node\": {\n      \"optional\": true\n    }\n  }\n}\n","import { OrcaRailAPIError, OrcaRailAuthenticationError, OrcaRailError } from './errors';\nimport type { OrcaRailConfig } from './types';\nimport packageJson from '../package.json';\n\nconst DEFAULT_BASE_URL = 'https://api.orcarail.com/api/v1';\nconst DEFAULT_TIMEOUT = 30000;\nconst SDK_VERSION = packageJson.version;\n\n/**\n * HTTP client for making requests to the OrcaRail API\n */\nexport class HttpClient {\n  private readonly apiKey: string;\n  private readonly apiSecret: string;\n  private readonly baseUrl: string;\n  private readonly timeout: number;\n\n  constructor(apiKey: string, apiSecret: string, config?: OrcaRailConfig) {\n    if (!apiKey || !apiSecret) {\n      throw new OrcaRailError('API key and secret are required');\n    }\n\n    this.apiKey = apiKey;\n    this.apiSecret = apiSecret;\n    this.baseUrl = config?.baseUrl || DEFAULT_BASE_URL;\n    this.timeout = config?.timeout || DEFAULT_TIMEOUT;\n  }\n\n  /**\n   * Create Basic Auth header from API key and secret\n   */\n  private getAuthHeader(): string {\n    const credentials = Buffer.from(`${this.apiKey}:${this.apiSecret}`).toString('base64');\n    return `Basic ${credentials}`;\n  }\n\n  /**\n   * Build full URL from path\n   */\n  private buildUrl(path: string): string {\n    // Remove leading slash if present\n    const cleanPath = path.startsWith('/') ? path.slice(1) : path;\n    return `${this.baseUrl}/${cleanPath}`;\n  }\n\n  /**\n   * Make an HTTP request with timeout and error handling\n   */\n  private async request<T>(\n    method: string,\n    path: string,\n    body?: unknown,\n    requireAuth: boolean = true\n  ): Promise<T> {\n    let url = this.buildUrl(path);\n    if (method === 'GET') {\n      const separator = url.includes('?') ? '&' : '?';\n      url = `${url}${separator}_=${Date.now()}`;\n    }\n    const headers: Record<string, string> = {\n      'Content-Type': 'application/json',\n      'User-Agent': `orcarail-node/${SDK_VERSION}`,\n    };\n\n    if (requireAuth) {\n      headers['Authorization'] = this.getAuthHeader();\n    }\n\n    const options: RequestInit = {\n      method,\n      headers,\n    };\n\n    if (body) {\n      options.body = JSON.stringify(body);\n    }\n\n    // Disable fetch cache so GET requests always hit the API (e.g. Next.js Data Cache)\n    if (method === 'GET') {\n      (options as RequestInit & { cache?: 'no-store' }).cache = 'no-store';\n    }\n\n    // Create AbortController for timeout\n    const controller = new AbortController();\n    const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n    options.signal = controller.signal;\n\n    try {\n      const response = await fetch(url, options);\n      clearTimeout(timeoutId);\n\n      // Parse response body\n      let responseData: unknown;\n      const contentType = response.headers.get('content-type');\n      if (contentType && contentType.includes('application/json')) {\n        responseData = await response.json();\n      } else {\n        responseData = await response.text();\n      }\n\n      // Handle non-2xx responses\n      if (!response.ok) {\n        const errorMessage =\n          typeof responseData === 'object' && responseData !== null && 'message' in responseData\n            ? String((responseData as { message: unknown }).message)\n            : `API request failed with status ${response.status}`;\n\n        const errorType =\n          typeof responseData === 'object' && responseData !== null && 'error' in responseData\n            ? String((responseData as { error: unknown }).error)\n            : undefined;\n\n        if (response.status === 401) {\n          throw new OrcaRailAuthenticationError(errorMessage);\n        }\n\n        throw new OrcaRailAPIError(errorMessage, response.status, errorType, responseData);\n      }\n\n      return responseData as T;\n    } catch (error) {\n      clearTimeout(timeoutId);\n\n      if (error instanceof OrcaRailError) {\n        throw error;\n      }\n\n      if (error instanceof Error) {\n        if (error.name === 'AbortError') {\n          throw new OrcaRailError(`Request timeout after ${this.timeout}ms`);\n        }\n        throw new OrcaRailError(`Request failed: ${error.message}`);\n      }\n\n      throw new OrcaRailError('An unknown error occurred');\n    }\n  }\n\n  /**\n   * GET request\n   */\n  public async get<T>(path: string, requireAuth: boolean = true): Promise<T> {\n    return this.request<T>('GET', path, undefined, requireAuth);\n  }\n\n  /**\n   * POST request\n   */\n  public async post<T>(path: string, body?: unknown, requireAuth: boolean = true): Promise<T> {\n    return this.request<T>('POST', path, body, requireAuth);\n  }\n\n  /**\n   * PATCH request\n   */\n  public async patch<T>(path: string, body?: unknown, requireAuth: boolean = true): Promise<T> {\n    return this.request<T>('PATCH', path, body, requireAuth);\n  }\n\n  /**\n   * PUT request\n   */\n  public async put<T>(path: string, body?: unknown, requireAuth: boolean = true): Promise<T> {\n    return this.request<T>('PUT', path, body, requireAuth);\n  }\n\n  /**\n   * DELETE request (optional body for APIs that accept it, e.g. subscription cancel)\n   */\n  public async delete<T>(path: string, body?: unknown, requireAuth: boolean = true): Promise<T> {\n    return this.request<T>('DELETE', path, body, requireAuth);\n  }\n}\n","import { HttpClient } from '../client';\nimport type { PaymentIntent } from '../types';\n\n/**\n * Pay resource for slug-based pay flows (public endpoints)\n */\nexport class Pay {\n  private readonly client: HttpClient;\n\n  constructor(client: HttpClient) {\n    this.client = client;\n  }\n\n  /**\n   * Get pay details by slug\n   *\n   * @param slug - Pay slug from the payment link URL\n   * @returns Pay details including payment intent\n   */\n  public async get(slug: string): Promise<PaymentIntent & Record<string, unknown>> {\n    const path = `pay/${encodeURIComponent(slug)}`;\n    return this.client.get<PaymentIntent & Record<string, unknown>>(path, true);\n  }\n\n  /**\n   * Cancel payment intent by pay slug\n   *\n   * @param slug - Pay slug from the payment link URL\n   * @returns The canceled payment intent and optional cancel_url for redirect\n   */\n  public async cancel(slug: string): Promise<PaymentIntent & { cancel_url?: string }> {\n    const path = `pay/${encodeURIComponent(slug)}/cancel`;\n    return this.client.post<PaymentIntent & { cancel_url?: string }>(path, {}, true);\n  }\n}\n","import { HttpClient } from '../client';\nimport type {\n  PaymentIntent,\n  PaymentIntentConfirmParams,\n  PaymentIntentCreateParams,\n  PaymentIntentUpdateParams,\n} from '../types';\n\n/**\n * Payment Intents resource for managing payment intents\n */\nexport class PaymentIntents {\n  private readonly client: HttpClient;\n\n  constructor(client: HttpClient) {\n    this.client = client;\n  }\n\n  /**\n   * Create a new Payment Intent\n   *\n   * @param params - Payment Intent creation parameters\n   * @returns The created Payment Intent\n   */\n  public async create(params: PaymentIntentCreateParams): Promise<PaymentIntent> {\n    // Ensure payment_method_types defaults to ['crypto'] if empty\n    const requestBody = {\n      ...params,\n      payment_method_types:\n        params.payment_method_types && params.payment_method_types.length > 0\n          ? params.payment_method_types\n          : ['crypto'],\n    };\n\n    return this.client.post<PaymentIntent>('payment_intents', requestBody, true);\n  }\n\n  /**\n   * Retrieve a Payment Intent by ID\n   *\n   * @param id - Payment Intent ID (raw, no prefix)\n   * @returns The Payment Intent\n   */\n  public async retrieve(id: string): Promise<PaymentIntent> {\n    return this.client.get<PaymentIntent>(`payment_intents/${id}`, true);\n  }\n\n  /**\n   * Cancel a Payment Intent (API: POST /payment_intents/:id/cancel).\n   * Use when the user is redirected to your cancel_url (e.g. https://yourapp.com/cancel?payment_intent=20)\n   * and you want to mark the intent as canceled on the backend.\n   *\n   * @param id - Payment Intent ID (raw, no prefix)\n   * @returns The canceled Payment Intent\n   *\n   * @example\n   * // When user lands on https://localhost:3001/cancel?payment_intent=20\n   * const intent = await orcarail.paymentIntents.cancel('20');\n   */\n  public async cancel(id: string): Promise<PaymentIntent> {\n    return this.client.post<PaymentIntent>(`payment_intents/${id}/cancel`, {}, true);\n  }\n\n  /**\n   * Confirm a Payment Intent (API: POST /payment_intents/:id/confirm).\n   * Redirects the customer to the hosted pay page.\n   *\n   * @param id - Payment Intent ID (raw, no prefix)\n   * @param params - Confirmation parameters including client_secret and return_url\n   * @returns The confirmed Payment Intent\n   *\n   * @example\n   * const intent = await orcarail.paymentIntents.confirm('20', {\n   *   client_secret: intent.client_secret,\n   *   return_url: 'https://yourapp.com/return',\n   * });\n   */\n  public async confirm(id: string, params: PaymentIntentConfirmParams): Promise<PaymentIntent> {\n    return this.client.post<PaymentIntent>(`payment_intents/${id}/confirm`, params, true);\n  }\n\n  /**\n   * Complete a Payment Intent (API: POST /payment_intents/:id/complete).\n   * Sets the intent to processing; when payment is done, payment_intent.completed is sent.\n   * Use when the user is redirected to your success/return URL (e.g. https://yourapp.com/success?payment_intent=34).\n   *\n   * @param id - Payment Intent ID (raw, no prefix)\n   * @returns The updated Payment Intent (status processing)\n   *\n   * @example\n   * // When user lands on https://localhost:3001/success?payment_intent=34\n   * const intent = await orcarail.paymentIntents.complete('34');\n   */\n  public async complete(id: string): Promise<PaymentIntent> {\n    return this.client.post<PaymentIntent>(`payment_intents/${id}/complete`, {}, true);\n  }\n\n  /**\n   * Update a Payment Intent\n   *\n   * @param id - Payment Intent ID (raw, no prefix)\n   * @param params - Update parameters (all optional)\n   * @returns The updated Payment Intent\n   */\n  public async update(id: string, params: PaymentIntentUpdateParams): Promise<PaymentIntent> {\n    return this.client.patch<PaymentIntent>(`payment_intents/${id}`, params, true);\n  }\n}\n","import { HttpClient } from '../client';\nimport type { FiatQuote, FiatQuoteParams, Currency } from '../types';\n\n/**\n * Exchange rates / fiat quote resource (GET /v1/rates/...)\n */\nexport class Rates {\n  private readonly client: HttpClient;\n\n  constructor(client: HttpClient) {\n    this.client = client;\n  }\n\n  /**\n   * Get a fiat-to-USDC quote: convert an amount in a source currency to USD/USDC.\n   */\n  public async getFiatQuote(params: FiatQuoteParams): Promise<FiatQuote> {\n    const amount = encodeURIComponent(params.amount);\n    const currency = encodeURIComponent(params.currency);\n    const path = `rates/fiat-quote?amount=${amount}&currency=${currency}`;\n    return this.client.get<FiatQuote>(path, true);\n  }\n\n  /**\n   * List supported fiat currencies.\n   */\n  public async getCurrencies(options?: {\n    active?: boolean;\n  }): Promise<Currency[]> {\n    const query = options?.active === true ? '?active=true' : '';\n    const path = `rates/currencies${query}`;\n    return this.client.get<Currency[]>(path, true);\n  }\n}\n","import { HttpClient } from '../client';\nimport type {\n  ProductCreateParams,\n  ProductUpdateParams,\n  CatalogListEnvelope,\n  CatalogProduct,\n} from '../types';\n\nexport class Products {\n  constructor(private readonly client: HttpClient) {}\n\n  private unwrapList<T>(body: CatalogListEnvelope<T>): T[] {\n    return body.data;\n  }\n\n  public async list(organizationId: string): Promise<CatalogProduct[]> {\n    const body = await this.client.get<CatalogListEnvelope<CatalogProduct>>(\n      `organizations/${organizationId}/products`,\n      true,\n    );\n    return this.unwrapList(body);\n  }\n\n  public async create(\n    organizationId: string,\n    params: ProductCreateParams,\n  ): Promise<CatalogProduct> {\n    return this.client.post<CatalogProduct>(\n      `organizations/${organizationId}/products`,\n      params,\n      true,\n    );\n  }\n\n  public async update(\n    organizationId: string,\n    productId: string,\n    params: ProductUpdateParams,\n  ): Promise<CatalogProduct> {\n    return this.client.patch<CatalogProduct>(\n      `organizations/${organizationId}/products/${productId}`,\n      params,\n      true,\n    );\n  }\n\n  public async delete(\n    organizationId: string,\n    productId: string,\n  ): Promise<{ id: string; object: 'product'; deleted: true }> {\n    return this.client.delete<{ id: string; object: 'product'; deleted: true }>(\n      `organizations/${organizationId}/products/${productId}`,\n      undefined,\n      true,\n    );\n  }\n}\n","import { HttpClient } from '../client';\nimport { Products } from './products';\nimport type {\n  PriceCreateParams,\n  PriceListParams,\n  PriceUpdateParams,\n  CatalogListEnvelope,\n  CatalogPrice,\n} from '../types';\n\nfunction normalizeMoneyAmount(raw: string): string {\n  const n = parseFloat(raw);\n  if (Number.isNaN(n) || n <= 0) {\n    throw new Error('Amount must be a positive number');\n  }\n  return n.toFixed(2);\n}\n\nfunction amountsEqual(a: string, b: string): boolean {\n  return Math.abs(parseFloat(a) - parseFloat(b)) < 0.000001;\n}\n\nfunction buildListQuery(params?: PriceListParams): string {\n  if (!params) return '';\n  const search = new URLSearchParams();\n  if (params.active != null) search.set('active', String(params.active));\n  if (params.recurring != null) search.set('recurring', String(params.recurring));\n  if (params.limit != null) search.set('limit', String(params.limit));\n  const qs = search.toString();\n  return qs ? `?${qs}` : '';\n}\n\n/**\n * Organization catalog prices under `/organizations/:id/prices`.\n */\nexport class Prices {\n  constructor(private readonly client: HttpClient) {}\n\n  private unwrapList<T>(body: CatalogListEnvelope<T>): T[] {\n    return body.data;\n  }\n\n  public async list(organizationId: string, params?: PriceListParams): Promise<CatalogPrice[]> {\n    const q = buildListQuery(params);\n    const body = await this.client.get<CatalogListEnvelope<CatalogPrice>>(\n      `organizations/${organizationId}/prices${q}`,\n      true,\n    );\n    return this.unwrapList(body);\n  }\n\n  public async create(organizationId: string, params: PriceCreateParams): Promise<CatalogPrice> {\n    return this.client.post<CatalogPrice>(\n      `organizations/${organizationId}/prices`,\n      params,\n      true,\n    );\n  }\n\n  public async update(\n    organizationId: string,\n    priceId: string,\n    params: PriceUpdateParams,\n  ): Promise<CatalogPrice> {\n    return this.client.patch<CatalogPrice>(\n      `organizations/${organizationId}/prices/${priceId}`,\n      params,\n      true,\n    );\n  }\n\n  public async deactivate(organizationId: string, priceId: string): Promise<CatalogPrice> {\n    return this.client.delete<CatalogPrice>(\n      `organizations/${organizationId}/prices/${priceId}`,\n      undefined,\n      true,\n    );\n  }\n\n  /** Active recurring prices (subscriptions). */\n  public async listActiveRecurring(organizationId: string): Promise<CatalogPrice[]> {\n    return this.list(organizationId, { active: true, recurring: true });\n  }\n\n  /**\n   * Find an active one-time price by fiat amount, currency, and parent product name.\n   */\n  public async findOneTimeByAmount(\n    organizationId: string,\n    params: { amount: string; currencyCode: string; productName: string },\n  ): Promise<CatalogPrice | null> {\n    const amountStr = normalizeMoneyAmount(params.amount);\n    const currencyLower = params.currencyCode.trim().toLowerCase();\n    const oneTime = await this.list(organizationId, { recurring: false, active: true });\n    const hit = oneTime.find((p) => {\n      if (p.type === 'recurring' || p.recurring) return false;\n      const prodName =\n        typeof p.product === 'object' && p.product && 'name' in p.product\n          ? p.product.name\n          : '';\n      if (prodName !== params.productName) return false;\n      if (typeof p.currency !== 'string' || p.currency.trim() === '') return false;\n      const code = p.currency.trim().toLowerCase();\n      return code === currencyLower && amountsEqual(p.unit_amount_decimal, amountStr);\n    });\n    return hit ?? null;\n  }\n\n  /**\n   * Return an existing one-time price or create product + price.\n   */\n  public async ensureOneTime(\n    organizationId: string,\n    params: {\n      amount: string;\n      currencyCode: string;\n      tokenId: string;\n      networkId: string;\n      productName: string;\n      productDescription?: string;\n      productMetadata?: Record<string, unknown>;\n    },\n  ): Promise<CatalogPrice> {\n    const existing = await this.findOneTimeByAmount(organizationId, {\n      amount: params.amount,\n      currencyCode: params.currencyCode,\n      productName: params.productName,\n    });\n    if (existing) return existing;\n\n    const amountStr = normalizeMoneyAmount(params.amount);\n    const currencyLower = params.currencyCode.trim().toLowerCase();\n    const productsApi = new Products(this.client);\n    const products = await productsApi.list(organizationId);\n    let product = products.find((x) => x.name === params.productName);\n    if (!product) {\n      product = await productsApi.create(organizationId, {\n        name: params.productName,\n        description: params.productDescription ?? '',\n        active: true,\n        metadata: params.productMetadata ?? {},\n      });\n    }\n\n    const nickname = `demo-pay-onetime-${amountStr}`;\n    return this.create(organizationId, {\n      product: product.id,\n      nickname,\n      unit_amount_decimal: amountStr,\n      currency: currencyLower,\n      token_id: params.tokenId,\n      network_id: params.networkId,\n      active: true,\n      metadata: { seedKey: nickname },\n    });\n  }\n}\n","import { HttpClient } from '../client';\nimport type {\n  PaymentLink,\n  Subscription,\n  SubscriptionCancelParams,\n  SubscriptionCreateParams,\n  SubscriptionListParams,\n  SubscriptionListResponse,\n  SubscriptionPaymentLinksListParams,\n  SubscriptionUpdateParams,\n} from '../types';\n\n/**\n * Build query string from list params (cursor pagination and filters)\n */\nfunction buildListQuery(params?: SubscriptionListParams): string {\n  if (!params) return '';\n  const search = new URLSearchParams();\n\n  if (params.status != null) search.set('status', params.status);\n  if (params.collection_method != null) search.set('collection_method', params.collection_method);\n  if (params.limit != null) search.set('limit', String(params.limit));\n  if (params.starting_after != null) search.set('starting_after', params.starting_after);\n  if (params.ending_before != null) search.set('ending_before', params.ending_before);\n\n  if (params.current_period_start) {\n    const s = params.current_period_start;\n    if (s.gt) search.set('current_period_start[gt]', s.gt);\n    if (s.gte) search.set('current_period_start[gte]', s.gte);\n    if (s.lt) search.set('current_period_start[lt]', s.lt);\n    if (s.lte) search.set('current_period_start[lte]', s.lte);\n  }\n  if (params.current_period_end) {\n    const e = params.current_period_end;\n    if (e.gt) search.set('current_period_end[gt]', e.gt);\n    if (e.gte) search.set('current_period_end[gte]', e.gte);\n    if (e.lt) search.set('current_period_end[lt]', e.lt);\n    if (e.lte) search.set('current_period_end[lte]', e.lte);\n  }\n  if (params.created) {\n    const c = params.created;\n    if (c.gt) search.set('created[gt]', c.gt);\n    if (c.gte) search.set('created[gte]', c.gte);\n    if (c.lt) search.set('created[lt]', c.lt);\n    if (c.lte) search.set('created[lte]', c.lte);\n  }\n\n  const qs = search.toString();\n  return qs ? `?${qs}` : '';\n}\n\nfunction buildPaymentLinksQuery(params?: SubscriptionPaymentLinksListParams): string {\n  if (!params) return '';\n  const search = new URLSearchParams();\n  if (params.limit != null) search.set('limit', String(params.limit));\n  if (params.starting_after != null) search.set('starting_after', params.starting_after);\n  if (params.ending_before != null) search.set('ending_before', params.ending_before);\n  const qs = search.toString();\n  return qs ? `?${qs}` : '';\n}\n\n/**\n * Subscriptions resource\n */\nexport class Subscriptions {\n  private readonly client: HttpClient;\n\n  constructor(client: HttpClient) {\n    this.client = client;\n  }\n\n  /**\n   * Create a subscription\n   *\n   * @param params - Subscription creation parameters (snake_case)\n   * @returns The created subscription\n   */\n  public async create(params: SubscriptionCreateParams): Promise<Subscription> {\n    return this.client.post<Subscription>('subscriptions', params, true);\n  }\n\n  /**\n   * Retrieve a subscription by ID\n   *\n   * @param id - Subscription ID\n   * @returns The subscription\n   */\n  public async retrieve(id: string): Promise<Subscription> {\n    return this.client.get<Subscription>(`subscriptions/${id}`, true);\n  }\n\n  /**\n   * Update a subscription\n   *\n   * @param id - Subscription ID\n   * @param params - Update parameters (all optional)\n   * @returns The updated subscription\n   */\n  public async update(id: string, params: SubscriptionUpdateParams): Promise<Subscription> {\n    return this.client.patch<Subscription>(`subscriptions/${id}`, params, true);\n  }\n\n  /**\n   * Cancel a subscription (immediate or at period end)\n   *\n   * @param id - Subscription ID\n   * @param params - Optional cancellation details (comment, feedback)\n   * @returns The canceled subscription\n   */\n  public async cancel(id: string, params?: SubscriptionCancelParams): Promise<Subscription> {\n    return this.client.delete<Subscription>(`subscriptions/${id}`, params ?? undefined, true);\n  }\n\n  /**\n   * Resume a paused subscription\n   *\n   * @param id - Subscription ID\n   * @returns The resumed subscription\n   */\n  public async resume(id: string): Promise<Subscription> {\n    return this.client.post<Subscription>(`subscriptions/${id}/resume`, {}, true);\n  }\n\n  /**\n   * List subscriptions with optional filters and cursor-based pagination\n   *\n   * @param params - Optional list parameters (status, collection_method, date filters, limit, cursor)\n   * @returns Paginated list of subscriptions\n   */\n  public async list(params?: SubscriptionListParams): Promise<SubscriptionListResponse> {\n    const query = buildListQuery(params);\n    return this.client.get<SubscriptionListResponse>(`subscriptions${query}`, true);\n  }\n\n  /**\n   * List payment links (cycle invoices) for a subscription\n   *\n   * @param id - Subscription ID\n   * @param params - Optional pagination (limit, starting_after, ending_before)\n   * @returns Paginated list of payment links\n   */\n  public async listPaymentLinks(\n    id: string,\n    params?: SubscriptionPaymentLinksListParams\n  ): Promise<{ data: PaymentLink[]; has_more: boolean }> {\n    const query = buildPaymentLinksQuery(params);\n    return this.client.get<{ data: PaymentLink[]; has_more: boolean }>(\n      `subscriptions/${id}/payment-links${query}`,\n      true\n    );\n  }\n}\n","import { createHmac, timingSafeEqual } from 'crypto';\nimport { OrcaRailSignatureVerificationError } from './errors';\nimport type { WebhookEvent } from './types';\n\n/**\n * Webhook utilities for verifying webhook signatures\n */\nexport class Webhooks {\n  /**\n   * Verify webhook signature\n   *\n   * @param rawBody - Raw request body (string or Buffer)\n   * @param signature - Signature from x-webhook-signature header\n   * @param secret - API key secret (sk_live_...) used to verify the HMAC signature\n   * @returns True if signature is valid, false otherwise\n   */\n  public verifySignature(rawBody: string | Buffer, signature: string, secret: string): boolean {\n    if (!signature || !secret) {\n      return false;\n    }\n\n    // Convert rawBody to string if it's a Buffer\n    const bodyString = typeof rawBody === 'string' ? rawBody : rawBody.toString('utf8');\n\n    // Compute expected signature\n    const expectedSignature = createHmac('sha256', secret).update(bodyString).digest('hex');\n\n    // Compare signatures using timing-safe comparison\n    const signatureBuffer = Buffer.from(signature, 'hex');\n    const expectedBuffer = Buffer.from(expectedSignature, 'hex');\n\n    // Length check first (prevents timing attacks)\n    if (signatureBuffer.length !== expectedBuffer.length) {\n      return false;\n    }\n\n    return timingSafeEqual(signatureBuffer, expectedBuffer);\n  }\n\n  /**\n   * Construct and verify a webhook event from raw body and signature\n   *\n   * @param rawBody - Raw request body (string or Buffer)\n   * @param signature - Signature from x-webhook-signature header\n   * @param secret - API key secret (sk_live_...) used to verify the HMAC signature\n   * @returns Parsed webhook event\n   * @throws OrcaRailSignatureVerificationError if signature is invalid\n   */\n  public constructEvent(rawBody: string | Buffer, signature: string, secret: string): WebhookEvent {\n    if (!this.verifySignature(rawBody, signature, secret)) {\n      throw new OrcaRailSignatureVerificationError(\n        'Webhook signature verification failed. The signature does not match the expected signature.',\n        signature\n      );\n    }\n\n    // Parse JSON body\n    const bodyString = typeof rawBody === 'string' ? rawBody : rawBody.toString('utf8');\n\n    try {\n      const event = JSON.parse(bodyString) as WebhookEvent;\n      return event;\n    } catch (error) {\n      throw new OrcaRailSignatureVerificationError(\n        `Failed to parse webhook body: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n}\n","/**\n * Optional metadata shape for demo / dashboard catalog products (subscription tiers).\n * API stores arbitrary JSON on `CatalogProduct.metadata`; this documents a supported convention.\n */\nexport interface OrcaRailCatalogPlanProductMetadata {\n  seedKey?: string;\n  tier?: 'free' | 'go' | 'plus' | 'pro' | string;\n  tagline?: string;\n  features?: string[];\n  featuresHeader?: string;\n  badge?: string;\n  footerNote?: string;\n  highlight?: boolean;\n  displayPriceNote?: string;\n  strikePriceNote?: string;\n  /** When true, show as a non-purchasable tier (no recurring price). */\n  uiOnly?: boolean;\n}\n\nexport function parseCatalogPlanMetadata(\n  raw: Record<string, unknown> | null | undefined\n): OrcaRailCatalogPlanProductMetadata | null {\n  if (!raw || typeof raw !== 'object') return null;\n  return raw as OrcaRailCatalogPlanProductMetadata;\n}\n","import { HttpClient } from './client';\nimport { Pay } from './resources/pay';\nimport { PaymentIntents } from './resources/payment-intents';\nimport { Rates } from './resources/rates';\nimport { Products } from './resources/products';\nimport { Prices } from './resources/prices';\nimport { Subscriptions } from './resources/subscriptions';\nimport { Webhooks } from './webhooks';\nimport type { OrcaRailConfig } from './types';\n\n// Re-export all types\nexport type {\n  OrcaRailConfig,\n  PaymentIntent,\n  PaymentIntentStatus,\n  PaymentIntentCreateParams,\n  PaymentIntentUpdateParams,\n  PaymentIntentConfirmParams,\n  PaymentLink,\n  LatestTransaction,\n  WebhookEvent,\n  WebhookEventType,\n  WebhookEventData,\n  FiatQuoteParams,\n  FiatQuote,\n  Currency,\n  Subscription,\n  SubscriptionStatus,\n  SubscriptionInterval,\n  SubscriptionCollectionMethod,\n  SubscriptionAutoCharge,\n  SubscriptionCreateParams,\n  SubscriptionUpdateParams,\n  SubscriptionCancelParams,\n  SubscriptionListParams,\n  SubscriptionListResponse,\n  SubscriptionPaymentLinksListParams,\n  CatalogListEnvelope,\n  CatalogProduct,\n  CatalogPrice,\n  CatalogPriceRecurring,\n  ProductSummary,\n  ExpandedPriceSummary,\n  ProductCreateParams,\n  ProductUpdateParams,\n  PriceCreateParams,\n  PriceUpdateParams,\n  PriceListParams,\n  ProductDataInlineParams,\n  CatalogProductCreateParams,\n  CatalogProductUpdateParams,\n  CatalogPriceCreateParams,\n  CatalogPriceUpdateParams,\n  CatalogPriceListParams,\n  CatalogPriceSummary,\n  CatalogProductSummary,\n} from './types';\n\nexport {\n  parseCatalogPlanMetadata,\n  type OrcaRailCatalogPlanProductMetadata,\n} from './catalog-plan-metadata';\n\n// Re-export all errors\nexport {\n  OrcaRailError,\n  OrcaRailAPIError,\n  OrcaRailAuthenticationError,\n  OrcaRailSignatureVerificationError,\n} from './errors';\n\n/**\n * OrcaRail Node.js SDK\n *\n * @example\n * ```typescript\n * import OrcaRail from '@orcarail/node';\n *\n * const orcarail = new OrcaRail('ak_live_xxx', 'sk_live_xxx');\n *\n * // Create a payment intent\n * const intent = await orcarail.paymentIntents.create({\n *   amount: '100.00',\n *   currency: 'usd',\n *   payment_method_types: ['crypto'],\n *   tokenId: 1,\n *   networkId: 1,\n *   return_url: 'https://merchant.example.com/return',\n * });\n * ```\n */\nexport class OrcaRail {\n  /**\n   * Payment Intents resource\n   */\n  public readonly paymentIntents: PaymentIntents;\n\n  /**\n   * Subscriptions resource\n   */\n  public readonly subscriptions: Subscriptions;\n\n  /**\n   * Pay resource (slug-based get/cancel)\n   */\n  public readonly pay: Pay;\n\n  /**\n   * Exchange rates / fiat quote resource\n   */\n  public readonly rates: Rates;\n\n  /**\n   * Catalog products\n   */\n  public readonly products: Products;\n\n  /**\n   * Catalog prices\n   */\n  public readonly prices: Prices;\n\n  /**\n   * Webhooks utilities\n   */\n  public readonly webhooks: Webhooks;\n\n  private readonly client: HttpClient;\n\n  /**\n   * Create a new OrcaRail client instance\n   *\n   * @param apiKey - Your OrcaRail API key (e.g., \"ak_live_xxx\")\n   * @param apiSecret - Your OrcaRail API secret (e.g., \"sk_live_xxx\")\n   * @param config - Optional configuration\n   */\n  constructor(apiKey: string, apiSecret: string, config?: OrcaRailConfig) {\n    this.client = new HttpClient(apiKey, apiSecret, config);\n    this.paymentIntents = new PaymentIntents(this.client);\n    this.subscriptions = new Subscriptions(this.client);\n    this.pay = new Pay(this.client);\n    this.rates = new Rates(this.client);\n    this.products = new Products(this.client);\n    this.prices = new Prices(this.client);\n    this.webhooks = new Webhooks();\n  }\n}\n\nexport default OrcaRail;\n"]}