@jars-lt/jars-app-sdk 0.2.1 → 0.3.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/README.md +4 -4
- package/dist/index.cjs +63 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1859 -894
- package/dist/index.d.ts +1859 -894
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -41,6 +41,35 @@ var PartnersResource = class {
|
|
|
41
41
|
remove(id) {
|
|
42
42
|
return this.client.request("delete", "/api/partners/{id}", { params: { id } });
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* What merging `sourceId` into `id` would move and fill, without moving or
|
|
46
|
+
* filling any of it. An integration that creates partners from another
|
|
47
|
+
* system is the caller most likely to produce a duplicate pair, which is why
|
|
48
|
+
* these two are wrapped rather than allowlisted.
|
|
49
|
+
*/
|
|
50
|
+
mergePreview(id, sourceId) {
|
|
51
|
+
return this.client.request("get", "/api/partners/{id}/merge-preview", {
|
|
52
|
+
params: { id },
|
|
53
|
+
query: { sourceId }
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Re-points every document of `sourceId` onto `id`, fills the fields `id`
|
|
58
|
+
* leaves empty, and DELETES `sourceId`. Refused (409) when the two carry
|
|
59
|
+
* different registration codes — those are two legal entities, not a
|
|
60
|
+
* duplicate.
|
|
61
|
+
*
|
|
62
|
+
* A 404 on a RETRY means the donor is already gone, which is what a merge
|
|
63
|
+
* that succeeded looks like from a client whose response was lost: documents
|
|
64
|
+
* move first and the donor is deleted last, so a second call finds no
|
|
65
|
+
* references and a missing card. Treat it as done, not as failed.
|
|
66
|
+
*/
|
|
67
|
+
merge(id, sourceId) {
|
|
68
|
+
return this.client.request("post", "/api/partners/{id}/merge", {
|
|
69
|
+
params: { id },
|
|
70
|
+
body: { sourceId }
|
|
71
|
+
});
|
|
72
|
+
}
|
|
44
73
|
};
|
|
45
74
|
|
|
46
75
|
// src/resources/products.ts
|
|
@@ -176,6 +205,17 @@ var ReportsResource = class {
|
|
|
176
205
|
isafExport(params) {
|
|
177
206
|
return this.client.request("get", "/api/reports/isaf-export", { query: params });
|
|
178
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* What the month's i.SAF file will contain, and which POSTED invoices reach
|
|
210
|
+
* neither register — `SUPPLIER_NOT_VAT_REGISTERED` (expected: a Lithuanian
|
|
211
|
+
* supplier with no PVM code writes no PVM invoice), `NO_PARTNER` or
|
|
212
|
+
* `NO_VAT_SUMMARY` (both data defects).
|
|
213
|
+
*
|
|
214
|
+
* Same one-calendar-month period rule as `isafExport`.
|
|
215
|
+
*/
|
|
216
|
+
isafExportPreview(params) {
|
|
217
|
+
return this.client.request("get", "/api/reports/isaf-export/preview", { query: params });
|
|
218
|
+
}
|
|
179
219
|
};
|
|
180
220
|
|
|
181
221
|
// src/resources/audit-logs.ts
|
|
@@ -436,6 +476,17 @@ var BankTransactionsResource = class {
|
|
|
436
476
|
unpost(id) {
|
|
437
477
|
return this.client.request("post", "/api/bank-transactions/{id}/unpost", { params: { id } });
|
|
438
478
|
}
|
|
479
|
+
/**
|
|
480
|
+
* Replace a posted transaction's journal entry that no longer matches its
|
|
481
|
+
* allocations (`postingStale`) — after `setAllocations` on a posted
|
|
482
|
+
* transaction — with one built from them: a storno dated as the old entry,
|
|
483
|
+
* then a post. Answers `reposted: false` and writes nothing when the entry
|
|
484
|
+
* already matches, and refuses before the storno when the new entry cannot
|
|
485
|
+
* be posted.
|
|
486
|
+
*/
|
|
487
|
+
repost(id) {
|
|
488
|
+
return this.client.request("post", "/api/bank-transactions/{id}/repost", { params: { id } });
|
|
489
|
+
}
|
|
439
490
|
};
|
|
440
491
|
|
|
441
492
|
// src/resources/business-trips.ts
|
|
@@ -525,6 +576,18 @@ var ExchangeRatesResource = class {
|
|
|
525
576
|
list(params) {
|
|
526
577
|
return this.client.request("get", "/api/exchange-rates", { query: toQuery(params) });
|
|
527
578
|
}
|
|
579
|
+
/**
|
|
580
|
+
* One currency's Bank of Lithuania rate for one day — the rate a
|
|
581
|
+
* foreign-currency invoice import books. `rateDate` in the answer is the table
|
|
582
|
+
* it was read from, an earlier day when `date` had none; `pending` is true
|
|
583
|
+
* while `date`'s own table is still to come (it is loaded at 15:30 UTC on the
|
|
584
|
+
* day), so the answer will change.
|
|
585
|
+
*/
|
|
586
|
+
rate(params) {
|
|
587
|
+
return this.client.request("get", "/api/exchange-rates/rate", {
|
|
588
|
+
query: { currency: params.currency, date: params.date }
|
|
589
|
+
});
|
|
590
|
+
}
|
|
528
591
|
};
|
|
529
592
|
|
|
530
593
|
// src/resources/bank-statements.ts
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/errors.ts","../src/resources/shared.ts","../src/resources/partners.ts","../src/resources/products.ts","../src/resources/invoices.ts","../src/resources/journal.ts","../src/resources/reports.ts","../src/resources/audit-logs.ts","../src/resources/lookups.ts","../src/resources/cash-registers.ts","../src/resources/projects.ts","../src/resources/professions.ts","../src/resources/perdiem-rates.ts","../src/resources/price-lists.ts","../src/resources/fixed-assets.ts","../src/resources/employees.ts","../src/resources/cash-orders.ts","../src/resources/bank-transactions.ts","../src/resources/business-trips.ts","../src/resources/payroll.ts","../src/resources/depreciation.ts","../src/resources/numberings.ts","../src/resources/exchange-rates.ts","../src/resources/bank-statements.ts","../src/resources/sales-receipts.ts"],"sourcesContent":["import createClientDefault, { type Client } from 'openapi-fetch'\n\n/**\n * `openapi-fetch` ships only a default export, and esbuild's node-mode interop breaks\n * it in our own CommonJS bundle. tsup emits `__toESM(require(\"openapi-fetch\"), 1)`;\n * with `isNodeMode` set, `__toESM` defines `default` as the whole module namespace\n * BEFORE copying the module's own keys, and `__copyProps` skips a key the target\n * already owns — so the real function never lands on `.default`. Every `require()`\n * consumer therefore died on `new JarsClient(...)` with\n * \"(0 , import_openapi_fetch.default) is not a function\", while ESM was fine, which is\n * why the suite (vitest, ESM) never saw it.\n *\n * Under that interop the function is one level further in, on the namespace the\n * default now points at. Unwrap it only when the default is not callable, so the ESM\n * path — where the default IS the function — is untouched. `smoke:cjs` pins this.\n */\ntype CreateClient = typeof createClientDefault\nconst createClient: CreateClient = typeof createClientDefault === 'function'\n ? createClientDefault\n : (createClientDefault as unknown as { default: CreateClient }).default\nimport type { paths } from './generated/types'\nimport { JarsApiError } from './errors'\nimport { PartnersResource } from './resources/partners'\nimport { ProductsResource } from './resources/products'\nimport { InvoicesResource } from './resources/invoices'\nimport { JournalResource } from './resources/journal'\nimport { ReportsResource } from './resources/reports'\nimport { AuditLogsResource } from './resources/audit-logs'\nimport { LookupsResource } from './resources/lookups'\nimport { CashRegistersResource } from './resources/cash-registers'\nimport { ProjectsResource } from './resources/projects'\nimport { ProfessionsResource } from './resources/professions'\nimport { PerDiemRatesResource } from './resources/perdiem-rates'\nimport { PriceListsResource } from './resources/price-lists'\nimport { FixedAssetsResource } from './resources/fixed-assets'\nimport { EmployeesResource } from './resources/employees'\nimport { CashOrdersResource } from './resources/cash-orders'\nimport { BankTransactionsResource } from './resources/bank-transactions'\nimport { BusinessTripsResource } from './resources/business-trips'\nimport { PayrollResource } from './resources/payroll'\nimport { DepreciationResource } from './resources/depreciation'\nimport { NumberingsResource } from './resources/numberings'\nimport { ExchangeRatesResource } from './resources/exchange-rates'\nimport { BankStatementsResource } from './resources/bank-statements'\nimport { SalesReceiptsResource } from './resources/sales-receipts'\n\n/** Default API host. The generated path keys already carry the `/api` prefix. */\nexport const DEFAULT_BASE_URL = 'https://app.jars.lt'\n\nexport type Method = 'get' | 'post' | 'put' | 'patch' | 'delete'\n\nexport interface JarsClientConfig {\n apiKey: string\n baseUrl?: string\n fetch?: typeof fetch\n}\n\nexport interface RequestOptions {\n query?: Record<string, string | number | boolean | undefined>\n body?: unknown\n params?: Record<string, string>\n}\n\ninterface ErrorEnvelope {\n error?: string\n code?: string\n details?: unknown\n}\n\n/** Parse JSON, falling back to the raw string when the body isn't valid JSON. */\nfunction safeJson(text: string): unknown {\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n}\n\nexport class JarsClient {\n /** Underlying `openapi-fetch` client for advanced, fully-typed use. */\n readonly raw: Client<paths>\n\n readonly partners: PartnersResource\n readonly products: ProductsResource\n readonly invoices: InvoicesResource\n readonly journal: JournalResource\n readonly reports: ReportsResource\n readonly auditLogs: AuditLogsResource\n readonly lookups: LookupsResource\n readonly cashRegisters: CashRegistersResource\n readonly projects: ProjectsResource\n readonly professions: ProfessionsResource\n readonly perDiemRates: PerDiemRatesResource\n readonly priceLists: PriceListsResource\n readonly fixedAssets: FixedAssetsResource\n readonly employees: EmployeesResource\n readonly cashOrders: CashOrdersResource\n readonly bankTransactions: BankTransactionsResource\n readonly businessTrips: BusinessTripsResource\n readonly payroll: PayrollResource\n readonly depreciation: DepreciationResource\n readonly numberings: NumberingsResource\n readonly exchangeRates: ExchangeRatesResource\n readonly bankStatements: BankStatementsResource\n readonly salesReceipts: SalesReceiptsResource\n\n private readonly baseUrl: string\n private readonly authHeader: string\n private readonly fetchImpl: typeof fetch\n\n constructor(config: JarsClientConfig) {\n if (!config?.apiKey) throw new Error('JarsClient: apiKey is required')\n\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '')\n this.authHeader = `Bearer ${config.apiKey}`\n this.fetchImpl = config.fetch ?? fetch\n\n this.raw = createClient<paths>({\n baseUrl: this.baseUrl,\n fetch: this.fetchImpl,\n headers: { Authorization: this.authHeader },\n })\n\n this.partners = new PartnersResource(this)\n this.products = new ProductsResource(this)\n this.invoices = new InvoicesResource(this)\n this.journal = new JournalResource(this)\n this.reports = new ReportsResource(this)\n this.auditLogs = new AuditLogsResource(this)\n this.lookups = new LookupsResource(this)\n this.cashRegisters = new CashRegistersResource(this)\n this.projects = new ProjectsResource(this)\n this.professions = new ProfessionsResource(this)\n this.perDiemRates = new PerDiemRatesResource(this)\n this.priceLists = new PriceListsResource(this)\n this.fixedAssets = new FixedAssetsResource(this)\n this.employees = new EmployeesResource(this)\n this.cashOrders = new CashOrdersResource(this)\n this.bankTransactions = new BankTransactionsResource(this)\n this.businessTrips = new BusinessTripsResource(this)\n this.payroll = new PayrollResource(this)\n this.depreciation = new DepreciationResource(this)\n this.numberings = new NumberingsResource(this)\n this.exchangeRates = new ExchangeRatesResource(this)\n this.bankStatements = new BankStatementsResource(this)\n this.salesReceipts = new SalesReceiptsResource(this)\n }\n\n async request<T = unknown>(method: Method, path: string, opts: RequestOptions = {}): Promise<T> {\n const finalPath = opts.params\n ? path.replace(/\\{([^}]+)\\}/g, (_, key: string) => {\n const value = opts.params![key]\n return encodeURIComponent(value ?? `{${key}}`)\n })\n : path\n\n const url = new URL(this.baseUrl + finalPath)\n if (opts.query) {\n for (const [key, value] of Object.entries(opts.query)) {\n if (value !== undefined) url.searchParams.set(key, String(value))\n }\n }\n\n const headers = new Headers({ Authorization: this.authHeader })\n let body: string | FormData | undefined\n if (opts.body !== undefined) {\n const isForm = typeof FormData !== 'undefined' && opts.body instanceof FormData\n if (isForm) {\n // Pass FormData directly — the runtime sets the multipart boundary automatically.\n // Do NOT set content-type; setting it manually strips the boundary parameter.\n body = opts.body as FormData\n } else {\n headers.set('content-type', 'application/json')\n body = JSON.stringify(opts.body)\n }\n }\n\n let res: Response\n try {\n res = await this.fetchImpl(url, { method: method.toUpperCase(), headers, body })\n } catch (cause) {\n throw new JarsApiError({\n status: 0,\n message: cause instanceof Error ? cause.message : 'Network error',\n })\n }\n\n const text = await res.text()\n const parsed = text === '' ? undefined : safeJson(text)\n\n if (!res.ok) {\n const env = (parsed ?? {}) as ErrorEnvelope\n throw new JarsApiError({\n status: res.status,\n message: env.error,\n code: env.code,\n details: env.details,\n })\n }\n\n return parsed as T\n }\n}\n","export interface JarsApiErrorInit {\n status: number\n message?: string\n code?: string\n details?: unknown\n}\n\n/** Thrown for any non-2xx API response or a network/abort failure (status 0). */\nexport class JarsApiError extends Error {\n readonly status: number\n readonly code?: string\n readonly details?: unknown\n\n constructor(init: JarsApiErrorInit) {\n super(init.message ?? 'JARS API request failed')\n this.name = 'JarsApiError'\n this.status = init.status\n this.code = init.code\n this.details = init.details\n Object.setPrototypeOf(this, JarsApiError.prototype)\n }\n}\n","import type { RequestOptions } from '../client'\n\n/**\n * List query parameters: the documented common params (search/sort/limit)\n * plus arbitrary passthrough field filters supported by the API.\n */\nexport interface ListParams {\n search?: string\n sort?: string\n limit?: number\n [filter: string]: string | number | boolean | undefined\n}\n\nexport function toQuery(params?: ListParams): RequestOptions['query'] {\n return params as RequestOptions['query']\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport type { ListParams } from './shared'\n\nexport class PartnersResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/partners', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/partners/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/partners', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/partners/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/partners/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class ProductsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/products', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/products/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/products', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/products/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/products/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class InvoicesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/invoices', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/invoices/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/invoices', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/invoices/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/invoices/{id}', { params: { id } })\n }\n\n post<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/post', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/unpost', { params: { id } })\n }\n\n cancel<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/cancel', { params: { id } })\n }\n\n setExternalStatus<T = unknown>(id: string, externalStatus: string | null): Promise<T> {\n return this.client.request<T>('patch', '/api/invoices/{id}/external-status', {\n params: { id },\n body: { externalStatus },\n })\n }\n\n postingPreview<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/invoices/{id}/posting-preview', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class JournalResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/journal', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/journal/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/journal', { body })\n }\n}\n","import type { JarsClient } from '../client'\n\nexport type ReportParams = Record<string, string | number | boolean | undefined>\n\nexport class ReportsResource {\n constructor(private readonly client: JarsClient) {}\n trialBalance<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/trial-balance', { query: params })\n }\n /**\n * Chronological postings for one account. `from` and `to` are required;\n * `account` is optional but omitting it asks for every account.\n *\n * Rejects with 400 `REPORT_TOO_BROAD` when the query would return more than\n * 10,000 lines — the result is never truncated, because the caller computes a\n * running balance across these lines. Narrow by account or by period.\n */\n generalLedger<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/general-ledger', { query: params })\n }\n accountAnalytics<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/account-analytics', { query: params })\n }\n /**\n * Settlement balances per partner.\n *\n * Returns `{ rows, totals, rowCount, unfilteredRowCount, truncated }`.\n * `totals` are computed over the full set — before the `nonZeroOnly` filter\n * and before the row cap — so they tie out whatever `rows` contains.\n *\n * `nonZeroOnly` defaults to true: rows whose closing balance is zero are\n * omitted. Pass `nonZeroOnly: false` for the complete list.\n */\n partnerBalance<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/partner-balance', { query: params })\n }\n /** Salary/advance balances per employee. `from` and `to` are required. */\n employeeBalance<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/employee-balance', { query: params })\n }\n /**\n * Cash book for one register: opening balance plus posted cash movements.\n *\n * Rejects with 400 `REPORT_TOO_BROAD` above 10,000 lines, for the same reason\n * as `generalLedger`.\n */\n cashBook<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/cash-book', { query: params })\n }\n /** Balance sheet + P&L. `year` is required; pass `to` for an interim period. */\n financialStatements<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/financial-statements', { query: params })\n }\n isafExport<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/isaf-export', { query: params })\n }\n}\n","import { type ListParams, toQuery } from './shared'\nimport type { JarsClient } from '../client'\n\nexport class AuditLogsResource {\n constructor(private readonly client: JarsClient) {}\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/audit-logs', { query: toQuery(params) })\n }\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/audit-logs/{id}', { params: { id } })\n }\n}\n","import { type ListParams, toQuery } from './shared'\nimport type { JarsClient } from '../client'\n\n/**\n * Reference data (accounts, VAT codes, units, operation templates) is\n * read-mostly. For MVP the facade exposes LIST methods only; create/update/\n * delete remain available through the raw client.\n */\nexport class LookupsResource {\n constructor(private readonly client: JarsClient) {}\n\n accounts<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/accounts', { query: toQuery(params) })\n }\n\n vatCodes<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/vat-codes', { query: toQuery(params) })\n }\n\n units<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/units', { query: toQuery(params) })\n }\n\n templates<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/templates', { query: toQuery(params) })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class CashRegistersResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/cash-registers', { query: toQuery(params) })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/cash-registers', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/cash-registers/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/cash-registers/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class ProjectsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/projects', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/projects/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/projects', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/projects/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/projects/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class ProfessionsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/professions', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/professions/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/professions', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/professions/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/professions/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class PerDiemRatesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/perdiem-rates', { query: toQuery(params) })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/perdiem-rates', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/perdiem-rates/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/perdiem-rates/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class PriceListsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/price-lists', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/price-lists/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/price-lists', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/price-lists/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/price-lists/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class FixedAssetsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/fixed-assets', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/fixed-assets/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/fixed-assets', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/fixed-assets/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/fixed-assets/{id}', { params: { id } })\n }\n\n dispose<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/fixed-assets/{id}/dispose', { params: { id }, body })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class EmployeesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/employees', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/employees/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/employees', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/employees/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/employees/{id}', { params: { id } })\n }\n\n nextCode<T = unknown>(): Promise<T> {\n return this.client.request<T>('get', '/api/employees/next-code')\n }\n\n verifyPin<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/employees/verify-pin', { body })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class CashOrdersResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/cash-orders', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/cash-orders/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/cash-orders', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/cash-orders/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/cash-orders/{id}', { params: { id } })\n }\n\n setExternalStatus<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('patch', '/api/cash-orders/{id}/external-status', { params: { id }, body })\n }\n\n post<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/cash-orders/{id}/post', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/cash-orders/{id}/unpost', { params: { id } })\n }\n\n fiscalize<T = unknown>(id: string, body?: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/cash-orders/{id}/fiscalize', { params: { id }, body: body ?? {} })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class BankTransactionsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/bank-transactions', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/bank-transactions/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/bank-transactions', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/bank-transactions/{id}', { params: { id }, body })\n }\n\n /**\n * Link the transaction to invoices (payment matching). Separate from `update`\n * because it works at any status — `update` refuses a posted transaction,\n * while allocations must stay editable after posting (a prepayment is posted\n * before its invoice exists).\n */\n setAllocations<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/bank-transactions/{id}/allocations', { params: { id }, body })\n }\n\n setExternalStatus<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('patch', '/api/bank-transactions/{id}/external-status', { params: { id }, body })\n }\n\n post<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/bank-transactions/{id}/post', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/bank-transactions/{id}/unpost', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class BusinessTripsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/business-trips', { query: toQuery(params) })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/business-trips', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/business-trips/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/business-trips/{id}', { params: { id } })\n }\n\n postAdvance<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/business-trips/{id}/post-advance', { params: { id } })\n }\n\n postSettlement<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/business-trips/{id}/post-settlement', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/business-trips/{id}/unpost', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class PayrollResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/payroll', { query: toQuery(params) })\n }\n\n preview<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/payroll/preview', { body })\n }\n\n post<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/payroll/post', { body })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/payroll/{id}/unpost', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class DepreciationResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/depreciation', { query: toQuery(params) })\n }\n\n preview<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/depreciation/preview', { body })\n }\n\n post<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/depreciation/post', { body })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/depreciation/{id}/unpost', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class NumberingsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/numberings', { query: toQuery(params) })\n }\n\n update<T = unknown>(prefix: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/numberings/{prefix}', { params: { prefix }, body })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class ExchangeRatesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/exchange-rates', { query: toQuery(params) })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class BankStatementsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/bank-statements', { query: toQuery(params) })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/bank-statements/{id}', { params: { id } })\n }\n\n detect<T = unknown>(file: Blob | File, filename?: string): Promise<T> {\n const fd = new FormData()\n fd.append('file', file, filename)\n return this.client.request<T>('post', '/api/bank-statements/detect', { body: fd })\n }\n\n import<T = unknown>(file: Blob | File, fields?: Record<string, string>, filename?: string): Promise<T> {\n const fd = new FormData()\n fd.append('file', file, filename)\n if (fields) {\n for (const [key, value] of Object.entries(fields)) {\n fd.append(key, value)\n }\n }\n return this.client.request<T>('post', '/api/bank-statements/import', { body: fd })\n }\n}\n","import type { JarsClient } from '../client'\n\n/**\n * Batch ingest for sales booked in an EXTERNAL system: a POS/ERP that issues\n * and fiscalises its own documents, and only needs JARS to book the result.\n * Mirrors `POST /api/sales/receipts` (`apps/api/src/routes/sales-receipts.ts`):\n * idempotent on `externalCode` (a repeat item comes back `duplicate`, HTTP\n * 200, never a 409) and partial-success (one malformed item never fails the\n * rest of the batch) — so the response is one result per item, positional\n * with the request order, never a single pass/fail for the whole call.\n */\nexport class SalesReceiptsResource {\n constructor(private readonly client: JarsClient) {}\n\n /**\n * Books a batch of external sales as CashOrder RECEIPT (DRAFT) documents.\n * Returns `{ results: [...] }`, one entry per item — `'created' | 'duplicate' | 'error'` —\n * positional with `items`.\n */\n ingest<T = unknown>(items: Record<string, unknown>[]): Promise<T> {\n return this.client.request<T>('post', '/api/sales/receipts', { body: { items } })\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/errors.ts","../src/resources/shared.ts","../src/resources/partners.ts","../src/resources/products.ts","../src/resources/invoices.ts","../src/resources/journal.ts","../src/resources/reports.ts","../src/resources/audit-logs.ts","../src/resources/lookups.ts","../src/resources/cash-registers.ts","../src/resources/projects.ts","../src/resources/professions.ts","../src/resources/perdiem-rates.ts","../src/resources/price-lists.ts","../src/resources/fixed-assets.ts","../src/resources/employees.ts","../src/resources/cash-orders.ts","../src/resources/bank-transactions.ts","../src/resources/business-trips.ts","../src/resources/payroll.ts","../src/resources/depreciation.ts","../src/resources/numberings.ts","../src/resources/exchange-rates.ts","../src/resources/bank-statements.ts","../src/resources/sales-receipts.ts"],"sourcesContent":["import createClientDefault, { type Client } from 'openapi-fetch'\n\n/**\n * `openapi-fetch` ships only a default export, and esbuild's node-mode interop breaks\n * it in our own CommonJS bundle. tsup emits `__toESM(require(\"openapi-fetch\"), 1)`;\n * with `isNodeMode` set, `__toESM` defines `default` as the whole module namespace\n * BEFORE copying the module's own keys, and `__copyProps` skips a key the target\n * already owns — so the real function never lands on `.default`. Every `require()`\n * consumer therefore died on `new JarsClient(...)` with\n * \"(0 , import_openapi_fetch.default) is not a function\", while ESM was fine, which is\n * why the suite (vitest, ESM) never saw it.\n *\n * Under that interop the function is one level further in, on the namespace the\n * default now points at. Unwrap it only when the default is not callable, so the ESM\n * path — where the default IS the function — is untouched. `smoke:cjs` pins this.\n */\ntype CreateClient = typeof createClientDefault\nconst createClient: CreateClient = typeof createClientDefault === 'function'\n ? createClientDefault\n : (createClientDefault as unknown as { default: CreateClient }).default\nimport type { paths } from './generated/types'\nimport { JarsApiError } from './errors'\nimport { PartnersResource } from './resources/partners'\nimport { ProductsResource } from './resources/products'\nimport { InvoicesResource } from './resources/invoices'\nimport { JournalResource } from './resources/journal'\nimport { ReportsResource } from './resources/reports'\nimport { AuditLogsResource } from './resources/audit-logs'\nimport { LookupsResource } from './resources/lookups'\nimport { CashRegistersResource } from './resources/cash-registers'\nimport { ProjectsResource } from './resources/projects'\nimport { ProfessionsResource } from './resources/professions'\nimport { PerDiemRatesResource } from './resources/perdiem-rates'\nimport { PriceListsResource } from './resources/price-lists'\nimport { FixedAssetsResource } from './resources/fixed-assets'\nimport { EmployeesResource } from './resources/employees'\nimport { CashOrdersResource } from './resources/cash-orders'\nimport { BankTransactionsResource } from './resources/bank-transactions'\nimport { BusinessTripsResource } from './resources/business-trips'\nimport { PayrollResource } from './resources/payroll'\nimport { DepreciationResource } from './resources/depreciation'\nimport { NumberingsResource } from './resources/numberings'\nimport { ExchangeRatesResource } from './resources/exchange-rates'\nimport { BankStatementsResource } from './resources/bank-statements'\nimport { SalesReceiptsResource } from './resources/sales-receipts'\n\n/** Default API host. The generated path keys already carry the `/api` prefix. */\nexport const DEFAULT_BASE_URL = 'https://app.jars.lt'\n\nexport type Method = 'get' | 'post' | 'put' | 'patch' | 'delete'\n\nexport interface JarsClientConfig {\n apiKey: string\n baseUrl?: string\n fetch?: typeof fetch\n}\n\nexport interface RequestOptions {\n query?: Record<string, string | number | boolean | undefined>\n body?: unknown\n params?: Record<string, string>\n}\n\ninterface ErrorEnvelope {\n error?: string\n code?: string\n details?: unknown\n}\n\n/** Parse JSON, falling back to the raw string when the body isn't valid JSON. */\nfunction safeJson(text: string): unknown {\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n}\n\nexport class JarsClient {\n /** Underlying `openapi-fetch` client for advanced, fully-typed use. */\n readonly raw: Client<paths>\n\n readonly partners: PartnersResource\n readonly products: ProductsResource\n readonly invoices: InvoicesResource\n readonly journal: JournalResource\n readonly reports: ReportsResource\n readonly auditLogs: AuditLogsResource\n readonly lookups: LookupsResource\n readonly cashRegisters: CashRegistersResource\n readonly projects: ProjectsResource\n readonly professions: ProfessionsResource\n readonly perDiemRates: PerDiemRatesResource\n readonly priceLists: PriceListsResource\n readonly fixedAssets: FixedAssetsResource\n readonly employees: EmployeesResource\n readonly cashOrders: CashOrdersResource\n readonly bankTransactions: BankTransactionsResource\n readonly businessTrips: BusinessTripsResource\n readonly payroll: PayrollResource\n readonly depreciation: DepreciationResource\n readonly numberings: NumberingsResource\n readonly exchangeRates: ExchangeRatesResource\n readonly bankStatements: BankStatementsResource\n readonly salesReceipts: SalesReceiptsResource\n\n private readonly baseUrl: string\n private readonly authHeader: string\n private readonly fetchImpl: typeof fetch\n\n constructor(config: JarsClientConfig) {\n if (!config?.apiKey) throw new Error('JarsClient: apiKey is required')\n\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '')\n this.authHeader = `Bearer ${config.apiKey}`\n this.fetchImpl = config.fetch ?? fetch\n\n this.raw = createClient<paths>({\n baseUrl: this.baseUrl,\n fetch: this.fetchImpl,\n headers: { Authorization: this.authHeader },\n })\n\n this.partners = new PartnersResource(this)\n this.products = new ProductsResource(this)\n this.invoices = new InvoicesResource(this)\n this.journal = new JournalResource(this)\n this.reports = new ReportsResource(this)\n this.auditLogs = new AuditLogsResource(this)\n this.lookups = new LookupsResource(this)\n this.cashRegisters = new CashRegistersResource(this)\n this.projects = new ProjectsResource(this)\n this.professions = new ProfessionsResource(this)\n this.perDiemRates = new PerDiemRatesResource(this)\n this.priceLists = new PriceListsResource(this)\n this.fixedAssets = new FixedAssetsResource(this)\n this.employees = new EmployeesResource(this)\n this.cashOrders = new CashOrdersResource(this)\n this.bankTransactions = new BankTransactionsResource(this)\n this.businessTrips = new BusinessTripsResource(this)\n this.payroll = new PayrollResource(this)\n this.depreciation = new DepreciationResource(this)\n this.numberings = new NumberingsResource(this)\n this.exchangeRates = new ExchangeRatesResource(this)\n this.bankStatements = new BankStatementsResource(this)\n this.salesReceipts = new SalesReceiptsResource(this)\n }\n\n async request<T = unknown>(method: Method, path: string, opts: RequestOptions = {}): Promise<T> {\n const finalPath = opts.params\n ? path.replace(/\\{([^}]+)\\}/g, (_, key: string) => {\n const value = opts.params![key]\n return encodeURIComponent(value ?? `{${key}}`)\n })\n : path\n\n const url = new URL(this.baseUrl + finalPath)\n if (opts.query) {\n for (const [key, value] of Object.entries(opts.query)) {\n if (value !== undefined) url.searchParams.set(key, String(value))\n }\n }\n\n const headers = new Headers({ Authorization: this.authHeader })\n let body: string | FormData | undefined\n if (opts.body !== undefined) {\n const isForm = typeof FormData !== 'undefined' && opts.body instanceof FormData\n if (isForm) {\n // Pass FormData directly — the runtime sets the multipart boundary automatically.\n // Do NOT set content-type; setting it manually strips the boundary parameter.\n body = opts.body as FormData\n } else {\n headers.set('content-type', 'application/json')\n body = JSON.stringify(opts.body)\n }\n }\n\n let res: Response\n try {\n res = await this.fetchImpl(url, { method: method.toUpperCase(), headers, body })\n } catch (cause) {\n throw new JarsApiError({\n status: 0,\n message: cause instanceof Error ? cause.message : 'Network error',\n })\n }\n\n const text = await res.text()\n const parsed = text === '' ? undefined : safeJson(text)\n\n if (!res.ok) {\n const env = (parsed ?? {}) as ErrorEnvelope\n throw new JarsApiError({\n status: res.status,\n message: env.error,\n code: env.code,\n details: env.details,\n })\n }\n\n return parsed as T\n }\n}\n","export interface JarsApiErrorInit {\n status: number\n message?: string\n code?: string\n details?: unknown\n}\n\n/** Thrown for any non-2xx API response or a network/abort failure (status 0). */\nexport class JarsApiError extends Error {\n readonly status: number\n readonly code?: string\n readonly details?: unknown\n\n constructor(init: JarsApiErrorInit) {\n super(init.message ?? 'JARS API request failed')\n this.name = 'JarsApiError'\n this.status = init.status\n this.code = init.code\n this.details = init.details\n Object.setPrototypeOf(this, JarsApiError.prototype)\n }\n}\n","import type { RequestOptions } from '../client'\n\n/**\n * List query parameters: the documented common params (search/sort/limit)\n * plus arbitrary passthrough field filters supported by the API.\n */\nexport interface ListParams {\n search?: string\n sort?: string\n limit?: number\n [filter: string]: string | number | boolean | undefined\n}\n\nexport function toQuery(params?: ListParams): RequestOptions['query'] {\n return params as RequestOptions['query']\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport type { ListParams } from './shared'\n\nexport class PartnersResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/partners', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/partners/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/partners', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/partners/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/partners/{id}', { params: { id } })\n }\n\n /**\n * What merging `sourceId` into `id` would move and fill, without moving or\n * filling any of it. An integration that creates partners from another\n * system is the caller most likely to produce a duplicate pair, which is why\n * these two are wrapped rather than allowlisted.\n */\n mergePreview<T = unknown>(id: string, sourceId: string): Promise<T> {\n return this.client.request<T>('get', '/api/partners/{id}/merge-preview', {\n params: { id },\n query: { sourceId },\n })\n }\n\n /**\n * Re-points every document of `sourceId` onto `id`, fills the fields `id`\n * leaves empty, and DELETES `sourceId`. Refused (409) when the two carry\n * different registration codes — those are two legal entities, not a\n * duplicate.\n *\n * A 404 on a RETRY means the donor is already gone, which is what a merge\n * that succeeded looks like from a client whose response was lost: documents\n * move first and the donor is deleted last, so a second call finds no\n * references and a missing card. Treat it as done, not as failed.\n */\n merge<T = unknown>(id: string, sourceId: string): Promise<T> {\n return this.client.request<T>('post', '/api/partners/{id}/merge', {\n params: { id },\n body: { sourceId },\n })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class ProductsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/products', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/products/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/products', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/products/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/products/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class InvoicesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/invoices', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/invoices/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/invoices', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/invoices/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/invoices/{id}', { params: { id } })\n }\n\n post<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/post', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/unpost', { params: { id } })\n }\n\n cancel<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/cancel', { params: { id } })\n }\n\n setExternalStatus<T = unknown>(id: string, externalStatus: string | null): Promise<T> {\n return this.client.request<T>('patch', '/api/invoices/{id}/external-status', {\n params: { id },\n body: { externalStatus },\n })\n }\n\n postingPreview<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/invoices/{id}/posting-preview', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class JournalResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/journal', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/journal/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/journal', { body })\n }\n}\n","import type { JarsClient } from '../client'\n\nexport type ReportParams = Record<string, string | number | boolean | undefined>\n\nexport class ReportsResource {\n constructor(private readonly client: JarsClient) {}\n trialBalance<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/trial-balance', { query: params })\n }\n /**\n * Chronological postings for one account. `from` and `to` are required;\n * `account` is optional but omitting it asks for every account.\n *\n * Rejects with 400 `REPORT_TOO_BROAD` when the query would return more than\n * 10,000 lines — the result is never truncated, because the caller computes a\n * running balance across these lines. Narrow by account or by period.\n */\n generalLedger<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/general-ledger', { query: params })\n }\n accountAnalytics<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/account-analytics', { query: params })\n }\n /**\n * Settlement balances per partner.\n *\n * Returns `{ rows, totals, rowCount, unfilteredRowCount, truncated }`.\n * `totals` are computed over the full set — before the `nonZeroOnly` filter\n * and before the row cap — so they tie out whatever `rows` contains.\n *\n * `nonZeroOnly` defaults to true: rows whose closing balance is zero are\n * omitted. Pass `nonZeroOnly: false` for the complete list.\n */\n partnerBalance<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/partner-balance', { query: params })\n }\n /** Salary/advance balances per employee. `from` and `to` are required. */\n employeeBalance<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/employee-balance', { query: params })\n }\n /**\n * Cash book for one register: opening balance plus posted cash movements.\n *\n * Rejects with 400 `REPORT_TOO_BROAD` above 10,000 lines, for the same reason\n * as `generalLedger`.\n */\n cashBook<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/cash-book', { query: params })\n }\n /** Balance sheet + P&L. `year` is required; pass `to` for an interim period. */\n financialStatements<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/financial-statements', { query: params })\n }\n isafExport<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/isaf-export', { query: params })\n }\n /**\n * What the month's i.SAF file will contain, and which POSTED invoices reach\n * neither register — `SUPPLIER_NOT_VAT_REGISTERED` (expected: a Lithuanian\n * supplier with no PVM code writes no PVM invoice), `NO_PARTNER` or\n * `NO_VAT_SUMMARY` (both data defects).\n *\n * Same one-calendar-month period rule as `isafExport`.\n */\n isafExportPreview<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/isaf-export/preview', { query: params })\n }\n}\n","import { type ListParams, toQuery } from './shared'\nimport type { JarsClient } from '../client'\n\nexport class AuditLogsResource {\n constructor(private readonly client: JarsClient) {}\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/audit-logs', { query: toQuery(params) })\n }\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/audit-logs/{id}', { params: { id } })\n }\n}\n","import { type ListParams, toQuery } from './shared'\nimport type { JarsClient } from '../client'\n\n/**\n * Reference data (accounts, VAT codes, units, operation templates) is\n * read-mostly. For MVP the facade exposes LIST methods only; create/update/\n * delete remain available through the raw client.\n */\nexport class LookupsResource {\n constructor(private readonly client: JarsClient) {}\n\n accounts<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/accounts', { query: toQuery(params) })\n }\n\n vatCodes<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/vat-codes', { query: toQuery(params) })\n }\n\n units<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/units', { query: toQuery(params) })\n }\n\n templates<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/templates', { query: toQuery(params) })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class CashRegistersResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/cash-registers', { query: toQuery(params) })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/cash-registers', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/cash-registers/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/cash-registers/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class ProjectsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/projects', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/projects/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/projects', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/projects/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/projects/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class ProfessionsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/professions', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/professions/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/professions', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/professions/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/professions/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class PerDiemRatesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/perdiem-rates', { query: toQuery(params) })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/perdiem-rates', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/perdiem-rates/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/perdiem-rates/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class PriceListsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/price-lists', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/price-lists/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/price-lists', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/price-lists/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/price-lists/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class FixedAssetsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/fixed-assets', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/fixed-assets/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/fixed-assets', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/fixed-assets/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/fixed-assets/{id}', { params: { id } })\n }\n\n dispose<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/fixed-assets/{id}/dispose', { params: { id }, body })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class EmployeesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/employees', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/employees/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/employees', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/employees/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/employees/{id}', { params: { id } })\n }\n\n nextCode<T = unknown>(): Promise<T> {\n return this.client.request<T>('get', '/api/employees/next-code')\n }\n\n verifyPin<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/employees/verify-pin', { body })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class CashOrdersResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/cash-orders', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/cash-orders/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/cash-orders', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/cash-orders/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/cash-orders/{id}', { params: { id } })\n }\n\n setExternalStatus<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('patch', '/api/cash-orders/{id}/external-status', { params: { id }, body })\n }\n\n post<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/cash-orders/{id}/post', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/cash-orders/{id}/unpost', { params: { id } })\n }\n\n fiscalize<T = unknown>(id: string, body?: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/cash-orders/{id}/fiscalize', { params: { id }, body: body ?? {} })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class BankTransactionsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/bank-transactions', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/bank-transactions/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/bank-transactions', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/bank-transactions/{id}', { params: { id }, body })\n }\n\n /**\n * Link the transaction to invoices (payment matching). Separate from `update`\n * because it works at any status — `update` refuses a posted transaction,\n * while allocations must stay editable after posting (a prepayment is posted\n * before its invoice exists).\n */\n setAllocations<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/bank-transactions/{id}/allocations', { params: { id }, body })\n }\n\n setExternalStatus<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('patch', '/api/bank-transactions/{id}/external-status', { params: { id }, body })\n }\n\n post<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/bank-transactions/{id}/post', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/bank-transactions/{id}/unpost', { params: { id } })\n }\n\n /**\n * Replace a posted transaction's journal entry that no longer matches its\n * allocations (`postingStale`) — after `setAllocations` on a posted\n * transaction — with one built from them: a storno dated as the old entry,\n * then a post. Answers `reposted: false` and writes nothing when the entry\n * already matches, and refuses before the storno when the new entry cannot\n * be posted.\n */\n repost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/bank-transactions/{id}/repost', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class BusinessTripsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/business-trips', { query: toQuery(params) })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/business-trips', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/business-trips/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/business-trips/{id}', { params: { id } })\n }\n\n postAdvance<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/business-trips/{id}/post-advance', { params: { id } })\n }\n\n postSettlement<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/business-trips/{id}/post-settlement', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/business-trips/{id}/unpost', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class PayrollResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/payroll', { query: toQuery(params) })\n }\n\n preview<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/payroll/preview', { body })\n }\n\n post<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/payroll/post', { body })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/payroll/{id}/unpost', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class DepreciationResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/depreciation', { query: toQuery(params) })\n }\n\n preview<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/depreciation/preview', { body })\n }\n\n post<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/depreciation/post', { body })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/depreciation/{id}/unpost', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class NumberingsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/numberings', { query: toQuery(params) })\n }\n\n update<T = unknown>(prefix: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/numberings/{prefix}', { params: { prefix }, body })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport interface ExchangeRateOnDateParams {\n /** ISO 4217 code, e.g. `USD`. */\n currency: string\n /** `YYYY-MM-DD`. */\n date: string\n}\n\nexport class ExchangeRatesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/exchange-rates', { query: toQuery(params) })\n }\n\n /**\n * One currency's Bank of Lithuania rate for one day — the rate a\n * foreign-currency invoice import books. `rateDate` in the answer is the table\n * it was read from, an earlier day when `date` had none; `pending` is true\n * while `date`'s own table is still to come (it is loaded at 15:30 UTC on the\n * day), so the answer will change.\n */\n rate<T = unknown>(params: ExchangeRateOnDateParams): Promise<T> {\n return this.client.request<T>('get', '/api/exchange-rates/rate', {\n query: { currency: params.currency, date: params.date },\n })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class BankStatementsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/bank-statements', { query: toQuery(params) })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/bank-statements/{id}', { params: { id } })\n }\n\n detect<T = unknown>(file: Blob | File, filename?: string): Promise<T> {\n const fd = new FormData()\n fd.append('file', file, filename)\n return this.client.request<T>('post', '/api/bank-statements/detect', { body: fd })\n }\n\n import<T = unknown>(file: Blob | File, fields?: Record<string, string>, filename?: string): Promise<T> {\n const fd = new FormData()\n fd.append('file', file, filename)\n if (fields) {\n for (const [key, value] of Object.entries(fields)) {\n fd.append(key, value)\n }\n }\n return this.client.request<T>('post', '/api/bank-statements/import', { body: fd })\n }\n}\n","import type { JarsClient } from '../client'\n\n/**\n * Batch ingest for sales booked in an EXTERNAL system: a POS/ERP that issues\n * and fiscalises its own documents, and only needs JARS to book the result.\n * Mirrors `POST /api/sales/receipts` (`apps/api/src/routes/sales-receipts.ts`):\n * idempotent on `externalCode` (a repeat item comes back `duplicate`, HTTP\n * 200, never a 409) and partial-success (one malformed item never fails the\n * rest of the batch) — so the response is one result per item, positional\n * with the request order, never a single pass/fail for the whole call.\n */\nexport class SalesReceiptsResource {\n constructor(private readonly client: JarsClient) {}\n\n /**\n * Books a batch of external sales as CashOrder RECEIPT (DRAFT) documents.\n * Returns `{ results: [...] }`, one entry per item — `'created' | 'duplicate' | 'error'` —\n * positional with `items`.\n */\n ingest<T = unknown>(items: Record<string, unknown>[]): Promise<T> {\n return this.client.request<T>('post', '/api/sales/receipts', { body: { items } })\n }\n}\n"],"mappings":"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","names":[]}
|