@atzentis/booking-sdk 0.1.6 → 0.1.8

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
@@ -1197,6 +1197,1266 @@ declare class CategoriesService extends BaseService {
1197
1197
  delete(categoryId: string): Promise<void>;
1198
1198
  }
1199
1199
 
1200
+ /** Supported distribution channel types */
1201
+ type ChannelType = "channex" | "ical" | "direct";
1202
+ /** Channel connection status */
1203
+ type ChannelStatus = "active" | "inactive" | "error" | "pending";
1204
+ /** Credentials for channel authentication (redacted in responses) */
1205
+ type ChannelCredentials = Record<string, unknown>;
1206
+ /** Channel sync configuration */
1207
+ interface ChannelSettings {
1208
+ autoSync?: boolean;
1209
+ syncInterval?: number;
1210
+ pushAvailability?: boolean;
1211
+ pushRates?: boolean;
1212
+ pullReservations?: boolean;
1213
+ }
1214
+ /** A distribution channel connection */
1215
+ interface Channel {
1216
+ id: string;
1217
+ propertyId: string;
1218
+ type: ChannelType;
1219
+ name: string;
1220
+ status: ChannelStatus;
1221
+ enabled: boolean;
1222
+ credentials: ChannelCredentials;
1223
+ settings: ChannelSettings;
1224
+ lastSyncAt: string | null;
1225
+ metadata: Record<string, unknown> | null;
1226
+ createdAt: string;
1227
+ updatedAt: string;
1228
+ }
1229
+ /** Input for creating a new channel */
1230
+ interface CreateChannelInput {
1231
+ propertyId: string;
1232
+ type: ChannelType;
1233
+ name?: string;
1234
+ enabled?: boolean;
1235
+ credentials?: ChannelCredentials;
1236
+ settings?: ChannelSettings;
1237
+ metadata?: Record<string, unknown>;
1238
+ }
1239
+ /** Input for updating an existing channel */
1240
+ interface UpdateChannelInput {
1241
+ name?: string;
1242
+ enabled?: boolean;
1243
+ credentials?: ChannelCredentials;
1244
+ settings?: ChannelSettings;
1245
+ metadata?: Record<string, unknown>;
1246
+ }
1247
+ /** Parameters for listing channels */
1248
+ interface ListChannelsParams {
1249
+ propertyId?: string;
1250
+ type?: ChannelType;
1251
+ status?: ChannelStatus;
1252
+ enabled?: boolean;
1253
+ limit?: number;
1254
+ cursor?: string;
1255
+ }
1256
+ /** Paginated list of channels */
1257
+ type PaginatedChannels = Paginated<Channel>;
1258
+ /** Mapping between local category and OTA room type/rate plan */
1259
+ interface ChannelMapping {
1260
+ id: string;
1261
+ channelId: string;
1262
+ localCategoryId: string;
1263
+ channelRoomTypeId: string | null;
1264
+ channelRatePlanId: string | null;
1265
+ settings: Record<string, unknown> | null;
1266
+ metadata: Record<string, unknown> | null;
1267
+ createdAt: string;
1268
+ }
1269
+ /** Input for creating a channel mapping */
1270
+ interface CreateMappingInput {
1271
+ localCategoryId: string;
1272
+ channelRoomTypeId?: string;
1273
+ channelRatePlanId?: string;
1274
+ settings?: Record<string, unknown>;
1275
+ metadata?: Record<string, unknown>;
1276
+ }
1277
+ /** Parameters for listing mappings */
1278
+ interface ListMappingsParams {
1279
+ localCategoryId?: string;
1280
+ limit?: number;
1281
+ cursor?: string;
1282
+ }
1283
+ /** Paginated list of channel mappings */
1284
+ type PaginatedMappings = Paginated<ChannelMapping>;
1285
+ /** Type of sync operation */
1286
+ type SyncOperationType = "push" | "pull";
1287
+ /** Status of a sync operation */
1288
+ type SyncOperationStatus = "pending" | "running" | "completed" | "failed";
1289
+ /** Statistics from a sync operation */
1290
+ interface SyncStats {
1291
+ itemsSynced: number;
1292
+ itemsFailed: number;
1293
+ warnings: string[];
1294
+ }
1295
+ /** Error encountered during sync */
1296
+ interface SyncError {
1297
+ code: string;
1298
+ message: string;
1299
+ details: Record<string, unknown> | null;
1300
+ }
1301
+ /** A sync operation record */
1302
+ interface SyncOperation {
1303
+ id: string;
1304
+ channelId: string;
1305
+ type: SyncOperationType;
1306
+ status: SyncOperationStatus;
1307
+ startedAt: string | null;
1308
+ completedAt: string | null;
1309
+ stats: SyncStats | null;
1310
+ errors: SyncError[];
1311
+ createdAt: string;
1312
+ }
1313
+ /** Input for push sync */
1314
+ interface PushSyncInput {
1315
+ dateFrom?: string;
1316
+ dateTo?: string;
1317
+ fullSync?: boolean;
1318
+ }
1319
+ /** Input for pull sync */
1320
+ interface PullSyncInput {
1321
+ dateFrom?: string;
1322
+ dateTo?: string;
1323
+ }
1324
+ /** Parameters for querying sync log */
1325
+ interface SyncLogParams {
1326
+ type?: SyncOperationType;
1327
+ status?: SyncOperationStatus;
1328
+ from?: string;
1329
+ to?: string;
1330
+ limit?: number;
1331
+ cursor?: string;
1332
+ }
1333
+ /** Paginated sync operation log */
1334
+ type PaginatedSyncLog = Paginated<SyncOperation>;
1335
+ /** Input for iCal import */
1336
+ interface ICalImportInput {
1337
+ spaceId: string;
1338
+ importUrl: string;
1339
+ name?: string;
1340
+ autoSync?: boolean;
1341
+ }
1342
+ /** Result of an iCal import operation */
1343
+ interface ICalImportResult {
1344
+ id: string;
1345
+ spaceId: string;
1346
+ importUrl: string;
1347
+ eventsImported: number;
1348
+ lastImportedAt: string | null;
1349
+ status: string;
1350
+ }
1351
+ /** Result of an iCal export operation */
1352
+ interface ICalExportResult {
1353
+ spaceId: string;
1354
+ exportUrl: string;
1355
+ lastExportedAt: string | null;
1356
+ }
1357
+
1358
+ /**
1359
+ * Service for managing distribution channels in the Atzentis Booking API.
1360
+ *
1361
+ * Provides channel CRUD, mapping management, push/pull sync operations,
1362
+ * sync log retrieval, and iCal import/export.
1363
+ *
1364
+ * @example
1365
+ * ```typescript
1366
+ * const booking = new BookingClient({ apiKey: "atz_io_live_xxxxx" });
1367
+ *
1368
+ * // Create a Channex connection
1369
+ * const channel = await booking.distribution.createChannel({
1370
+ * propertyId: "prop_abc123",
1371
+ * type: "channex",
1372
+ * name: "Booking.com via Channex",
1373
+ * });
1374
+ *
1375
+ * // Push availability to channel
1376
+ * await booking.distribution.push(channel.id, {
1377
+ * dateFrom: "2025-07-01",
1378
+ * dateTo: "2025-12-31",
1379
+ * });
1380
+ * ```
1381
+ */
1382
+ declare class DistributionService extends BaseService {
1383
+ protected readonly basePath = "/distribution/v1";
1384
+ /** Create a new distribution channel */
1385
+ createChannel(input: CreateChannelInput): Promise<Channel>;
1386
+ /** Get a channel by ID */
1387
+ getChannel(channelId: string): Promise<Channel>;
1388
+ /** List channels with optional filters */
1389
+ listChannels(params?: ListChannelsParams): Promise<PaginatedChannels>;
1390
+ /** Update a channel */
1391
+ updateChannel(channelId: string, input: UpdateChannelInput): Promise<Channel>;
1392
+ /** Delete a channel */
1393
+ deleteChannel(channelId: string): Promise<void>;
1394
+ /** Create a mapping between a local category and OTA room type/rate plan */
1395
+ createMapping(channelId: string, input: CreateMappingInput): Promise<ChannelMapping>;
1396
+ /** List mappings for a channel */
1397
+ listMappings(channelId: string, params?: ListMappingsParams): Promise<PaginatedMappings>;
1398
+ /** Delete a mapping */
1399
+ deleteMapping(channelId: string, mappingId: string): Promise<void>;
1400
+ /** Push availability and rates to a channel */
1401
+ push(channelId: string, input?: PushSyncInput): Promise<SyncOperation>;
1402
+ /** Pull reservations from a channel */
1403
+ pull(channelId: string, input?: PullSyncInput): Promise<SyncOperation>;
1404
+ /** Get sync operation log for a channel */
1405
+ getSyncLog(channelId: string, params?: SyncLogParams): Promise<PaginatedSyncLog>;
1406
+ /** Import availability from an external iCal feed */
1407
+ icalImport(input: ICalImportInput): Promise<ICalImportResult>;
1408
+ /** Get iCal export URL for a space */
1409
+ icalExport(spaceId: string): Promise<ICalExportResult>;
1410
+ }
1411
+
1412
+ /** Status of a folio */
1413
+ type FolioStatus = "open" | "closed" | "settled";
1414
+ /** A guest folio (accounting record) */
1415
+ interface Folio {
1416
+ id: string;
1417
+ bookingId: string;
1418
+ guestId: string | null;
1419
+ status: FolioStatus;
1420
+ balance: number;
1421
+ totalCharges: number;
1422
+ totalPayments: number;
1423
+ currency: string;
1424
+ metadata: Record<string, unknown> | null;
1425
+ createdAt: string;
1426
+ updatedAt: string;
1427
+ closedAt: string | null;
1428
+ settledAt: string | null;
1429
+ }
1430
+ /** Input for creating a folio */
1431
+ interface CreateFolioInput {
1432
+ bookingId: string;
1433
+ guestId?: string;
1434
+ currency?: string;
1435
+ metadata?: Record<string, unknown>;
1436
+ }
1437
+ /** Input for updating a folio */
1438
+ interface UpdateFolioInput {
1439
+ guestId?: string;
1440
+ metadata?: Record<string, unknown>;
1441
+ }
1442
+ /** Parameters for listing folios */
1443
+ interface ListFoliosParams {
1444
+ bookingId?: string;
1445
+ guestId?: string;
1446
+ status?: FolioStatus;
1447
+ limit?: number;
1448
+ cursor?: string;
1449
+ }
1450
+ /** Paginated list of folios */
1451
+ type PaginatedFolios = Paginated<Folio>;
1452
+ /** Type of charge applied to a folio */
1453
+ type ChargeType = "room" | "minibar" | "restaurant" | "spa" | "parking" | "telephone" | "laundry" | "other";
1454
+ /** A charge on a folio */
1455
+ interface FolioCharge {
1456
+ id: string;
1457
+ folioId: string;
1458
+ type: ChargeType;
1459
+ description: string | null;
1460
+ amount: number;
1461
+ currency: string;
1462
+ transitory: boolean;
1463
+ metadata: Record<string, unknown> | null;
1464
+ createdAt: string;
1465
+ }
1466
+ /** Input for creating a charge */
1467
+ interface CreateChargeInput {
1468
+ type: ChargeType;
1469
+ amount: number;
1470
+ description?: string;
1471
+ currency?: string;
1472
+ metadata?: Record<string, unknown>;
1473
+ }
1474
+ /** Parameters for listing charges */
1475
+ interface ListChargesParams {
1476
+ type?: ChargeType;
1477
+ limit?: number;
1478
+ cursor?: string;
1479
+ }
1480
+ /** Paginated list of charges */
1481
+ type PaginatedCharges = Paginated<FolioCharge>;
1482
+ /** Input for moving charges between folios */
1483
+ interface MoveChargesInput {
1484
+ chargeIds: string[];
1485
+ toFolioId: string;
1486
+ }
1487
+ /** A payment applied to a folio */
1488
+ interface FolioPayment {
1489
+ id: string;
1490
+ folioId: string;
1491
+ amount: number;
1492
+ currency: string;
1493
+ method: string;
1494
+ reference: string | null;
1495
+ metadata: Record<string, unknown> | null;
1496
+ createdAt: string;
1497
+ }
1498
+ /** Input for creating a folio payment */
1499
+ interface CreateFolioPaymentInput {
1500
+ amount: number;
1501
+ method: string;
1502
+ reference?: string;
1503
+ currency?: string;
1504
+ metadata?: Record<string, unknown>;
1505
+ }
1506
+ /** Parameters for listing folio payments */
1507
+ interface ListFolioPaymentsParams {
1508
+ limit?: number;
1509
+ cursor?: string;
1510
+ }
1511
+ /** Paginated list of folio payments */
1512
+ type PaginatedFolioPayments = Paginated<FolioPayment>;
1513
+ /** Status of an invoice */
1514
+ type InvoiceStatus = "draft" | "finalized" | "voided";
1515
+ /** A fiscal invoice */
1516
+ interface Invoice {
1517
+ id: string;
1518
+ folioId: string;
1519
+ number: string;
1520
+ status: InvoiceStatus;
1521
+ amount: number;
1522
+ currency: string;
1523
+ language: string;
1524
+ fiscalId: string | null;
1525
+ metadata: Record<string, unknown> | null;
1526
+ createdAt: string;
1527
+ finalizedAt: string | null;
1528
+ }
1529
+ /** Input for generating an invoice */
1530
+ interface CreateInvoiceInput {
1531
+ language?: string;
1532
+ metadata?: Record<string, unknown>;
1533
+ }
1534
+ /** Daily accounting report */
1535
+ interface AccountingDailyReport {
1536
+ date: string;
1537
+ totalRevenue: number;
1538
+ totalCharges: number;
1539
+ totalPayments: number;
1540
+ breakdown: Record<string, number>;
1541
+ }
1542
+ /** Revenue report by charge type */
1543
+ interface AccountingRevenueReport {
1544
+ period: {
1545
+ from: string;
1546
+ to: string;
1547
+ };
1548
+ breakdown: Record<string, number>;
1549
+ }
1550
+ /** VAT breakdown entry */
1551
+ interface VatBreakdownEntry {
1552
+ net: number;
1553
+ vat: number;
1554
+ gross: number;
1555
+ }
1556
+ /** VAT accounting report */
1557
+ interface AccountingVatReport {
1558
+ period: {
1559
+ from: string;
1560
+ to: string;
1561
+ };
1562
+ breakdown: Record<string, VatBreakdownEntry>;
1563
+ }
1564
+ /** Parameters for accounting reports */
1565
+ interface AccountingReportParams {
1566
+ date?: string;
1567
+ from?: string;
1568
+ to?: string;
1569
+ propertyId?: string;
1570
+ }
1571
+
1572
+ /**
1573
+ * Service for financial operations in the Atzentis Booking API.
1574
+ *
1575
+ * Manages the full folio lifecycle (open → close → settle), charges,
1576
+ * folio payments, invoices (including PDF export), and accounting reports.
1577
+ *
1578
+ * @example
1579
+ * ```typescript
1580
+ * const booking = new BookingClient({ apiKey: "atz_io_live_xxxxx" });
1581
+ *
1582
+ * // Create a folio for a booking
1583
+ * const folio = await booking.finance.createFolio({
1584
+ * bookingId: "bk_abc123",
1585
+ * currency: "EUR",
1586
+ * });
1587
+ *
1588
+ * // Add a room charge
1589
+ * await booking.finance.createCharge(folio.id, {
1590
+ * type: "room",
1591
+ * amount: 10000,
1592
+ * });
1593
+ *
1594
+ * // Close and settle
1595
+ * await booking.finance.closeFolio(folio.id);
1596
+ * await booking.finance.settleFolio(folio.id);
1597
+ * ```
1598
+ */
1599
+ declare class FinanceService extends BaseService {
1600
+ protected readonly basePath = "/finance/v1";
1601
+ /** Create a new folio for a booking */
1602
+ createFolio(input: CreateFolioInput): Promise<Folio>;
1603
+ /** Get a folio by ID */
1604
+ getFolio(folioId: string): Promise<Folio>;
1605
+ /** List folios with optional filters */
1606
+ listFolios(params?: ListFoliosParams): Promise<PaginatedFolios>;
1607
+ /** Update a folio */
1608
+ updateFolio(folioId: string, input: UpdateFolioInput): Promise<Folio>;
1609
+ /** Close a folio (no more charges can be added) */
1610
+ closeFolio(folioId: string): Promise<Folio>;
1611
+ /** Settle a folio (mark as fully paid) */
1612
+ settleFolio(folioId: string): Promise<Folio>;
1613
+ /** Create a charge on a folio */
1614
+ createCharge(folioId: string, input: CreateChargeInput): Promise<FolioCharge>;
1615
+ /** List charges on a folio */
1616
+ listCharges(folioId: string, params?: ListChargesParams): Promise<PaginatedCharges>;
1617
+ /** Create a transitory (non-billable) charge on a folio */
1618
+ createTransitoryCharge(folioId: string, input: CreateChargeInput): Promise<FolioCharge>;
1619
+ /** Move charges from one folio to another */
1620
+ moveCharges(folioId: string, input: MoveChargesInput): Promise<{
1621
+ moved: number;
1622
+ }>;
1623
+ /** Record a payment on a folio */
1624
+ createFolioPayment(folioId: string, input: CreateFolioPaymentInput): Promise<FolioPayment>;
1625
+ /** List payments on a folio */
1626
+ listFolioPayments(folioId: string, params?: ListFolioPaymentsParams): Promise<PaginatedFolioPayments>;
1627
+ /** Generate an invoice for a folio */
1628
+ generateInvoice(folioId: string, input?: CreateInvoiceInput): Promise<Invoice>;
1629
+ /** Get an invoice by ID */
1630
+ getInvoice(invoiceId: string): Promise<Invoice>;
1631
+ /** Get invoice as PDF binary data */
1632
+ getInvoicePdf(invoiceId: string): Promise<ArrayBuffer>;
1633
+ /** Get daily accounting report */
1634
+ getDailyReport(params?: AccountingReportParams): Promise<AccountingDailyReport>;
1635
+ /** Get revenue report by charge type */
1636
+ getRevenueReport(params?: AccountingReportParams): Promise<AccountingRevenueReport>;
1637
+ /** Get VAT accounting report */
1638
+ getVatReport(params?: AccountingReportParams): Promise<AccountingVatReport>;
1639
+ }
1640
+
1641
+ /** Guest address */
1642
+ interface GuestAddress {
1643
+ /** Street address */
1644
+ street: string | null;
1645
+ /** City */
1646
+ city: string | null;
1647
+ /** State or province */
1648
+ state: string | null;
1649
+ /** Postal/ZIP code */
1650
+ postalCode: string | null;
1651
+ /** ISO 3166-1 alpha-2 country code */
1652
+ country: string | null;
1653
+ }
1654
+ /** A guest profile in the Atzentis system */
1655
+ interface Guest {
1656
+ /** Guest identifier */
1657
+ id: string;
1658
+ /** First name */
1659
+ firstName: string;
1660
+ /** Last name */
1661
+ lastName: string;
1662
+ /** Email address */
1663
+ email: string | null;
1664
+ /** Phone number */
1665
+ phone: string | null;
1666
+ /** Date of birth in YYYY-MM-DD format */
1667
+ dateOfBirth: string | null;
1668
+ /** ISO 3166-1 alpha-2 nationality code */
1669
+ nationality: string | null;
1670
+ /** ISO 639-1 language code */
1671
+ language: string | null;
1672
+ /** Guest address */
1673
+ address: GuestAddress | null;
1674
+ /** Company name */
1675
+ company: string | null;
1676
+ /** Passport number */
1677
+ passportNumber: string | null;
1678
+ /** National ID number */
1679
+ idNumber: string | null;
1680
+ /** Free-text notes */
1681
+ notes: string | null;
1682
+ /** Tags for categorization */
1683
+ tags: string[];
1684
+ /** How the guest was acquired */
1685
+ source: string | null;
1686
+ /** Open bag for custom data */
1687
+ metadata: Record<string, unknown> | null;
1688
+ /** Record creation timestamp */
1689
+ createdAt: string;
1690
+ /** Record last-update timestamp */
1691
+ updatedAt: string;
1692
+ /** Soft-delete timestamp, null if active */
1693
+ deletedAt: string | null;
1694
+ }
1695
+ /** Input for creating a new guest */
1696
+ interface CreateGuestInput {
1697
+ /** First name (required) */
1698
+ firstName: string;
1699
+ /** Last name (required) */
1700
+ lastName: string;
1701
+ /** Email address */
1702
+ email?: string;
1703
+ /** Phone number */
1704
+ phone?: string;
1705
+ /** Date of birth in YYYY-MM-DD format */
1706
+ dateOfBirth?: string;
1707
+ /** ISO 3166-1 alpha-2 nationality code */
1708
+ nationality?: string;
1709
+ /** ISO 639-1 language code */
1710
+ language?: string;
1711
+ /** Guest address */
1712
+ address?: GuestAddress;
1713
+ /** Company name */
1714
+ company?: string;
1715
+ /** Passport number */
1716
+ passportNumber?: string;
1717
+ /** National ID number */
1718
+ idNumber?: string;
1719
+ /** Free-text notes */
1720
+ notes?: string;
1721
+ /** Tags for categorization */
1722
+ tags?: string[];
1723
+ /** How the guest was acquired */
1724
+ source?: string;
1725
+ /** Custom metadata */
1726
+ metadata?: Record<string, unknown>;
1727
+ }
1728
+ /** Input for updating an existing guest — all fields optional */
1729
+ interface UpdateGuestInput {
1730
+ /** Update first name */
1731
+ firstName?: string;
1732
+ /** Update last name */
1733
+ lastName?: string;
1734
+ /** Update email */
1735
+ email?: string | null;
1736
+ /** Update phone */
1737
+ phone?: string | null;
1738
+ /** Update date of birth */
1739
+ dateOfBirth?: string | null;
1740
+ /** Update nationality */
1741
+ nationality?: string | null;
1742
+ /** Update language */
1743
+ language?: string | null;
1744
+ /** Update address */
1745
+ address?: GuestAddress | null;
1746
+ /** Update company */
1747
+ company?: string | null;
1748
+ /** Update passport number */
1749
+ passportNumber?: string | null;
1750
+ /** Update ID number */
1751
+ idNumber?: string | null;
1752
+ /** Update notes */
1753
+ notes?: string | null;
1754
+ /** Update tags */
1755
+ tags?: string[];
1756
+ /** Update source */
1757
+ source?: string | null;
1758
+ /** Update metadata */
1759
+ metadata?: Record<string, unknown> | null;
1760
+ }
1761
+ /** Sort configuration for guest list queries */
1762
+ interface GuestSort {
1763
+ /** Field to sort by */
1764
+ field: "firstName" | "lastName" | "email" | "createdAt" | "updatedAt";
1765
+ /** Sort direction */
1766
+ direction: "asc" | "desc";
1767
+ }
1768
+ /** Query parameters for listing guests */
1769
+ interface ListGuestsParams {
1770
+ /** Filter by tags (guests matching any of these tags) */
1771
+ tags?: string[];
1772
+ /** Filter by source */
1773
+ source?: string;
1774
+ /** Filter by creation date (from) */
1775
+ createdFrom?: string;
1776
+ /** Filter by creation date (to) */
1777
+ createdTo?: string;
1778
+ /** Sort configuration */
1779
+ sort?: GuestSort;
1780
+ /** Maximum results per page */
1781
+ limit?: number;
1782
+ /** Pagination cursor */
1783
+ cursor?: string;
1784
+ }
1785
+ /** Paginated list of guests */
1786
+ interface PaginatedGuests {
1787
+ /** Guests in this page */
1788
+ data: Guest[];
1789
+ /** Total number of matching guests */
1790
+ totalCount: number;
1791
+ /** Cursor for next page, null if no more results */
1792
+ cursor: string | null;
1793
+ /** Whether more results are available */
1794
+ hasMore: boolean;
1795
+ }
1796
+ /** Parameters for searching guests */
1797
+ interface SearchGuestsParams {
1798
+ /** Maximum results to return */
1799
+ limit?: number;
1800
+ /** Fields to search in (e.g., ["firstName", "lastName", "email"]) */
1801
+ fields?: string[];
1802
+ }
1803
+ /** A guest match from a search, includes relevance score */
1804
+ interface GuestMatch extends Guest {
1805
+ /** Relevance score between 0 and 1 (1 = exact match) */
1806
+ score: number;
1807
+ }
1808
+ /** Result of a guest search */
1809
+ interface GuestSearchResult {
1810
+ /** Matching guests sorted by score (highest first) */
1811
+ data: GuestMatch[];
1812
+ /** Total number of matches */
1813
+ totalCount: number;
1814
+ }
1815
+ /** A potential duplicate candidate */
1816
+ interface DuplicateCandidate {
1817
+ /** The potential duplicate guest */
1818
+ guest: Guest;
1819
+ /** Confidence score between 0 and 1 (1 = certain duplicate) */
1820
+ confidence: number;
1821
+ /** Fields that matched (e.g., ["email", "phone"]) */
1822
+ matchedFields: string[];
1823
+ }
1824
+ /** Result of duplicate detection */
1825
+ interface GuestDuplicateResult {
1826
+ /** Potential duplicates sorted by confidence (highest first) */
1827
+ data: DuplicateCandidate[];
1828
+ }
1829
+ /** Input for merging duplicate guests into a primary profile */
1830
+ interface MergeGuestsInput {
1831
+ /** IDs of duplicate guests to merge into the primary (required, non-empty) */
1832
+ duplicateIds: string[];
1833
+ }
1834
+ /**
1835
+ * Guest preferences with typed common fields and a custom catch-all.
1836
+ *
1837
+ * Common fields cover typical hospitality preferences.
1838
+ * Use `custom` for vertical-specific or property-specific data.
1839
+ */
1840
+ interface GuestPreferences {
1841
+ /** Preferred room type (e.g., "single", "double", "suite") */
1842
+ roomType: string | null;
1843
+ /** Preferred floor (e.g., "high", "low", "ground") */
1844
+ floorPreference: string | null;
1845
+ /** Preferred bed type (e.g., "king", "twin", "queen") */
1846
+ bedType: string | null;
1847
+ /** Dietary requirements (e.g., "vegetarian", "vegan", "gluten-free") */
1848
+ dietary: string[];
1849
+ /** Known allergies */
1850
+ allergies: string[];
1851
+ /** Preferred communication channel (e.g., "email", "sms", "whatsapp") */
1852
+ communicationChannel: string | null;
1853
+ /** Preferred language for communication */
1854
+ language: string | null;
1855
+ /** Smoking preference */
1856
+ smoking: boolean | null;
1857
+ /** Accessibility requirements */
1858
+ accessibility: string[];
1859
+ /** Free-text special requests */
1860
+ specialRequests: string | null;
1861
+ /** Catch-all for vertical-specific preferences */
1862
+ custom: Record<string, unknown>;
1863
+ }
1864
+ /** Input for updating guest preferences — all fields optional, partial merge */
1865
+ interface UpdateGuestPreferences {
1866
+ /** Update room type preference */
1867
+ roomType?: string | null;
1868
+ /** Update floor preference */
1869
+ floorPreference?: string | null;
1870
+ /** Update bed type preference */
1871
+ bedType?: string | null;
1872
+ /** Update dietary requirements */
1873
+ dietary?: string[];
1874
+ /** Update allergies */
1875
+ allergies?: string[];
1876
+ /** Update communication channel */
1877
+ communicationChannel?: string | null;
1878
+ /** Update language preference */
1879
+ language?: string | null;
1880
+ /** Update smoking preference */
1881
+ smoking?: boolean | null;
1882
+ /** Update accessibility requirements */
1883
+ accessibility?: string[];
1884
+ /** Update special requests */
1885
+ specialRequests?: string | null;
1886
+ /** Update custom preferences (merged, not replaced) */
1887
+ custom?: Record<string, unknown>;
1888
+ }
1889
+ /** Parameters for guest history queries */
1890
+ interface GuestHistoryParams {
1891
+ /** Maximum results per page */
1892
+ limit?: number;
1893
+ /** Pagination cursor */
1894
+ cursor?: string;
1895
+ /** Filter from date in YYYY-MM-DD format */
1896
+ from?: string;
1897
+ /** Filter to date in YYYY-MM-DD format */
1898
+ to?: string;
1899
+ }
1900
+ /** Lightweight booking summary for guest history */
1901
+ interface GuestBookingSummary {
1902
+ /** Booking identifier */
1903
+ id: string;
1904
+ /** Property identifier */
1905
+ propertyId: string;
1906
+ /** Property display name */
1907
+ propertyName: string;
1908
+ /** Booking type */
1909
+ type: BookingType;
1910
+ /** Booking status */
1911
+ status: BookingStatus;
1912
+ /** Check-in date */
1913
+ checkIn: string;
1914
+ /** Check-out date */
1915
+ checkOut: string;
1916
+ /** Total amount in cents */
1917
+ totalAmount: number;
1918
+ /** ISO 4217 currency code */
1919
+ currency: string;
1920
+ }
1921
+ /** Lightweight folio summary for guest history */
1922
+ interface GuestFolioSummary {
1923
+ /** Folio identifier */
1924
+ id: string;
1925
+ /** Associated booking ID */
1926
+ bookingId: string;
1927
+ /** Property identifier */
1928
+ propertyId: string;
1929
+ /** Folio status */
1930
+ status: string;
1931
+ /** Total charges in cents */
1932
+ totalCharges: number;
1933
+ /** Total payments in cents */
1934
+ totalPayments: number;
1935
+ /** Outstanding balance in cents */
1936
+ balance: number;
1937
+ /** ISO 4217 currency code */
1938
+ currency: string;
1939
+ /** When the folio was closed, null if open */
1940
+ closedAt: string | null;
1941
+ }
1942
+ /** Lightweight order summary for guest history */
1943
+ interface GuestOrderSummary {
1944
+ /** Order identifier */
1945
+ id: string;
1946
+ /** Property identifier */
1947
+ propertyId: string;
1948
+ /** Order type */
1949
+ type: string;
1950
+ /** Order status */
1951
+ status: string;
1952
+ /** Total amount in cents */
1953
+ totalAmount: number;
1954
+ /** ISO 4217 currency code */
1955
+ currency: string;
1956
+ /** Number of items in the order */
1957
+ items: number;
1958
+ /** Order creation timestamp */
1959
+ createdAt: string;
1960
+ }
1961
+ /** Paginated list of guest booking summaries */
1962
+ interface PaginatedGuestBookings {
1963
+ /** Booking summaries in this page */
1964
+ data: GuestBookingSummary[];
1965
+ /** Total number of bookings */
1966
+ totalCount: number;
1967
+ /** Cursor for next page, null if no more results */
1968
+ cursor: string | null;
1969
+ /** Whether more results are available */
1970
+ hasMore: boolean;
1971
+ }
1972
+ /** Paginated list of guest folio summaries */
1973
+ interface PaginatedGuestFolios {
1974
+ /** Folio summaries in this page */
1975
+ data: GuestFolioSummary[];
1976
+ /** Total number of folios */
1977
+ totalCount: number;
1978
+ /** Cursor for next page, null if no more results */
1979
+ cursor: string | null;
1980
+ /** Whether more results are available */
1981
+ hasMore: boolean;
1982
+ }
1983
+ /** Paginated list of guest order summaries */
1984
+ interface PaginatedGuestOrders {
1985
+ /** Order summaries in this page */
1986
+ data: GuestOrderSummary[];
1987
+ /** Total number of orders */
1988
+ totalCount: number;
1989
+ /** Cursor for next page, null if no more results */
1990
+ cursor: string | null;
1991
+ /** Whether more results are available */
1992
+ hasMore: boolean;
1993
+ }
1994
+
1995
+ /**
1996
+ * Service for managing guest profiles in the Atzentis Booking API.
1997
+ *
1998
+ * Provides full CRUD, search with scoring, duplicate detection,
1999
+ * profile merging, preferences management, and cross-domain history
2000
+ * (bookings, folios, orders).
2001
+ *
2002
+ * @example
2003
+ * ```typescript
2004
+ * const booking = new BookingClient({ apiKey: "atz_io_live_xxxxx" });
2005
+ *
2006
+ * // Create a guest
2007
+ * const guest = await booking.guests.create({
2008
+ * firstName: "John",
2009
+ * lastName: "Doe",
2010
+ * email: "john@example.com",
2011
+ * });
2012
+ *
2013
+ * // Search for guests
2014
+ * const results = await booking.guests.search("Doe");
2015
+ *
2016
+ * // Get booking history
2017
+ * const history = await booking.guests.getBookings(guest.id);
2018
+ * ```
2019
+ */
2020
+ declare class GuestsService extends BaseService {
2021
+ protected readonly basePath = "/guest/v1/profiles";
2022
+ /**
2023
+ * Create a new guest profile.
2024
+ *
2025
+ * @example
2026
+ * ```typescript
2027
+ * const guest = await client.guests.create({
2028
+ * firstName: "Maria",
2029
+ * lastName: "Papadopoulou",
2030
+ * email: "maria@example.com",
2031
+ * phone: "+30 210 1234567",
2032
+ * nationality: "GR",
2033
+ * });
2034
+ * ```
2035
+ */
2036
+ create(input: CreateGuestInput): Promise<Guest>;
2037
+ /**
2038
+ * Get a single guest by ID.
2039
+ *
2040
+ * @example
2041
+ * ```typescript
2042
+ * const guest = await client.guests.get("guest_42");
2043
+ * ```
2044
+ */
2045
+ get(guestId: string): Promise<Guest>;
2046
+ /**
2047
+ * List guests with optional filters and cursor-based pagination.
2048
+ *
2049
+ * @example
2050
+ * ```typescript
2051
+ * const page = await client.guests.list({
2052
+ * tags: ["vip", "returning"],
2053
+ * sort: { field: "lastName", direction: "asc" },
2054
+ * limit: 20,
2055
+ * });
2056
+ * ```
2057
+ */
2058
+ list(params?: ListGuestsParams): Promise<PaginatedGuests>;
2059
+ /**
2060
+ * Update an existing guest profile.
2061
+ *
2062
+ * @example
2063
+ * ```typescript
2064
+ * const updated = await client.guests.update("guest_42", {
2065
+ * email: "maria.new@example.com",
2066
+ * tags: ["vip"],
2067
+ * });
2068
+ * ```
2069
+ */
2070
+ update(guestId: string, input: UpdateGuestInput): Promise<Guest>;
2071
+ /**
2072
+ * Delete a guest profile (soft-delete).
2073
+ *
2074
+ * @example
2075
+ * ```typescript
2076
+ * await client.guests.delete("guest_42");
2077
+ * ```
2078
+ */
2079
+ delete(guestId: string): Promise<void>;
2080
+ /**
2081
+ * Search guests by name, email, phone, or passport number.
2082
+ *
2083
+ * Returns results sorted by relevance score (highest first).
2084
+ *
2085
+ * @param query - Search query string
2086
+ * @param params - Optional search parameters (limit, fields)
2087
+ *
2088
+ * @example
2089
+ * ```typescript
2090
+ * // Search by name
2091
+ * const results = await client.guests.search("Papadopoulos");
2092
+ *
2093
+ * // Search by email with field filter
2094
+ * const results2 = await client.guests.search("maria@", {
2095
+ * fields: ["email"],
2096
+ * limit: 5,
2097
+ * });
2098
+ * ```
2099
+ */
2100
+ search(query: string, params?: SearchGuestsParams): Promise<GuestSearchResult>;
2101
+ /**
2102
+ * Find potential duplicate profiles for a guest.
2103
+ *
2104
+ * Returns candidates sorted by confidence score (highest first).
2105
+ *
2106
+ * @throws {NotFoundError} 404 if the guest is not found
2107
+ *
2108
+ * @example
2109
+ * ```typescript
2110
+ * const duplicates = await client.guests.findDuplicates("guest_42");
2111
+ * for (const dup of duplicates.data) {
2112
+ * console.log(`${dup.guest.firstName} — ${dup.confidence} (${dup.matchedFields})`);
2113
+ * }
2114
+ * ```
2115
+ */
2116
+ findDuplicates(guestId: string): Promise<GuestDuplicateResult>;
2117
+ /**
2118
+ * Merge duplicate guest profiles into a primary profile.
2119
+ *
2120
+ * **Warning: This operation is irreversible.** All history from duplicate
2121
+ * profiles is transferred to the primary. Duplicate profiles are soft-deleted.
2122
+ *
2123
+ * @throws {NotFoundError} 404 if primary or any duplicate is not found
2124
+ * @throws {ConflictError} 409 if attempting to merge a guest into itself
2125
+ * @throws {ValidationError} 400 if duplicateIds is empty
2126
+ *
2127
+ * @example
2128
+ * ```typescript
2129
+ * const merged = await client.guests.merge("guest_primary", {
2130
+ * duplicateIds: ["guest_dup1", "guest_dup2"],
2131
+ * });
2132
+ * ```
2133
+ */
2134
+ merge(primaryId: string, input: MergeGuestsInput): Promise<Guest>;
2135
+ /**
2136
+ * Get guest preferences.
2137
+ *
2138
+ * Returns default/empty preferences if none have been set (does not throw 404).
2139
+ *
2140
+ * @throws {NotFoundError} 404 if the guest is not found
2141
+ *
2142
+ * @example
2143
+ * ```typescript
2144
+ * const prefs = await client.guests.getPreferences("guest_42");
2145
+ * console.log(prefs.dietary, prefs.roomType);
2146
+ * ```
2147
+ */
2148
+ getPreferences(guestId: string): Promise<GuestPreferences>;
2149
+ /**
2150
+ * Update guest preferences (partial merge).
2151
+ *
2152
+ * Only provided fields are updated; unspecified fields retain their values.
2153
+ *
2154
+ * @throws {NotFoundError} 404 if the guest is not found
2155
+ *
2156
+ * @example
2157
+ * ```typescript
2158
+ * const updated = await client.guests.updatePreferences("guest_42", {
2159
+ * dietary: ["vegetarian"],
2160
+ * roomType: "suite",
2161
+ * custom: { pillow: "firm" },
2162
+ * });
2163
+ * ```
2164
+ */
2165
+ updatePreferences(guestId: string, input: UpdateGuestPreferences): Promise<GuestPreferences>;
2166
+ /**
2167
+ * Get a guest's booking history.
2168
+ *
2169
+ * Returns lightweight booking summaries with pagination support.
2170
+ *
2171
+ * @throws {NotFoundError} 404 if the guest is not found
2172
+ *
2173
+ * @example
2174
+ * ```typescript
2175
+ * const bookings = await client.guests.getBookings("guest_42", {
2176
+ * from: "2025-01-01",
2177
+ * to: "2025-12-31",
2178
+ * limit: 10,
2179
+ * });
2180
+ * ```
2181
+ */
2182
+ getBookings(guestId: string, params?: GuestHistoryParams): Promise<PaginatedGuestBookings>;
2183
+ /**
2184
+ * Get a guest's folio history.
2185
+ *
2186
+ * Returns lightweight folio summaries with pagination support.
2187
+ *
2188
+ * @throws {NotFoundError} 404 if the guest is not found
2189
+ *
2190
+ * @example
2191
+ * ```typescript
2192
+ * const folios = await client.guests.getFolios("guest_42");
2193
+ * ```
2194
+ */
2195
+ getFolios(guestId: string, params?: GuestHistoryParams): Promise<PaginatedGuestFolios>;
2196
+ /**
2197
+ * Get a guest's order history.
2198
+ *
2199
+ * Returns lightweight order summaries with pagination support.
2200
+ *
2201
+ * @throws {NotFoundError} 404 if the guest is not found
2202
+ *
2203
+ * @example
2204
+ * ```typescript
2205
+ * const orders = await client.guests.getOrders("guest_42", {
2206
+ * limit: 5,
2207
+ * cursor: "next_page",
2208
+ * });
2209
+ * ```
2210
+ */
2211
+ getOrders(guestId: string, params?: GuestHistoryParams): Promise<PaginatedGuestOrders>;
2212
+ /** Build query params from GuestHistoryParams, omitting undefined values */
2213
+ private _buildHistoryQuery;
2214
+ }
2215
+
2216
+ /** Supported payment providers */
2217
+ type PaymentProvider = "stripe" | "viva_wallet";
2218
+ /** Status of a payment */
2219
+ type PaymentStatus = "succeeded" | "pending" | "failed" | "requires_action";
2220
+ /** A processed payment */
2221
+ interface Payment {
2222
+ id: string;
2223
+ bookingId: string;
2224
+ amount: number;
2225
+ currency: string;
2226
+ status: PaymentStatus;
2227
+ provider: PaymentProvider;
2228
+ providerTransactionId: string | null;
2229
+ paymentMethodId: string | null;
2230
+ description: string | null;
2231
+ metadata: Record<string, unknown> | null;
2232
+ createdAt: string;
2233
+ updatedAt: string;
2234
+ }
2235
+ /** Input for processing a payment */
2236
+ interface ProcessPaymentInput {
2237
+ bookingId: string;
2238
+ amount: number;
2239
+ currency: string;
2240
+ paymentMethodId?: string;
2241
+ description?: string;
2242
+ metadata?: Record<string, unknown>;
2243
+ }
2244
+ /** Status of a refund */
2245
+ type RefundStatus = "succeeded" | "pending" | "failed";
2246
+ /** A refund applied to a payment */
2247
+ interface Refund {
2248
+ id: string;
2249
+ paymentId: string;
2250
+ amount: number;
2251
+ status: RefundStatus;
2252
+ reason: string | null;
2253
+ createdAt: string;
2254
+ }
2255
+ /** Input for refunding a payment */
2256
+ interface RefundInput {
2257
+ amount?: number;
2258
+ reason?: string;
2259
+ }
2260
+ /** Type of transaction */
2261
+ type TransactionType = "payment" | "refund" | "authorization" | "capture";
2262
+ /** A financial transaction record */
2263
+ interface Transaction {
2264
+ id: string;
2265
+ type: TransactionType;
2266
+ bookingId: string | null;
2267
+ amount: number;
2268
+ currency: string;
2269
+ status: string;
2270
+ provider: PaymentProvider;
2271
+ providerTransactionId: string | null;
2272
+ metadata: Record<string, unknown> | null;
2273
+ createdAt: string;
2274
+ }
2275
+ /** Parameters for listing transactions */
2276
+ interface ListTransactionsParams {
2277
+ bookingId?: string;
2278
+ status?: string;
2279
+ provider?: PaymentProvider;
2280
+ type?: TransactionType;
2281
+ from?: string;
2282
+ to?: string;
2283
+ limit?: number;
2284
+ cursor?: string;
2285
+ }
2286
+ /** Paginated list of transactions */
2287
+ type PaginatedTransactions = Paginated<Transaction>;
2288
+ /** Card details for a stored payment method */
2289
+ interface CardDetails {
2290
+ last4: string;
2291
+ brand: string;
2292
+ expMonth: number;
2293
+ expYear: number;
2294
+ }
2295
+ /** Status of a payment account (stored card) */
2296
+ type PaymentAccountStatus = "active" | "expired" | "revoked";
2297
+ /** A stored payment method (card on file) */
2298
+ interface PaymentAccount {
2299
+ id: string;
2300
+ paymentMethodId: string;
2301
+ bookingId: string | null;
2302
+ guestId: string | null;
2303
+ card: CardDetails;
2304
+ label: string | null;
2305
+ status: PaymentAccountStatus;
2306
+ metadata: Record<string, unknown> | null;
2307
+ createdAt: string;
2308
+ }
2309
+ /** Input for creating a payment account */
2310
+ interface CreatePaymentAccountInput {
2311
+ paymentMethodId: string;
2312
+ bookingId?: string;
2313
+ guestId?: string;
2314
+ label?: string;
2315
+ metadata?: Record<string, unknown>;
2316
+ }
2317
+ /** Parameters for listing payment accounts */
2318
+ interface ListPaymentAccountsParams {
2319
+ bookingId?: string;
2320
+ guestId?: string;
2321
+ status?: PaymentAccountStatus;
2322
+ limit?: number;
2323
+ cursor?: string;
2324
+ }
2325
+ /** Paginated list of payment accounts */
2326
+ type PaginatedPaymentAccounts = Paginated<PaymentAccount>;
2327
+ /** Status of a pre-authorization */
2328
+ type AuthorizationStatus = "authorized" | "expired" | "captured" | "voided";
2329
+ /** A pre-authorization hold on a stored card */
2330
+ interface Authorization {
2331
+ id: string;
2332
+ accountId: string;
2333
+ amount: number;
2334
+ currency: string;
2335
+ status: AuthorizationStatus;
2336
+ expiresAt: string;
2337
+ description: string | null;
2338
+ metadata: Record<string, unknown> | null;
2339
+ createdAt: string;
2340
+ }
2341
+ /** Input for authorizing a hold */
2342
+ interface AuthorizeInput {
2343
+ amount: number;
2344
+ currency?: string;
2345
+ description?: string;
2346
+ metadata?: Record<string, unknown>;
2347
+ }
2348
+ /** Input for capturing an authorized hold */
2349
+ interface CaptureInput {
2350
+ amount: number;
2351
+ description?: string;
2352
+ metadata?: Record<string, unknown>;
2353
+ }
2354
+ /** Status of a terminal POS transaction */
2355
+ type TerminalTransactionStatus = "pending" | "authorized" | "declined" | "timeout";
2356
+ /** A POS terminal transaction */
2357
+ interface TerminalTransaction {
2358
+ id: string;
2359
+ terminalId: string;
2360
+ amount: number;
2361
+ currency: string;
2362
+ status: TerminalTransactionStatus;
2363
+ cardPresent: boolean;
2364
+ bookingId: string | null;
2365
+ description: string | null;
2366
+ metadata: Record<string, unknown> | null;
2367
+ createdAt: string;
2368
+ }
2369
+ /** Input for terminal authorization */
2370
+ interface TerminalAuthorizeInput {
2371
+ amount: number;
2372
+ terminalId: string;
2373
+ bookingId?: string;
2374
+ description?: string;
2375
+ currency?: string;
2376
+ metadata?: Record<string, unknown>;
2377
+ }
2378
+ /** Status of an IRIS bank transfer */
2379
+ type IrisTransferStatus = "initiated" | "completed" | "failed" | "expired";
2380
+ /** An IRIS instant bank transfer */
2381
+ interface IrisTransfer {
2382
+ id: string;
2383
+ amount: number;
2384
+ currency: string;
2385
+ guestId: string;
2386
+ bookingId: string | null;
2387
+ status: IrisTransferStatus;
2388
+ paymentUrl: string;
2389
+ expiresAt: string;
2390
+ description: string | null;
2391
+ metadata: Record<string, unknown> | null;
2392
+ createdAt: string;
2393
+ completedAt: string | null;
2394
+ }
2395
+ /** Input for initiating an IRIS transfer */
2396
+ interface IrisInitiateInput {
2397
+ amount: number;
2398
+ guestId: string;
2399
+ bookingId?: string;
2400
+ description?: string;
2401
+ returnUrl?: string;
2402
+ metadata?: Record<string, unknown>;
2403
+ }
2404
+
2405
+ /**
2406
+ * Service for payment operations in the Atzentis Booking API.
2407
+ *
2408
+ * Supports Stripe and Viva Wallet providers with payment processing,
2409
+ * refunds, stored card management (authorize/capture), POS terminal
2410
+ * operations, and IRIS Greek bank transfers.
2411
+ *
2412
+ * @example
2413
+ * ```typescript
2414
+ * const booking = new BookingClient({ apiKey: "atz_io_live_xxxxx" });
2415
+ *
2416
+ * // Process a payment
2417
+ * const payment = await booking.payments.process({
2418
+ * bookingId: "bk_abc123",
2419
+ * amount: 15000,
2420
+ * currency: "EUR",
2421
+ * });
2422
+ *
2423
+ * // Partial refund
2424
+ * const refund = await booking.payments.refund(payment.id, {
2425
+ * amount: 5000,
2426
+ * reason: "Early checkout",
2427
+ * });
2428
+ * ```
2429
+ */
2430
+ declare class PaymentsService extends BaseService {
2431
+ protected readonly basePath = "/payment/v1";
2432
+ /** Process a payment for a booking */
2433
+ process(input: ProcessPaymentInput): Promise<Payment>;
2434
+ /** Refund a payment (full or partial) */
2435
+ refund(paymentId: string, input?: RefundInput): Promise<Refund>;
2436
+ /** Get a transaction by ID */
2437
+ getTransaction(transactionId: string): Promise<Transaction>;
2438
+ /** List transactions with optional filters */
2439
+ listTransactions(params?: ListTransactionsParams): Promise<PaginatedTransactions>;
2440
+ /** Create a payment account (store a card on file) */
2441
+ createAccount(input: CreatePaymentAccountInput): Promise<PaymentAccount>;
2442
+ /** Get a payment account by ID */
2443
+ getAccount(accountId: string): Promise<PaymentAccount>;
2444
+ /** List payment accounts with optional filters */
2445
+ listAccounts(params?: ListPaymentAccountsParams): Promise<PaginatedPaymentAccounts>;
2446
+ /** Delete a payment account */
2447
+ deleteAccount(accountId: string): Promise<void>;
2448
+ /** Authorize a hold on a stored card */
2449
+ authorize(accountId: string, input: AuthorizeInput): Promise<Authorization>;
2450
+ /** Capture a previously authorized hold */
2451
+ capture(accountId: string, input: CaptureInput): Promise<Payment>;
2452
+ /** Initiate a POS terminal payment authorization */
2453
+ terminalAuthorize(input: TerminalAuthorizeInput): Promise<TerminalTransaction>;
2454
+ /** Initiate an IRIS instant bank transfer */
2455
+ irisInitiate(input: IrisInitiateInput): Promise<IrisTransfer>;
2456
+ /** Get the status of an IRIS transfer */
2457
+ irisStatus(transferId: string): Promise<IrisTransfer>;
2458
+ }
2459
+
1200
2460
  /**
1201
2461
  * Service for managing properties in the Atzentis Booking API.
1202
2462
  *
@@ -1418,6 +2678,10 @@ declare class BookingClient {
1418
2678
  readonly httpClient: HttpClient;
1419
2679
  private _availability?;
1420
2680
  private _bookings?;
2681
+ private _distribution?;
2682
+ private _finance?;
2683
+ private _guests?;
2684
+ private _payments?;
1421
2685
  private _properties?;
1422
2686
  private _categories?;
1423
2687
  private _spaces?;
@@ -1426,6 +2690,14 @@ declare class BookingClient {
1426
2690
  get availability(): AvailabilityService;
1427
2691
  /** Bookings service — lazy-initialized on first access */
