@taxora/sdk 1.0.7 → 1.1.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/dist/index.d.ts CHANGED
@@ -73,6 +73,904 @@ declare class CompanyEndpoint {
73
73
  get(): Promise<CompanyResource>;
74
74
  }
75
75
 
76
+ declare const ComplianceEnrollmentStatus: {
77
+ readonly PENDING_DATA: "pending_data";
78
+ readonly ACCOUNT_CREATED: "account_created";
79
+ readonly REGIME_ACTIVATED: "regime_activated";
80
+ readonly READY: "ready";
81
+ readonly SUSPENDED: "suspended";
82
+ readonly ERROR_ACCOUNT: "error_account";
83
+ readonly ERROR_ACTIVATION: "error_activation";
84
+ readonly UNKNOWN: "unknown";
85
+ };
86
+ type ComplianceEnrollmentStatus = (typeof ComplianceEnrollmentStatus)[keyof typeof ComplianceEnrollmentStatus];
87
+ /** Tolerant coercion: unrecognized values become `unknown` instead of throwing. */
88
+ declare function toComplianceEnrollmentStatus(value: unknown): ComplianceEnrollmentStatus;
89
+ declare function describeComplianceEnrollmentStatus(status: ComplianceEnrollmentStatus): string;
90
+
91
+ /**
92
+ * A compliance enrollment — the merchant's provisioned e-reporting account for
93
+ * one reporting country/regime (GET/POST /compliance/enrollments).
94
+ */
95
+ declare class ComplianceEnrollment {
96
+ readonly id: number;
97
+ readonly companyId: number;
98
+ readonly country: string;
99
+ readonly regime: string;
100
+ readonly provider: string;
101
+ readonly status: ComplianceEnrollmentStatus;
102
+ readonly statusLabel: string;
103
+ readonly statusError: string | null;
104
+ readonly providerAccountId: string | null;
105
+ readonly taxId: string | null;
106
+ readonly companyRegisterId: string | null;
107
+ readonly companyRegisterScheme: string | null;
108
+ readonly regimeConfig: Record<string, unknown> | null;
109
+ /** First date transactions are reported for (YYYY-MM-DD). */
110
+ readonly reportingStartDate: string | null;
111
+ readonly notificationEmail: string | null;
112
+ readonly autoSend: boolean;
113
+ readonly createdAt: string | null;
114
+ readonly updatedAt: string | null;
115
+ constructor(id: number, companyId: number, country: string, regime: string, provider: string, status: ComplianceEnrollmentStatus, statusLabel: string, statusError: string | null, providerAccountId: string | null, taxId: string | null, companyRegisterId: string | null, companyRegisterScheme: string | null, regimeConfig: Record<string, unknown> | null,
116
+ /** First date transactions are reported for (YYYY-MM-DD). */
117
+ reportingStartDate: string | null, notificationEmail: string | null, autoSend: boolean, createdAt: string | null, updatedAt: string | null);
118
+ static fromArray(data: Record<string, unknown>): ComplianceEnrollment;
119
+ }
120
+
121
+ /**
122
+ * A paginated page of compliance enrollments (GET /compliance/enrollments).
123
+ */
124
+ declare class ComplianceEnrollmentPage implements Iterable<ComplianceEnrollment> {
125
+ readonly rows: ComplianceEnrollment[];
126
+ readonly currentPage: number;
127
+ readonly perPage: number;
128
+ readonly total: number;
129
+ readonly lastPage: number;
130
+ constructor(rows: ComplianceEnrollment[], currentPage: number, perPage: number, total: number, lastPage: number);
131
+ static fromResponse(payload: unknown): ComplianceEnrollmentPage;
132
+ [Symbol.iterator](): Iterator<ComplianceEnrollment>;
133
+ get length(): number;
134
+ }
135
+
136
+ declare const ComplianceTaxReportState: {
137
+ readonly NEW: "new";
138
+ readonly SENT: "sent";
139
+ readonly ACKNOWLEDGED: "acknowledged";
140
+ readonly REGISTERED: "registered";
141
+ readonly REFUSED: "refused";
142
+ readonly ERROR: "error";
143
+ readonly UNKNOWN: "unknown";
144
+ };
145
+ type ComplianceTaxReportState = (typeof ComplianceTaxReportState)[keyof typeof ComplianceTaxReportState];
146
+ /** Tolerant coercion: unrecognized values become `unknown` instead of throwing. */
147
+ declare function toComplianceTaxReportState(value: unknown): ComplianceTaxReportState;
148
+ declare function describeComplianceTaxReportState(state: ComplianceTaxReportState): string;
149
+
150
+ /**
151
+ * A DGFiP tax report tracking one transaction through the aggregated daily
152
+ * ledger lifecycle (GET /compliance/tax-reports).
153
+ */
154
+ declare class ComplianceTaxReport {
155
+ readonly id: number;
156
+ readonly companyId: number;
157
+ readonly complianceTransactionId: number | null;
158
+ readonly ledgerId: number | null;
159
+ readonly country: string;
160
+ readonly regime: string;
161
+ readonly state: ComplianceTaxReportState;
162
+ readonly stateLabel: string;
163
+ /** True once the report reached a final state (registered, refused or error). */
164
+ readonly isTerminal: boolean;
165
+ readonly providerTaxReportId: string | null;
166
+ readonly providerLedgerId: string | null;
167
+ readonly baseAmount: string;
168
+ readonly taxAmount: string;
169
+ readonly totalAmount: string;
170
+ readonly refusalReason: string | null;
171
+ readonly registeredAt: string | null;
172
+ readonly refusedAt: string | null;
173
+ readonly createdAt: string | null;
174
+ readonly updatedAt: string | null;
175
+ constructor(id: number, companyId: number, complianceTransactionId: number | null, ledgerId: number | null, country: string, regime: string, state: ComplianceTaxReportState, stateLabel: string,
176
+ /** True once the report reached a final state (registered, refused or error). */
177
+ isTerminal: boolean, providerTaxReportId: string | null, providerLedgerId: string | null, baseAmount: string, taxAmount: string, totalAmount: string, refusalReason: string | null, registeredAt: string | null, refusedAt: string | null, createdAt: string | null, updatedAt: string | null);
178
+ static fromArray(data: Record<string, unknown>): ComplianceTaxReport;
179
+ }
180
+
181
+ /**
182
+ * A paginated page of compliance tax reports (GET /compliance/tax-reports).
183
+ */
184
+ declare class ComplianceTaxReportPage implements Iterable<ComplianceTaxReport> {
185
+ readonly rows: ComplianceTaxReport[];
186
+ readonly currentPage: number;
187
+ readonly perPage: number;
188
+ readonly total: number;
189
+ readonly lastPage: number;
190
+ constructor(rows: ComplianceTaxReport[], currentPage: number, perPage: number, total: number, lastPage: number);
191
+ static fromResponse(payload: unknown): ComplianceTaxReportPage;
192
+ [Symbol.iterator](): Iterator<ComplianceTaxReport>;
193
+ get length(): number;
194
+ }
195
+
196
+ declare const ComplianceTransactionState: {
197
+ readonly PENDING: "pending";
198
+ readonly SENDING: "sending";
199
+ readonly SUBMITTED: "submitted";
200
+ readonly ERROR: "error";
201
+ readonly UNKNOWN: "unknown";
202
+ };
203
+ type ComplianceTransactionState = (typeof ComplianceTransactionState)[keyof typeof ComplianceTransactionState];
204
+ /** Tolerant coercion: unrecognized values become `unknown` instead of throwing. */
205
+ declare function toComplianceTransactionState(value: unknown): ComplianceTransactionState;
206
+ declare function describeComplianceTransactionState(state: ComplianceTransactionState): string;
207
+
208
+ declare const ComplianceTransactionType: {
209
+ readonly B2C_OUTBOUND: "b2c_outbound";
210
+ readonly B2B_DOMESTIC_OUTBOUND: "b2b_domestic_outbound";
211
+ readonly B2B_DOMESTIC_INBOUND: "b2b_domestic_inbound";
212
+ readonly CROSSBORDER_OUTBOUND: "crossborder_outbound";
213
+ readonly CROSSBORDER_INBOUND: "crossborder_inbound";
214
+ readonly UNKNOWN: "unknown";
215
+ };
216
+ type ComplianceTransactionType = (typeof ComplianceTransactionType)[keyof typeof ComplianceTransactionType];
217
+ /** Tolerant coercion: unrecognized values become `unknown` instead of throwing. */
218
+ declare function toComplianceTransactionType(value: unknown): ComplianceTransactionType;
219
+ declare function describeComplianceTransactionType(type: ComplianceTransactionType): string;
220
+
221
+ /**
222
+ * A recorded e-reporting transaction (GET/POST /compliance/transactions).
223
+ */
224
+ declare class ComplianceTransaction {
225
+ readonly id: number;
226
+ readonly companyId: number;
227
+ readonly complianceEnrollmentId: number;
228
+ readonly country: string;
229
+ readonly regime: string;
230
+ readonly transactionType: ComplianceTransactionType;
231
+ readonly transactionTypeLabel: string;
232
+ readonly state: ComplianceTransactionState;
233
+ readonly stateLabel: string;
234
+ readonly invoiceNumber: string;
235
+ /** Invoice date (YYYY-MM-DD). */
236
+ readonly invoiceDate: string | null;
237
+ readonly dueDate: string | null;
238
+ readonly currency: string;
239
+ readonly subtotal: string;
240
+ readonly taxAmount: string;
241
+ readonly total: string;
242
+ readonly counterpartyName: string | null;
243
+ readonly counterpartyCountry: string | null;
244
+ readonly counterpartyVatNumber: string | null;
245
+ readonly isPaid: boolean;
246
+ readonly paidAt: string | null;
247
+ readonly providerInvoiceId: string | null;
248
+ readonly submissionError: string | null;
249
+ readonly reportedAt: string | null;
250
+ /** Associated DGFiP tax report; undefined when the API did not include it. */
251
+ readonly taxReport: ComplianceTaxReport | undefined;
252
+ readonly createdAt: string | null;
253
+ readonly updatedAt: string | null;
254
+ constructor(id: number, companyId: number, complianceEnrollmentId: number, country: string, regime: string, transactionType: ComplianceTransactionType, transactionTypeLabel: string, state: ComplianceTransactionState, stateLabel: string, invoiceNumber: string,
255
+ /** Invoice date (YYYY-MM-DD). */
256
+ invoiceDate: string | null, dueDate: string | null, currency: string, subtotal: string, taxAmount: string, total: string, counterpartyName: string | null, counterpartyCountry: string | null, counterpartyVatNumber: string | null, isPaid: boolean, paidAt: string | null, providerInvoiceId: string | null, submissionError: string | null, reportedAt: string | null,
257
+ /** Associated DGFiP tax report; undefined when the API did not include it. */
258
+ taxReport: ComplianceTaxReport | undefined, createdAt: string | null, updatedAt: string | null);
259
+ static fromArray(data: Record<string, unknown>): ComplianceTransaction;
260
+ }
261
+
262
+ /**
263
+ * A paginated page of compliance transactions (GET /compliance/transactions).
264
+ */
265
+ declare class ComplianceTransactionPage implements Iterable<ComplianceTransaction> {
266
+ readonly rows: ComplianceTransaction[];
267
+ readonly currentPage: number;
268
+ readonly perPage: number;
269
+ readonly total: number;
270
+ readonly lastPage: number;
271
+ constructor(rows: ComplianceTransaction[], currentPage: number, perPage: number, total: number, lastPage: number);
272
+ static fromResponse(payload: unknown): ComplianceTransactionPage;
273
+ [Symbol.iterator](): Iterator<ComplianceTransaction>;
274
+ get length(): number;
275
+ }
276
+
277
+ /**
278
+ * Result of a CSV transaction import (POST /compliance/transactions/import).
279
+ */
280
+ declare class ImportResult {
281
+ /** Number of transactions created from the file. */
282
+ readonly created: number;
283
+ /** Rows skipped because a matching transaction already exists (idempotent re-upload). */
284
+ readonly skippedDuplicates: number;
285
+ /** Row-level errors, e.g. "Row 3 (INV-1): invalid transaction_type 'x'". */
286
+ readonly errors: string[];
287
+ constructor(
288
+ /** Number of transactions created from the file. */
289
+ created: number,
290
+ /** Rows skipped because a matching transaction already exists (idempotent re-upload). */
291
+ skippedDuplicates: number,
292
+ /** Row-level errors, e.g. "Row 3 (INV-1): invalid transaction_type 'x'". */
293
+ errors: string[]);
294
+ static fromArray(data: Record<string, unknown>): ImportResult;
295
+ }
296
+
297
+ /**
298
+ * DTOs for the e-reporting revenue statistics endpoint
299
+ * (GET /compliance/revenue-statistics).
300
+ *
301
+ * Monetary values are kept as the 4-decimal strings returned by the API (no
302
+ * Number conversion) to preserve precision. All headline figures are expressed
303
+ * in `primaryCurrency`; when `isMultiCurrency` is true, `byCurrency` lists every
304
+ * currency present in the range.
305
+ */
306
+ interface RevenueTotals {
307
+ count: number;
308
+ subtotal: string;
309
+ taxAmount: string;
310
+ total: string;
311
+ }
312
+ interface RevenueTimeBucket extends RevenueTotals {
313
+ /** Period key: "2026-01-15" (day), "2026-03" (ISO year-week) or "2026-01" (month). */
314
+ bucket: string;
315
+ }
316
+ interface RevenueTypeBreakdown {
317
+ type: string;
318
+ typeLabel: string;
319
+ count: number;
320
+ total: string;
321
+ }
322
+ interface RevenueCountryBreakdown {
323
+ /** Counterparty country code; "unknown" groups transactions with no partner country. */
324
+ country: string;
325
+ count: number;
326
+ total: string;
327
+ }
328
+ interface RevenueStateBreakdown {
329
+ state: string;
330
+ stateLabel: string;
331
+ count: number;
332
+ total: string;
333
+ }
334
+ interface RevenueCurrencyBreakdown extends RevenueTotals {
335
+ currency: string;
336
+ }
337
+ declare class RevenueStatistics {
338
+ readonly dateFrom: string | undefined;
339
+ readonly dateTo: string | undefined;
340
+ readonly interval: string | undefined;
341
+ readonly primaryCurrency: string;
342
+ readonly isMultiCurrency: boolean;
343
+ readonly totals: RevenueTotals;
344
+ readonly timeSeries: RevenueTimeBucket[];
345
+ readonly byType: RevenueTypeBreakdown[];
346
+ readonly byCountry: RevenueCountryBreakdown[];
347
+ readonly byState: RevenueStateBreakdown[];
348
+ readonly byCurrency: RevenueCurrencyBreakdown[];
349
+ constructor(dateFrom: string | undefined, dateTo: string | undefined, interval: string | undefined, primaryCurrency: string, isMultiCurrency: boolean, totals: RevenueTotals, timeSeries: RevenueTimeBucket[], byType: RevenueTypeBreakdown[], byCountry: RevenueCountryBreakdown[], byState: RevenueStateBreakdown[], byCurrency: RevenueCurrencyBreakdown[]);
350
+ static fromArray(data: Record<string, unknown>): RevenueStatistics;
351
+ }
352
+
353
+ /**
354
+ * Company data resolved from the French SIRENE registry
355
+ * (GET /compliance/sirene-lookup). Maps 1:1 onto the createEnrollment input.
356
+ */
357
+ declare class SireneLookupResult {
358
+ readonly companyName: string;
359
+ readonly siren: string;
360
+ readonly siret: string | null;
361
+ /** 2-digit NAF division, e.g. "47". */
362
+ readonly nafCode: string | null;
363
+ /** Full NAF/APE code, e.g. "47.11D". */
364
+ readonly nafFull: string | null;
365
+ /** Mapped enterprise size ("micro", "pme", "eti" or "ge"); null when unmappable. */
366
+ readonly enterpriseSize: string | null;
367
+ readonly address: string | null;
368
+ readonly city: string | null;
369
+ readonly postalcode: string | null;
370
+ constructor(companyName: string, siren: string, siret: string | null,
371
+ /** 2-digit NAF division, e.g. "47". */
372
+ nafCode: string | null,
373
+ /** Full NAF/APE code, e.g. "47.11D". */
374
+ nafFull: string | null,
375
+ /** Mapped enterprise size ("micro", "pme", "eti" or "ge"); null when unmappable. */
376
+ enterpriseSize: string | null, address: string | null, city: string | null, postalcode: string | null);
377
+ static fromArray(data: Record<string, unknown>): SireneLookupResult;
378
+ }
379
+
380
+ /**
381
+ * One VAT rate / DGFiP tax category offered for a reporting country.
382
+ */
383
+ interface VatRate {
384
+ /** VAT percentage, e.g. 20 or 5.5. */
385
+ percent: number;
386
+ /** DGFiP tax category code (S/AA/AAA/K/G/AE/E/Z). */
387
+ category: string;
388
+ /** i18n key for the rate label, e.g. "fr_standard". */
389
+ labelKey: string;
390
+ /** Default tax designation prefilled into invoice lines, e.g. "TVA". */
391
+ taxName: string;
392
+ /** True when a VATEX exemption code is mandatory in the line's `comment` (category E). */
393
+ requiresVatex: boolean;
394
+ }
395
+ /**
396
+ * The canonical VAT rates & DGFiP tax categories for a reporting country
397
+ * (GET /compliance/vat-rates).
398
+ */
399
+ declare class VatRates {
400
+ readonly country: string;
401
+ readonly currency: string;
402
+ readonly rates: VatRate[];
403
+ constructor(country: string, currency: string, rates: VatRate[]);
404
+ static fromArray(data: Record<string, unknown>): VatRates;
405
+ }
406
+
407
+ /** Time-series bucket size accepted by the revenue statistics endpoint. */
408
+ type EReportingInterval = 'day' | 'week' | 'month';
409
+ /** Enterprise size categories accepted by the DGFiP enrollment. */
410
+ type ComplianceEnterpriseSize = 'micro' | 'pme' | 'eti' | 'ge';
411
+ /** Type of operations the enrolled company performs. */
412
+ type ComplianceTypeOperation = 'services' | 'goods' | 'mixed';
413
+ /** Transaction types accepted on the request side (the tolerant `unknown` is response-only). */
414
+ type ComplianceTransactionRequestType = Exclude<ComplianceTransactionType, 'unknown'>;
415
+ /** Transaction states accepted as filters (the tolerant `unknown` is response-only). */
416
+ type ComplianceTransactionRequestState = Exclude<ComplianceTransactionState, 'unknown'>;
417
+ /** Tax report states accepted as filters (the tolerant `unknown` is response-only). */
418
+ type ComplianceTaxReportRequestState = Exclude<ComplianceTaxReportState, 'unknown'>;
419
+ interface RevenueStatisticsFilters {
420
+ dateFrom?: Date | string;
421
+ dateTo?: Date | string;
422
+ /** Time-series bucket size. Defaults to "month" server-side. */
423
+ interval?: EReportingInterval;
424
+ transactionType?: ComplianceTransactionRequestType;
425
+ state?: ComplianceTransactionRequestState;
426
+ }
427
+ interface CreateComplianceEnrollmentInput {
428
+ /** Reporting country (2-char ISO 3166-1 alpha-2). Defaults server-side (FR). */
429
+ country?: string;
430
+ /** Compliance regime, e.g. "dgfip_flux10". Defaults server-side. */
431
+ regime?: string;
432
+ /** 14-digit SIRET. Required unless `siren` is set. */
433
+ siret?: string;
434
+ /** 9-digit SIREN. Required unless `siret` is set. */
435
+ siren?: string;
436
+ vatNumber?: string;
437
+ companyName?: string;
438
+ address?: string;
439
+ city?: string;
440
+ postalcode?: string;
441
+ province?: string;
442
+ /** Notification email for the provider account. */
443
+ email: string;
444
+ /** 2-digit NAF division, e.g. "47". */
445
+ nafCode: string;
446
+ enterpriseSize: ComplianceEnterpriseSize;
447
+ typeOperation: ComplianceTypeOperation;
448
+ /** First date transactions are reported for (Date or strict YYYY-MM-DD). */
449
+ reportingStartDate: Date | string;
450
+ /** When false, only the provider account is created — the DGFiP regime is NOT activated. Defaults to true server-side. */
451
+ autoActivate?: boolean;
452
+ }
453
+ interface ComplianceInvoiceTaxInput {
454
+ /** Tax designation, e.g. "TVA". */
455
+ name: string;
456
+ /** VAT percentage, e.g. 20 or 5.5. */
457
+ percent: number;
458
+ /** DGFiP tax category code (S/AA/AAA/K/G/AE/E/Z) — see getVatRates(). */
459
+ category: string;
460
+ /** VATEX exemption code; required when `category` is "E". */
461
+ comment?: string;
462
+ }
463
+ interface ComplianceInvoiceLineInput {
464
+ description: string;
465
+ quantity: number;
466
+ price: number;
467
+ /** UN/ECE unit code, e.g. 9 (each). */
468
+ unit?: number;
469
+ /** At least one tax per line. */
470
+ taxes: ComplianceInvoiceTaxInput[];
471
+ }
472
+ interface CreateComplianceTransactionInput {
473
+ complianceEnrollmentId: number;
474
+ transactionType: ComplianceTransactionRequestType;
475
+ invoiceNumber: string;
476
+ /** Invoice date (Date or strict YYYY-MM-DD). */
477
+ invoiceDate: Date | string;
478
+ subtotal: number;
479
+ total: number;
480
+ /** At least one invoice line, each with at least one tax. */
481
+ invoiceLines: ComplianceInvoiceLineInput[];
482
+ dueDate?: Date | string;
483
+ /** 3-char ISO 4217 code. Defaults to EUR server-side. */
484
+ currency?: string;
485
+ taxAmount?: number;
486
+ counterpartyName?: string;
487
+ /** 2-char ISO 3166-1 alpha-2 code. */
488
+ counterpartyCountry?: string;
489
+ counterpartyVatNumber?: string;
490
+ providerContactId?: string;
491
+ /** Payment means code; required for cross-border outbound. */
492
+ paymentMethod?: number;
493
+ remittanceInformation?: string;
494
+ paymentMethodText?: string;
495
+ paymentTerms?: string;
496
+ /** When false, the transaction is only recorded — submission is deferred. Defaults to true server-side. */
497
+ submitNow?: boolean;
498
+ }
499
+ interface UpdateComplianceTransactionInput {
500
+ transactionType?: ComplianceTransactionRequestType;
501
+ invoiceNumber?: string;
502
+ invoiceDate?: Date | string;
503
+ dueDate?: Date | string;
504
+ /** 3-char ISO 4217 code. */
505
+ currency?: string;
506
+ subtotal?: number;
507
+ taxAmount?: number;
508
+ total?: number;
509
+ counterpartyName?: string;
510
+ /** 2-char ISO 3166-1 alpha-2 code. */
511
+ counterpartyCountry?: string;
512
+ counterpartyVatNumber?: string;
513
+ providerContactId?: string;
514
+ /** When set: at least one invoice line, each with at least one tax. */
515
+ invoiceLines?: ComplianceInvoiceLineInput[];
516
+ paymentMethod?: number;
517
+ remittanceInformation?: string;
518
+ paymentMethodText?: string;
519
+ paymentTerms?: string;
520
+ }
521
+ interface ComplianceTransactionFilters {
522
+ /** Inclusive lower bound on the invoice date (Date or strict YYYY-MM-DD). */
523
+ dateFrom?: Date | string;
524
+ /** Inclusive upper bound on the invoice date (Date or strict YYYY-MM-DD). */
525
+ dateTo?: Date | string;
526
+ state?: ComplianceTransactionRequestState;
527
+ transactionType?: ComplianceTransactionRequestType;
528
+ page?: number;
529
+ /** Page size (1-100, default 25 server-side). */
530
+ perPage?: number;
531
+ }
532
+ interface EReportingAccessRequestInput {
533
+ name?: string;
534
+ email?: string;
535
+ company?: string;
536
+ phone?: string;
537
+ message?: string;
538
+ /** Locale for the confirmation mail, e.g. "de" or "en". */
539
+ language?: string;
540
+ }
541
+ /**
542
+ * E-Reporting / Compliance (DGFiP Flux 10) endpoints.
543
+ *
544
+ * Typical flow: sireneLookup() to prefill company data, createEnrollment() to
545
+ * provision the provider account, then createTransaction() / importTransactions()
546
+ * to record invoices and listTaxReports() to track their DGFiP lifecycle.
547
+ *
548
+ * All routes except requestEReportingAccess() require an active E-Reporting
549
+ * subscription / feature grant on the account.
550
+ */
551
+ declare class EReportingEndpoint {
552
+ private readonly baseUrl;
553
+ private readonly apiKey;
554
+ private readonly tokenStorage;
555
+ private readonly httpClient;
556
+ constructor(baseUrl: string, apiKey: string, tokenStorage: TokenStorageInterface, httpClient: HttpClientInterface);
557
+ /**
558
+ * Create a compliance enrollment and provision the provider account. By
559
+ * default the DGFiP regime is activated right away; pass `autoActivate: false`
560
+ * to only create the account.
561
+ *
562
+ * On provider failure the API responds 502 (mapped to an HttpException) and
563
+ * the enrollment is persisted in `error_account`/`error_activation` state so
564
+ * provisioning can be retried.
565
+ */
566
+ createEnrollment(input: CreateComplianceEnrollmentInput): Promise<ComplianceEnrollment>;
567
+ /** Paginated list of the company's enrollments (newest first). `perPage` is capped at 100 server-side. */
568
+ listEnrollments(page?: number, perPage?: number): Promise<ComplianceEnrollmentPage>;
569
+ /** Get a single enrollment by id. */
570
+ getEnrollment(id: number): Promise<ComplianceEnrollment>;
571
+ /**
572
+ * Look up company data by SIRET, SIREN or French VAT number via the French
573
+ * SIRENE registry — ideal for prefilling createEnrollment().
574
+ *
575
+ * Rate-limited to 3 requests/minute per user (protects the external French
576
+ * government API); exceeding it yields a 429 (mapped to an HttpException).
577
+ */
578
+ sireneLookup(q: string): Promise<SireneLookupResult>;
579
+ /**
580
+ * Record and (by default) submit a Flux 10 transaction. Pass `submitNow: false`
581
+ * to only record it — submission can be triggered later via submitTransaction().
582
+ *
583
+ * Immediate per-invoice submission requires the e-invoicing feature on the
584
+ * account; in pure e-reporting mode the transaction is only recorded and
585
+ * reported via the aggregated daily ledgers.
586
+ *
587
+ * Creation is idempotent on the invoice's natural key (enrollment, type,
588
+ * invoice number, invoice date, counterparty VAT): a re-sent create returns
589
+ * the existing transaction with HTTP 200 instead of creating a duplicate.
590
+ *
591
+ * On provider failure the API responds 502 (mapped to an HttpException).
592
+ */
593
+ createTransaction(input: CreateComplianceTransactionInput): Promise<ComplianceTransaction>;
594
+ /** Paginated list of the company's transactions (newest invoice date first), filterable by date / state / type. */
595
+ listTransactions(filters?: ComplianceTransactionFilters): Promise<ComplianceTransactionPage>;
596
+ /** Get a single transaction by id (includes its tax report when one exists). */
597
+ getTransaction(id: number): Promise<ComplianceTransaction>;
598
+ /** Update a still-pending transaction. Only the provided fields are sent; already-submitted transactions are rejected with 422. */
599
+ updateTransaction(id: number, input: UpdateComplianceTransactionInput): Promise<ComplianceTransaction>;
600
+ /** Delete a still-pending transaction. Already-submitted transactions are rejected with 422. */
601
+ deleteTransaction(id: number): Promise<void>;
602
+ /**
603
+ * Submit (or retry) an existing `pending`/`error` transaction to the provider.
604
+ * Replays the invoice lines stored at creation, so they don't have to be re-sent.
605
+ *
606
+ * Requires the e-invoicing feature on the account — pure e-reporting customers
607
+ * get a 422 (transactions are reported via the aggregated daily ledgers instead).
608
+ *
609
+ * On provider failure the API responds 502 (mapped to an HttpException);
610
+ * already-submitted transactions are rejected with 422.
611
+ */
612
+ submitTransaction(id: number): Promise<ComplianceTransaction>;
613
+ /**
614
+ * Bulk-import transactions from a semicolon-separated CSV (one row per invoice
615
+ * line; rows sharing an invoice_number are grouped into one transaction).
616
+ * Required columns: invoice_number, invoice_date, transaction_type, subtotal,
617
+ * total, line_description, line_quantity, line_price, tax_name, tax_percent,
618
+ * tax_category.
619
+ *
620
+ * The import is idempotent: re-uploading the same file skips rows whose
621
+ * invoice already exists (reported via `skippedDuplicates`).
622
+ */
623
+ importTransactions(enrollmentId: number, csvContent: string, filename?: string): Promise<ImportResult>;
624
+ /**
625
+ * Aggregated turnover statistics for the authenticated company's e-reporting
626
+ * transactions. All arguments are optional — the API defaults to the last 12
627
+ * months and a monthly interval.
628
+ */
629
+ getRevenueStatistics(filters?: RevenueStatisticsFilters): Promise<RevenueStatistics>;
630
+ /**
631
+ * The canonical VAT rates & DGFiP tax categories for a reporting country
632
+ * (the seller's reporting-country rates, not the counterparty's). Falls back
633
+ * to the configured default country (FR) when none/unknown is given.
634
+ */
635
+ getVatRates(country?: string): Promise<VatRates>;
636
+ /** Paginated list of the company's tax reports (newest first), optionally filtered by state. */
637
+ listTaxReports(page?: number, perPage?: number, state?: ComplianceTaxReportRequestState): Promise<ComplianceTaxReportPage>;
638
+ /** Get a single tax report by id. */
639
+ getTaxReport(id: number): Promise<ComplianceTaxReport>;
640
+ /**
641
+ * Request activation of the E-Reporting feature for the account. This route
642
+ * is deliberately NOT gated by compliance access — it exists precisely for
643
+ * accounts that do not have the feature yet. The authenticated user's
644
+ * name/email take precedence over the form values server-side.
645
+ *
646
+ * Note: unlike the other compliance routes, validation failures here are
647
+ * returned as HTTP 400 (surfaced as HttpException), not 422.
648
+ */
649
+ requestEReportingAccess(input?: EReportingAccessRequestInput): Promise<void>;
650
+ private validateEnrollmentInput;
651
+ private validateId;
652
+ private validateTransactionType;
653
+ private validateInvoiceNumber;
654
+ private validateInvoiceLines;
655
+ private validateOptionalCodes;
656
+ private buildInvoiceLines;
657
+ /** Applies the optional scalar fields shared by create and update. */
658
+ private applyOptionalTransactionFields;
659
+ private buildHeaders;
660
+ private sendRequest;
661
+ /** Multipart upload: Content-Type is left to fetch so the boundary is set correctly. */
662
+ private sendMultipartRequest;
663
+ /** Accepts any 2xx response (e.g. 201 on create, 200 on idempotent replay). */
664
+ private parseJsonResponse;
665
+ /** For the 204 delete: keeps the shared 422/HTTP error mapping but never parses a body. */
666
+ private assertNoContentResponse;
667
+ /**
668
+ * The backend emits two 422 shapes: Laravel FormRequest failures as
669
+ * `{message, errors: {field: [...]}}` and state-guard errors via returnError()
670
+ * as `{error: "reason"}`. Preserve the reason in both cases.
671
+ */
672
+ private buildValidationException;
673
+ /**
674
+ * Date objects are serialized from their LOCAL date parts — construct them as
675
+ * `new Date('2026-09-01T00:00:00')` (local midnight); a bare `new Date('2026-09-01')`
676
+ * is UTC midnight and shifts a day back in UTC-negative timezones.
677
+ */
678
+ private formatDate;
679
+ }
680
+
681
+ declare const SmartEnrichmentStatus: {
682
+ readonly FOUND: "found";
683
+ readonly NO_VAT_EXISTS: "no_vat_exists";
684
+ readonly NOT_FOUND: "not_found";
685
+ readonly PROCESSING: "processing";
686
+ readonly QUEUED: "queued";
687
+ readonly COMPLETED: "completed";
688
+ readonly FAILED: "failed";
689
+ readonly UNKNOWN: "unknown";
690
+ };
691
+ type SmartEnrichmentStatus = (typeof SmartEnrichmentStatus)[keyof typeof SmartEnrichmentStatus];
692
+ /** Tolerant coercion: unrecognized values become `unknown` instead of throwing. */
693
+ declare function toSmartEnrichmentStatus(value: unknown): SmartEnrichmentStatus;
694
+ declare function describeSmartEnrichmentStatus(status: SmartEnrichmentStatus): string;
695
+
696
+ /**
697
+ * Result of resolving one reverse-VAT lookup (company name + address → VAT + confidence).
698
+ * Mirrors the API response item shape (camelCase keys).
699
+ */
700
+ declare class SmartEnrichmentResource {
701
+ readonly status: SmartEnrichmentStatus;
702
+ readonly vatNumber: string | undefined;
703
+ readonly vatType: string | undefined;
704
+ readonly confidence: number | undefined;
705
+ readonly matchedCompanyName: string | undefined;
706
+ /** Official/registered address of the matched company, when available. */
707
+ readonly matchedAddress: string | undefined;
708
+ readonly country: string | undefined;
709
+ readonly source: string | undefined;
710
+ constructor(status: SmartEnrichmentStatus, vatNumber: string | undefined, vatType: string | undefined, confidence: number | undefined, matchedCompanyName: string | undefined,
711
+ /** Official/registered address of the matched company, when available. */
712
+ matchedAddress: string | undefined, country: string | undefined, source: string | undefined);
713
+ static fromArray(data: Record<string, unknown>): SmartEnrichmentResource;
714
+ toArray(): Record<string, unknown>;
715
+ }
716
+
717
+ /**
718
+ * A Smart Enrichment job — single lookup or bulk batch. Unifies the API's sync and async
719
+ * responses: a confident single lookup comes back already resolved (one result, status
720
+ * `found`); everything else comes back `processing` with a `jobId` to poll.
721
+ */
722
+ declare class SmartEnrichmentJob {
723
+ readonly jobId: string;
724
+ readonly status: SmartEnrichmentStatus;
725
+ readonly itemCount: number | undefined;
726
+ readonly completedCount: number | undefined;
727
+ readonly foundCount: number | undefined;
728
+ readonly results: SmartEnrichmentResource[];
729
+ constructor(jobId: string, status: SmartEnrichmentStatus, itemCount: number | undefined, completedCount: number | undefined, foundCount: number | undefined, results: SmartEnrichmentResource[]);
730
+ static fromArray(data: Record<string, unknown>): SmartEnrichmentJob;
731
+ isProcessing(): boolean;
732
+ /** Convenience for single lookups: the first (or only) result, if any. */
733
+ result(): SmartEnrichmentResource | undefined;
734
+ private static looksLikeItem;
735
+ }
736
+
737
+ /**
738
+ * Full first input of a history row (incl. street + postalCode) — everything that was
739
+ * queried, so a detail view needs no second fetch. `query` stays the compact summary.
740
+ */
741
+ interface SmartEnrichmentHistoryInput {
742
+ companyName: string | undefined;
743
+ street: string | undefined;
744
+ postalCode: string | undefined;
745
+ city: string | undefined;
746
+ country: string | undefined;
747
+ }
748
+ /**
749
+ * One row of Smart Enrichment lookup history (compact summary; full detail via getJob).
750
+ */
751
+ declare class SmartEnrichmentHistoryRow {
752
+ readonly jobId: string;
753
+ readonly status: SmartEnrichmentStatus;
754
+ readonly isBulk: boolean;
755
+ readonly itemCount: number;
756
+ readonly foundCount: number;
757
+ readonly queryCompanyName: string | undefined;
758
+ readonly queryCountry: string | undefined;
759
+ readonly queryCity: string | undefined;
760
+ readonly input: SmartEnrichmentHistoryInput | undefined;
761
+ readonly result: SmartEnrichmentResource | undefined;
762
+ readonly createdAt: string | undefined;
763
+ readonly finishedAt: string | undefined;
764
+ constructor(jobId: string, status: SmartEnrichmentStatus, isBulk: boolean, itemCount: number, foundCount: number, queryCompanyName: string | undefined, queryCountry: string | undefined, queryCity: string | undefined, input: SmartEnrichmentHistoryInput | undefined, result: SmartEnrichmentResource | undefined, createdAt: string | undefined, finishedAt: string | undefined);
765
+ static fromArray(data: Record<string, unknown>): SmartEnrichmentHistoryRow;
766
+ }
767
+
768
+ /**
769
+ * Account-wide history tiles — stable regardless of the current search/page filter.
770
+ */
771
+ interface SmartEnrichmentHistoryStats {
772
+ total: number;
773
+ found: number;
774
+ }
775
+ /**
776
+ * A paginated page of Smart Enrichment lookup history.
777
+ */
778
+ declare class SmartEnrichmentHistoryPage implements Iterable<SmartEnrichmentHistoryRow> {
779
+ readonly rows: SmartEnrichmentHistoryRow[];
780
+ readonly currentPage: number;
781
+ readonly perPage: number;
782
+ readonly total: number;
783
+ readonly lastPage: number;
784
+ readonly stats?: SmartEnrichmentHistoryStats | undefined;
785
+ constructor(rows: SmartEnrichmentHistoryRow[], currentPage: number, perPage: number, total: number, lastPage: number, stats?: SmartEnrichmentHistoryStats | undefined);
786
+ static fromResponse(payload: unknown): SmartEnrichmentHistoryPage;
787
+ [Symbol.iterator](): Iterator<SmartEnrichmentHistoryRow>;
788
+ get length(): number;
789
+ }
790
+
791
+ /**
792
+ * DTOs for the Smart Enrichment statistics endpoint
793
+ * (GET /smart-enrichment/statistics).
794
+ *
795
+ * Read-only aggregation over the company's lookups: headline totals, a time
796
+ * series and breakdowns by source, outcome and confidence band. The API
797
+ * defaults to the last 12 months and a monthly interval.
798
+ */
799
+ /** Time-series bucket size accepted by the statistics endpoint. */
800
+ type SmartEnrichmentStatisticsInterval = 'day' | 'week' | 'month';
801
+ interface SmartEnrichmentStatisticsRange {
802
+ dateFrom: string;
803
+ dateTo: string;
804
+ interval: string;
805
+ }
806
+ interface SmartEnrichmentStatisticsTotals {
807
+ jobs: number;
808
+ items: number;
809
+ found: number;
810
+ /** Share of items that resolved to a VAT number, 0–100. */
811
+ foundRate: number;
812
+ /** Average confidence of found items, 0–100. */
813
+ avgConfidence: number;
814
+ }
815
+ interface SmartEnrichmentTimeBucket {
816
+ /** Period key: "2026-01-15" (day), "2026-03" (ISO year-week) or "2026-01" (month). */
817
+ bucket: string;
818
+ jobs: number;
819
+ items: number;
820
+ found: number;
821
+ }
822
+ interface SmartEnrichmentSourceBreakdown {
823
+ source: string;
824
+ jobs: number;
825
+ found: number;
826
+ }
827
+ interface SmartEnrichmentOutcomeBreakdown {
828
+ outcome: string;
829
+ count: number;
830
+ }
831
+ interface SmartEnrichmentConfidenceBucket {
832
+ /** Confidence band: "high", "medium" or "low". */
833
+ bucket: string;
834
+ count: number;
835
+ }
836
+ declare class SmartEnrichmentStatistics {
837
+ readonly range: SmartEnrichmentStatisticsRange;
838
+ readonly totals: SmartEnrichmentStatisticsTotals;
839
+ readonly timeSeries: SmartEnrichmentTimeBucket[];
840
+ readonly bySource: SmartEnrichmentSourceBreakdown[];
841
+ readonly byOutcome: SmartEnrichmentOutcomeBreakdown[];
842
+ readonly confidenceBuckets: SmartEnrichmentConfidenceBucket[];
843
+ constructor(range: SmartEnrichmentStatisticsRange, totals: SmartEnrichmentStatisticsTotals, timeSeries: SmartEnrichmentTimeBucket[], bySource: SmartEnrichmentSourceBreakdown[], byOutcome: SmartEnrichmentOutcomeBreakdown[], confidenceBuckets: SmartEnrichmentConfidenceBucket[]);
844
+ static fromArray(data: Record<string, unknown>): SmartEnrichmentStatistics;
845
+ }
846
+
847
+ interface SmartEnrichmentInput {
848
+ companyName: string;
849
+ country: string;
850
+ street?: string;
851
+ postalCode?: string;
852
+ city?: string;
853
+ }
854
+ /** One recent monthly billing entry, exposed on the usage response for transparency. */
855
+ interface SmartEnrichmentUsageHistoryEntry {
856
+ /** Billing period, e.g. "2026-05". */
857
+ period: string;
858
+ matches: number;
859
+ /** Amount due for the period as a decimal string, e.g. "9.60". */
860
+ amount: string;
861
+ state: 'billed' | 'pending';
862
+ billingType: string | null;
863
+ manualReference: string | null;
864
+ }
865
+ interface SmartEnrichmentUsage {
866
+ period: string;
867
+ used: number;
868
+ included: number;
869
+ remaining: number;
870
+ overageCount: number;
871
+ overagePrice: number;
872
+ overageAmount: number;
873
+ hardCap: number | null;
874
+ /** Recent monthly billing entries; empty when the API sends none. */
875
+ history: SmartEnrichmentUsageHistoryEntry[];
876
+ }
877
+ interface SmartEnrichmentExportOptions {
878
+ /** Inclusive lower bound on the job's creation date (YYYY-MM-DD). */
879
+ dateFrom?: string;
880
+ /** Inclusive upper bound on the job's creation date (YYYY-MM-DD). */
881
+ dateTo?: string;
882
+ /** Only include rows with at least this result confidence (0–100). */
883
+ minConfidence?: number;
884
+ /** Only include rows with one of these item statuses (found, no_vat_exists, not_found). */
885
+ status?: SmartEnrichmentStatus[];
886
+ /** Only include rows that resolved to a VAT number. */
887
+ onlyFound?: boolean;
888
+ }
889
+ interface SmartEnrichmentStatisticsOptions {
890
+ /** Inclusive lower bound (YYYY-MM-DD). Defaults to 12 months ago (server-side). */
891
+ dateFrom?: string;
892
+ /** Inclusive upper bound (YYYY-MM-DD). Defaults to today (server-side). */
893
+ dateTo?: string;
894
+ /** Time-series bucket size. Defaults to "month" server-side. */
895
+ interval?: SmartEnrichmentStatisticsInterval;
896
+ }
897
+ interface SmartEnrichmentWaitOptions {
898
+ /** Delay between polls in milliseconds. Defaults to 2000. */
899
+ pollIntervalMs?: number;
900
+ /** Maximum total time to wait in milliseconds. Defaults to 120000. */
901
+ timeoutMs?: number;
902
+ }
903
+ /**
904
+ * Smart Enrichment — reverse VAT lookup (company name + address + country → VAT + confidence).
905
+ *
906
+ * let job = await client.smartEnrichment.lookup({ companyName: 'Example GmbH', country: 'AT' });
907
+ * if (job.isProcessing()) job = await client.smartEnrichment.waitForCompletion(job.jobId);
908
+ * console.log(job.result()?.vatNumber);
909
+ */
910
+ declare class SmartEnrichmentEndpoint {
911
+ private readonly baseUrl;
912
+ private readonly apiKey;
913
+ private readonly tokenStorage;
914
+ private readonly httpClient;
915
+ constructor(baseUrl: string, apiKey: string, tokenStorage: TokenStorageInterface, httpClient: HttpClientInterface);
916
+ /**
917
+ * Single reverse lookup. Returns a confident result synchronously, or a `processing`
918
+ * job (poll with get(job.jobId) or waitForCompletion(job.jobId)) when deeper resolution
919
+ * is needed.
920
+ */
921
+ lookup(input: SmartEnrichmentInput): Promise<SmartEnrichmentJob>;
922
+ /**
923
+ * Bulk batch — always async. Returns a `processing` job; results arrive via the
924
+ * `enrichment.completed` webhook and are retrievable via get(job.jobId).
925
+ */
926
+ bulkLookup(items: SmartEnrichmentInput[]): Promise<SmartEnrichmentJob>;
927
+ /** Poll a job (single or bulk) by its id. */
928
+ get(jobId: string): Promise<SmartEnrichmentJob>;
929
+ /**
930
+ * Poll get(jobId) until the job is no longer processing (completed, failed or resolved).
931
+ * Throws a TaxoraException when the job does not finish within `timeoutMs`.
932
+ */
933
+ waitForCompletion(jobId: string, options?: SmartEnrichmentWaitOptions): Promise<SmartEnrichmentJob>;
934
+ /**
935
+ * Paginated lookup history (newest first). `perPage` is capped at 100 server-side.
936
+ * `search` filters (free-text) over the queried company name and the resolved
937
+ * VAT number / matched company name.
938
+ */
939
+ history(page?: number, perPage?: number, search?: string): Promise<SmartEnrichmentHistoryPage>;
940
+ /** Current billing-period quota usage, plus recent monthly billing entries. */
941
+ usage(): Promise<SmartEnrichmentUsage>;
942
+ /**
943
+ * Export the company's lookups as CSV (bulk-input shape plus the resolved VAT columns;
944
+ * bulk jobs are flattened to one line per input row). Returns the raw CSV text
945
+ * (UTF-8, BOM included by the API so Excel opens umlauts correctly).
946
+ */
947
+ export(options?: SmartEnrichmentExportOptions): Promise<string>;
948
+ /**
949
+ * Aggregated lookup statistics: headline totals, a time series and breakdowns by
950
+ * source, outcome and confidence band. The API defaults to the last 12 months
951
+ * and a monthly interval.
952
+ */
953
+ statistics(options?: SmartEnrichmentStatisticsOptions): Promise<SmartEnrichmentStatistics>;
954
+ private validateInput;
955
+ private validateJobId;
956
+ private buildHeaders;
957
+ private sendRequest;
958
+ private parseJsonResponse;
959
+ /**
960
+ * Like parseJsonResponse but returns the whole object WITHOUT unwrapping `data` — used for
961
+ * the paginated history response (where `data` is the row array and `meta`/`stats` must be
962
+ * preserved) and the statistics response.
963
+ */
964
+ private parseRawJson;
965
+ /**
966
+ * For the CSV export: keeps the shared 422/HTTP error mapping but returns the body
967
+ * verbatim (text/csv) instead of parsing JSON.
968
+ */
969
+ private parseCsvResponse;
970
+ private parseValidationErrors;
971
+ private parseUsageHistory;
972
+ }
973
+
76
974
  declare const VatState: {
77
975
  readonly VALID: "valid";
78
976
  readonly INVALID: "invalid";
@@ -278,6 +1176,8 @@ declare class TaxoraClient {
278
1176
  readonly auth: AuthEndpoint;
279
1177
  readonly vat: VatEndpoint;
280
1178
  readonly company: CompanyEndpoint;
1179
+ readonly smartEnrichment: SmartEnrichmentEndpoint;
1180
+ readonly eReporting: EReportingEndpoint;
281
1181
  readonly baseUrl: string;
282
1182
  constructor(options: TaxoraClientOptions);
283
1183
  }
@@ -342,4 +1242,4 @@ declare class AuthRetryHttpClient implements HttpClientInterface {
342
1242
  private injectAuthHeader;
343
1243
  }
344
1244
 
345
- export { ApiVersion, AuthEndpoint, AuthRetryHttpClient, AuthenticationException, CompanyAddress, CompanyEndpoint, type CompanyResource, Environment, Environment as EnvironmentType, FetchHttpClient, type HttpClientInterface, HttpException, InMemoryTokenStorage, Language, LoginIdentifier, ProviderDocument, ProviderDocumentLine, ScoreBreakdown, TaxoraClient, TaxoraClientFactory, type TaxoraClientOptions, TaxoraException, Token, type TokenStorageInterface, ValidationException, VatCertificateExport, VatCollection, VatEndpoint, VatResource, VatState, VatValidationAddressInput, describeVatState, getBaseUrl, getFailedVatStates };
1245
+ export { ApiVersion, AuthEndpoint, AuthRetryHttpClient, AuthenticationException, CompanyAddress, CompanyEndpoint, type CompanyResource, ComplianceEnrollment, ComplianceEnrollmentPage, ComplianceEnrollmentStatus, type ComplianceEnterpriseSize, type ComplianceInvoiceLineInput, type ComplianceInvoiceTaxInput, ComplianceTaxReport, ComplianceTaxReportPage, type ComplianceTaxReportRequestState, ComplianceTaxReportState, ComplianceTransaction, type ComplianceTransactionFilters, ComplianceTransactionPage, type ComplianceTransactionRequestState, type ComplianceTransactionRequestType, ComplianceTransactionState, ComplianceTransactionType, type ComplianceTypeOperation, type CreateComplianceEnrollmentInput, type CreateComplianceTransactionInput, type EReportingAccessRequestInput, EReportingEndpoint, type EReportingInterval, Environment, Environment as EnvironmentType, FetchHttpClient, type HttpClientInterface, HttpException, ImportResult, InMemoryTokenStorage, Language, LoginIdentifier, ProviderDocument, ProviderDocumentLine, type RevenueCountryBreakdown, type RevenueCurrencyBreakdown, type RevenueStateBreakdown, RevenueStatistics, type RevenueStatisticsFilters, type RevenueTimeBucket, type RevenueTotals, type RevenueTypeBreakdown, ScoreBreakdown, SireneLookupResult, type SmartEnrichmentConfidenceBucket, SmartEnrichmentEndpoint, type SmartEnrichmentExportOptions, type SmartEnrichmentHistoryInput, SmartEnrichmentHistoryPage, SmartEnrichmentHistoryRow, type SmartEnrichmentHistoryStats, type SmartEnrichmentInput, SmartEnrichmentJob, type SmartEnrichmentOutcomeBreakdown, SmartEnrichmentResource, type SmartEnrichmentSourceBreakdown, SmartEnrichmentStatistics, type SmartEnrichmentStatisticsInterval, type SmartEnrichmentStatisticsOptions, type SmartEnrichmentStatisticsRange, type SmartEnrichmentStatisticsTotals, SmartEnrichmentStatus, type SmartEnrichmentTimeBucket, type SmartEnrichmentUsage, type SmartEnrichmentUsageHistoryEntry, type SmartEnrichmentWaitOptions, TaxoraClient, TaxoraClientFactory, type TaxoraClientOptions, TaxoraException, Token, type TokenStorageInterface, type UpdateComplianceTransactionInput, ValidationException, VatCertificateExport, VatCollection, VatEndpoint, type VatRate, VatRates, VatResource, VatState, VatValidationAddressInput, describeComplianceEnrollmentStatus, describeComplianceTaxReportState, describeComplianceTransactionState, describeComplianceTransactionType, describeSmartEnrichmentStatus, describeVatState, getBaseUrl, getFailedVatStates, toComplianceEnrollmentStatus, toComplianceTaxReportState, toComplianceTransactionState, toComplianceTransactionType, toSmartEnrichmentStatus };