@emisso/sii-api 0.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.
@@ -0,0 +1,1224 @@
1
+ import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
2
+ import { PgDatabase } from 'drizzle-orm/pg-core';
3
+ import * as effect_Cause from 'effect/Cause';
4
+ import * as effect_Types from 'effect/Types';
5
+ import { Effect } from 'effect';
6
+ import { Invoice, IssueType, SiiEnv, DteType, PortalLoginOptions, SiiToken, PortalSession } from '@emisso/sii';
7
+ import { z } from 'zod';
8
+
9
+ declare const credentials: drizzle_orm_pg_core.PgTableWithColumns<{
10
+ name: "credentials";
11
+ schema: "sii";
12
+ columns: {
13
+ id: drizzle_orm_pg_core.PgColumn<{
14
+ name: "id";
15
+ tableName: "credentials";
16
+ dataType: "string";
17
+ columnType: "PgUUID";
18
+ data: string;
19
+ driverParam: string;
20
+ notNull: true;
21
+ hasDefault: true;
22
+ isPrimaryKey: true;
23
+ isAutoincrement: false;
24
+ hasRuntimeDefault: false;
25
+ enumValues: undefined;
26
+ baseColumn: never;
27
+ identity: undefined;
28
+ generated: undefined;
29
+ }, {}, {}>;
30
+ tenantId: drizzle_orm_pg_core.PgColumn<{
31
+ name: "tenant_id";
32
+ tableName: "credentials";
33
+ dataType: "string";
34
+ columnType: "PgUUID";
35
+ data: string;
36
+ driverParam: string;
37
+ notNull: true;
38
+ hasDefault: false;
39
+ isPrimaryKey: false;
40
+ isAutoincrement: false;
41
+ hasRuntimeDefault: false;
42
+ enumValues: undefined;
43
+ baseColumn: never;
44
+ identity: undefined;
45
+ generated: undefined;
46
+ }, {}, {}>;
47
+ env: drizzle_orm_pg_core.PgColumn<{
48
+ name: "env";
49
+ tableName: "credentials";
50
+ dataType: "string";
51
+ columnType: "PgText";
52
+ data: "certification" | "production";
53
+ driverParam: string;
54
+ notNull: true;
55
+ hasDefault: false;
56
+ isPrimaryKey: false;
57
+ isAutoincrement: false;
58
+ hasRuntimeDefault: false;
59
+ enumValues: [string, ...string[]];
60
+ baseColumn: never;
61
+ identity: undefined;
62
+ generated: undefined;
63
+ }, {}, {
64
+ $type: "certification" | "production";
65
+ }>;
66
+ certBase64: drizzle_orm_pg_core.PgColumn<{
67
+ name: "cert_base64";
68
+ tableName: "credentials";
69
+ dataType: "string";
70
+ columnType: "PgText";
71
+ data: string;
72
+ driverParam: string;
73
+ notNull: false;
74
+ hasDefault: false;
75
+ isPrimaryKey: false;
76
+ isAutoincrement: false;
77
+ hasRuntimeDefault: false;
78
+ enumValues: [string, ...string[]];
79
+ baseColumn: never;
80
+ identity: undefined;
81
+ generated: undefined;
82
+ }, {}, {}>;
83
+ certPassword: drizzle_orm_pg_core.PgColumn<{
84
+ name: "cert_password";
85
+ tableName: "credentials";
86
+ dataType: "string";
87
+ columnType: "PgText";
88
+ data: string;
89
+ driverParam: string;
90
+ notNull: false;
91
+ hasDefault: false;
92
+ isPrimaryKey: false;
93
+ isAutoincrement: false;
94
+ hasRuntimeDefault: false;
95
+ enumValues: [string, ...string[]];
96
+ baseColumn: never;
97
+ identity: undefined;
98
+ generated: undefined;
99
+ }, {}, {}>;
100
+ portalRut: drizzle_orm_pg_core.PgColumn<{
101
+ name: "portal_rut";
102
+ tableName: "credentials";
103
+ dataType: "string";
104
+ columnType: "PgText";
105
+ data: string;
106
+ driverParam: string;
107
+ notNull: false;
108
+ hasDefault: false;
109
+ isPrimaryKey: false;
110
+ isAutoincrement: false;
111
+ hasRuntimeDefault: false;
112
+ enumValues: [string, ...string[]];
113
+ baseColumn: never;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }, {}, {}>;
117
+ portalPassword: drizzle_orm_pg_core.PgColumn<{
118
+ name: "portal_password";
119
+ tableName: "credentials";
120
+ dataType: "string";
121
+ columnType: "PgText";
122
+ data: string;
123
+ driverParam: string;
124
+ notNull: false;
125
+ hasDefault: false;
126
+ isPrimaryKey: false;
127
+ isAutoincrement: false;
128
+ hasRuntimeDefault: false;
129
+ enumValues: [string, ...string[]];
130
+ baseColumn: never;
131
+ identity: undefined;
132
+ generated: undefined;
133
+ }, {}, {}>;
134
+ createdAt: drizzle_orm_pg_core.PgColumn<{
135
+ name: "created_at";
136
+ tableName: "credentials";
137
+ dataType: "date";
138
+ columnType: "PgTimestamp";
139
+ data: Date;
140
+ driverParam: string;
141
+ notNull: true;
142
+ hasDefault: true;
143
+ isPrimaryKey: false;
144
+ isAutoincrement: false;
145
+ hasRuntimeDefault: false;
146
+ enumValues: undefined;
147
+ baseColumn: never;
148
+ identity: undefined;
149
+ generated: undefined;
150
+ }, {}, {}>;
151
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
152
+ name: "updated_at";
153
+ tableName: "credentials";
154
+ dataType: "date";
155
+ columnType: "PgTimestamp";
156
+ data: Date;
157
+ driverParam: string;
158
+ notNull: true;
159
+ hasDefault: true;
160
+ isPrimaryKey: false;
161
+ isAutoincrement: false;
162
+ hasRuntimeDefault: false;
163
+ enumValues: undefined;
164
+ baseColumn: never;
165
+ identity: undefined;
166
+ generated: undefined;
167
+ }, {}, {}>;
168
+ };
169
+ dialect: "pg";
170
+ }>;
171
+ type Credential = typeof credentials.$inferSelect;
172
+ type NewCredential = typeof credentials.$inferInsert;
173
+
174
+ declare const tokenCache: drizzle_orm_pg_core.PgTableWithColumns<{
175
+ name: "token_cache";
176
+ schema: "sii";
177
+ columns: {
178
+ id: drizzle_orm_pg_core.PgColumn<{
179
+ name: "id";
180
+ tableName: "token_cache";
181
+ dataType: "string";
182
+ columnType: "PgUUID";
183
+ data: string;
184
+ driverParam: string;
185
+ notNull: true;
186
+ hasDefault: true;
187
+ isPrimaryKey: true;
188
+ isAutoincrement: false;
189
+ hasRuntimeDefault: false;
190
+ enumValues: undefined;
191
+ baseColumn: never;
192
+ identity: undefined;
193
+ generated: undefined;
194
+ }, {}, {}>;
195
+ credentialId: drizzle_orm_pg_core.PgColumn<{
196
+ name: "credential_id";
197
+ tableName: "token_cache";
198
+ dataType: "string";
199
+ columnType: "PgUUID";
200
+ data: string;
201
+ driverParam: string;
202
+ notNull: true;
203
+ hasDefault: false;
204
+ isPrimaryKey: false;
205
+ isAutoincrement: false;
206
+ hasRuntimeDefault: false;
207
+ enumValues: undefined;
208
+ baseColumn: never;
209
+ identity: undefined;
210
+ generated: undefined;
211
+ }, {}, {}>;
212
+ tokenType: drizzle_orm_pg_core.PgColumn<{
213
+ name: "token_type";
214
+ tableName: "token_cache";
215
+ dataType: "string";
216
+ columnType: "PgText";
217
+ data: "soap" | "portal";
218
+ driverParam: string;
219
+ notNull: true;
220
+ hasDefault: false;
221
+ isPrimaryKey: false;
222
+ isAutoincrement: false;
223
+ hasRuntimeDefault: false;
224
+ enumValues: [string, ...string[]];
225
+ baseColumn: never;
226
+ identity: undefined;
227
+ generated: undefined;
228
+ }, {}, {
229
+ $type: "soap" | "portal";
230
+ }>;
231
+ tokenValue: drizzle_orm_pg_core.PgColumn<{
232
+ name: "token_value";
233
+ tableName: "token_cache";
234
+ dataType: "string";
235
+ columnType: "PgText";
236
+ data: string;
237
+ driverParam: string;
238
+ notNull: true;
239
+ hasDefault: false;
240
+ isPrimaryKey: false;
241
+ isAutoincrement: false;
242
+ hasRuntimeDefault: false;
243
+ enumValues: [string, ...string[]];
244
+ baseColumn: never;
245
+ identity: undefined;
246
+ generated: undefined;
247
+ }, {}, {}>;
248
+ expiresAt: drizzle_orm_pg_core.PgColumn<{
249
+ name: "expires_at";
250
+ tableName: "token_cache";
251
+ dataType: "date";
252
+ columnType: "PgTimestamp";
253
+ data: Date;
254
+ driverParam: string;
255
+ notNull: true;
256
+ hasDefault: false;
257
+ isPrimaryKey: false;
258
+ isAutoincrement: false;
259
+ hasRuntimeDefault: false;
260
+ enumValues: undefined;
261
+ baseColumn: never;
262
+ identity: undefined;
263
+ generated: undefined;
264
+ }, {}, {}>;
265
+ createdAt: drizzle_orm_pg_core.PgColumn<{
266
+ name: "created_at";
267
+ tableName: "token_cache";
268
+ dataType: "date";
269
+ columnType: "PgTimestamp";
270
+ data: Date;
271
+ driverParam: string;
272
+ notNull: true;
273
+ hasDefault: true;
274
+ isPrimaryKey: false;
275
+ isAutoincrement: false;
276
+ hasRuntimeDefault: false;
277
+ enumValues: undefined;
278
+ baseColumn: never;
279
+ identity: undefined;
280
+ generated: undefined;
281
+ }, {}, {}>;
282
+ };
283
+ dialect: "pg";
284
+ }>;
285
+ type TokenCacheEntry = typeof tokenCache.$inferSelect;
286
+ type NewTokenCacheEntry = typeof tokenCache.$inferInsert;
287
+
288
+ declare const invoices: drizzle_orm_pg_core.PgTableWithColumns<{
289
+ name: "invoices";
290
+ schema: "sii";
291
+ columns: {
292
+ id: drizzle_orm_pg_core.PgColumn<{
293
+ name: "id";
294
+ tableName: "invoices";
295
+ dataType: "string";
296
+ columnType: "PgUUID";
297
+ data: string;
298
+ driverParam: string;
299
+ notNull: true;
300
+ hasDefault: true;
301
+ isPrimaryKey: true;
302
+ isAutoincrement: false;
303
+ hasRuntimeDefault: false;
304
+ enumValues: undefined;
305
+ baseColumn: never;
306
+ identity: undefined;
307
+ generated: undefined;
308
+ }, {}, {}>;
309
+ tenantId: drizzle_orm_pg_core.PgColumn<{
310
+ name: "tenant_id";
311
+ tableName: "invoices";
312
+ dataType: "string";
313
+ columnType: "PgUUID";
314
+ data: string;
315
+ driverParam: string;
316
+ notNull: true;
317
+ hasDefault: false;
318
+ isPrimaryKey: false;
319
+ isAutoincrement: false;
320
+ hasRuntimeDefault: false;
321
+ enumValues: undefined;
322
+ baseColumn: never;
323
+ identity: undefined;
324
+ generated: undefined;
325
+ }, {}, {}>;
326
+ documentType: drizzle_orm_pg_core.PgColumn<{
327
+ name: "document_type";
328
+ tableName: "invoices";
329
+ dataType: "string";
330
+ columnType: "PgText";
331
+ data: "33" | "34" | "39" | "41" | "43" | "46" | "52" | "56" | "61" | "110" | "112";
332
+ driverParam: string;
333
+ notNull: true;
334
+ hasDefault: false;
335
+ isPrimaryKey: false;
336
+ isAutoincrement: false;
337
+ hasRuntimeDefault: false;
338
+ enumValues: [string, ...string[]];
339
+ baseColumn: never;
340
+ identity: undefined;
341
+ generated: undefined;
342
+ }, {}, {
343
+ $type: "33" | "34" | "39" | "41" | "43" | "46" | "52" | "56" | "61" | "110" | "112";
344
+ }>;
345
+ number: drizzle_orm_pg_core.PgColumn<{
346
+ name: "number";
347
+ tableName: "invoices";
348
+ dataType: "number";
349
+ columnType: "PgInteger";
350
+ data: number;
351
+ driverParam: string | number;
352
+ notNull: true;
353
+ hasDefault: false;
354
+ isPrimaryKey: false;
355
+ isAutoincrement: false;
356
+ hasRuntimeDefault: false;
357
+ enumValues: undefined;
358
+ baseColumn: never;
359
+ identity: undefined;
360
+ generated: undefined;
361
+ }, {}, {}>;
362
+ issuerRut: drizzle_orm_pg_core.PgColumn<{
363
+ name: "issuer_rut";
364
+ tableName: "invoices";
365
+ dataType: "string";
366
+ columnType: "PgText";
367
+ data: string;
368
+ driverParam: string;
369
+ notNull: false;
370
+ hasDefault: false;
371
+ isPrimaryKey: false;
372
+ isAutoincrement: false;
373
+ hasRuntimeDefault: false;
374
+ enumValues: [string, ...string[]];
375
+ baseColumn: never;
376
+ identity: undefined;
377
+ generated: undefined;
378
+ }, {}, {}>;
379
+ issuerName: drizzle_orm_pg_core.PgColumn<{
380
+ name: "issuer_name";
381
+ tableName: "invoices";
382
+ dataType: "string";
383
+ columnType: "PgText";
384
+ data: string;
385
+ driverParam: string;
386
+ notNull: false;
387
+ hasDefault: false;
388
+ isPrimaryKey: false;
389
+ isAutoincrement: false;
390
+ hasRuntimeDefault: false;
391
+ enumValues: [string, ...string[]];
392
+ baseColumn: never;
393
+ identity: undefined;
394
+ generated: undefined;
395
+ }, {}, {}>;
396
+ receiverRut: drizzle_orm_pg_core.PgColumn<{
397
+ name: "receiver_rut";
398
+ tableName: "invoices";
399
+ dataType: "string";
400
+ columnType: "PgText";
401
+ data: string;
402
+ driverParam: string;
403
+ notNull: false;
404
+ hasDefault: false;
405
+ isPrimaryKey: false;
406
+ isAutoincrement: false;
407
+ hasRuntimeDefault: false;
408
+ enumValues: [string, ...string[]];
409
+ baseColumn: never;
410
+ identity: undefined;
411
+ generated: undefined;
412
+ }, {}, {}>;
413
+ receiverName: drizzle_orm_pg_core.PgColumn<{
414
+ name: "receiver_name";
415
+ tableName: "invoices";
416
+ dataType: "string";
417
+ columnType: "PgText";
418
+ data: string;
419
+ driverParam: string;
420
+ notNull: false;
421
+ hasDefault: false;
422
+ isPrimaryKey: false;
423
+ isAutoincrement: false;
424
+ hasRuntimeDefault: false;
425
+ enumValues: [string, ...string[]];
426
+ baseColumn: never;
427
+ identity: undefined;
428
+ generated: undefined;
429
+ }, {}, {}>;
430
+ date: drizzle_orm_pg_core.PgColumn<{
431
+ name: "date";
432
+ tableName: "invoices";
433
+ dataType: "string";
434
+ columnType: "PgDateString";
435
+ data: string;
436
+ driverParam: string;
437
+ notNull: false;
438
+ hasDefault: false;
439
+ isPrimaryKey: false;
440
+ isAutoincrement: false;
441
+ hasRuntimeDefault: false;
442
+ enumValues: undefined;
443
+ baseColumn: never;
444
+ identity: undefined;
445
+ generated: undefined;
446
+ }, {}, {}>;
447
+ netAmount: drizzle_orm_pg_core.PgColumn<{
448
+ name: "net_amount";
449
+ tableName: "invoices";
450
+ dataType: "string";
451
+ columnType: "PgNumeric";
452
+ data: string;
453
+ driverParam: string;
454
+ notNull: false;
455
+ hasDefault: false;
456
+ isPrimaryKey: false;
457
+ isAutoincrement: false;
458
+ hasRuntimeDefault: false;
459
+ enumValues: undefined;
460
+ baseColumn: never;
461
+ identity: undefined;
462
+ generated: undefined;
463
+ }, {}, {}>;
464
+ exemptAmount: drizzle_orm_pg_core.PgColumn<{
465
+ name: "exempt_amount";
466
+ tableName: "invoices";
467
+ dataType: "string";
468
+ columnType: "PgNumeric";
469
+ data: string;
470
+ driverParam: string;
471
+ notNull: false;
472
+ hasDefault: false;
473
+ isPrimaryKey: false;
474
+ isAutoincrement: false;
475
+ hasRuntimeDefault: false;
476
+ enumValues: undefined;
477
+ baseColumn: never;
478
+ identity: undefined;
479
+ generated: undefined;
480
+ }, {}, {}>;
481
+ vatAmount: drizzle_orm_pg_core.PgColumn<{
482
+ name: "vat_amount";
483
+ tableName: "invoices";
484
+ dataType: "string";
485
+ columnType: "PgNumeric";
486
+ data: string;
487
+ driverParam: string;
488
+ notNull: false;
489
+ hasDefault: false;
490
+ isPrimaryKey: false;
491
+ isAutoincrement: false;
492
+ hasRuntimeDefault: false;
493
+ enumValues: undefined;
494
+ baseColumn: never;
495
+ identity: undefined;
496
+ generated: undefined;
497
+ }, {}, {}>;
498
+ totalAmount: drizzle_orm_pg_core.PgColumn<{
499
+ name: "total_amount";
500
+ tableName: "invoices";
501
+ dataType: "string";
502
+ columnType: "PgNumeric";
503
+ data: string;
504
+ driverParam: string;
505
+ notNull: false;
506
+ hasDefault: false;
507
+ isPrimaryKey: false;
508
+ isAutoincrement: false;
509
+ hasRuntimeDefault: false;
510
+ enumValues: undefined;
511
+ baseColumn: never;
512
+ identity: undefined;
513
+ generated: undefined;
514
+ }, {}, {}>;
515
+ taxPeriodYear: drizzle_orm_pg_core.PgColumn<{
516
+ name: "tax_period_year";
517
+ tableName: "invoices";
518
+ dataType: "number";
519
+ columnType: "PgInteger";
520
+ data: number;
521
+ driverParam: string | number;
522
+ notNull: true;
523
+ hasDefault: false;
524
+ isPrimaryKey: false;
525
+ isAutoincrement: false;
526
+ hasRuntimeDefault: false;
527
+ enumValues: undefined;
528
+ baseColumn: never;
529
+ identity: undefined;
530
+ generated: undefined;
531
+ }, {}, {}>;
532
+ taxPeriodMonth: drizzle_orm_pg_core.PgColumn<{
533
+ name: "tax_period_month";
534
+ tableName: "invoices";
535
+ dataType: "number";
536
+ columnType: "PgInteger";
537
+ data: number;
538
+ driverParam: string | number;
539
+ notNull: true;
540
+ hasDefault: false;
541
+ isPrimaryKey: false;
542
+ isAutoincrement: false;
543
+ hasRuntimeDefault: false;
544
+ enumValues: undefined;
545
+ baseColumn: never;
546
+ identity: undefined;
547
+ generated: undefined;
548
+ }, {}, {}>;
549
+ issueType: drizzle_orm_pg_core.PgColumn<{
550
+ name: "issue_type";
551
+ tableName: "invoices";
552
+ dataType: "string";
553
+ columnType: "PgText";
554
+ data: "issued" | "received";
555
+ driverParam: string;
556
+ notNull: true;
557
+ hasDefault: false;
558
+ isPrimaryKey: false;
559
+ isAutoincrement: false;
560
+ hasRuntimeDefault: false;
561
+ enumValues: [string, ...string[]];
562
+ baseColumn: never;
563
+ identity: undefined;
564
+ generated: undefined;
565
+ }, {}, {
566
+ $type: "issued" | "received";
567
+ }>;
568
+ confirmationStatus: drizzle_orm_pg_core.PgColumn<{
569
+ name: "confirmation_status";
570
+ tableName: "invoices";
571
+ dataType: "string";
572
+ columnType: "PgText";
573
+ data: "REGISTRO" | "RECLAMADO" | "PENDIENTE";
574
+ driverParam: string;
575
+ notNull: false;
576
+ hasDefault: false;
577
+ isPrimaryKey: false;
578
+ isAutoincrement: false;
579
+ hasRuntimeDefault: false;
580
+ enumValues: [string, ...string[]];
581
+ baseColumn: never;
582
+ identity: undefined;
583
+ generated: undefined;
584
+ }, {}, {
585
+ $type: "REGISTRO" | "RECLAMADO" | "PENDIENTE";
586
+ }>;
587
+ raw: drizzle_orm_pg_core.PgColumn<{
588
+ name: "raw";
589
+ tableName: "invoices";
590
+ dataType: "json";
591
+ columnType: "PgJsonb";
592
+ data: Record<string, string>;
593
+ driverParam: unknown;
594
+ notNull: false;
595
+ hasDefault: false;
596
+ isPrimaryKey: false;
597
+ isAutoincrement: false;
598
+ hasRuntimeDefault: false;
599
+ enumValues: undefined;
600
+ baseColumn: never;
601
+ identity: undefined;
602
+ generated: undefined;
603
+ }, {}, {
604
+ $type: Record<string, string>;
605
+ }>;
606
+ createdAt: drizzle_orm_pg_core.PgColumn<{
607
+ name: "created_at";
608
+ tableName: "invoices";
609
+ dataType: "date";
610
+ columnType: "PgTimestamp";
611
+ data: Date;
612
+ driverParam: string;
613
+ notNull: true;
614
+ hasDefault: true;
615
+ isPrimaryKey: false;
616
+ isAutoincrement: false;
617
+ hasRuntimeDefault: false;
618
+ enumValues: undefined;
619
+ baseColumn: never;
620
+ identity: undefined;
621
+ generated: undefined;
622
+ }, {}, {}>;
623
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
624
+ name: "updated_at";
625
+ tableName: "invoices";
626
+ dataType: "date";
627
+ columnType: "PgTimestamp";
628
+ data: Date;
629
+ driverParam: string;
630
+ notNull: true;
631
+ hasDefault: true;
632
+ isPrimaryKey: false;
633
+ isAutoincrement: false;
634
+ hasRuntimeDefault: false;
635
+ enumValues: undefined;
636
+ baseColumn: never;
637
+ identity: undefined;
638
+ generated: undefined;
639
+ }, {}, {}>;
640
+ };
641
+ dialect: "pg";
642
+ }>;
643
+ type InvoiceRow = typeof invoices.$inferSelect;
644
+ type NewInvoiceRow = typeof invoices.$inferInsert;
645
+
646
+ type SyncJobStatus = "pending" | "running" | "completed" | "failed";
647
+ declare const syncJobs: drizzle_orm_pg_core.PgTableWithColumns<{
648
+ name: "sync_jobs";
649
+ schema: "sii";
650
+ columns: {
651
+ id: drizzle_orm_pg_core.PgColumn<{
652
+ name: "id";
653
+ tableName: "sync_jobs";
654
+ dataType: "string";
655
+ columnType: "PgUUID";
656
+ data: string;
657
+ driverParam: string;
658
+ notNull: true;
659
+ hasDefault: true;
660
+ isPrimaryKey: true;
661
+ isAutoincrement: false;
662
+ hasRuntimeDefault: false;
663
+ enumValues: undefined;
664
+ baseColumn: never;
665
+ identity: undefined;
666
+ generated: undefined;
667
+ }, {}, {}>;
668
+ tenantId: drizzle_orm_pg_core.PgColumn<{
669
+ name: "tenant_id";
670
+ tableName: "sync_jobs";
671
+ dataType: "string";
672
+ columnType: "PgUUID";
673
+ data: string;
674
+ driverParam: string;
675
+ notNull: true;
676
+ hasDefault: false;
677
+ isPrimaryKey: false;
678
+ isAutoincrement: false;
679
+ hasRuntimeDefault: false;
680
+ enumValues: undefined;
681
+ baseColumn: never;
682
+ identity: undefined;
683
+ generated: undefined;
684
+ }, {}, {}>;
685
+ operation: drizzle_orm_pg_core.PgColumn<{
686
+ name: "operation";
687
+ tableName: "sync_jobs";
688
+ dataType: "string";
689
+ columnType: "PgText";
690
+ data: "rcv_sync";
691
+ driverParam: string;
692
+ notNull: true;
693
+ hasDefault: false;
694
+ isPrimaryKey: false;
695
+ isAutoincrement: false;
696
+ hasRuntimeDefault: false;
697
+ enumValues: [string, ...string[]];
698
+ baseColumn: never;
699
+ identity: undefined;
700
+ generated: undefined;
701
+ }, {}, {
702
+ $type: "rcv_sync";
703
+ }>;
704
+ periodYear: drizzle_orm_pg_core.PgColumn<{
705
+ name: "period_year";
706
+ tableName: "sync_jobs";
707
+ dataType: "number";
708
+ columnType: "PgInteger";
709
+ data: number;
710
+ driverParam: string | number;
711
+ notNull: true;
712
+ hasDefault: false;
713
+ isPrimaryKey: false;
714
+ isAutoincrement: false;
715
+ hasRuntimeDefault: false;
716
+ enumValues: undefined;
717
+ baseColumn: never;
718
+ identity: undefined;
719
+ generated: undefined;
720
+ }, {}, {}>;
721
+ periodMonth: drizzle_orm_pg_core.PgColumn<{
722
+ name: "period_month";
723
+ tableName: "sync_jobs";
724
+ dataType: "number";
725
+ columnType: "PgInteger";
726
+ data: number;
727
+ driverParam: string | number;
728
+ notNull: true;
729
+ hasDefault: false;
730
+ isPrimaryKey: false;
731
+ isAutoincrement: false;
732
+ hasRuntimeDefault: false;
733
+ enumValues: undefined;
734
+ baseColumn: never;
735
+ identity: undefined;
736
+ generated: undefined;
737
+ }, {}, {}>;
738
+ issueType: drizzle_orm_pg_core.PgColumn<{
739
+ name: "issue_type";
740
+ tableName: "sync_jobs";
741
+ dataType: "string";
742
+ columnType: "PgText";
743
+ data: "issued" | "received";
744
+ driverParam: string;
745
+ notNull: true;
746
+ hasDefault: false;
747
+ isPrimaryKey: false;
748
+ isAutoincrement: false;
749
+ hasRuntimeDefault: false;
750
+ enumValues: [string, ...string[]];
751
+ baseColumn: never;
752
+ identity: undefined;
753
+ generated: undefined;
754
+ }, {}, {
755
+ $type: "issued" | "received";
756
+ }>;
757
+ status: drizzle_orm_pg_core.PgColumn<{
758
+ name: "status";
759
+ tableName: "sync_jobs";
760
+ dataType: "string";
761
+ columnType: "PgText";
762
+ data: SyncJobStatus;
763
+ driverParam: string;
764
+ notNull: true;
765
+ hasDefault: true;
766
+ isPrimaryKey: false;
767
+ isAutoincrement: false;
768
+ hasRuntimeDefault: false;
769
+ enumValues: [string, ...string[]];
770
+ baseColumn: never;
771
+ identity: undefined;
772
+ generated: undefined;
773
+ }, {}, {
774
+ $type: SyncJobStatus;
775
+ }>;
776
+ startedAt: drizzle_orm_pg_core.PgColumn<{
777
+ name: "started_at";
778
+ tableName: "sync_jobs";
779
+ dataType: "date";
780
+ columnType: "PgTimestamp";
781
+ data: Date;
782
+ driverParam: string;
783
+ notNull: false;
784
+ hasDefault: false;
785
+ isPrimaryKey: false;
786
+ isAutoincrement: false;
787
+ hasRuntimeDefault: false;
788
+ enumValues: undefined;
789
+ baseColumn: never;
790
+ identity: undefined;
791
+ generated: undefined;
792
+ }, {}, {}>;
793
+ completedAt: drizzle_orm_pg_core.PgColumn<{
794
+ name: "completed_at";
795
+ tableName: "sync_jobs";
796
+ dataType: "date";
797
+ columnType: "PgTimestamp";
798
+ data: Date;
799
+ driverParam: string;
800
+ notNull: false;
801
+ hasDefault: false;
802
+ isPrimaryKey: false;
803
+ isAutoincrement: false;
804
+ hasRuntimeDefault: false;
805
+ enumValues: undefined;
806
+ baseColumn: never;
807
+ identity: undefined;
808
+ generated: undefined;
809
+ }, {}, {}>;
810
+ recordsFetched: drizzle_orm_pg_core.PgColumn<{
811
+ name: "records_fetched";
812
+ tableName: "sync_jobs";
813
+ dataType: "number";
814
+ columnType: "PgInteger";
815
+ data: number;
816
+ driverParam: string | number;
817
+ notNull: false;
818
+ hasDefault: false;
819
+ isPrimaryKey: false;
820
+ isAutoincrement: false;
821
+ hasRuntimeDefault: false;
822
+ enumValues: undefined;
823
+ baseColumn: never;
824
+ identity: undefined;
825
+ generated: undefined;
826
+ }, {}, {}>;
827
+ errorMessage: drizzle_orm_pg_core.PgColumn<{
828
+ name: "error_message";
829
+ tableName: "sync_jobs";
830
+ dataType: "string";
831
+ columnType: "PgText";
832
+ data: string;
833
+ driverParam: string;
834
+ notNull: false;
835
+ hasDefault: false;
836
+ isPrimaryKey: false;
837
+ isAutoincrement: false;
838
+ hasRuntimeDefault: false;
839
+ enumValues: [string, ...string[]];
840
+ baseColumn: never;
841
+ identity: undefined;
842
+ generated: undefined;
843
+ }, {}, {}>;
844
+ createdAt: drizzle_orm_pg_core.PgColumn<{
845
+ name: "created_at";
846
+ tableName: "sync_jobs";
847
+ dataType: "date";
848
+ columnType: "PgTimestamp";
849
+ data: Date;
850
+ driverParam: string;
851
+ notNull: true;
852
+ hasDefault: true;
853
+ isPrimaryKey: false;
854
+ isAutoincrement: false;
855
+ hasRuntimeDefault: false;
856
+ enumValues: undefined;
857
+ baseColumn: never;
858
+ identity: undefined;
859
+ generated: undefined;
860
+ }, {}, {}>;
861
+ };
862
+ dialect: "pg";
863
+ }>;
864
+ type SyncJob = typeof syncJobs.$inferSelect;
865
+ type NewSyncJob = typeof syncJobs.$inferInsert;
866
+
867
+ /**
868
+ * @emisso/sii-api — Drizzle schema exports
869
+ * All tables live in the PostgreSQL `sii` schema.
870
+ */
871
+ declare const siiSchema: drizzle_orm_pg_core.PgSchema<"sii">;
872
+
873
+ /**
874
+ * Application errors for Effect-based SII API logic.
875
+ * Uses Data.TaggedError which automatically sets `_tag` as the discriminator.
876
+ */
877
+ declare const NotFoundError_base: new <A extends Record<string, any> = {}>(args: effect_Types.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => effect_Cause.YieldableError & {
878
+ readonly _tag: "NotFoundError";
879
+ } & Readonly<A>;
880
+ declare class NotFoundError extends NotFoundError_base<{
881
+ readonly message: string;
882
+ readonly entity?: string;
883
+ readonly entityId?: string;
884
+ }> {
885
+ static make(entity: string, entityId?: string): NotFoundError;
886
+ }
887
+ declare const ValidationError_base: new <A extends Record<string, any> = {}>(args: effect_Types.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => effect_Cause.YieldableError & {
888
+ readonly _tag: "ValidationError";
889
+ } & Readonly<A>;
890
+ declare class ValidationError extends ValidationError_base<{
891
+ readonly message: string;
892
+ readonly field?: string;
893
+ readonly details?: Record<string, unknown>;
894
+ readonly fieldErrors?: Array<{
895
+ path: string;
896
+ message: string;
897
+ }>;
898
+ }> {
899
+ static make(message: string, field?: string, details?: Record<string, unknown>): ValidationError;
900
+ static fromZodErrors(message: string, issues: Array<{
901
+ path: (string | number)[];
902
+ message: string;
903
+ }>): ValidationError;
904
+ }
905
+ declare const ForbiddenError_base: new <A extends Record<string, any> = {}>(args: effect_Types.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => effect_Cause.YieldableError & {
906
+ readonly _tag: "ForbiddenError";
907
+ } & Readonly<A>;
908
+ declare class ForbiddenError extends ForbiddenError_base<{
909
+ readonly message: string;
910
+ readonly requiredPermission?: string;
911
+ }> {
912
+ static make(message?: string, requiredPermission?: string): ForbiddenError;
913
+ }
914
+ declare const DbError_base: new <A extends Record<string, any> = {}>(args: effect_Types.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => effect_Cause.YieldableError & {
915
+ readonly _tag: "DbError";
916
+ } & Readonly<A>;
917
+ declare class DbError extends DbError_base<{
918
+ readonly message: string;
919
+ readonly operation?: string;
920
+ readonly cause?: unknown;
921
+ }> {
922
+ static make(operation: string, cause?: unknown): DbError;
923
+ }
924
+ declare const ConflictError_base: new <A extends Record<string, any> = {}>(args: effect_Types.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => effect_Cause.YieldableError & {
925
+ readonly _tag: "ConflictError";
926
+ } & Readonly<A>;
927
+ declare class ConflictError extends ConflictError_base<{
928
+ readonly message: string;
929
+ readonly resource?: string;
930
+ readonly conflictingValue?: string;
931
+ }> {
932
+ static make(message: string, resource?: string, conflictingValue?: string): ConflictError;
933
+ }
934
+ declare const SiiAuthError_base: new <A extends Record<string, any> = {}>(args: effect_Types.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => effect_Cause.YieldableError & {
935
+ readonly _tag: "SiiAuthError";
936
+ } & Readonly<A>;
937
+ declare class SiiAuthError extends SiiAuthError_base<{
938
+ readonly message: string;
939
+ readonly cause?: unknown;
940
+ }> {
941
+ static make(message: string, cause?: unknown): SiiAuthError;
942
+ }
943
+ type AppError = NotFoundError | ValidationError | ForbiddenError | DbError | ConflictError | SiiAuthError;
944
+ declare function isAppError(error: unknown): error is AppError;
945
+ declare function serializeAppError(error: AppError): {
946
+ _type: string;
947
+ message: string;
948
+ [key: string]: unknown;
949
+ };
950
+
951
+ /**
952
+ * Framework-agnostic HTTP response helpers using Web API Response.
953
+ * No dependency on Next.js or any framework.
954
+ */
955
+
956
+ declare function toErrorResponse(error: AppError): Response;
957
+ declare function toErrorResponseFromUnknown(error: unknown): Response;
958
+ /**
959
+ * Run an Effect at the handler boundary, converting errors to HTTP responses.
960
+ */
961
+ declare function handleEffect<T>(effect: Effect.Effect<T, AppError>, toResponse?: (data: T) => Response): Promise<Response>;
962
+ declare function jsonResponse<T>(data: T, status?: number): Response;
963
+ declare function createdResponse<T>(data: T): Response;
964
+ declare function noContentResponse(): Response;
965
+
966
+ /**
967
+ * Query a single row and fail with NotFoundError if not found.
968
+ */
969
+ declare function queryOneOrFail<T>(operation: string, entity: string, entityId: string, query: () => Promise<T | undefined>): Effect.Effect<T, DbError | NotFoundError>;
970
+
971
+ /**
972
+ * Converts between DB rows and engine Invoice type.
973
+ */
974
+
975
+ /**
976
+ * Convert an engine Invoice to a DB row for upsert.
977
+ */
978
+ declare function invoiceToRow(tenantId: string, invoice: Invoice, issueType: IssueType): Omit<NewInvoiceRow, "id" | "createdAt" | "updatedAt">;
979
+ /**
980
+ * Convert a DB row back to an engine-compatible Invoice.
981
+ */
982
+ declare function rowToInvoice(row: InvoiceRow): Invoice;
983
+
984
+ /**
985
+ * Zod validation schemas for HTTP inputs.
986
+ */
987
+
988
+ declare const SaveCredentialsSchema: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodObject<{
989
+ env: z.ZodDefault<z.ZodEnum<["certification", "production"]>>;
990
+ certBase64: z.ZodOptional<z.ZodString>;
991
+ certPassword: z.ZodOptional<z.ZodString>;
992
+ portalRut: z.ZodOptional<z.ZodString>;
993
+ portalPassword: z.ZodOptional<z.ZodString>;
994
+ }, "strip", z.ZodTypeAny, {
995
+ env: "certification" | "production";
996
+ certBase64?: string | undefined;
997
+ certPassword?: string | undefined;
998
+ portalRut?: string | undefined;
999
+ portalPassword?: string | undefined;
1000
+ }, {
1001
+ env?: "certification" | "production" | undefined;
1002
+ certBase64?: string | undefined;
1003
+ certPassword?: string | undefined;
1004
+ portalRut?: string | undefined;
1005
+ portalPassword?: string | undefined;
1006
+ }>, {
1007
+ env: "certification" | "production";
1008
+ certBase64?: string | undefined;
1009
+ certPassword?: string | undefined;
1010
+ portalRut?: string | undefined;
1011
+ portalPassword?: string | undefined;
1012
+ }, {
1013
+ env?: "certification" | "production" | undefined;
1014
+ certBase64?: string | undefined;
1015
+ certPassword?: string | undefined;
1016
+ portalRut?: string | undefined;
1017
+ portalPassword?: string | undefined;
1018
+ }>, {
1019
+ env: "certification" | "production";
1020
+ certBase64?: string | undefined;
1021
+ certPassword?: string | undefined;
1022
+ portalRut?: string | undefined;
1023
+ portalPassword?: string | undefined;
1024
+ }, {
1025
+ env?: "certification" | "production" | undefined;
1026
+ certBase64?: string | undefined;
1027
+ certPassword?: string | undefined;
1028
+ portalRut?: string | undefined;
1029
+ portalPassword?: string | undefined;
1030
+ }>, {
1031
+ env: "certification" | "production";
1032
+ certBase64?: string | undefined;
1033
+ certPassword?: string | undefined;
1034
+ portalRut?: string | undefined;
1035
+ portalPassword?: string | undefined;
1036
+ }, {
1037
+ env?: "certification" | "production" | undefined;
1038
+ certBase64?: string | undefined;
1039
+ certPassword?: string | undefined;
1040
+ portalRut?: string | undefined;
1041
+ portalPassword?: string | undefined;
1042
+ }>;
1043
+ type SaveCredentialsInput = z.infer<typeof SaveCredentialsSchema>;
1044
+ declare const SyncInvoicesSchema: z.ZodObject<{
1045
+ period: z.ZodString;
1046
+ type: z.ZodDefault<z.ZodEnum<["issued", "received"]>>;
1047
+ }, "strip", z.ZodTypeAny, {
1048
+ type: "issued" | "received";
1049
+ period: string;
1050
+ }, {
1051
+ period: string;
1052
+ type?: "issued" | "received" | undefined;
1053
+ }>;
1054
+ type SyncInvoicesInput = z.infer<typeof SyncInvoicesSchema>;
1055
+ declare const ListInvoicesQuerySchema: z.ZodObject<{
1056
+ period: z.ZodOptional<z.ZodString>;
1057
+ type: z.ZodOptional<z.ZodEnum<["issued", "received"]>>;
1058
+ documentType: z.ZodOptional<z.ZodEnum<["33", "34", "39", "41", "43", "46", "52", "56", "61", "110", "112"]>>;
1059
+ limit: z.ZodDefault<z.ZodNumber>;
1060
+ offset: z.ZodDefault<z.ZodNumber>;
1061
+ }, "strip", z.ZodTypeAny, {
1062
+ limit: number;
1063
+ offset: number;
1064
+ documentType?: "33" | "34" | "39" | "41" | "43" | "46" | "52" | "56" | "61" | "110" | "112" | undefined;
1065
+ type?: "issued" | "received" | undefined;
1066
+ period?: string | undefined;
1067
+ }, {
1068
+ documentType?: "33" | "34" | "39" | "41" | "43" | "46" | "52" | "56" | "61" | "110" | "112" | undefined;
1069
+ type?: "issued" | "received" | undefined;
1070
+ period?: string | undefined;
1071
+ limit?: number | undefined;
1072
+ offset?: number | undefined;
1073
+ }>;
1074
+ declare const SyncStatusQuerySchema: z.ZodObject<{
1075
+ period: z.ZodOptional<z.ZodString>;
1076
+ type: z.ZodOptional<z.ZodEnum<["issued", "received"]>>;
1077
+ }, "strip", z.ZodTypeAny, {
1078
+ type?: "issued" | "received" | undefined;
1079
+ period?: string | undefined;
1080
+ }, {
1081
+ type?: "issued" | "received" | undefined;
1082
+ period?: string | undefined;
1083
+ }>;
1084
+ type ListInvoicesQuery = z.infer<typeof ListInvoicesQuerySchema>;
1085
+
1086
+ declare function createCredentialRepo(db: PgDatabase<any>): {
1087
+ getByTenantAndEnv(tenantId: string, env: SiiEnv): Effect.Effect<Credential, DbError | NotFoundError>;
1088
+ upsert(tenantId: string, data: Omit<NewCredential, "id" | "tenantId" | "createdAt" | "updatedAt">): Effect.Effect<Credential, DbError>;
1089
+ delete(tenantId: string, env: SiiEnv): Effect.Effect<boolean, DbError>;
1090
+ };
1091
+ type CredentialRepo = ReturnType<typeof createCredentialRepo>;
1092
+
1093
+ declare function createTokenCacheRepo(db: PgDatabase<any>): {
1094
+ get(credentialId: string, tokenType: "soap" | "portal"): Effect.Effect<TokenCacheEntry | null, DbError>;
1095
+ upsert(credentialId: string, tokenType: "soap" | "portal", tokenValue: string, expiresAt: Date): Effect.Effect<TokenCacheEntry, DbError>;
1096
+ deleteByCredential(credentialId: string): Effect.Effect<void, DbError>;
1097
+ };
1098
+ type TokenCacheRepo = ReturnType<typeof createTokenCacheRepo>;
1099
+
1100
+ declare function createInvoiceRepo(db: PgDatabase<any>): {
1101
+ list(tenantId: string, filters?: {
1102
+ periodYear?: number;
1103
+ periodMonth?: number;
1104
+ issueType?: IssueType;
1105
+ documentType?: DteType;
1106
+ limit?: number;
1107
+ offset?: number;
1108
+ }): Effect.Effect<InvoiceRow[], DbError>;
1109
+ upsertMany(rows: Omit<NewInvoiceRow, "id" | "createdAt" | "updatedAt">[]): Effect.Effect<number, DbError>;
1110
+ count(tenantId: string, filters?: {
1111
+ periodYear?: number;
1112
+ periodMonth?: number;
1113
+ issueType?: IssueType;
1114
+ }): Effect.Effect<number, DbError>;
1115
+ };
1116
+ type InvoiceRepo = ReturnType<typeof createInvoiceRepo>;
1117
+
1118
+ declare function createSyncJobRepo(db: PgDatabase<any>): {
1119
+ create(data: Omit<NewSyncJob, "id" | "createdAt">): Effect.Effect<SyncJob, DbError>;
1120
+ getById(id: string): Effect.Effect<SyncJob, DbError | NotFoundError>;
1121
+ listByTenant(tenantId: string, filters?: {
1122
+ periodYear?: number;
1123
+ periodMonth?: number;
1124
+ issueType?: IssueType;
1125
+ }): Effect.Effect<SyncJob[], DbError>;
1126
+ update(id: string, data: Partial<Pick<SyncJob, "status" | "startedAt" | "completedAt" | "recordsFetched" | "errorMessage">>): Effect.Effect<SyncJob, DbError | NotFoundError>;
1127
+ };
1128
+ type SyncJobRepo = ReturnType<typeof createSyncJobRepo>;
1129
+
1130
+ declare function createCredentialService(deps: {
1131
+ credentialRepo: CredentialRepo;
1132
+ tokenCacheRepo: TokenCacheRepo;
1133
+ encrypt?: (plaintext: string) => string;
1134
+ decrypt?: (ciphertext: string) => string;
1135
+ }): {
1136
+ save(tenantId: string, input: SaveCredentialsInput): Effect.Effect<Credential, AppError>;
1137
+ getStatus(tenantId: string, env: SiiEnv): Effect.Effect<{
1138
+ connected: boolean;
1139
+ env: string;
1140
+ hasCert: boolean;
1141
+ hasPortal: boolean;
1142
+ portalRut: string | null;
1143
+ }, AppError>;
1144
+ disconnect(tenantId: string, env: SiiEnv): Effect.Effect<void, AppError>;
1145
+ };
1146
+ type CredentialService = ReturnType<typeof createCredentialService>;
1147
+
1148
+ declare function createAuthService(deps: {
1149
+ credentialRepo: CredentialRepo;
1150
+ tokenCacheRepo: TokenCacheRepo;
1151
+ decrypt?: (ciphertext: string) => string;
1152
+ connectBrowser?: PortalLoginOptions["connectBrowser"];
1153
+ }): {
1154
+ /**
1155
+ * Get a valid SOAP token, using cache if available.
1156
+ */
1157
+ getSoapToken(tenantId: string, env: SiiEnv): Effect.Effect<SiiToken, AppError>;
1158
+ /**
1159
+ * Get a portal session via fresh login.
1160
+ */
1161
+ getPortalSession(tenantId: string, env: SiiEnv): Effect.Effect<PortalSession, AppError>;
1162
+ /**
1163
+ * Test credentials by attempting authentication.
1164
+ * Runs SOAP and portal tests concurrently.
1165
+ */
1166
+ testConnection(tenantId: string, env: SiiEnv): Effect.Effect<{
1167
+ soap: boolean;
1168
+ portal: boolean;
1169
+ errors: string[];
1170
+ }, AppError>;
1171
+ };
1172
+ type AuthService = ReturnType<typeof createAuthService>;
1173
+
1174
+ declare function createInvoiceService(deps: {
1175
+ invoiceRepo: InvoiceRepo;
1176
+ syncJobRepo: SyncJobRepo;
1177
+ authService: AuthService;
1178
+ credentialRepo: CredentialRepo;
1179
+ }): {
1180
+ /**
1181
+ * Trigger an RCV invoice sync for a given period.
1182
+ * Creates a sync job, fetches from SII, upserts into DB.
1183
+ */
1184
+ sync(tenantId: string, env: SiiEnv, periodYear: number, periodMonth: number, issueType: IssueType): Effect.Effect<SyncJob, AppError>;
1185
+ };
1186
+ type InvoiceService = ReturnType<typeof createInvoiceService>;
1187
+
1188
+ /**
1189
+ * Simple pattern-matching router for framework-agnostic handlers.
1190
+ * Supports `:param` patterns for URL parameters.
1191
+ */
1192
+ interface HandlerContext {
1193
+ tenantId: string;
1194
+ params: Record<string, string>;
1195
+ }
1196
+ type HandlerFn = (req: Request, ctx: HandlerContext) => Promise<Response>;
1197
+ interface Route {
1198
+ method: string;
1199
+ pattern: string;
1200
+ handler: HandlerFn;
1201
+ }
1202
+ declare function createRouter(routes: Route[]): (req: Request, tenantId: string) => Promise<Response>;
1203
+
1204
+ declare function createAuthHandlers(deps: {
1205
+ credentialService: CredentialService;
1206
+ authService: AuthService;
1207
+ }): {
1208
+ saveCredentials: HandlerFn;
1209
+ getStatus: HandlerFn;
1210
+ testConnection: HandlerFn;
1211
+ disconnect: HandlerFn;
1212
+ };
1213
+
1214
+ declare function createInvoiceHandlers(deps: {
1215
+ invoiceService: InvoiceService;
1216
+ invoiceRepo: InvoiceRepo;
1217
+ syncJobRepo: SyncJobRepo;
1218
+ }): {
1219
+ listInvoices: HandlerFn;
1220
+ syncInvoices: HandlerFn;
1221
+ getSyncStatus: HandlerFn;
1222
+ };
1223
+
1224
+ export { type AppError, type AuthService, ConflictError, type Credential, type CredentialRepo, type CredentialService, DbError, ForbiddenError, type HandlerContext, type HandlerFn, type InvoiceRepo, type InvoiceRow, type InvoiceService, type ListInvoicesQuery, ListInvoicesQuerySchema, type NewCredential, type NewInvoiceRow, type NewSyncJob, type NewTokenCacheEntry, NotFoundError, type Route, type SaveCredentialsInput, SaveCredentialsSchema, SiiAuthError, type SyncInvoicesInput, SyncInvoicesSchema, type SyncJob, type SyncJobRepo, type SyncJobStatus, SyncStatusQuerySchema, type TokenCacheEntry, type TokenCacheRepo, ValidationError, createAuthHandlers, createAuthService, createCredentialRepo, createCredentialService, createInvoiceHandlers, createInvoiceRepo, createInvoiceService, createRouter, createSyncJobRepo, createTokenCacheRepo, createdResponse, credentials, handleEffect, invoiceToRow, invoices, isAppError, jsonResponse, noContentResponse, queryOneOrFail, rowToInvoice, serializeAppError, siiSchema, syncJobs, toErrorResponse, toErrorResponseFromUnknown, tokenCache };