1428
2692
  get bookings(): BookingsService;
2693
+ /** Distribution service — lazy-initialized on first access */
2694
+ get distribution(): DistributionService;
2695
+ /** Finance service — lazy-initialized on first access */
2696
+ get finance(): FinanceService;
2697
+ /** Guests service — lazy-initialized on first access */
2698
+ get guests(): GuestsService;
2699
+ /** Payments service — lazy-initialized on first access */
2700
+ get payments(): PaymentsService;
1429
2701
  /** Properties service — lazy-initialized on first access */
1430
2702
  get properties(): PropertiesService;
1431
2703
  /** Categories service — lazy-initialized on first access */
@@ -1514,4 +2786,4 @@ declare function firstPage<T>(fetcher: PageFetcher<T>, options?: PaginationOptio
1514
2786
 
1515
2787
  declare const VERSION = "0.1.0";
1516
2788
 
1517
- export { type AssignSpaceInput, AuthenticationError, type AvailabilityCheckParams, type AvailabilityPricing, type AvailabilityRestrictions, type AvailabilityResult, type AvailabilitySearchParams, type AvailabilitySearchResult, type AvailabilitySearchResultEntry, AvailabilityService, type AvailableSpace, BOOKING_STATUSES, BOOKING_TYPES, type Booking, BookingClient, type BookingClientConfig, BookingError, type BookingErrorOptions, type BookingGuest, type BookingPricing, type BookingSort, type BookingSpace, type BookingStatus, type BookingType, BookingsService, type BulkUpdateSpaceInput, type CalendarDay, type CalendarParams, type CancelBookingInput, CategoriesService, type CheckInInput, type CheckOutInput, ConflictError, type Coordinates, type CreateBookingInput, type CreateCategoryInput, type CreatePropertyInput, type CreateSpaceInput, DEFAULT_MODULES, ForbiddenError, HttpClient, type HttpClientOptions, type HttpMethod, type HttpResponse, type LinkPosTableInput, type ListBookingsParams, type ListCategoriesParams, type ListPropertiesParams, type ListSpacesParams, type Logger, type NoShowInput, NotFoundError, PROPERTY_MODULES, type PageFetcher, type Paginated, type PaginatedBookings, type PaginationOptions, PaymentError, type PriceRange, type PricingParams, type PricingResult, PropertiesService, type Property, type PropertyAddress, type PropertyModules, type PropertyStatus, type PropertyType, RateLimitError, type RequestOptions, type ResolvedBookingClientConfig, type RetryConfig, type RetryOptions, SPACE_STATUSES, SPACE_TYPES, ServerError, type ServiceSlotParams, type ServiceTimeSlot, type Space, type SpaceCategory, type SpaceStatus, type SpaceType, SpacesService, type TableSlotParams, type TimeSlot, TimeoutError, type UpdateBookingInput, type UpdateCategoryInput, type UpdatePropertyInput, type UpdateSpaceInput, VERSION, ValidationError, bookingClientConfigSchema, createErrorFromResponse, firstPage, paginate };
2789
+ export { type AccountingDailyReport, type AccountingReportParams, type AccountingRevenueReport, type AccountingVatReport, type AssignSpaceInput, AuthenticationError, type Authorization, type AuthorizationStatus, type AuthorizeInput, type AvailabilityCheckParams, type AvailabilityPricing, type AvailabilityRestrictions, type AvailabilityResult, type AvailabilitySearchParams, type AvailabilitySearchResult, type AvailabilitySearchResultEntry, AvailabilityService, type AvailableSpace, BOOKING_STATUSES, BOOKING_TYPES, type Booking, BookingClient, type BookingClientConfig, BookingError, type BookingErrorOptions, type BookingGuest, type BookingPricing, type BookingSort, type BookingSpace, type BookingStatus, type BookingType, BookingsService, type BulkUpdateSpaceInput, type CalendarDay, type CalendarParams, type CancelBookingInput, type CaptureInput, type CardDetails, CategoriesService, type Channel, type ChannelCredentials, type ChannelMapping, type ChannelSettings, type ChannelStatus, type ChannelType, type ChargeType, type CheckInInput, type CheckOutInput, ConflictError, type Coordinates, type CreateBookingInput, type CreateCategoryInput, type CreateChannelInput, type CreateChargeInput, type CreateFolioInput, type CreateFolioPaymentInput, type CreateGuestInput, type CreateInvoiceInput, type CreateMappingInput, type CreatePaymentAccountInput, type CreatePropertyInput, type CreateSpaceInput, DEFAULT_MODULES, DistributionService, type DuplicateCandidate, FinanceService, type Folio, type FolioCharge, type FolioPayment, type FolioStatus, ForbiddenError, type Guest, type GuestAddress, type GuestBookingSummary, type GuestDuplicateResult, type GuestFolioSummary, type GuestHistoryParams, type GuestMatch, type GuestOrderSummary, type GuestPreferences, type GuestSearchResult, type GuestSort, GuestsService, HttpClient, type HttpClientOptions, type HttpMethod, type HttpResponse, type ICalExportResult, type ICalImportInput, type ICalImportResult, type Invoice, type InvoiceStatus, type IrisInitiateInput, type IrisTransfer, type IrisTransferStatus, type LinkPosTableInput, type ListBookingsParams, type ListCategoriesParams, type ListChannelsParams, type ListChargesParams, type ListFolioPaymentsParams, type ListFoliosParams, type ListGuestsParams, type ListMappingsParams, type ListPaymentAccountsParams, type ListPropertiesParams, type ListSpacesParams, type ListTransactionsParams, type Logger, type MergeGuestsInput, type MoveChargesInput, type NoShowInput, NotFoundError, PROPERTY_MODULES, type PageFetcher, type Paginated, type PaginatedBookings, type PaginatedChannels, type PaginatedCharges, type PaginatedFolioPayments, type PaginatedFolios, type PaginatedGuestBookings, type PaginatedGuestFolios, type PaginatedGuestOrders, type PaginatedGuests, type PaginatedMappings, type PaginatedPaymentAccounts, type PaginatedSyncLog, type PaginatedTransactions, type PaginationOptions, type Payment, type PaymentAccount, type PaymentAccountStatus, PaymentError, type PaymentProvider, type PaymentStatus, PaymentsService, type PriceRange, type PricingParams, type PricingResult, type ProcessPaymentInput, PropertiesService, type Property, type PropertyAddress, type PropertyModules, type PropertyStatus, type PropertyType, type PullSyncInput, type PushSyncInput, RateLimitError, type Refund, type RefundInput, type RefundStatus, type RequestOptions, type ResolvedBookingClientConfig, type RetryConfig, type RetryOptions, SPACE_STATUSES, SPACE_TYPES, type SearchGuestsParams, ServerError, type ServiceSlotParams, type ServiceTimeSlot, type Space, type SpaceCategory, type SpaceStatus, type SpaceType, SpacesService, type SyncError, type SyncLogParams, type SyncOperation, type SyncOperationStatus, type SyncOperationType, type SyncStats, type TableSlotParams, type TerminalAuthorizeInput, type TerminalTransaction, type TerminalTransactionStatus, type TimeSlot, TimeoutError, type Transaction, type TransactionType, type UpdateBookingInput, type UpdateCategoryInput, type UpdateChannelInput, type UpdateFolioInput, type UpdateGuestInput, type UpdateGuestPreferences, type UpdatePropertyInput, type UpdateSpaceInput, VERSION, ValidationError, type VatBreakdownEntry, bookingClientConfigSchema, createErrorFromResponse, firstPage, paginate };