@dime-technology/dime-js-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +252 -0
- package/dist/index.cjs +1227 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +438 -0
- package/dist/index.d.ts +438 -0
- package/dist/index.js +1173 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/config.ts","../src/exceptions/dime-exception.ts","../src/exceptions/validation-exception.ts","../src/exceptions/rate-limit-exception.ts","../src/exceptions/api-exception.ts","../src/exceptions/authentication-exception.ts","../src/exceptions/permission-denied-exception.ts","../src/exceptions/not-found-exception.ts","../src/exceptions/server-exception.ts","../src/exceptions/connection-exception.ts","../src/http/error-handler.ts","../src/http/transport.ts","../src/support/arr.ts","../src/data-objects/address.ts","../src/data-objects/message-result.ts","../src/pagination/cursor-page.ts","../src/resources/abstract-resource.ts","../src/resources/addresses.ts","../src/data-objects/customer.ts","../src/resources/customers.ts","../src/data-objects/deposit.ts","../src/data-objects/transaction-address.ts","../src/data-objects/transaction.ts","../src/data-objects/deposit-with-transactions.ts","../src/data-objects/deposit-group.ts","../src/resources/deposits.ts","../src/data-objects/form-link.ts","../src/data-objects/merchant.ts","../src/resources/merchants.ts","../src/data-objects/payment-method.ts","../src/resources/payment-methods.ts","../src/data-objects/recurring-payment-method.ts","../src/data-objects/recurring-payment.ts","../src/resources/recurring-payments.ts","../src/data-objects/tokenize-result.ts","../src/resources/transactions.ts","../src/client.ts"],"sourcesContent":["export { Client } from './client.js'\nexport { Config, DEFAULT_BASE_URL, VERSION } from './config.js'\nexport { CursorPage } from './pagination/cursor-page.js'\n\n// Data objects\nexport { Transaction } from './data-objects/transaction.js'\nexport { TransactionAddress } from './data-objects/transaction-address.js'\nexport { Customer } from './data-objects/customer.js'\nexport { PaymentMethod } from './data-objects/payment-method.js'\nexport { Merchant } from './data-objects/merchant.js'\nexport { FormLink } from './data-objects/form-link.js'\nexport { Address } from './data-objects/address.js'\nexport { Deposit } from './data-objects/deposit.js'\nexport { DepositWithTransactions } from './data-objects/deposit-with-transactions.js'\nexport { DepositGroup } from './data-objects/deposit-group.js'\nexport { RecurringPayment } from './data-objects/recurring-payment.js'\nexport { RecurringPaymentMethod } from './data-objects/recurring-payment-method.js'\nexport { MessageResult } from './data-objects/message-result.js'\nexport { TokenizeResult } from './data-objects/tokenize-result.js'\n\n// Exceptions\nexport {\n DimeException,\n ValidationException,\n RateLimitException,\n ApiException,\n AuthenticationException,\n PermissionDeniedException,\n NotFoundException,\n ServerException,\n ConnectionException,\n} from './exceptions/index.js'\n","export const DEFAULT_BASE_URL = 'https://app.dimepayments.com'\nexport const VERSION = '1.0.0'\n\nexport interface ConfigOptions {\n /** Sanctum personal access token (sent as Bearer). */\n token: string\n /** Base URL; defaults to https://app.dimepayments.com. */\n baseUrl?: string\n /** Per-request timeout in seconds. Default 30. */\n timeout?: number\n /** How many times to retry 429/5xx/network errors. Default 2. */\n maxRetries?: number\n /** Base seconds for exponential backoff. Default 0.5. */\n retryBaseDelay?: number\n /** Custom fetch implementation — inject a mock in tests. */\n fetch?: typeof globalThis.fetch\n /** Custom sleep implementation — inject a no-op in tests to skip delays. */\n sleep?: (ms: number) => Promise<void>\n}\n\nexport class Config {\n readonly token: string\n readonly baseUrl: string\n readonly timeout: number\n readonly maxRetries: number\n readonly retryBaseDelay: number\n readonly fetch?: typeof globalThis.fetch\n readonly sleep?: (ms: number) => Promise<void>\n\n constructor(options: ConfigOptions | string, baseUrl?: string) {\n if (typeof options === 'string') {\n this.token = options\n this.baseUrl = baseUrl ?? DEFAULT_BASE_URL\n this.timeout = 30\n this.maxRetries = 2\n this.retryBaseDelay = 0.5\n } else {\n this.token = options.token\n this.baseUrl = options.baseUrl ?? DEFAULT_BASE_URL\n this.timeout = options.timeout ?? 30\n this.maxRetries = options.maxRetries ?? 2\n this.retryBaseDelay = options.retryBaseDelay ?? 0.5\n this.fetch = options.fetch\n this.sleep = options.sleep\n }\n }\n\n baseUri(): string {\n return `${this.baseUrl.replace(/\\/$/, '')}/api/`\n }\n}\n","export class DimeException extends Error {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly responseBody: Record<string, unknown> = {},\n cause?: unknown,\n ) {\n super(message, { cause })\n this.name = this.constructor.name\n Object.setPrototypeOf(this, new.target.prototype)\n }\n\n getStatusCode(): number | undefined {\n return this.statusCode\n }\n\n getResponseBody(): Record<string, unknown> {\n return this.responseBody\n }\n}\n","import { DimeException } from './dime-exception.js'\n\nexport class ValidationException extends DimeException {\n constructor(\n message: string,\n public readonly errors: Record<string, string[]> = {},\n statusCode?: number,\n responseBody: Record<string, unknown> = {},\n cause?: unknown,\n ) {\n super(message, statusCode, responseBody, cause)\n }\n\n getErrors(): Record<string, string[]> {\n return this.errors\n }\n\n firstError(): string | undefined {\n for (const messages of Object.values(this.errors)) {\n if (messages.length > 0) return messages[0]\n }\n return undefined\n }\n}\n","import { DimeException } from './dime-exception.js'\n\nexport class RateLimitException extends DimeException {\n constructor(\n message: string,\n public readonly retryAfter?: number,\n statusCode = 429,\n responseBody: Record<string, unknown> = {},\n cause?: unknown,\n ) {\n super(message, statusCode, responseBody, cause)\n }\n\n getRetryAfter(): number | undefined {\n return this.retryAfter\n }\n}\n","import { DimeException } from './dime-exception.js'\n\nexport class ApiException extends DimeException {}\n","import { DimeException } from './dime-exception.js'\n\nexport class AuthenticationException extends DimeException {}\n","import { DimeException } from './dime-exception.js'\n\nexport class PermissionDeniedException extends DimeException {}\n","import { DimeException } from './dime-exception.js'\n\nexport class NotFoundException extends DimeException {}\n","import { DimeException } from './dime-exception.js'\n\nexport class ServerException extends DimeException {}\n","import { DimeException } from './dime-exception.js'\n\nexport class ConnectionException extends DimeException {}\n","import {\n ApiException,\n AuthenticationException,\n NotFoundException,\n PermissionDeniedException,\n RateLimitException,\n ServerException,\n ValidationException,\n} from '../exceptions/index.js'\n\ntype Raw = Record<string, unknown>\n\nfunction looksLikeValidation(status: number, body: Raw): boolean {\n if (\n body['errors'] !== undefined &&\n typeof body['errors'] === 'object' &&\n !Array.isArray(body['errors'])\n ) {\n return true\n }\n return (\n (status === 400 || status === 422) &&\n body['message'] !== undefined &&\n typeof body['message'] === 'object' &&\n !Array.isArray(body['message'])\n )\n}\n\nfunction extractErrors(body: Raw): Record<string, string[]> {\n const raw = body['errors'] ?? body['message']\n if (raw === null || raw === undefined || typeof raw !== 'object' || Array.isArray(raw)) {\n return {}\n }\n\n const errors: Record<string, string[]> = {}\n for (const [field, messages] of Object.entries(raw as Record<string, unknown>)) {\n errors[field] = Array.isArray(messages) ? messages.map(String) : [String(messages)]\n }\n return errors\n}\n\nfunction extractMessage(body: Raw): string | undefined {\n const data = body['data']\n if (data !== null && data !== undefined && typeof data === 'object' && !Array.isArray(data)) {\n const msg = (data as Raw)['message']\n if (typeof msg === 'string') return msg\n }\n if (typeof body['message'] === 'string') return body['message']\n return undefined\n}\n\nfunction firstMessage(errors: Record<string, string[]>): string | undefined {\n for (const messages of Object.values(errors)) {\n if (messages.length > 0) return messages[0]\n }\n return undefined\n}\n\nexport function handleError(status: number, body: Raw, retryAfter?: number): never {\n if (looksLikeValidation(status, body)) {\n const errors = extractErrors(body)\n throw new ValidationException(\n firstMessage(errors) ?? 'The given data was invalid.',\n errors,\n status,\n body,\n )\n }\n\n const message = extractMessage(body) ?? `Dime API request failed with status ${status}.`\n\n if (status === 401) throw new AuthenticationException(message, status, body)\n if (status === 403) throw new PermissionDeniedException(message, status, body)\n if (status === 404) throw new NotFoundException(message, status, body)\n if (status === 429) throw new RateLimitException(message, retryAfter, status, body)\n if (status >= 500) throw new ServerException(message, status, body)\n throw new ApiException(message, status, body)\n}\n","import { Config, VERSION } from '../config.js'\nimport { ConnectionException } from '../exceptions/index.js'\nimport { handleError } from './error-handler.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Transport {\n private readonly fetchFn: typeof globalThis.fetch\n private readonly sleepFn: (ms: number) => Promise<void>\n\n constructor(private readonly config: Config) {\n this.fetchFn = config.fetch ?? globalThis.fetch\n this.sleepFn =\n config.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)))\n }\n\n /**\n * Execute a request and return the decoded JSON body.\n *\n * The Dime API expects request parameters in the JSON body even for GET\n * requests; this transport always sends the payload as a JSON body regardless\n * of HTTP method, matching the server's expectation.\n */\n async request(\n method: string,\n path: string,\n body: Raw = {},\n query: Record<string, string> = {},\n ): Promise<Raw> {\n let url = `${this.config.baseUri()}${path.replace(/^\\//, '')}`\n\n if (Object.keys(query).length > 0) {\n url += '?' + new URLSearchParams(query).toString()\n }\n\n const hasBody = Object.keys(body).length > 0\n const init: RequestInit = {\n method,\n headers: {\n Authorization: `Bearer ${this.config.token}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Dime-Sdk': `dime-js-sdk/${VERSION}`,\n },\n ...(hasBody ? { body: JSON.stringify(body) } : {}),\n }\n\n return this.attempt(url, init, 0)\n }\n\n private async attempt(url: string, init: RequestInit, attempt: number): Promise<Raw> {\n let response: Response\n\n try {\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), this.config.timeout * 1_000)\n try {\n response = await this.fetchFn(url, { ...init, signal: controller.signal })\n } finally {\n clearTimeout(timer)\n }\n } catch (err) {\n const isAbort = err instanceof Error && err.name === 'AbortError'\n const label = isAbort ? `Request timed out after ${this.config.timeout}s` : `Could not reach the Dime API: ${err instanceof Error ? err.message : String(err)}`\n\n if (attempt < this.config.maxRetries) {\n await this.sleep(attempt, undefined)\n return this.attempt(url, init, attempt + 1)\n }\n\n throw new ConnectionException(label, undefined, {}, err instanceof Error ? err : undefined)\n }\n\n const status = response.status\n\n if ((status === 429 || status >= 500) && attempt < this.config.maxRetries) {\n const retryAfter = parseRetryAfter(response)\n await this.sleep(attempt, retryAfter)\n return this.attempt(url, init, attempt + 1)\n }\n\n const decoded = await decode(response)\n\n if (status < 200 || status >= 300) {\n handleError(status, decoded, parseRetryAfter(response))\n }\n\n return decoded\n }\n\n private async sleep(attempt: number, retryAfter: number | undefined): Promise<void> {\n const ms =\n retryAfter !== undefined\n ? retryAfter * 1_000\n : Math.min(2 ** attempt * this.config.retryBaseDelay * 1_000, 30_000)\n await this.sleepFn(ms)\n }\n}\n\nfunction parseRetryAfter(response: Response): number | undefined {\n const header = response.headers.get('Retry-After')\n if (header !== null && /^\\d+$/.test(header)) return parseInt(header, 10)\n return undefined\n}\n\nasync function decode(response: Response): Promise<Raw> {\n const text = await response.text()\n if (!text) return {}\n\n try {\n const parsed: unknown = JSON.parse(text)\n if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {\n return parsed as Raw\n }\n return { message: text }\n } catch {\n return { message: text }\n }\n}\n","type Raw = Record<string, unknown>\n\nexport function arrString(data: Raw, key: string): string | undefined {\n const value = data[key]\n if (value === null || value === undefined || Array.isArray(value)) return undefined\n if (typeof value === 'boolean') return value ? '1' : '0'\n return String(value)\n}\n\nexport function arrStringFrom(data: Raw, keys: string[]): string | undefined {\n for (const key of keys) {\n if (key in data && data[key] !== null && data[key] !== undefined) {\n return arrString(data, key)\n }\n }\n return undefined\n}\n\nexport function arrInt(data: Raw, key: string): number | undefined {\n const value = data[key]\n if (value === null || value === undefined) return undefined\n const n = Number(value)\n return Number.isNaN(n) ? undefined : Math.trunc(n)\n}\n\nexport function arrBool(data: Raw, key: string, defaultValue = false): boolean {\n const value = data[key]\n return value === null || value === undefined ? defaultValue : Boolean(value)\n}\n\nexport function arrObjectFrom(data: Raw, keys: string[]): Raw {\n for (const key of keys) {\n const value = data[key]\n if (\n value !== null &&\n value !== undefined &&\n typeof value === 'object' &&\n !Array.isArray(value)\n ) {\n return value as Raw\n }\n }\n return {}\n}\n\nexport function arrArrayFrom(data: Raw, key: string): Raw[] {\n const value = data[key]\n if (Array.isArray(value)) return value as Raw[]\n return []\n}\n","import { arrInt, arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Address {\n constructor(\n public readonly id?: number,\n public readonly recipient?: string,\n public readonly lineOne?: string,\n public readonly lineTwo?: string,\n public readonly lineThree?: string,\n public readonly city?: string,\n public readonly state?: string,\n public readonly zip?: string,\n ) {}\n\n static fromRaw(data: Raw): Address {\n return new Address(\n // show returns address_id; list returns id\n arrInt(data, 'address_id') ?? arrInt(data, 'id'),\n arrString(data, 'recipient'),\n arrString(data, 'line_one'),\n arrString(data, 'line_two'),\n arrString(data, 'line_three'),\n arrString(data, 'city'),\n arrString(data, 'state'),\n arrString(data, 'zip'),\n )\n }\n}\n","import { arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class MessageResult {\n constructor(public readonly message?: string) {}\n\n static fromRaw(data: Raw): MessageResult {\n return new MessageResult(arrString(data, 'message'))\n }\n}\n","export type PageFetcher<T> = (cursor: string) => Promise<CursorPage<T>>\n\nexport class CursorPage<T> {\n constructor(\n public readonly data: T[],\n public readonly nextCursor?: string,\n public readonly prevCursor?: string,\n public readonly perPage?: number,\n public readonly path?: string,\n private readonly fetcher?: PageFetcher<T>,\n ) {}\n\n hasMore(): boolean {\n return this.nextCursor !== undefined && this.fetcher !== undefined\n }\n\n async next(): Promise<CursorPage<T> | null> {\n if (!this.hasMore() || this.nextCursor === undefined || this.fetcher === undefined) {\n return null\n }\n return this.fetcher(this.nextCursor)\n }\n\n /** Lazily iterate every item across all remaining pages. */\n async *autoPaging(): AsyncGenerator<T> {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page: CursorPage<T> | null = this\n while (page !== null) {\n for (const item of page.data) {\n yield item\n }\n page = await page.next()\n }\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.data[Symbol.iterator]()\n }\n\n get length(): number {\n return this.data.length\n }\n}\n","import { Transport } from '../http/transport.js'\nimport { CursorPage, type PageFetcher } from '../pagination/cursor-page.js'\n\ntype Raw = Record<string, unknown>\n\nexport abstract class AbstractResource {\n constructor(protected readonly transport: Transport) {}\n\n /**\n * Build the standard Dime request envelope, dropping null/undefined values.\n */\n protected envelope(data: Raw = {}, filters: Raw = {}): Raw {\n const body: Raw = {}\n\n const prunedData = pruneNulls(data)\n if (Object.keys(prunedData).length > 0) body['data'] = prunedData\n\n const prunedFilters = pruneNulls(filters)\n if (Object.keys(prunedFilters).length > 0) body['filters'] = prunedFilters\n\n return body\n }\n\n protected async paginate<T>(\n method: string,\n path: string,\n body: Raw,\n map: (item: Raw) => T,\n query: Record<string, string> = {},\n ): Promise<CursorPage<T>> {\n const raw = await this.transport.request(method, path, body, query)\n\n const items = Array.isArray(raw['data']) ? (raw['data'] as Raw[]) : []\n const meta =\n raw['meta'] !== null &&\n typeof raw['meta'] === 'object' &&\n !Array.isArray(raw['meta'])\n ? (raw['meta'] as Raw)\n : {}\n\n const nextCursor = extractCursor(meta, 'next_cursor')\n const prevCursor = extractCursor(meta, 'prev_cursor')\n\n const fetcher: PageFetcher<T> = (cursor) =>\n this.paginate(method, path, body, map, { cursor })\n\n return new CursorPage<T>(\n items.map(map),\n nextCursor,\n prevCursor,\n typeof meta['per_page'] === 'number' ? (meta['per_page'] as number) : undefined,\n typeof meta['path'] === 'string' ? (meta['path'] as string) : undefined,\n nextCursor !== undefined ? fetcher : undefined,\n )\n }\n}\n\nfunction extractCursor(meta: Raw, key: string): string | undefined {\n const v = meta[key]\n return typeof v === 'string' && v !== '' ? v : undefined\n}\n\nfunction pruneNulls(obj: Raw): Raw {\n return Object.fromEntries(\n Object.entries(obj).filter(([, v]) => v !== null && v !== undefined),\n )\n}\n","import { Address } from '../data-objects/address.js'\nimport { MessageResult } from '../data-objects/message-result.js'\nimport { CursorPage } from '../pagination/cursor-page.js'\nimport { AbstractResource } from './abstract-resource.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Addresses extends AbstractResource {\n async list(sid: string, uuid: string): Promise<CursorPage<Address>> {\n return this.paginate('GET', 'address/list', this.envelope({ sid, uuid }), Address.fromRaw)\n }\n\n async show(sid: string, uuid: string, addressId: number | string): Promise<Address> {\n const raw = await this.transport.request('GET', 'address/show', this.envelope({ sid, uuid, address_id: addressId }))\n return Address.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async create(sid: string, uuid: string, attributes: Raw): Promise<Address> {\n const raw = await this.transport.request('POST', 'address/create', this.envelope({ sid, uuid, ...attributes }))\n return Address.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async update(sid: string, uuid: string, addressId: number | string, attributes: Raw): Promise<Address> {\n const raw = await this.transport.request('PATCH', 'address/update', this.envelope({ sid, uuid, address_id: addressId, ...attributes }))\n return Address.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async delete(sid: string, uuid: string, addressId: number | string): Promise<MessageResult> {\n const raw = await this.transport.request('POST', 'address/delete', this.envelope({ sid, uuid, address_id: addressId }))\n return MessageResult.fromRaw((raw['data'] as Raw) ?? raw)\n }\n}\n","import { arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Customer {\n constructor(\n public readonly uuid?: string,\n public readonly firstName?: string,\n public readonly lastName?: string,\n public readonly phone?: string,\n public readonly email?: string,\n public readonly addr1?: string,\n public readonly addr2?: string,\n public readonly addr3?: string,\n public readonly city?: string,\n public readonly state?: string,\n public readonly zip?: string,\n public readonly country?: string,\n ) {}\n\n static fromRaw(data: Raw): Customer {\n return new Customer(\n arrString(data, 'uuid'),\n arrString(data, 'first_name'),\n arrString(data, 'last_name'),\n arrString(data, 'phone'),\n arrString(data, 'email'),\n arrString(data, 'addr1'),\n arrString(data, 'addr2'),\n arrString(data, 'addr3'),\n arrString(data, 'city'),\n arrString(data, 'state'),\n arrString(data, 'zip'),\n arrString(data, 'country'),\n )\n }\n}\n","import { Customer } from '../data-objects/customer.js'\nimport { MessageResult } from '../data-objects/message-result.js'\nimport { CursorPage } from '../pagination/cursor-page.js'\nimport { AbstractResource } from './abstract-resource.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Customers extends AbstractResource {\n async list(sid: string, filters: Raw = {}): Promise<CursorPage<Customer>> {\n return this.paginate('GET', 'customer/list', this.envelope({ sid }, filters), Customer.fromRaw)\n }\n\n async show(sid: string, filters: Raw): Promise<Customer> {\n const raw = await this.transport.request('GET', 'customer/show', this.envelope({ sid }, filters))\n return Customer.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async create(sid: string, attributes: Raw): Promise<Customer> {\n const raw = await this.transport.request('POST', 'customer/create', this.envelope({ sid, ...attributes }))\n return Customer.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async update(sid: string, filters: Raw, attributes: Raw): Promise<Customer> {\n const raw = await this.transport.request('PATCH', 'customer/update', this.envelope({ sid, ...attributes }, filters))\n return Customer.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async delete(sid: string, filters: Raw): Promise<MessageResult> {\n const raw = await this.transport.request('POST', 'customer/delete', this.envelope({ sid }, filters))\n return MessageResult.fromRaw((raw['data'] as Raw) ?? raw)\n }\n}\n","import { arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Deposit {\n constructor(\n public readonly transactionDate?: string,\n public readonly fundDate?: string,\n public readonly transactionInfoId?: string,\n public readonly transactionId?: string,\n public readonly transactionDetailAccount?: string,\n public readonly authorizationAmount?: string,\n public readonly netAmount?: string,\n public readonly sweepId?: string,\n public readonly type?: string,\n ) {}\n\n static fromRaw(data: Raw): Deposit {\n return new Deposit(\n arrString(data, 'transaction_date'),\n arrString(data, 'fund_date'),\n arrString(data, 'transaction_info_id'),\n arrString(data, 'transaction_id'),\n arrString(data, 'transaction_detail_account'),\n arrString(data, 'authorization_amount'),\n arrString(data, 'net_amount'),\n arrString(data, 'sweep_id'),\n arrString(data, 'type'),\n )\n }\n}\n","import { arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class TransactionAddress {\n constructor(\n public readonly firstName?: string,\n public readonly lastName?: string,\n public readonly addr1?: string,\n public readonly addr2?: string,\n public readonly city?: string,\n public readonly state?: string,\n public readonly zip?: string,\n ) {}\n\n static fromRaw(data: Raw): TransactionAddress {\n return new TransactionAddress(\n arrString(data, 'first_name'),\n arrString(data, 'last_name'),\n arrString(data, 'addr1'),\n arrString(data, 'addr2'),\n arrString(data, 'city'),\n arrString(data, 'state'),\n arrString(data, 'zip'),\n )\n }\n}\n","import { arrBool, arrObjectFrom, arrString } from '../support/arr.js'\nimport { TransactionAddress } from './transaction-address.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Transaction {\n constructor(\n public readonly transactionType?: string,\n public readonly transactionStatus?: string,\n public readonly transactionStatusDescription?: string,\n public readonly transactionNumber?: string,\n public readonly transactionDate?: string,\n public readonly fundDate?: string,\n public readonly settleDate?: string,\n public readonly amount?: string,\n public readonly description?: string,\n public readonly statusCode?: string,\n public readonly statusText?: string,\n public readonly email?: string,\n public readonly phone?: string,\n public readonly customerUuid?: string,\n public readonly multiUseToken?: string,\n public readonly pending: boolean = false,\n public readonly transactionInfoId?: string,\n public readonly parentTransactionInfoId?: string,\n public readonly billingAddress: TransactionAddress = new TransactionAddress(),\n public readonly shippingAddress: TransactionAddress = new TransactionAddress(),\n ) {}\n\n static fromRaw(data: Raw): Transaction {\n return new Transaction(\n arrString(data, 'transaction_type'),\n arrString(data, 'transaction_status'),\n arrString(data, 'transaction_status_description'),\n arrString(data, 'transaction_number'),\n arrString(data, 'transaction_date'),\n arrString(data, 'fund_date'),\n arrString(data, 'settle_date'),\n arrString(data, 'amount'),\n arrString(data, 'description'),\n arrString(data, 'status_code'),\n arrString(data, 'status_text'),\n arrString(data, 'email'),\n arrString(data, 'phone'),\n arrString(data, 'customer_uuid'),\n arrString(data, 'multi_use_token'),\n arrBool(data, 'pending'),\n arrString(data, 'transaction_info_id'),\n arrString(data, 'parent_transaction_info_id'),\n TransactionAddress.fromRaw(arrObjectFrom(data, ['billing_address'])),\n // The API returns shipping under the camelCase key `shippingAddress`; accept\n // snake_case too in case that is ever corrected server-side.\n TransactionAddress.fromRaw(arrObjectFrom(data, ['shippingAddress', 'shipping_address'])),\n )\n }\n}\n","import { arrInt, arrObjectFrom, arrString } from '../support/arr.js'\nimport { Transaction } from './transaction.js'\n\ntype Raw = Record<string, unknown>\n\nexport class DepositWithTransactions {\n constructor(\n public readonly sid?: string,\n public readonly transactionInfoId?: string,\n public readonly transactionId?: string,\n public readonly transactionDate?: string,\n public readonly fundDate?: string,\n public readonly type?: string,\n public readonly countOfTransactions?: number,\n public readonly transTotal?: string,\n public readonly transactions: Transaction[] = [],\n ) {}\n\n static fromRaw(data: Raw): DepositWithTransactions {\n const txRaw = data['transactions']\n const transactions = Array.isArray(txRaw)\n ? (txRaw as Raw[]).map((t) => Transaction.fromRaw(t))\n : typeof txRaw === 'object' && txRaw !== null\n ? Object.values(txRaw as Record<string, Raw>).map((t) => Transaction.fromRaw(t))\n : []\n\n return new DepositWithTransactions(\n arrString(data, 'sid'),\n arrString(data, 'transaction_info_id'),\n arrString(data, 'transaction_id'),\n arrString(data, 'transaction_date'),\n arrString(data, 'fund_date'),\n arrString(data, 'type'),\n arrInt(data, 'countOfTransactions'),\n arrString(data, 'transTotal'),\n transactions,\n )\n }\n}\n","import { arrInt, arrString } from '../support/arr.js'\nimport { DepositWithTransactions } from './deposit-with-transactions.js'\n\ntype Raw = Record<string, unknown>\n\nexport class DepositGroup {\n constructor(\n public readonly sid?: string,\n public readonly count?: number,\n public readonly deposits: DepositWithTransactions[] = [],\n ) {}\n\n static fromRaw(data: Raw): DepositGroup {\n const depositsRaw = data['deposits']\n const deposits =\n typeof depositsRaw === 'object' && depositsRaw !== null && !Array.isArray(depositsRaw)\n ? Object.values(depositsRaw as Record<string, Raw>).map((d) =>\n DepositWithTransactions.fromRaw(d),\n )\n : []\n\n return new DepositGroup(arrString(data, 'sid'), arrInt(data, 'count'), deposits)\n }\n}\n","import { Deposit } from '../data-objects/deposit.js'\nimport { DepositGroup } from '../data-objects/deposit-group.js'\nimport { DepositWithTransactions } from '../data-objects/deposit-with-transactions.js'\nimport { CursorPage } from '../pagination/cursor-page.js'\nimport { AbstractResource } from './abstract-resource.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Deposits extends AbstractResource {\n async list(sid: string, filters: Raw = {}): Promise<CursorPage<Deposit>> {\n return this.paginate('GET', 'deposit/list', this.envelope({ sid }, filters), Deposit.fromRaw)\n }\n\n async listWithTransactions(sid: string, filters: Raw): Promise<DepositGroup> {\n const raw = await this.transport.request('GET', 'deposit/list-with-trans', this.envelope({ sid }, filters))\n return DepositGroup.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async show(sid: string, identifier: Raw): Promise<DepositWithTransactions> {\n const raw = await this.transport.request('GET', 'deposit/show', this.envelope({ sid, ...identifier }))\n return DepositWithTransactions.fromRaw((raw['data'] as Raw) ?? {})\n }\n}\n","import { arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class FormLink {\n constructor(public readonly link?: string) {}\n\n static fromRaw(data: Raw): FormLink {\n return new FormLink(arrString(data, 'link'))\n }\n}\n","import { arrBool, arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Merchant {\n constructor(\n public readonly name?: string,\n public readonly sid?: string,\n public readonly mcc?: string,\n public readonly slug?: string,\n public readonly pubApiKey?: string,\n public readonly processorMid?: string,\n public readonly active: boolean = false,\n public readonly activeAt?: string,\n public readonly gPay: boolean = false,\n public readonly aPay: boolean = false,\n public readonly pciCompliance: boolean = false,\n public readonly website?: string,\n public readonly addr1?: string,\n public readonly addr2?: string,\n public readonly city?: string,\n public readonly state?: string,\n public readonly zip?: string,\n public readonly phone?: string,\n public readonly primaryPhone?: string,\n public readonly primaryEmail?: string,\n public readonly primaryName?: string,\n ) {}\n\n static fromRaw(data: Raw): Merchant {\n return new Merchant(\n arrString(data, 'name'),\n arrString(data, 'sid'),\n arrString(data, 'mcc'),\n arrString(data, 'slug'),\n arrString(data, 'pub_api_key'),\n arrString(data, 'processor_mid'),\n arrBool(data, 'active'),\n arrString(data, 'active_at'),\n arrBool(data, 'g_pay'),\n arrBool(data, 'a_pay'),\n arrBool(data, 'pci_compliance'),\n arrString(data, 'website'),\n arrString(data, 'addr1'),\n arrString(data, 'addr2'),\n arrString(data, 'city'),\n arrString(data, 'state'),\n arrString(data, 'zip'),\n arrString(data, 'phone'),\n arrString(data, 'primary_phone'),\n arrString(data, 'primary_email'),\n arrString(data, 'primary_name'),\n )\n }\n}\n","import { FormLink } from '../data-objects/form-link.js'\nimport { Merchant } from '../data-objects/merchant.js'\nimport { CursorPage } from '../pagination/cursor-page.js'\nimport { AbstractResource } from './abstract-resource.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Merchants extends AbstractResource {\n async list(filters: Raw = {}): Promise<CursorPage<Merchant>> {\n return this.paginate('GET', 'merchant/list', this.envelope({}, filters), Merchant.fromRaw)\n }\n\n async show(sid: string): Promise<Merchant> {\n const raw = await this.transport.request('GET', 'merchant/show', this.envelope({ sid }))\n return Merchant.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async create(attributes: Raw): Promise<Merchant> {\n const raw = await this.transport.request('POST', 'merchant/create', this.envelope(attributes))\n return Merchant.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async update(sid: string, attributes: Raw): Promise<Merchant> {\n const raw = await this.transport.request('PATCH', 'merchant/update', this.envelope({ sid, ...attributes }))\n return Merchant.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async getFormLink(sid: string): Promise<FormLink> {\n const raw = await this.transport.request('GET', 'merchant/get-form-link', this.envelope({ sid }))\n return FormLink.fromRaw((raw['data'] as Raw) ?? {})\n }\n}\n","import { arrBool, arrInt, arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class PaymentMethod {\n constructor(\n public readonly id?: number,\n public readonly type?: string,\n public readonly token?: string,\n public readonly firstName?: string,\n public readonly lastName?: string,\n public readonly ccNameOnCard?: string,\n public readonly ccLastFour?: string,\n public readonly ccExpirationDate?: string,\n public readonly ccBrand?: string,\n public readonly achBankAccountName?: string,\n public readonly achRoutingNumber?: string,\n public readonly achAccountNumber?: string,\n public readonly achOwnershipType?: string,\n public readonly achAccountType?: string,\n public readonly achBankName?: string,\n public readonly status?: string,\n public readonly statusDate?: string,\n public readonly enabled: boolean = false,\n public readonly isDefault: boolean = false,\n public readonly addr1?: string,\n public readonly addr2?: string,\n public readonly addr3?: string,\n public readonly city?: string,\n public readonly state?: string,\n public readonly zip?: string,\n ) {}\n\n static fromRaw(data: Raw): PaymentMethod {\n return new PaymentMethod(\n arrInt(data, 'id'),\n arrString(data, 'type'),\n arrString(data, 'token'),\n arrString(data, 'first_name'),\n arrString(data, 'last_name'),\n arrString(data, 'cc_name_on_card'),\n arrString(data, 'cc_last_four'),\n arrString(data, 'cc_expiration_date'),\n arrString(data, 'cc_brand'),\n arrString(data, 'ach_bank_account_name'),\n arrString(data, 'ach_routing_number'),\n arrString(data, 'ach_account_number'),\n arrString(data, 'ach_ownership_type'),\n arrString(data, 'ach_account_type'),\n arrString(data, 'ach_bank_name'),\n arrString(data, 'status'),\n arrString(data, 'status_date'),\n arrBool(data, 'enabled'),\n arrBool(data, 'default'),\n arrString(data, 'addr1'),\n arrString(data, 'addr2'),\n arrString(data, 'addr3'),\n arrString(data, 'city'),\n arrString(data, 'state'),\n arrString(data, 'zip'),\n )\n }\n}\n","import { MessageResult } from '../data-objects/message-result.js'\nimport { PaymentMethod } from '../data-objects/payment-method.js'\nimport { CursorPage } from '../pagination/cursor-page.js'\nimport { AbstractResource } from './abstract-resource.js'\n\ntype Raw = Record<string, unknown>\n\nexport class PaymentMethods extends AbstractResource {\n async list(sid: string, filters: Raw): Promise<CursorPage<PaymentMethod>> {\n return this.paginate('GET', 'payment-method/list', this.envelope({ sid }, filters), PaymentMethod.fromRaw)\n }\n\n async show(sid: string, paymentMethodId: number | string, filters: Raw): Promise<PaymentMethod> {\n const raw = await this.transport.request('GET', 'payment-method/show', this.envelope({ sid, payment_method_id: paymentMethodId }, filters))\n return PaymentMethod.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async create(sid: string, attributes: Raw): Promise<PaymentMethod> {\n const raw = await this.transport.request('POST', 'payment-method/create', this.envelope({ sid, ...attributes }))\n return PaymentMethod.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async update(sid: string, attributes: Raw): Promise<PaymentMethod> {\n const raw = await this.transport.request('PATCH', 'payment-method/update', this.envelope({ sid, ...attributes }))\n return PaymentMethod.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async delete(sid: string, paymentMethodId: number | string, uuid: string): Promise<MessageResult> {\n const raw = await this.transport.request('POST', 'payment-method/delete', this.envelope({ sid, payment_method_id: paymentMethodId, uuid }))\n return MessageResult.fromRaw((raw['data'] as Raw) ?? raw)\n }\n}\n","import { arrInt, arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class RecurringPaymentMethod {\n constructor(\n public readonly id?: number,\n public readonly type?: string,\n public readonly lastFour?: string,\n public readonly expiration?: string,\n public readonly zip?: string,\n public readonly nameOnCard?: string,\n public readonly bankAccountName?: string,\n public readonly routingNumber?: string,\n public readonly accountNumber?: string,\n public readonly ownershipType?: string,\n public readonly accountType?: string,\n public readonly bankName?: string,\n ) {}\n\n static fromRaw(data: Raw): RecurringPaymentMethod {\n return new RecurringPaymentMethod(\n arrInt(data, 'id'),\n arrString(data, 'type'),\n arrString(data, 'last_four'),\n arrString(data, 'expiration'),\n arrString(data, 'zip'),\n arrString(data, 'name_on_card'),\n arrString(data, 'bank_account_name'),\n arrString(data, 'routing_number'),\n arrString(data, 'account_number'),\n arrString(data, 'ownership_type'),\n arrString(data, 'account_type'),\n arrString(data, 'bank_name'),\n )\n }\n}\n","import { arrInt, arrObjectFrom, arrString } from '../support/arr.js'\nimport { RecurringPaymentMethod } from './recurring-payment-method.js'\nimport { TransactionAddress } from './transaction-address.js'\n\ntype Raw = Record<string, unknown>\n\nexport class RecurringPayment {\n constructor(\n public readonly id?: number,\n public readonly name?: string,\n public readonly amount?: string,\n public readonly startDate?: string,\n public readonly endDate?: string,\n public readonly recurrenceSchedule?: string,\n public readonly lastRunDate?: string,\n public readonly lastRunStatus?: string,\n public readonly lastRunFailedCount?: number,\n public readonly nextRunDate?: string,\n public readonly status?: string,\n public readonly pausedUntilDate?: string,\n public readonly customerUuid?: string,\n public readonly cancelledAt?: string,\n public readonly error?: string,\n public readonly paymentMethod: RecurringPaymentMethod = new RecurringPaymentMethod(),\n public readonly shippingAddress: TransactionAddress = new TransactionAddress(),\n ) {}\n\n static fromRaw(data: Raw): RecurringPayment {\n return new RecurringPayment(\n arrInt(data, 'id'),\n arrString(data, 'name'),\n arrString(data, 'amount'),\n arrString(data, 'start_date'),\n arrString(data, 'end_date'),\n arrString(data, 'recurrence_schedule'),\n arrString(data, 'last_run_date'),\n arrString(data, 'last_run_status'),\n arrInt(data, 'last_run_failed_count'),\n arrString(data, 'next_run_date'),\n arrString(data, 'status'),\n arrString(data, 'paused_until_date'),\n arrString(data, 'customer_uuid'),\n arrString(data, 'cancelled_at'),\n arrString(data, 'error'),\n RecurringPaymentMethod.fromRaw(arrObjectFrom(data, ['payment_method'])),\n TransactionAddress.fromRaw(arrObjectFrom(data, ['shipping_address'])),\n )\n }\n}\n","import { MessageResult } from '../data-objects/message-result.js'\nimport { RecurringPayment } from '../data-objects/recurring-payment.js'\nimport { CursorPage } from '../pagination/cursor-page.js'\nimport { AbstractResource } from './abstract-resource.js'\n\ntype Raw = Record<string, unknown>\n\nexport class RecurringPayments extends AbstractResource {\n async list(sid: string, filters: Raw = {}): Promise<CursorPage<RecurringPayment>> {\n return this.paginate('GET', 'recurring-payment/list', this.envelope({ sid }, filters), RecurringPayment.fromRaw)\n }\n\n async show(sid: string, recurringPaymentId: number | string): Promise<RecurringPayment> {\n const raw = await this.transport.request('GET', 'recurring-payment/show', this.envelope({ sid, recurring_payment_id: recurringPaymentId }))\n return RecurringPayment.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async create(sid: string, attributes: Raw): Promise<RecurringPayment> {\n const raw = await this.transport.request('POST', 'recurring-payment/create', this.envelope({ sid, ...attributes }))\n return RecurringPayment.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async edit(sid: string, recurringPaymentId: number | string, attributes: Raw): Promise<RecurringPayment> {\n const raw = await this.transport.request('PATCH', 'recurring-payment/edit', this.envelope({ sid, recurring_payment_id: recurringPaymentId, ...attributes }))\n return RecurringPayment.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async pause(sid: string, recurringPaymentId: number | string, pauseUntilDate?: string): Promise<RecurringPayment> {\n const raw = await this.transport.request('PATCH', 'recurring-payment/pause', this.envelope({ sid, recurring_payment_id: recurringPaymentId, pause_until_date: pauseUntilDate }))\n return RecurringPayment.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async cancel(sid: string, recurringPaymentId: number | string): Promise<RecurringPayment> {\n const raw = await this.transport.request('PATCH', 'recurring-payment/cancel', this.envelope({ sid, recurring_payment_id: recurringPaymentId }))\n return RecurringPayment.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async activate(sid: string, recurringPaymentId: number | string): Promise<RecurringPayment> {\n const raw = await this.transport.request('PATCH', 'recurring-payment/activate', this.envelope({ sid, recurring_payment_id: recurringPaymentId }))\n return RecurringPayment.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async delete(sid: string, recurringPaymentId: number | string): Promise<MessageResult> {\n const raw = await this.transport.request('POST', 'recurring-payment/delete', this.envelope({ sid, recurring_payment_id: recurringPaymentId }))\n return MessageResult.fromRaw((raw['data'] as Raw) ?? raw)\n }\n}\n","import { arrString } from '../support/arr.js'\n\ntype Raw = Record<string, unknown>\n\nexport class TokenizeResult {\n constructor(public readonly token?: string) {}\n\n static fromRaw(data: Raw): TokenizeResult {\n return new TokenizeResult(arrString(data, 'token'))\n }\n}\n","import { MessageResult } from '../data-objects/message-result.js'\nimport { TokenizeResult } from '../data-objects/tokenize-result.js'\nimport { Transaction } from '../data-objects/transaction.js'\nimport { CursorPage } from '../pagination/cursor-page.js'\nimport { AbstractResource } from './abstract-resource.js'\n\ntype Raw = Record<string, unknown>\n\nexport class Transactions extends AbstractResource {\n async list(sid: string, filters: Raw = {}): Promise<CursorPage<Transaction>> {\n return this.paginate('GET', 'transactions', this.envelope({ sid }, filters), Transaction.fromRaw)\n }\n\n async show(sid: string, identifier: Raw): Promise<Transaction> {\n const raw = await this.transport.request('GET', 'transaction', this.envelope({ sid, ...identifier }))\n return Transaction.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async chargeCard(sid: string, attributes: Raw): Promise<Transaction> {\n const raw = await this.transport.request('POST', 'transaction/charge-card', this.envelope({ sid, ...attributes }))\n return Transaction.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n /** @deprecated The API marks this deprecated; prefer chargeCard() with a token. */\n async chargeCardToken(sid: string, attributes: Raw): Promise<Transaction> {\n const raw = await this.transport.request('POST', 'transaction/charge-card-token', this.envelope({ sid, ...attributes }))\n return Transaction.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async chargeAch(sid: string, attributes: Raw): Promise<Transaction> {\n const raw = await this.transport.request('POST', 'transaction/charge-ach', this.envelope({ sid, ...attributes }))\n return Transaction.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async tokenizeCard(sid: string, attributes: Raw): Promise<TokenizeResult> {\n const raw = await this.transport.request('POST', 'transaction/tokenize-card', this.envelope({ sid, ...attributes }))\n return TokenizeResult.fromRaw((raw['data'] as Raw) ?? {})\n }\n\n async refund(sid: string, attributes: Raw): Promise<MessageResult> {\n const raw = await this.transport.request('POST', 'transaction/refund', this.envelope({ sid, ...attributes }))\n return MessageResult.fromRaw((raw['data'] as Raw) ?? raw)\n }\n\n async void(sid: string, transactionType: string, transactionId: number | string): Promise<MessageResult> {\n const raw = await this.transport.request('PATCH', 'transaction/void', this.envelope({ sid, transaction_type: transactionType, transaction_id: transactionId }))\n return MessageResult.fromRaw((raw['data'] as Raw) ?? raw)\n }\n}\n","import { Config, DEFAULT_BASE_URL } from './config.js'\nimport { Transport } from './http/transport.js'\nimport { Addresses } from './resources/addresses.js'\nimport { Customers } from './resources/customers.js'\nimport { Deposits } from './resources/deposits.js'\nimport { Merchants } from './resources/merchants.js'\nimport { PaymentMethods } from './resources/payment-methods.js'\nimport { RecurringPayments } from './resources/recurring-payments.js'\nimport { Transactions } from './resources/transactions.js'\n\n/**\n * Entry point for the Dime Payments API.\n *\n * ```ts\n * const dime = new Client('your-api-token')\n * const txn = await dime.transactions.chargeCard('000010', {\n * amount: '49.99',\n * token: 'tok_abc123',\n * })\n * ```\n */\nexport class Client {\n readonly transactions: Transactions\n readonly customers: Customers\n readonly paymentMethods: PaymentMethods\n readonly merchants: Merchants\n readonly addresses: Addresses\n readonly deposits: Deposits\n readonly recurringPayments: RecurringPayments\n\n private readonly _config: Config\n\n constructor(token: string | Config, baseUrl: string = DEFAULT_BASE_URL) {\n this._config = token instanceof Config ? token : new Config(token, baseUrl)\n\n const transport = new Transport(this._config)\n\n this.transactions = new Transactions(transport)\n this.customers = new Customers(transport)\n this.paymentMethods = new PaymentMethods(transport)\n this.merchants = new Merchants(transport)\n this.addresses = new Addresses(transport)\n this.deposits = new Deposits(transport)\n this.recurringPayments = new RecurringPayments(transport)\n }\n\n config(): Config {\n return this._config\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,mBAAmB;AACzB,IAAM,UAAU;AAmBhB,IAAM,SAAN,MAAa;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,SAAiC,SAAkB;AAC7D,QAAI,OAAO,YAAY,UAAU;AAC/B,WAAK,QAAQ;AACb,WAAK,UAAU,WAAW;AAC1B,WAAK,UAAU;AACf,WAAK,aAAa;AAClB,WAAK,iBAAiB;AAAA,IACxB,OAAO;AACL,WAAK,QAAQ,QAAQ;AACrB,WAAK,UAAU,QAAQ,WAAW;AAClC,WAAK,UAAU,QAAQ,WAAW;AAClC,WAAK,aAAa,QAAQ,cAAc;AACxC,WAAK,iBAAiB,QAAQ,kBAAkB;AAChD,WAAK,QAAQ,QAAQ;AACrB,WAAK,QAAQ,QAAQ;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,UAAkB;AAChB,WAAO,GAAG,KAAK,QAAQ,QAAQ,OAAO,EAAE,CAAC;AAAA,EAC3C;AACF;;;AClDO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACvC,YACE,SACgB,YACA,eAAwC,CAAC,GACzD,OACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AAJR;AACA;AAIhB,SAAK,OAAO,KAAK,YAAY;AAC7B,WAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EAClD;AAAA,EAPkB;AAAA,EACA;AAAA,EAQlB,gBAAoC;AAClC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,kBAA2C;AACzC,WAAO,KAAK;AAAA,EACd;AACF;;;ACjBO,IAAM,sBAAN,cAAkC,cAAc;AAAA,EACrD,YACE,SACgB,SAAmC,CAAC,GACpD,YACA,eAAwC,CAAC,GACzC,OACA;AACA,UAAM,SAAS,YAAY,cAAc,KAAK;AAL9B;AAAA,EAMlB;AAAA,EANkB;AAAA,EAQlB,YAAsC;AACpC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,aAAiC;AAC/B,eAAW,YAAY,OAAO,OAAO,KAAK,MAAM,GAAG;AACjD,UAAI,SAAS,SAAS,EAAG,QAAO,SAAS,CAAC;AAAA,IAC5C;AACA,WAAO;AAAA,EACT;AACF;;;ACrBO,IAAM,qBAAN,cAAiC,cAAc;AAAA,EACpD,YACE,SACgB,YAChB,aAAa,KACb,eAAwC,CAAC,GACzC,OACA;AACA,UAAM,SAAS,YAAY,cAAc,KAAK;AAL9B;AAAA,EAMlB;AAAA,EANkB;AAAA,EAQlB,gBAAoC;AAClC,WAAO,KAAK;AAAA,EACd;AACF;;;ACdO,IAAM,eAAN,cAA2B,cAAc;AAAC;;;ACA1C,IAAM,0BAAN,cAAsC,cAAc;AAAC;;;ACArD,IAAM,4BAAN,cAAwC,cAAc;AAAC;;;ACAvD,IAAM,oBAAN,cAAgC,cAAc;AAAC;;;ACA/C,IAAM,kBAAN,cAA8B,cAAc;AAAC;;;ACA7C,IAAM,sBAAN,cAAkC,cAAc;AAAC;;;ACUxD,SAAS,oBAAoB,QAAgB,MAAoB;AAC/D,MACE,KAAK,QAAQ,MAAM,UACnB,OAAO,KAAK,QAAQ,MAAM,YAC1B,CAAC,MAAM,QAAQ,KAAK,QAAQ,CAAC,GAC7B;AACA,WAAO;AAAA,EACT;AACA,UACG,WAAW,OAAO,WAAW,QAC9B,KAAK,SAAS,MAAM,UACpB,OAAO,KAAK,SAAS,MAAM,YAC3B,CAAC,MAAM,QAAQ,KAAK,SAAS,CAAC;AAElC;AAEA,SAAS,cAAc,MAAqC;AAC1D,QAAM,MAAM,KAAK,QAAQ,KAAK,KAAK,SAAS;AAC5C,MAAI,QAAQ,QAAQ,QAAQ,UAAa,OAAO,QAAQ,YAAY,MAAM,QAAQ,GAAG,GAAG;AACtF,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAmC,CAAC;AAC1C,aAAW,CAAC,OAAO,QAAQ,KAAK,OAAO,QAAQ,GAA8B,GAAG;AAC9E,WAAO,KAAK,IAAI,MAAM,QAAQ,QAAQ,IAAI,SAAS,IAAI,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAC;AAAA,EACpF;AACA,SAAO;AACT;AAEA,SAAS,eAAe,MAA+B;AACrD,QAAM,OAAO,KAAK,MAAM;AACxB,MAAI,SAAS,QAAQ,SAAS,UAAa,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI,GAAG;AAC3F,UAAM,MAAO,KAAa,SAAS;AACnC,QAAI,OAAO,QAAQ,SAAU,QAAO;AAAA,EACtC;AACA,MAAI,OAAO,KAAK,SAAS,MAAM,SAAU,QAAO,KAAK,SAAS;AAC9D,SAAO;AACT;AAEA,SAAS,aAAa,QAAsD;AAC1E,aAAW,YAAY,OAAO,OAAO,MAAM,GAAG;AAC5C,QAAI,SAAS,SAAS,EAAG,QAAO,SAAS,CAAC;AAAA,EAC5C;AACA,SAAO;AACT;AAEO,SAAS,YAAY,QAAgB,MAAW,YAA4B;AACjF,MAAI,oBAAoB,QAAQ,IAAI,GAAG;AACrC,UAAM,SAAS,cAAc,IAAI;AACjC,UAAM,IAAI;AAAA,MACR,aAAa,MAAM,KAAK;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,eAAe,IAAI,KAAK,uCAAuC,MAAM;AAErF,MAAI,WAAW,IAAK,OAAM,IAAI,wBAAwB,SAAS,QAAQ,IAAI;AAC3E,MAAI,WAAW,IAAK,OAAM,IAAI,0BAA0B,SAAS,QAAQ,IAAI;AAC7E,MAAI,WAAW,IAAK,OAAM,IAAI,kBAAkB,SAAS,QAAQ,IAAI;AACrE,MAAI,WAAW,IAAK,OAAM,IAAI,mBAAmB,SAAS,YAAY,QAAQ,IAAI;AAClF,MAAI,UAAU,IAAK,OAAM,IAAI,gBAAgB,SAAS,QAAQ,IAAI;AAClE,QAAM,IAAI,aAAa,SAAS,QAAQ,IAAI;AAC9C;;;ACvEO,IAAM,YAAN,MAAgB;AAAA,EAIrB,YAA6B,QAAgB;AAAhB;AAC3B,SAAK,UAAU,OAAO,SAAS,WAAW;AAC1C,SAAK,UACH,OAAO,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,EAC7E;AAAA,EAJ6B;AAAA,EAHZ;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAejB,MAAM,QACJ,QACA,MACA,OAAY,CAAC,GACb,QAAgC,CAAC,GACnB;AACd,QAAI,MAAM,GAAG,KAAK,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,OAAO,EAAE,CAAC;AAE5D,QAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AACjC,aAAO,MAAM,IAAI,gBAAgB,KAAK,EAAE,SAAS;AAAA,IACnD;AAEA,UAAM,UAAU,OAAO,KAAK,IAAI,EAAE,SAAS;AAC3C,UAAM,OAAoB;AAAA,MACxB;AAAA,MACA,SAAS;AAAA,QACP,eAAe,UAAU,KAAK,OAAO,KAAK;AAAA,QAC1C,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc,eAAe,OAAO;AAAA,MACtC;AAAA,MACA,GAAI,UAAU,EAAE,MAAM,KAAK,UAAU,IAAI,EAAE,IAAI,CAAC;AAAA,IAClD;AAEA,WAAO,KAAK,QAAQ,KAAK,MAAM,CAAC;AAAA,EAClC;AAAA,EAEA,MAAc,QAAQ,KAAa,MAAmB,SAA+B;AACnF,QAAI;AAEJ,QAAI;AACF,YAAM,aAAa,IAAI,gBAAgB;AACvC,YAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,KAAK,OAAO,UAAU,GAAK;AAC9E,UAAI;AACF,mBAAW,MAAM,KAAK,QAAQ,KAAK,EAAE,GAAG,MAAM,QAAQ,WAAW,OAAO,CAAC;AAAA,MAC3E,UAAE;AACA,qBAAa,KAAK;AAAA,MACpB;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,SAAS,IAAI,SAAS;AACrD,YAAM,QAAQ,UAAU,2BAA2B,KAAK,OAAO,OAAO,MAAM,iCAAiC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAE7J,UAAI,UAAU,KAAK,OAAO,YAAY;AACpC,cAAM,KAAK,MAAM,SAAS,MAAS;AACnC,eAAO,KAAK,QAAQ,KAAK,MAAM,UAAU,CAAC;AAAA,MAC5C;AAEA,YAAM,IAAI,oBAAoB,OAAO,QAAW,CAAC,GAAG,eAAe,QAAQ,MAAM,MAAS;AAAA,IAC5F;AAEA,UAAM,SAAS,SAAS;AAExB,SAAK,WAAW,OAAO,UAAU,QAAQ,UAAU,KAAK,OAAO,YAAY;AACzE,YAAM,aAAa,gBAAgB,QAAQ;AAC3C,YAAM,KAAK,MAAM,SAAS,UAAU;AACpC,aAAO,KAAK,QAAQ,KAAK,MAAM,UAAU,CAAC;AAAA,IAC5C;AAEA,UAAM,UAAU,MAAM,OAAO,QAAQ;AAErC,QAAI,SAAS,OAAO,UAAU,KAAK;AACjC,kBAAY,QAAQ,SAAS,gBAAgB,QAAQ,CAAC;AAAA,IACxD;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,MAAM,SAAiB,YAA+C;AAClF,UAAM,KACJ,eAAe,SACX,aAAa,MACb,KAAK,IAAI,KAAK,UAAU,KAAK,OAAO,iBAAiB,KAAO,GAAM;AACxE,UAAM,KAAK,QAAQ,EAAE;AAAA,EACvB;AACF;AAEA,SAAS,gBAAgB,UAAwC;AAC/D,QAAM,SAAS,SAAS,QAAQ,IAAI,aAAa;AACjD,MAAI,WAAW,QAAQ,QAAQ,KAAK,MAAM,EAAG,QAAO,SAAS,QAAQ,EAAE;AACvE,SAAO;AACT;AAEA,eAAe,OAAO,UAAkC;AACtD,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,CAAC,KAAM,QAAO,CAAC;AAEnB,MAAI;AACF,UAAM,SAAkB,KAAK,MAAM,IAAI;AACvC,QAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,CAAC,MAAM,QAAQ,MAAM,GAAG;AAC3E,aAAO;AAAA,IACT;AACA,WAAO,EAAE,SAAS,KAAK;AAAA,EACzB,QAAQ;AACN,WAAO,EAAE,SAAS,KAAK;AAAA,EACzB;AACF;;;ACpHO,SAAS,UAAU,MAAW,KAAiC;AACpE,QAAM,QAAQ,KAAK,GAAG;AACtB,MAAI,UAAU,QAAQ,UAAU,UAAa,MAAM,QAAQ,KAAK,EAAG,QAAO;AAC1E,MAAI,OAAO,UAAU,UAAW,QAAO,QAAQ,MAAM;AACrD,SAAO,OAAO,KAAK;AACrB;AAWO,SAAS,OAAO,MAAW,KAAiC;AACjE,QAAM,QAAQ,KAAK,GAAG;AACtB,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,QAAM,IAAI,OAAO,KAAK;AACtB,SAAO,OAAO,MAAM,CAAC,IAAI,SAAY,KAAK,MAAM,CAAC;AACnD;AAEO,SAAS,QAAQ,MAAW,KAAa,eAAe,OAAgB;AAC7E,QAAM,QAAQ,KAAK,GAAG;AACtB,SAAO,UAAU,QAAQ,UAAU,SAAY,eAAe,QAAQ,KAAK;AAC7E;AAEO,SAAS,cAAc,MAAW,MAAqB;AAC5D,aAAW,OAAO,MAAM;AACtB,UAAM,QAAQ,KAAK,GAAG;AACtB,QACE,UAAU,QACV,UAAU,UACV,OAAO,UAAU,YACjB,CAAC,MAAM,QAAQ,KAAK,GACpB;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,CAAC;AACV;;;ACvCO,IAAM,UAAN,MAAM,SAAQ;AAAA,EACnB,YACkB,IACA,WACA,SACA,SACA,WACA,MACA,OACA,KAChB;AARgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EARe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAAoB;AACjC,WAAO,IAAI;AAAA;AAAA,MAET,OAAO,MAAM,YAAY,KAAK,OAAO,MAAM,IAAI;AAAA,MAC/C,UAAU,MAAM,WAAW;AAAA,MAC3B,UAAU,MAAM,UAAU;AAAA,MAC1B,UAAU,MAAM,UAAU;AAAA,MAC1B,UAAU,MAAM,YAAY;AAAA,MAC5B,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,KAAK;AAAA,IACvB;AAAA,EACF;AACF;;;ACzBO,IAAM,gBAAN,MAAM,eAAc;AAAA,EACzB,YAA4B,SAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE5B,OAAO,QAAQ,MAA0B;AACvC,WAAO,IAAI,eAAc,UAAU,MAAM,SAAS,CAAC;AAAA,EACrD;AACF;;;ACRO,IAAM,aAAN,MAAoB;AAAA,EACzB,YACkB,MACA,YACA,YACA,SACA,MACC,SACjB;AANgB;AACA;AACA;AACA;AACA;AACC;AAAA,EAChB;AAAA,EANe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACC;AAAA,EAGnB,UAAmB;AACjB,WAAO,KAAK,eAAe,UAAa,KAAK,YAAY;AAAA,EAC3D;AAAA,EAEA,MAAM,OAAsC;AAC1C,QAAI,CAAC,KAAK,QAAQ,KAAK,KAAK,eAAe,UAAa,KAAK,YAAY,QAAW;AAClF,aAAO;AAAA,IACT;AACA,WAAO,KAAK,QAAQ,KAAK,UAAU;AAAA,EACrC;AAAA;AAAA,EAGA,OAAO,aAAgC;AAErC,QAAI,OAA6B;AACjC,WAAO,SAAS,MAAM;AACpB,iBAAW,QAAQ,KAAK,MAAM;AAC5B,cAAM;AAAA,MACR;AACA,aAAO,MAAM,KAAK,KAAK;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAiB;AAC/B,WAAO,KAAK,KAAK,OAAO,QAAQ,EAAE;AAAA,EACpC;AAAA,EAEA,IAAI,SAAiB;AACnB,WAAO,KAAK,KAAK;AAAA,EACnB;AACF;;;ACrCO,IAAe,mBAAf,MAAgC;AAAA,EACrC,YAA+B,WAAsB;AAAtB;AAAA,EAAuB;AAAA,EAAvB;AAAA;AAAA;AAAA;AAAA,EAKrB,SAAS,OAAY,CAAC,GAAG,UAAe,CAAC,GAAQ;AACzD,UAAM,OAAY,CAAC;AAEnB,UAAM,aAAa,WAAW,IAAI;AAClC,QAAI,OAAO,KAAK,UAAU,EAAE,SAAS,EAAG,MAAK,MAAM,IAAI;AAEvD,UAAM,gBAAgB,WAAW,OAAO;AACxC,QAAI,OAAO,KAAK,aAAa,EAAE,SAAS,EAAG,MAAK,SAAS,IAAI;AAE7D,WAAO;AAAA,EACT;AAAA,EAEA,MAAgB,SACd,QACA,MACA,MACA,KACA,QAAgC,CAAC,GACT;AACxB,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,MAAM,MAAM,KAAK;AAElE,UAAM,QAAQ,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAK,IAAI,MAAM,IAAc,CAAC;AACrE,UAAM,OACJ,IAAI,MAAM,MAAM,QAChB,OAAO,IAAI,MAAM,MAAM,YACvB,CAAC,MAAM,QAAQ,IAAI,MAAM,CAAC,IACrB,IAAI,MAAM,IACX,CAAC;AAEP,UAAM,aAAa,cAAc,MAAM,aAAa;AACpD,UAAM,aAAa,cAAc,MAAM,aAAa;AAEpD,UAAM,UAA0B,CAAC,WAC/B,KAAK,SAAS,QAAQ,MAAM,MAAM,KAAK,EAAE,OAAO,CAAC;AAEnD,WAAO,IAAI;AAAA,MACT,MAAM,IAAI,GAAG;AAAA,MACb;AAAA,MACA;AAAA,MACA,OAAO,KAAK,UAAU,MAAM,WAAY,KAAK,UAAU,IAAe;AAAA,MACtE,OAAO,KAAK,MAAM,MAAM,WAAY,KAAK,MAAM,IAAe;AAAA,MAC9D,eAAe,SAAY,UAAU;AAAA,IACvC;AAAA,EACF;AACF;AAEA,SAAS,cAAc,MAAW,KAAiC;AACjE,QAAM,IAAI,KAAK,GAAG;AAClB,SAAO,OAAO,MAAM,YAAY,MAAM,KAAK,IAAI;AACjD;AAEA,SAAS,WAAW,KAAe;AACjC,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,MAAM,QAAQ,MAAM,MAAS;AAAA,EACrE;AACF;;;AC3DO,IAAM,YAAN,cAAwB,iBAAiB;AAAA,EAC9C,MAAM,KAAK,KAAa,MAA4C;AAClE,WAAO,KAAK,SAAS,OAAO,gBAAgB,KAAK,SAAS,EAAE,KAAK,KAAK,CAAC,GAAG,QAAQ,OAAO;AAAA,EAC3F;AAAA,EAEA,MAAM,KAAK,KAAa,MAAc,WAA8C;AAClF,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,gBAAgB,KAAK,SAAS,EAAE,KAAK,MAAM,YAAY,UAAU,CAAC,CAAC;AACnH,WAAO,QAAQ,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACnD;AAAA,EAEA,MAAM,OAAO,KAAa,MAAc,YAAmC;AACzE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,kBAAkB,KAAK,SAAS,EAAE,KAAK,MAAM,GAAG,WAAW,CAAC,CAAC;AAC9G,WAAO,QAAQ,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACnD;AAAA,EAEA,MAAM,OAAO,KAAa,MAAc,WAA4B,YAAmC;AACrG,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,kBAAkB,KAAK,SAAS,EAAE,KAAK,MAAM,YAAY,WAAW,GAAG,WAAW,CAAC,CAAC;AACtI,WAAO,QAAQ,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACnD;AAAA,EAEA,MAAM,OAAO,KAAa,MAAc,WAAoD;AAC1F,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,kBAAkB,KAAK,SAAS,EAAE,KAAK,MAAM,YAAY,UAAU,CAAC,CAAC;AACtH,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,GAAG;AAAA,EAC1D;AACF;;;AC3BO,IAAM,WAAN,MAAM,UAAS;AAAA,EACpB,YACkB,MACA,WACA,UACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,KACA,SAChB;AAZgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EAZe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAAqB;AAClC,WAAO,IAAI;AAAA,MACT,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,YAAY;AAAA,MAC5B,UAAU,MAAM,WAAW;AAAA,MAC3B,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,KAAK;AAAA,MACrB,UAAU,MAAM,SAAS;AAAA,IAC3B;AAAA,EACF;AACF;;;AC7BO,IAAM,YAAN,cAAwB,iBAAiB;AAAA,EAC9C,MAAM,KAAK,KAAa,UAAe,CAAC,GAAkC;AACxE,WAAO,KAAK,SAAS,OAAO,iBAAiB,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,OAAO;AAAA,EAChG;AAAA,EAEA,MAAM,KAAK,KAAa,SAAiC;AACvD,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,iBAAiB,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC;AAChG,WAAO,SAAS,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACpD;AAAA,EAEA,MAAM,OAAO,KAAa,YAAoC;AAC5D,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,mBAAmB,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AACzG,WAAO,SAAS,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACpD;AAAA,EAEA,MAAM,OAAO,KAAa,SAAc,YAAoC;AAC1E,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,mBAAmB,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,CAAC;AACnH,WAAO,SAAS,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACpD;AAAA,EAEA,MAAM,OAAO,KAAa,SAAsC;AAC9D,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,mBAAmB,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC;AACnG,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,GAAG;AAAA,EAC1D;AACF;;;AC3BO,IAAM,UAAN,MAAM,SAAQ;AAAA,EACnB,YACkB,iBACA,UACA,mBACA,eACA,0BACA,qBACA,WACA,SACA,MAChB;AATgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EATe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAAoB;AACjC,WAAO,IAAI;AAAA,MACT,UAAU,MAAM,kBAAkB;AAAA,MAClC,UAAU,MAAM,WAAW;AAAA,MAC3B,UAAU,MAAM,qBAAqB;AAAA,MACrC,UAAU,MAAM,gBAAgB;AAAA,MAChC,UAAU,MAAM,4BAA4B;AAAA,MAC5C,UAAU,MAAM,sBAAsB;AAAA,MACtC,UAAU,MAAM,YAAY;AAAA,MAC5B,UAAU,MAAM,UAAU;AAAA,MAC1B,UAAU,MAAM,MAAM;AAAA,IACxB;AAAA,EACF;AACF;;;AC1BO,IAAM,qBAAN,MAAM,oBAAmB;AAAA,EAC9B,YACkB,WACA,UACA,OACA,OACA,MACA,OACA,KAChB;AAPgB;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EAPe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAA+B;AAC5C,WAAO,IAAI;AAAA,MACT,UAAU,MAAM,YAAY;AAAA,MAC5B,UAAU,MAAM,WAAW;AAAA,MAC3B,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,KAAK;AAAA,IACvB;AAAA,EACF;AACF;;;ACrBO,IAAM,cAAN,MAAM,aAAY;AAAA,EACvB,YACkB,iBACA,mBACA,8BACA,mBACA,iBACA,UACA,YACA,QACA,aACA,YACA,YACA,OACA,OACA,cACA,eACA,UAAmB,OACnB,mBACA,yBACA,iBAAqC,IAAI,mBAAmB,GAC5D,kBAAsC,IAAI,mBAAmB,GAC7E;AApBgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EApBe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAAwB;AACrC,WAAO,IAAI;AAAA,MACT,UAAU,MAAM,kBAAkB;AAAA,MAClC,UAAU,MAAM,oBAAoB;AAAA,MACpC,UAAU,MAAM,gCAAgC;AAAA,MAChD,UAAU,MAAM,oBAAoB;AAAA,MACpC,UAAU,MAAM,kBAAkB;AAAA,MAClC,UAAU,MAAM,WAAW;AAAA,MAC3B,UAAU,MAAM,aAAa;AAAA,MAC7B,UAAU,MAAM,QAAQ;AAAA,MACxB,UAAU,MAAM,aAAa;AAAA,MAC7B,UAAU,MAAM,aAAa;AAAA,MAC7B,UAAU,MAAM,aAAa;AAAA,MAC7B,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,eAAe;AAAA,MAC/B,UAAU,MAAM,iBAAiB;AAAA,MACjC,QAAQ,MAAM,SAAS;AAAA,MACvB,UAAU,MAAM,qBAAqB;AAAA,MACrC,UAAU,MAAM,4BAA4B;AAAA,MAC5C,mBAAmB,QAAQ,cAAc,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAAA;AAAA;AAAA,MAGnE,mBAAmB,QAAQ,cAAc,MAAM,CAAC,mBAAmB,kBAAkB,CAAC,CAAC;AAAA,IACzF;AAAA,EACF;AACF;;;AClDO,IAAM,0BAAN,MAAM,yBAAwB;AAAA,EACnC,YACkB,KACA,mBACA,eACA,iBACA,UACA,MACA,qBACA,YACA,eAA8B,CAAC,GAC/C;AATgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EATe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAAoC;AACjD,UAAM,QAAQ,KAAK,cAAc;AACjC,UAAM,eAAe,MAAM,QAAQ,KAAK,IACnC,MAAgB,IAAI,CAAC,MAAM,YAAY,QAAQ,CAAC,CAAC,IAClD,OAAO,UAAU,YAAY,UAAU,OACrC,OAAO,OAAO,KAA4B,EAAE,IAAI,CAAC,MAAM,YAAY,QAAQ,CAAC,CAAC,IAC7E,CAAC;AAEP,WAAO,IAAI;AAAA,MACT,UAAU,MAAM,KAAK;AAAA,MACrB,UAAU,MAAM,qBAAqB;AAAA,MACrC,UAAU,MAAM,gBAAgB;AAAA,MAChC,UAAU,MAAM,kBAAkB;AAAA,MAClC,UAAU,MAAM,WAAW;AAAA,MAC3B,UAAU,MAAM,MAAM;AAAA,MACtB,OAAO,MAAM,qBAAqB;AAAA,MAClC,UAAU,MAAM,YAAY;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AACF;;;ACjCO,IAAM,eAAN,MAAM,cAAa;AAAA,EACxB,YACkB,KACA,OACA,WAAsC,CAAC,GACvD;AAHgB;AACA;AACA;AAAA,EACf;AAAA,EAHe;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAAyB;AACtC,UAAM,cAAc,KAAK,UAAU;AACnC,UAAM,WACJ,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,CAAC,MAAM,QAAQ,WAAW,IACjF,OAAO,OAAO,WAAkC,EAAE;AAAA,MAAI,CAAC,MACrD,wBAAwB,QAAQ,CAAC;AAAA,IACnC,IACA,CAAC;AAEP,WAAO,IAAI,cAAa,UAAU,MAAM,KAAK,GAAG,OAAO,MAAM,OAAO,GAAG,QAAQ;AAAA,EACjF;AACF;;;ACfO,IAAM,WAAN,cAAuB,iBAAiB;AAAA,EAC7C,MAAM,KAAK,KAAa,UAAe,CAAC,GAAiC;AACvE,WAAO,KAAK,SAAS,OAAO,gBAAgB,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,OAAO;AAAA,EAC9F;AAAA,EAEA,MAAM,qBAAqB,KAAa,SAAqC;AAC3E,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,2BAA2B,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC;AAC1G,WAAO,aAAa,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACxD;AAAA,EAEA,MAAM,KAAK,KAAa,YAAmD;AACzE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,gBAAgB,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AACrG,WAAO,wBAAwB,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACnE;AACF;;;AClBO,IAAM,WAAN,MAAM,UAAS;AAAA,EACpB,YAA4B,MAAe;AAAf;AAAA,EAAgB;AAAA,EAAhB;AAAA,EAE5B,OAAO,QAAQ,MAAqB;AAClC,WAAO,IAAI,UAAS,UAAU,MAAM,MAAM,CAAC;AAAA,EAC7C;AACF;;;ACNO,IAAM,WAAN,MAAM,UAAS;AAAA,EACpB,YACkB,MACA,KACA,KACA,MACA,WACA,cACA,SAAkB,OAClB,UACA,OAAgB,OAChB,OAAgB,OAChB,gBAAyB,OACzB,SACA,OACA,OACA,MACA,OACA,KACA,OACA,cACA,cACA,aAChB;AArBgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EArBe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAAqB;AAClC,WAAO,IAAI;AAAA,MACT,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,KAAK;AAAA,MACrB,UAAU,MAAM,KAAK;AAAA,MACrB,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,aAAa;AAAA,MAC7B,UAAU,MAAM,eAAe;AAAA,MAC/B,QAAQ,MAAM,QAAQ;AAAA,MACtB,UAAU,MAAM,WAAW;AAAA,MAC3B,QAAQ,MAAM,OAAO;AAAA,MACrB,QAAQ,MAAM,OAAO;AAAA,MACrB,QAAQ,MAAM,gBAAgB;AAAA,MAC9B,UAAU,MAAM,SAAS;AAAA,MACzB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,KAAK;AAAA,MACrB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,eAAe;AAAA,MAC/B,UAAU,MAAM,eAAe;AAAA,MAC/B,UAAU,MAAM,cAAc;AAAA,IAChC;AAAA,EACF;AACF;;;AC/CO,IAAM,YAAN,cAAwB,iBAAiB;AAAA,EAC9C,MAAM,KAAK,UAAe,CAAC,GAAkC;AAC3D,WAAO,KAAK,SAAS,OAAO,iBAAiB,KAAK,SAAS,CAAC,GAAG,OAAO,GAAG,SAAS,OAAO;AAAA,EAC3F;AAAA,EAEA,MAAM,KAAK,KAAgC;AACzC,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,iBAAiB,KAAK,SAAS,EAAE,IAAI,CAAC,CAAC;AACvF,WAAO,SAAS,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACpD;AAAA,EAEA,MAAM,OAAO,YAAoC;AAC/C,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,mBAAmB,KAAK,SAAS,UAAU,CAAC;AAC7F,WAAO,SAAS,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACpD;AAAA,EAEA,MAAM,OAAO,KAAa,YAAoC;AAC5D,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,mBAAmB,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AAC1G,WAAO,SAAS,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACpD;AAAA,EAEA,MAAM,YAAY,KAAgC;AAChD,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,0BAA0B,KAAK,SAAS,EAAE,IAAI,CAAC,CAAC;AAChG,WAAO,SAAS,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACpD;AACF;;;AC3BO,IAAM,gBAAN,MAAM,eAAc;AAAA,EACzB,YACkB,IACA,MACA,OACA,WACA,UACA,cACA,YACA,kBACA,SACA,oBACA,kBACA,kBACA,kBACA,gBACA,aACA,QACA,YACA,UAAmB,OACnB,YAAqB,OACrB,OACA,OACA,OACA,MACA,OACA,KAChB;AAzBgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EAzBe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAA0B;AACvC,WAAO,IAAI;AAAA,MACT,OAAO,MAAM,IAAI;AAAA,MACjB,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,YAAY;AAAA,MAC5B,UAAU,MAAM,WAAW;AAAA,MAC3B,UAAU,MAAM,iBAAiB;AAAA,MACjC,UAAU,MAAM,cAAc;AAAA,MAC9B,UAAU,MAAM,oBAAoB;AAAA,MACpC,UAAU,MAAM,UAAU;AAAA,MAC1B,UAAU,MAAM,uBAAuB;AAAA,MACvC,UAAU,MAAM,oBAAoB;AAAA,MACpC,UAAU,MAAM,oBAAoB;AAAA,MACpC,UAAU,MAAM,oBAAoB;AAAA,MACpC,UAAU,MAAM,kBAAkB;AAAA,MAClC,UAAU,MAAM,eAAe;AAAA,MAC/B,UAAU,MAAM,QAAQ;AAAA,MACxB,UAAU,MAAM,aAAa;AAAA,MAC7B,QAAQ,MAAM,SAAS;AAAA,MACvB,QAAQ,MAAM,SAAS;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,KAAK;AAAA,IACvB;AAAA,EACF;AACF;;;ACvDO,IAAM,iBAAN,cAA6B,iBAAiB;AAAA,EACnD,MAAM,KAAK,KAAa,SAAkD;AACxE,WAAO,KAAK,SAAS,OAAO,uBAAuB,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,cAAc,OAAO;AAAA,EAC3G;AAAA,EAEA,MAAM,KAAK,KAAa,iBAAkC,SAAsC;AAC9F,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,uBAAuB,KAAK,SAAS,EAAE,KAAK,mBAAmB,gBAAgB,GAAG,OAAO,CAAC;AAC1I,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACzD;AAAA,EAEA,MAAM,OAAO,KAAa,YAAyC;AACjE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,yBAAyB,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AAC/G,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACzD;AAAA,EAEA,MAAM,OAAO,KAAa,YAAyC;AACjE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,yBAAyB,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AAChH,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACzD;AAAA,EAEA,MAAM,OAAO,KAAa,iBAAkC,MAAsC;AAChG,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,yBAAyB,KAAK,SAAS,EAAE,KAAK,mBAAmB,iBAAiB,KAAK,CAAC,CAAC;AAC1I,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,GAAG;AAAA,EAC1D;AACF;;;AC3BO,IAAM,yBAAN,MAAM,wBAAuB;AAAA,EAClC,YACkB,IACA,MACA,UACA,YACA,KACA,YACA,iBACA,eACA,eACA,eACA,aACA,UAChB;AAZgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EAZe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAAmC;AAChD,WAAO,IAAI;AAAA,MACT,OAAO,MAAM,IAAI;AAAA,MACjB,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,WAAW;AAAA,MAC3B,UAAU,MAAM,YAAY;AAAA,MAC5B,UAAU,MAAM,KAAK;AAAA,MACrB,UAAU,MAAM,cAAc;AAAA,MAC9B,UAAU,MAAM,mBAAmB;AAAA,MACnC,UAAU,MAAM,gBAAgB;AAAA,MAChC,UAAU,MAAM,gBAAgB;AAAA,MAChC,UAAU,MAAM,gBAAgB;AAAA,MAChC,UAAU,MAAM,cAAc;AAAA,MAC9B,UAAU,MAAM,WAAW;AAAA,IAC7B;AAAA,EACF;AACF;;;AC9BO,IAAM,mBAAN,MAAM,kBAAiB;AAAA,EAC5B,YACkB,IACA,MACA,QACA,WACA,SACA,oBACA,aACA,eACA,oBACA,aACA,QACA,iBACA,cACA,aACA,OACA,gBAAwC,IAAI,uBAAuB,GACnE,kBAAsC,IAAI,mBAAmB,GAC7E;AAjBgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACf;AAAA,EAjBe;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGlB,OAAO,QAAQ,MAA6B;AAC1C,WAAO,IAAI;AAAA,MACT,OAAO,MAAM,IAAI;AAAA,MACjB,UAAU,MAAM,MAAM;AAAA,MACtB,UAAU,MAAM,QAAQ;AAAA,MACxB,UAAU,MAAM,YAAY;AAAA,MAC5B,UAAU,MAAM,UAAU;AAAA,MAC1B,UAAU,MAAM,qBAAqB;AAAA,MACrC,UAAU,MAAM,eAAe;AAAA,MAC/B,UAAU,MAAM,iBAAiB;AAAA,MACjC,OAAO,MAAM,uBAAuB;AAAA,MACpC,UAAU,MAAM,eAAe;AAAA,MAC/B,UAAU,MAAM,QAAQ;AAAA,MACxB,UAAU,MAAM,mBAAmB;AAAA,MACnC,UAAU,MAAM,eAAe;AAAA,MAC/B,UAAU,MAAM,cAAc;AAAA,MAC9B,UAAU,MAAM,OAAO;AAAA,MACvB,uBAAuB,QAAQ,cAAc,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAAA,MACtE,mBAAmB,QAAQ,cAAc,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAAA,IACtE;AAAA,EACF;AACF;;;ACzCO,IAAM,oBAAN,cAAgC,iBAAiB;AAAA,EACtD,MAAM,KAAK,KAAa,UAAe,CAAC,GAA0C;AAChF,WAAO,KAAK,SAAS,OAAO,0BAA0B,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,iBAAiB,OAAO;AAAA,EACjH;AAAA,EAEA,MAAM,KAAK,KAAa,oBAAgE;AACtF,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,0BAA0B,KAAK,SAAS,EAAE,KAAK,sBAAsB,mBAAmB,CAAC,CAAC;AAC1I,WAAO,iBAAiB,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,OAAO,KAAa,YAA4C;AACpE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,4BAA4B,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AAClH,WAAO,iBAAiB,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,KAAK,KAAa,oBAAqC,YAA4C;AACvG,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,0BAA0B,KAAK,SAAS,EAAE,KAAK,sBAAsB,oBAAoB,GAAG,WAAW,CAAC,CAAC;AAC3J,WAAO,iBAAiB,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,MAAM,KAAa,oBAAqC,gBAAoD;AAChH,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,2BAA2B,KAAK,SAAS,EAAE,KAAK,sBAAsB,oBAAoB,kBAAkB,eAAe,CAAC,CAAC;AAC/K,WAAO,iBAAiB,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,OAAO,KAAa,oBAAgE;AACxF,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,4BAA4B,KAAK,SAAS,EAAE,KAAK,sBAAsB,mBAAmB,CAAC,CAAC;AAC9I,WAAO,iBAAiB,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,SAAS,KAAa,oBAAgE;AAC1F,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,8BAA8B,KAAK,SAAS,EAAE,KAAK,sBAAsB,mBAAmB,CAAC,CAAC;AAChJ,WAAO,iBAAiB,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,OAAO,KAAa,oBAA6D;AACrF,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,4BAA4B,KAAK,SAAS,EAAE,KAAK,sBAAsB,mBAAmB,CAAC,CAAC;AAC7I,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,GAAG;AAAA,EAC1D;AACF;;;AC1CO,IAAM,iBAAN,MAAM,gBAAe;AAAA,EAC1B,YAA4B,OAAgB;AAAhB;AAAA,EAAiB;AAAA,EAAjB;AAAA,EAE5B,OAAO,QAAQ,MAA2B;AACxC,WAAO,IAAI,gBAAe,UAAU,MAAM,OAAO,CAAC;AAAA,EACpD;AACF;;;ACFO,IAAM,eAAN,cAA2B,iBAAiB;AAAA,EACjD,MAAM,KAAK,KAAa,UAAe,CAAC,GAAqC;AAC3E,WAAO,KAAK,SAAS,OAAO,gBAAgB,KAAK,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,YAAY,OAAO;AAAA,EAClG;AAAA,EAEA,MAAM,KAAK,KAAa,YAAuC;AAC7D,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,OAAO,eAAe,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AACpG,WAAO,YAAY,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACvD;AAAA,EAEA,MAAM,WAAW,KAAa,YAAuC;AACnE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,2BAA2B,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AACjH,WAAO,YAAY,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACvD;AAAA;AAAA,EAGA,MAAM,gBAAgB,KAAa,YAAuC;AACxE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,iCAAiC,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AACvH,WAAO,YAAY,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACvD;AAAA,EAEA,MAAM,UAAU,KAAa,YAAuC;AAClE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,0BAA0B,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AAChH,WAAO,YAAY,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EACvD;AAAA,EAEA,MAAM,aAAa,KAAa,YAA0C;AACxE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,6BAA6B,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AACnH,WAAO,eAAe,QAAS,IAAI,MAAM,KAAa,CAAC,CAAC;AAAA,EAC1D;AAAA,EAEA,MAAM,OAAO,KAAa,YAAyC;AACjE,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,QAAQ,sBAAsB,KAAK,SAAS,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AAC5G,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,GAAG;AAAA,EAC1D;AAAA,EAEA,MAAM,KAAK,KAAa,iBAAyB,eAAwD;AACvG,UAAM,MAAM,MAAM,KAAK,UAAU,QAAQ,SAAS,oBAAoB,KAAK,SAAS,EAAE,KAAK,kBAAkB,iBAAiB,gBAAgB,cAAc,CAAC,CAAC;AAC9J,WAAO,cAAc,QAAS,IAAI,MAAM,KAAa,GAAG;AAAA,EAC1D;AACF;;;AC3BO,IAAM,SAAN,MAAa;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEQ;AAAA,EAEjB,YAAY,OAAwB,UAAkB,kBAAkB;AACtE,SAAK,UAAU,iBAAiB,SAAS,QAAQ,IAAI,OAAO,OAAO,OAAO;AAE1E,UAAM,YAAY,IAAI,UAAU,KAAK,OAAO;AAE5C,SAAK,eAAe,IAAI,aAAa,SAAS;AAC9C,SAAK,YAAY,IAAI,UAAU,SAAS;AACxC,SAAK,iBAAiB,IAAI,eAAe,SAAS;AAClD,SAAK,YAAY,IAAI,UAAU,SAAS;AACxC,SAAK,YAAY,IAAI,UAAU,SAAS;AACxC,SAAK,WAAW,IAAI,SAAS,SAAS;AACtC,SAAK,oBAAoB,IAAI,kBAAkB,SAAS;AAAA,EAC1D;AAAA,EAEA,SAAiB;AACf,WAAO,KAAK;AAAA,EACd;AACF;","names":[]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
declare const DEFAULT_BASE_URL = "https://app.dimepayments.com";
|
|
2
|
+
declare const VERSION = "1.0.0";
|
|
3
|
+
interface ConfigOptions {
|
|
4
|
+
/** Sanctum personal access token (sent as Bearer). */
|
|
5
|
+
token: string;
|
|
6
|
+
/** Base URL; defaults to https://app.dimepayments.com. */
|
|
7
|
+
baseUrl?: string;
|
|
8
|
+
/** Per-request timeout in seconds. Default 30. */
|
|
9
|
+
timeout?: number;
|
|
10
|
+
/** How many times to retry 429/5xx/network errors. Default 2. */
|
|
11
|
+
maxRetries?: number;
|
|
12
|
+
/** Base seconds for exponential backoff. Default 0.5. */
|
|
13
|
+
retryBaseDelay?: number;
|
|
14
|
+
/** Custom fetch implementation — inject a mock in tests. */
|
|
15
|
+
fetch?: typeof globalThis.fetch;
|
|
16
|
+
/** Custom sleep implementation — inject a no-op in tests to skip delays. */
|
|
17
|
+
sleep?: (ms: number) => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
declare class Config {
|
|
20
|
+
readonly token: string;
|
|
21
|
+
readonly baseUrl: string;
|
|
22
|
+
readonly timeout: number;
|
|
23
|
+
readonly maxRetries: number;
|
|
24
|
+
readonly retryBaseDelay: number;
|
|
25
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
26
|
+
readonly sleep?: (ms: number) => Promise<void>;
|
|
27
|
+
constructor(options: ConfigOptions | string, baseUrl?: string);
|
|
28
|
+
baseUri(): string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type Raw$m = Record<string, unknown>;
|
|
32
|
+
declare class Address {
|
|
33
|
+
readonly id?: number | undefined;
|
|
34
|
+
readonly recipient?: string | undefined;
|
|
35
|
+
readonly lineOne?: string | undefined;
|
|
36
|
+
readonly lineTwo?: string | undefined;
|
|
37
|
+
readonly lineThree?: string | undefined;
|
|
38
|
+
readonly city?: string | undefined;
|
|
39
|
+
readonly state?: string | undefined;
|
|
40
|
+
readonly zip?: string | undefined;
|
|
41
|
+
constructor(id?: number | undefined, recipient?: string | undefined, lineOne?: string | undefined, lineTwo?: string | undefined, lineThree?: string | undefined, city?: string | undefined, state?: string | undefined, zip?: string | undefined);
|
|
42
|
+
static fromRaw(data: Raw$m): Address;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type Raw$l = Record<string, unknown>;
|
|
46
|
+
declare class MessageResult {
|
|
47
|
+
readonly message?: string | undefined;
|
|
48
|
+
constructor(message?: string | undefined);
|
|
49
|
+
static fromRaw(data: Raw$l): MessageResult;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
type PageFetcher<T> = (cursor: string) => Promise<CursorPage<T>>;
|
|
53
|
+
declare class CursorPage<T> {
|
|
54
|
+
readonly data: T[];
|
|
55
|
+
readonly nextCursor?: string | undefined;
|
|
56
|
+
readonly prevCursor?: string | undefined;
|
|
57
|
+
readonly perPage?: number | undefined;
|
|
58
|
+
readonly path?: string | undefined;
|
|
59
|
+
private readonly fetcher?;
|
|
60
|
+
constructor(data: T[], nextCursor?: string | undefined, prevCursor?: string | undefined, perPage?: number | undefined, path?: string | undefined, fetcher?: PageFetcher<T> | undefined);
|
|
61
|
+
hasMore(): boolean;
|
|
62
|
+
next(): Promise<CursorPage<T> | null>;
|
|
63
|
+
/** Lazily iterate every item across all remaining pages. */
|
|
64
|
+
autoPaging(): AsyncGenerator<T>;
|
|
65
|
+
[Symbol.iterator](): Iterator<T>;
|
|
66
|
+
get length(): number;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
type Raw$k = Record<string, unknown>;
|
|
70
|
+
declare class Transport {
|
|
71
|
+
private readonly config;
|
|
72
|
+
private readonly fetchFn;
|
|
73
|
+
private readonly sleepFn;
|
|
74
|
+
constructor(config: Config);
|
|
75
|
+
/**
|
|
76
|
+
* Execute a request and return the decoded JSON body.
|
|
77
|
+
*
|
|
78
|
+
* The Dime API expects request parameters in the JSON body even for GET
|
|
79
|
+
* requests; this transport always sends the payload as a JSON body regardless
|
|
80
|
+
* of HTTP method, matching the server's expectation.
|
|
81
|
+
*/
|
|
82
|
+
request(method: string, path: string, body?: Raw$k, query?: Record<string, string>): Promise<Raw$k>;
|
|
83
|
+
private attempt;
|
|
84
|
+
private sleep;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
type Raw$j = Record<string, unknown>;
|
|
88
|
+
declare abstract class AbstractResource {
|
|
89
|
+
protected readonly transport: Transport;
|
|
90
|
+
constructor(transport: Transport);
|
|
91
|
+
/**
|
|
92
|
+
* Build the standard Dime request envelope, dropping null/undefined values.
|
|
93
|
+
*/
|
|
94
|
+
protected envelope(data?: Raw$j, filters?: Raw$j): Raw$j;
|
|
95
|
+
protected paginate<T>(method: string, path: string, body: Raw$j, map: (item: Raw$j) => T, query?: Record<string, string>): Promise<CursorPage<T>>;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
type Raw$i = Record<string, unknown>;
|
|
99
|
+
declare class Addresses extends AbstractResource {
|
|
100
|
+
list(sid: string, uuid: string): Promise<CursorPage<Address>>;
|
|
101
|
+
show(sid: string, uuid: string, addressId: number | string): Promise<Address>;
|
|
102
|
+
create(sid: string, uuid: string, attributes: Raw$i): Promise<Address>;
|
|
103
|
+
update(sid: string, uuid: string, addressId: number | string, attributes: Raw$i): Promise<Address>;
|
|
104
|
+
delete(sid: string, uuid: string, addressId: number | string): Promise<MessageResult>;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
type Raw$h = Record<string, unknown>;
|
|
108
|
+
declare class Customer {
|
|
109
|
+
readonly uuid?: string | undefined;
|
|
110
|
+
readonly firstName?: string | undefined;
|
|
111
|
+
readonly lastName?: string | undefined;
|
|
112
|
+
readonly phone?: string | undefined;
|
|
113
|
+
readonly email?: string | undefined;
|
|
114
|
+
readonly addr1?: string | undefined;
|
|
115
|
+
readonly addr2?: string | undefined;
|
|
116
|
+
readonly addr3?: string | undefined;
|
|
117
|
+
readonly city?: string | undefined;
|
|
118
|
+
readonly state?: string | undefined;
|
|
119
|
+
readonly zip?: string | undefined;
|
|
120
|
+
readonly country?: string | undefined;
|
|
121
|
+
constructor(uuid?: string | undefined, firstName?: string | undefined, lastName?: string | undefined, phone?: string | undefined, email?: string | undefined, addr1?: string | undefined, addr2?: string | undefined, addr3?: string | undefined, city?: string | undefined, state?: string | undefined, zip?: string | undefined, country?: string | undefined);
|
|
122
|
+
static fromRaw(data: Raw$h): Customer;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
type Raw$g = Record<string, unknown>;
|
|
126
|
+
declare class Customers extends AbstractResource {
|
|
127
|
+
list(sid: string, filters?: Raw$g): Promise<CursorPage<Customer>>;
|
|
128
|
+
show(sid: string, filters: Raw$g): Promise<Customer>;
|
|
129
|
+
create(sid: string, attributes: Raw$g): Promise<Customer>;
|
|
130
|
+
update(sid: string, filters: Raw$g, attributes: Raw$g): Promise<Customer>;
|
|
131
|
+
delete(sid: string, filters: Raw$g): Promise<MessageResult>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
type Raw$f = Record<string, unknown>;
|
|
135
|
+
declare class Deposit {
|
|
136
|
+
readonly transactionDate?: string | undefined;
|
|
137
|
+
readonly fundDate?: string | undefined;
|
|
138
|
+
readonly transactionInfoId?: string | undefined;
|
|
139
|
+
readonly transactionId?: string | undefined;
|
|
140
|
+
readonly transactionDetailAccount?: string | undefined;
|
|
141
|
+
readonly authorizationAmount?: string | undefined;
|
|
142
|
+
readonly netAmount?: string | undefined;
|
|
143
|
+
readonly sweepId?: string | undefined;
|
|
144
|
+
readonly type?: string | undefined;
|
|
145
|
+
constructor(transactionDate?: string | undefined, fundDate?: string | undefined, transactionInfoId?: string | undefined, transactionId?: string | undefined, transactionDetailAccount?: string | undefined, authorizationAmount?: string | undefined, netAmount?: string | undefined, sweepId?: string | undefined, type?: string | undefined);
|
|
146
|
+
static fromRaw(data: Raw$f): Deposit;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
type Raw$e = Record<string, unknown>;
|
|
150
|
+
declare class TransactionAddress {
|
|
151
|
+
readonly firstName?: string | undefined;
|
|
152
|
+
readonly lastName?: string | undefined;
|
|
153
|
+
readonly addr1?: string | undefined;
|
|
154
|
+
readonly addr2?: string | undefined;
|
|
155
|
+
readonly city?: string | undefined;
|
|
156
|
+
readonly state?: string | undefined;
|
|
157
|
+
readonly zip?: string | undefined;
|
|
158
|
+
constructor(firstName?: string | undefined, lastName?: string | undefined, addr1?: string | undefined, addr2?: string | undefined, city?: string | undefined, state?: string | undefined, zip?: string | undefined);
|
|
159
|
+
static fromRaw(data: Raw$e): TransactionAddress;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
type Raw$d = Record<string, unknown>;
|
|
163
|
+
declare class Transaction {
|
|
164
|
+
readonly transactionType?: string | undefined;
|
|
165
|
+
readonly transactionStatus?: string | undefined;
|
|
166
|
+
readonly transactionStatusDescription?: string | undefined;
|
|
167
|
+
readonly transactionNumber?: string | undefined;
|
|
168
|
+
readonly transactionDate?: string | undefined;
|
|
169
|
+
readonly fundDate?: string | undefined;
|
|
170
|
+
readonly settleDate?: string | undefined;
|
|
171
|
+
readonly amount?: string | undefined;
|
|
172
|
+
readonly description?: string | undefined;
|
|
173
|
+
readonly statusCode?: string | undefined;
|
|
174
|
+
readonly statusText?: string | undefined;
|
|
175
|
+
readonly email?: string | undefined;
|
|
176
|
+
readonly phone?: string | undefined;
|
|
177
|
+
readonly customerUuid?: string | undefined;
|
|
178
|
+
readonly multiUseToken?: string | undefined;
|
|
179
|
+
readonly pending: boolean;
|
|
180
|
+
readonly transactionInfoId?: string | undefined;
|
|
181
|
+
readonly parentTransactionInfoId?: string | undefined;
|
|
182
|
+
readonly billingAddress: TransactionAddress;
|
|
183
|
+
readonly shippingAddress: TransactionAddress;
|
|
184
|
+
constructor(transactionType?: string | undefined, transactionStatus?: string | undefined, transactionStatusDescription?: string | undefined, transactionNumber?: string | undefined, transactionDate?: string | undefined, fundDate?: string | undefined, settleDate?: string | undefined, amount?: string | undefined, description?: string | undefined, statusCode?: string | undefined, statusText?: string | undefined, email?: string | undefined, phone?: string | undefined, customerUuid?: string | undefined, multiUseToken?: string | undefined, pending?: boolean, transactionInfoId?: string | undefined, parentTransactionInfoId?: string | undefined, billingAddress?: TransactionAddress, shippingAddress?: TransactionAddress);
|
|
185
|
+
static fromRaw(data: Raw$d): Transaction;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
type Raw$c = Record<string, unknown>;
|
|
189
|
+
declare class DepositWithTransactions {
|
|
190
|
+
readonly sid?: string | undefined;
|
|
191
|
+
readonly transactionInfoId?: string | undefined;
|
|
192
|
+
readonly transactionId?: string | undefined;
|
|
193
|
+
readonly transactionDate?: string | undefined;
|
|
194
|
+
readonly fundDate?: string | undefined;
|
|
195
|
+
readonly type?: string | undefined;
|
|
196
|
+
readonly countOfTransactions?: number | undefined;
|
|
197
|
+
readonly transTotal?: string | undefined;
|
|
198
|
+
readonly transactions: Transaction[];
|
|
199
|
+
constructor(sid?: string | undefined, transactionInfoId?: string | undefined, transactionId?: string | undefined, transactionDate?: string | undefined, fundDate?: string | undefined, type?: string | undefined, countOfTransactions?: number | undefined, transTotal?: string | undefined, transactions?: Transaction[]);
|
|
200
|
+
static fromRaw(data: Raw$c): DepositWithTransactions;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
type Raw$b = Record<string, unknown>;
|
|
204
|
+
declare class DepositGroup {
|
|
205
|
+
readonly sid?: string | undefined;
|
|
206
|
+
readonly count?: number | undefined;
|
|
207
|
+
readonly deposits: DepositWithTransactions[];
|
|
208
|
+
constructor(sid?: string | undefined, count?: number | undefined, deposits?: DepositWithTransactions[]);
|
|
209
|
+
static fromRaw(data: Raw$b): DepositGroup;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
type Raw$a = Record<string, unknown>;
|
|
213
|
+
declare class Deposits extends AbstractResource {
|
|
214
|
+
list(sid: string, filters?: Raw$a): Promise<CursorPage<Deposit>>;
|
|
215
|
+
listWithTransactions(sid: string, filters: Raw$a): Promise<DepositGroup>;
|
|
216
|
+
show(sid: string, identifier: Raw$a): Promise<DepositWithTransactions>;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
type Raw$9 = Record<string, unknown>;
|
|
220
|
+
declare class FormLink {
|
|
221
|
+
readonly link?: string | undefined;
|
|
222
|
+
constructor(link?: string | undefined);
|
|
223
|
+
static fromRaw(data: Raw$9): FormLink;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
type Raw$8 = Record<string, unknown>;
|
|
227
|
+
declare class Merchant {
|
|
228
|
+
readonly name?: string | undefined;
|
|
229
|
+
readonly sid?: string | undefined;
|
|
230
|
+
readonly mcc?: string | undefined;
|
|
231
|
+
readonly slug?: string | undefined;
|
|
232
|
+
readonly pubApiKey?: string | undefined;
|
|
233
|
+
readonly processorMid?: string | undefined;
|
|
234
|
+
readonly active: boolean;
|
|
235
|
+
readonly activeAt?: string | undefined;
|
|
236
|
+
readonly gPay: boolean;
|
|
237
|
+
readonly aPay: boolean;
|
|
238
|
+
readonly pciCompliance: boolean;
|
|
239
|
+
readonly website?: string | undefined;
|
|
240
|
+
readonly addr1?: string | undefined;
|
|
241
|
+
readonly addr2?: string | undefined;
|
|
242
|
+
readonly city?: string | undefined;
|
|
243
|
+
readonly state?: string | undefined;
|
|
244
|
+
readonly zip?: string | undefined;
|
|
245
|
+
readonly phone?: string | undefined;
|
|
246
|
+
readonly primaryPhone?: string | undefined;
|
|
247
|
+
readonly primaryEmail?: string | undefined;
|
|
248
|
+
readonly primaryName?: string | undefined;
|
|
249
|
+
constructor(name?: string | undefined, sid?: string | undefined, mcc?: string | undefined, slug?: string | undefined, pubApiKey?: string | undefined, processorMid?: string | undefined, active?: boolean, activeAt?: string | undefined, gPay?: boolean, aPay?: boolean, pciCompliance?: boolean, website?: string | undefined, addr1?: string | undefined, addr2?: string | undefined, city?: string | undefined, state?: string | undefined, zip?: string | undefined, phone?: string | undefined, primaryPhone?: string | undefined, primaryEmail?: string | undefined, primaryName?: string | undefined);
|
|
250
|
+
static fromRaw(data: Raw$8): Merchant;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
type Raw$7 = Record<string, unknown>;
|
|
254
|
+
declare class Merchants extends AbstractResource {
|
|
255
|
+
list(filters?: Raw$7): Promise<CursorPage<Merchant>>;
|
|
256
|
+
show(sid: string): Promise<Merchant>;
|
|
257
|
+
create(attributes: Raw$7): Promise<Merchant>;
|
|
258
|
+
update(sid: string, attributes: Raw$7): Promise<Merchant>;
|
|
259
|
+
getFormLink(sid: string): Promise<FormLink>;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
type Raw$6 = Record<string, unknown>;
|
|
263
|
+
declare class PaymentMethod {
|
|
264
|
+
readonly id?: number | undefined;
|
|
265
|
+
readonly type?: string | undefined;
|
|
266
|
+
readonly token?: string | undefined;
|
|
267
|
+
readonly firstName?: string | undefined;
|
|
268
|
+
readonly lastName?: string | undefined;
|
|
269
|
+
readonly ccNameOnCard?: string | undefined;
|
|
270
|
+
readonly ccLastFour?: string | undefined;
|
|
271
|
+
readonly ccExpirationDate?: string | undefined;
|
|
272
|
+
readonly ccBrand?: string | undefined;
|
|
273
|
+
readonly achBankAccountName?: string | undefined;
|
|
274
|
+
readonly achRoutingNumber?: string | undefined;
|
|
275
|
+
readonly achAccountNumber?: string | undefined;
|
|
276
|
+
readonly achOwnershipType?: string | undefined;
|
|
277
|
+
readonly achAccountType?: string | undefined;
|
|
278
|
+
readonly achBankName?: string | undefined;
|
|
279
|
+
readonly status?: string | undefined;
|
|
280
|
+
readonly statusDate?: string | undefined;
|
|
281
|
+
readonly enabled: boolean;
|
|
282
|
+
readonly isDefault: boolean;
|
|
283
|
+
readonly addr1?: string | undefined;
|
|
284
|
+
readonly addr2?: string | undefined;
|
|
285
|
+
readonly addr3?: string | undefined;
|
|
286
|
+
readonly city?: string | undefined;
|
|
287
|
+
readonly state?: string | undefined;
|
|
288
|
+
readonly zip?: string | undefined;
|
|
289
|
+
constructor(id?: number | undefined, type?: string | undefined, token?: string | undefined, firstName?: string | undefined, lastName?: string | undefined, ccNameOnCard?: string | undefined, ccLastFour?: string | undefined, ccExpirationDate?: string | undefined, ccBrand?: string | undefined, achBankAccountName?: string | undefined, achRoutingNumber?: string | undefined, achAccountNumber?: string | undefined, achOwnershipType?: string | undefined, achAccountType?: string | undefined, achBankName?: string | undefined, status?: string | undefined, statusDate?: string | undefined, enabled?: boolean, isDefault?: boolean, addr1?: string | undefined, addr2?: string | undefined, addr3?: string | undefined, city?: string | undefined, state?: string | undefined, zip?: string | undefined);
|
|
290
|
+
static fromRaw(data: Raw$6): PaymentMethod;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
type Raw$5 = Record<string, unknown>;
|
|
294
|
+
declare class PaymentMethods extends AbstractResource {
|
|
295
|
+
list(sid: string, filters: Raw$5): Promise<CursorPage<PaymentMethod>>;
|
|
296
|
+
show(sid: string, paymentMethodId: number | string, filters: Raw$5): Promise<PaymentMethod>;
|
|
297
|
+
create(sid: string, attributes: Raw$5): Promise<PaymentMethod>;
|
|
298
|
+
update(sid: string, attributes: Raw$5): Promise<PaymentMethod>;
|
|
299
|
+
delete(sid: string, paymentMethodId: number | string, uuid: string): Promise<MessageResult>;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
type Raw$4 = Record<string, unknown>;
|
|
303
|
+
declare class RecurringPaymentMethod {
|
|
304
|
+
readonly id?: number | undefined;
|
|
305
|
+
readonly type?: string | undefined;
|
|
306
|
+
readonly lastFour?: string | undefined;
|
|
307
|
+
readonly expiration?: string | undefined;
|
|
308
|
+
readonly zip?: string | undefined;
|
|
309
|
+
readonly nameOnCard?: string | undefined;
|
|
310
|
+
readonly bankAccountName?: string | undefined;
|
|
311
|
+
readonly routingNumber?: string | undefined;
|
|
312
|
+
readonly accountNumber?: string | undefined;
|
|
313
|
+
readonly ownershipType?: string | undefined;
|
|
314
|
+
readonly accountType?: string | undefined;
|
|
315
|
+
readonly bankName?: string | undefined;
|
|
316
|
+
constructor(id?: number | undefined, type?: string | undefined, lastFour?: string | undefined, expiration?: string | undefined, zip?: string | undefined, nameOnCard?: string | undefined, bankAccountName?: string | undefined, routingNumber?: string | undefined, accountNumber?: string | undefined, ownershipType?: string | undefined, accountType?: string | undefined, bankName?: string | undefined);
|
|
317
|
+
static fromRaw(data: Raw$4): RecurringPaymentMethod;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
type Raw$3 = Record<string, unknown>;
|
|
321
|
+
declare class RecurringPayment {
|
|
322
|
+
readonly id?: number | undefined;
|
|
323
|
+
readonly name?: string | undefined;
|
|
324
|
+
readonly amount?: string | undefined;
|
|
325
|
+
readonly startDate?: string | undefined;
|
|
326
|
+
readonly endDate?: string | undefined;
|
|
327
|
+
readonly recurrenceSchedule?: string | undefined;
|
|
328
|
+
readonly lastRunDate?: string | undefined;
|
|
329
|
+
readonly lastRunStatus?: string | undefined;
|
|
330
|
+
readonly lastRunFailedCount?: number | undefined;
|
|
331
|
+
readonly nextRunDate?: string | undefined;
|
|
332
|
+
readonly status?: string | undefined;
|
|
333
|
+
readonly pausedUntilDate?: string | undefined;
|
|
334
|
+
readonly customerUuid?: string | undefined;
|
|
335
|
+
readonly cancelledAt?: string | undefined;
|
|
336
|
+
readonly error?: string | undefined;
|
|
337
|
+
readonly paymentMethod: RecurringPaymentMethod;
|
|
338
|
+
readonly shippingAddress: TransactionAddress;
|
|
339
|
+
constructor(id?: number | undefined, name?: string | undefined, amount?: string | undefined, startDate?: string | undefined, endDate?: string | undefined, recurrenceSchedule?: string | undefined, lastRunDate?: string | undefined, lastRunStatus?: string | undefined, lastRunFailedCount?: number | undefined, nextRunDate?: string | undefined, status?: string | undefined, pausedUntilDate?: string | undefined, customerUuid?: string | undefined, cancelledAt?: string | undefined, error?: string | undefined, paymentMethod?: RecurringPaymentMethod, shippingAddress?: TransactionAddress);
|
|
340
|
+
static fromRaw(data: Raw$3): RecurringPayment;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
type Raw$2 = Record<string, unknown>;
|
|
344
|
+
declare class RecurringPayments extends AbstractResource {
|
|
345
|
+
list(sid: string, filters?: Raw$2): Promise<CursorPage<RecurringPayment>>;
|
|
346
|
+
show(sid: string, recurringPaymentId: number | string): Promise<RecurringPayment>;
|
|
347
|
+
create(sid: string, attributes: Raw$2): Promise<RecurringPayment>;
|
|
348
|
+
edit(sid: string, recurringPaymentId: number | string, attributes: Raw$2): Promise<RecurringPayment>;
|
|
349
|
+
pause(sid: string, recurringPaymentId: number | string, pauseUntilDate?: string): Promise<RecurringPayment>;
|
|
350
|
+
cancel(sid: string, recurringPaymentId: number | string): Promise<RecurringPayment>;
|
|
351
|
+
activate(sid: string, recurringPaymentId: number | string): Promise<RecurringPayment>;
|
|
352
|
+
delete(sid: string, recurringPaymentId: number | string): Promise<MessageResult>;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
type Raw$1 = Record<string, unknown>;
|
|
356
|
+
declare class TokenizeResult {
|
|
357
|
+
readonly token?: string | undefined;
|
|
358
|
+
constructor(token?: string | undefined);
|
|
359
|
+
static fromRaw(data: Raw$1): TokenizeResult;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
type Raw = Record<string, unknown>;
|
|
363
|
+
declare class Transactions extends AbstractResource {
|
|
364
|
+
list(sid: string, filters?: Raw): Promise<CursorPage<Transaction>>;
|
|
365
|
+
show(sid: string, identifier: Raw): Promise<Transaction>;
|
|
366
|
+
chargeCard(sid: string, attributes: Raw): Promise<Transaction>;
|
|
367
|
+
/** @deprecated The API marks this deprecated; prefer chargeCard() with a token. */
|
|
368
|
+
chargeCardToken(sid: string, attributes: Raw): Promise<Transaction>;
|
|
369
|
+
chargeAch(sid: string, attributes: Raw): Promise<Transaction>;
|
|
370
|
+
tokenizeCard(sid: string, attributes: Raw): Promise<TokenizeResult>;
|
|
371
|
+
refund(sid: string, attributes: Raw): Promise<MessageResult>;
|
|
372
|
+
void(sid: string, transactionType: string, transactionId: number | string): Promise<MessageResult>;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Entry point for the Dime Payments API.
|
|
377
|
+
*
|
|
378
|
+
* ```ts
|
|
379
|
+
* const dime = new Client('your-api-token')
|
|
380
|
+
* const txn = await dime.transactions.chargeCard('000010', {
|
|
381
|
+
* amount: '49.99',
|
|
382
|
+
* token: 'tok_abc123',
|
|
383
|
+
* })
|
|
384
|
+
* ```
|
|
385
|
+
*/
|
|
386
|
+
declare class Client {
|
|
387
|
+
readonly transactions: Transactions;
|
|
388
|
+
readonly customers: Customers;
|
|
389
|
+
readonly paymentMethods: PaymentMethods;
|
|
390
|
+
readonly merchants: Merchants;
|
|
391
|
+
readonly addresses: Addresses;
|
|
392
|
+
readonly deposits: Deposits;
|
|
393
|
+
readonly recurringPayments: RecurringPayments;
|
|
394
|
+
private readonly _config;
|
|
395
|
+
constructor(token: string | Config, baseUrl?: string);
|
|
396
|
+
config(): Config;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
declare class DimeException extends Error {
|
|
400
|
+
readonly statusCode?: number | undefined;
|
|
401
|
+
readonly responseBody: Record<string, unknown>;
|
|
402
|
+
constructor(message: string, statusCode?: number | undefined, responseBody?: Record<string, unknown>, cause?: unknown);
|
|
403
|
+
getStatusCode(): number | undefined;
|
|
404
|
+
getResponseBody(): Record<string, unknown>;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
declare class ValidationException extends DimeException {
|
|
408
|
+
readonly errors: Record<string, string[]>;
|
|
409
|
+
constructor(message: string, errors?: Record<string, string[]>, statusCode?: number, responseBody?: Record<string, unknown>, cause?: unknown);
|
|
410
|
+
getErrors(): Record<string, string[]>;
|
|
411
|
+
firstError(): string | undefined;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
declare class RateLimitException extends DimeException {
|
|
415
|
+
readonly retryAfter?: number | undefined;
|
|
416
|
+
constructor(message: string, retryAfter?: number | undefined, statusCode?: number, responseBody?: Record<string, unknown>, cause?: unknown);
|
|
417
|
+
getRetryAfter(): number | undefined;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
declare class ApiException extends DimeException {
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
declare class AuthenticationException extends DimeException {
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
declare class PermissionDeniedException extends DimeException {
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
declare class NotFoundException extends DimeException {
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
declare class ServerException extends DimeException {
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
declare class ConnectionException extends DimeException {
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
export { Address, ApiException, AuthenticationException, Client, Config, ConnectionException, CursorPage, Customer, DEFAULT_BASE_URL, Deposit, DepositGroup, DepositWithTransactions, DimeException, FormLink, Merchant, MessageResult, NotFoundException, PaymentMethod, PermissionDeniedException, RateLimitException, RecurringPayment, RecurringPaymentMethod, ServerException, TokenizeResult, Transaction, TransactionAddress, VERSION, ValidationException };
|