@epostak/sdk 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +94 -396
  2. package/dist/client.d.ts +30 -8
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +28 -11
  5. package/dist/client.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/resources/account.d.ts +25 -0
  9. package/dist/resources/account.d.ts.map +1 -1
  10. package/dist/resources/account.js +25 -0
  11. package/dist/resources/account.js.map +1 -1
  12. package/dist/resources/documents.d.ts +265 -1
  13. package/dist/resources/documents.d.ts.map +1 -1
  14. package/dist/resources/documents.js +265 -1
  15. package/dist/resources/documents.js.map +1 -1
  16. package/dist/resources/extract.d.ts +58 -0
  17. package/dist/resources/extract.d.ts.map +1 -1
  18. package/dist/resources/extract.js +64 -2
  19. package/dist/resources/extract.js.map +1 -1
  20. package/dist/resources/firms.d.ts +104 -0
  21. package/dist/resources/firms.d.ts.map +1 -1
  22. package/dist/resources/firms.js +104 -0
  23. package/dist/resources/firms.js.map +1 -1
  24. package/dist/resources/peppol.d.ts +68 -1
  25. package/dist/resources/peppol.d.ts.map +1 -1
  26. package/dist/resources/peppol.js +68 -1
  27. package/dist/resources/peppol.js.map +1 -1
  28. package/dist/resources/reporting.d.ts +28 -0
  29. package/dist/resources/reporting.d.ts.map +1 -1
  30. package/dist/resources/reporting.js +28 -0
  31. package/dist/resources/reporting.js.map +1 -1
  32. package/dist/resources/webhooks.d.ts +207 -2
  33. package/dist/resources/webhooks.d.ts.map +1 -1
  34. package/dist/resources/webhooks.js +224 -3
  35. package/dist/resources/webhooks.js.map +1 -1
  36. package/dist/types.d.ts +499 -19
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/utils/errors.d.ts +26 -4
  39. package/dist/utils/errors.d.ts.map +1 -1
  40. package/dist/utils/errors.js +26 -4
  41. package/dist/utils/errors.js.map +1 -1
  42. package/dist/utils/request.d.ts +42 -2
  43. package/dist/utils/request.d.ts.map +1 -1
  44. package/dist/utils/request.js +105 -30
  45. package/dist/utils/request.js.map +1 -1
  46. package/package.json +1 -1
@@ -1,12 +1,67 @@
1
1
  import { BaseResource, buildQuery } from "../utils/request.js";
2
+ /**
3
+ * Resource for managing firms (companies) associated with your account.
4
+ * Integrators use this to assign client firms, view their documents,
5
+ * and register Peppol identifiers.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // List all managed firms
10
+ * const firms = await client.firms.list();
11
+ *
12
+ * // Assign a new firm by ICO
13
+ * const { firm } = await client.firms.assign({ ico: '12345678' });
14
+ * ```
15
+ */
2
16
  export class FirmsResource extends BaseResource {
17
+ /**
18
+ * List all firms associated with the current account.
19
+ * For integrator keys, returns all assigned client firms.
20
+ *
21
+ * @returns Array of firm summaries
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const firms = await client.firms.list();
26
+ * firms.forEach(f => console.log(f.name, f.peppolStatus));
27
+ * ```
28
+ */
3
29
  async list() {
4
30
  const res = await this.request("GET", "/firms");
5
31
  return res.firms;
6
32
  }
33
+ /**
34
+ * Get detailed information about a specific firm, including tax IDs,
35
+ * address, and all registered Peppol identifiers.
36
+ *
37
+ * @param id - Firm UUID
38
+ * @returns Detailed firm information
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const firm = await client.firms.get('firm-uuid');
43
+ * console.log(firm.icDph); // "SK2020123456"
44
+ * ```
45
+ */
7
46
  get(id) {
8
47
  return this.request("GET", `/firms/${encodeURIComponent(id)}`);
9
48
  }
49
+ /**
50
+ * List documents belonging to a specific firm.
51
+ * Useful for integrators to view a client's document history.
52
+ *
53
+ * @param id - Firm UUID
54
+ * @param params - Optional pagination and direction filter
55
+ * @returns Paginated list of the firm's documents
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const { documents } = await client.firms.documents('firm-uuid', {
60
+ * direction: 'inbound',
61
+ * limit: 100,
62
+ * });
63
+ * ```
64
+ */
10
65
  documents(id, params) {
11
66
  return this.request("GET", `/firms/${encodeURIComponent(id)}/documents${buildQuery({
12
67
  offset: params?.offset,
@@ -14,12 +69,61 @@ export class FirmsResource extends BaseResource {
14
69
  direction: params?.direction,
15
70
  })}`);
16
71
  }
72
+ /**
73
+ * Register a new Peppol identifier for a firm. This enables the firm
74
+ * to send and receive documents on the Peppol network under this identifier.
75
+ *
76
+ * @param id - Firm UUID
77
+ * @param peppolId - Peppol identifier with scheme and value
78
+ * @returns The registered identifier details
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const result = await client.firms.registerPeppolId('firm-uuid', {
83
+ * scheme: '0245',
84
+ * identifier: '1234567890',
85
+ * });
86
+ * console.log(result.peppolId); // "0245:1234567890"
87
+ * ```
88
+ */
17
89
  registerPeppolId(id, peppolId) {
18
90
  return this.request("POST", `/firms/${encodeURIComponent(id)}/peppol-identifiers`, peppolId);
19
91
  }
92
+ /**
93
+ * Assign a firm to the integrator account by its Slovak ICO.
94
+ * Once assigned, you can send/receive documents on behalf of this firm.
95
+ *
96
+ * @param body - Request containing the firm's ICO (8-digit Slovak business registration number)
97
+ * @returns The assigned firm details and status
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const { firm } = await client.firms.assign({ ico: '12345678' });
102
+ * console.log(firm.id); // Use this UUID for subsequent operations
103
+ * ```
104
+ */
20
105
  assign(body) {
21
106
  return this.request("POST", "/firms/assign", body);
22
107
  }
108
+ /**
109
+ * Assign multiple firms at once by their Slovak ICOs.
110
+ * Each ICO is processed independently — individual failures don't affect others.
111
+ * Maximum 50 ICOs per request.
112
+ *
113
+ * @param body - Request containing an array of ICOs
114
+ * @returns Individual results for each ICO (success or error)
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * const { results } = await client.firms.assignBatch({
119
+ * icos: ['12345678', '87654321', '11223344'],
120
+ * });
121
+ * results.forEach(r => {
122
+ * if (r.error) console.error(`${r.ico}: ${r.message}`);
123
+ * else console.log(`${r.ico}: ${r.status}`);
124
+ * });
125
+ * ```
126
+ */
23
127
  assignBatch(body) {
24
128
  return this.request("POST", "/firms/assign/batch", body);
25
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"firms.js","sourceRoot":"","sources":["../../src/resources/firms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAc/D,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAoB,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,SAAS,CACP,EAAU,EACV,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,UAAU,kBAAkB,CAAC,EAAE,CAAC,aAAa,UAAU,CAAC;YACtD,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,KAAK,EAAE,MAAM,EAAE,KAAK;YACpB,SAAS,EAAE,MAAM,EAAE,SAAS;SAC7B,CAAC,EAAE,CACL,CAAC;IACJ,CAAC;IAED,gBAAgB,CACd,EAAU,EACV,QAAgD;QAEhD,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,UAAU,kBAAkB,CAAC,EAAE,CAAC,qBAAqB,EACrD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAuB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,WAAW,CACT,IAA6B;QAE7B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;CACF"}
1
+ {"version":3,"file":"firms.js","sourceRoot":"","sources":["../../src/resources/firms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAc/D;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAoB,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CACP,EAAU,EACV,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,UAAU,kBAAkB,CAAC,EAAE,CAAC,aAAa,UAAU,CAAC;YACtD,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,KAAK,EAAE,MAAM,EAAE,KAAK;YACpB,SAAS,EAAE,MAAM,EAAE,SAAS;SAC7B,CAAC,EAAE,CACL,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,CACd,EAAU,EACV,QAAgD;QAEhD,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,UAAU,kBAAkB,CAAC,EAAE,CAAC,qBAAqB,EACrD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAuB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CACT,IAA6B;QAE7B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -1,14 +1,81 @@
1
1
  import { BaseResource } from "../utils/request.js";
2
2
  import type { ClientConfig } from "../utils/request.js";
3
3
  import type { PeppolParticipant, DirectorySearchParams, DirectorySearchResult, CompanyLookup } from "../types.js";
4
+ /**
5
+ * Sub-resource for searching the Peppol Business Card directory.
6
+ * The directory contains publicly registered Peppol participants.
7
+ */
4
8
  export declare class PeppolDirectoryResource extends BaseResource {
9
+ /**
10
+ * Search the Peppol Business Card directory for registered participants.
11
+ * Supports free-text search and country filtering with pagination.
12
+ *
13
+ * @param params - Optional search query, country filter, and pagination
14
+ * @returns Paginated search results from the directory
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Search for Slovak companies
19
+ * const { results, total } = await client.peppol.directory.search({
20
+ * q: 'consulting',
21
+ * country: 'SK',
22
+ * page_size: 50,
23
+ * });
24
+ * ```
25
+ */
5
26
  search(params?: DirectorySearchParams): Promise<DirectorySearchResult>;
6
27
  }
28
+ /**
29
+ * Resource for Peppol network operations — SMP lookups, directory search,
30
+ * and Slovak company information retrieval.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Look up a Peppol participant
35
+ * const participant = await client.peppol.lookup('0245', '1234567890');
36
+ * console.log(participant.capabilities);
37
+ *
38
+ * // Look up a Slovak company by ICO
39
+ * const company = await client.peppol.companyLookup('12345678');
40
+ * ```
41
+ */
7
42
  export declare class PeppolResource extends BaseResource {
8
- /** Access Peppol Business Card directory */
43
+ /** Sub-resource for searching the Peppol Business Card directory */
9
44
  directory: PeppolDirectoryResource;
10
45
  constructor(config: ClientConfig);
46
+ /**
47
+ * Look up a Peppol participant by their identifier scheme and value.
48
+ * Queries the SMP (Service Metadata Publisher) to retrieve the participant's
49
+ * name, country, and supported document types.
50
+ *
51
+ * @param scheme - Peppol identifier scheme (e.g. `"0245"` for Slovak DIČ)
52
+ * @param identifier - Identifier value within the scheme (e.g. `"1234567890"`)
53
+ * @returns Participant details including capabilities (supported document types)
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const participant = await client.peppol.lookup('0245', '1234567890');
58
+ * if (participant.capabilities.length > 0) {
59
+ * console.log('Supports:', participant.capabilities.map(c => c.documentTypeId));
60
+ * }
61
+ * ```
62
+ */
11
63
  lookup(scheme: string, identifier: string): Promise<PeppolParticipant>;
64
+ /**
65
+ * Look up a Slovak company by its ICO (business registration number).
66
+ * Queries Slovak business registers (ORSR, FinStat) and checks Peppol
67
+ * registration status. Returns company name, tax IDs, address, and Peppol ID.
68
+ *
69
+ * @param ico - Slovak ICO (8-digit business registration number)
70
+ * @returns Company information including Peppol registration status
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const company = await client.peppol.companyLookup('12345678');
75
+ * console.log(company.name); // "ACME s.r.o."
76
+ * console.log(company.peppolId); // "0245:1234567890" or null
77
+ * ```
78
+ */
12
79
  companyLookup(ico: string): Promise<CompanyLookup>;
13
80
  }
14
81
  //# sourceMappingURL=peppol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"peppol.d.ts","sourceRoot":"","sources":["../../src/resources/peppol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACd,MAAM,aAAa,CAAC;AAErB,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,MAAM,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAQvE;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,4CAA4C;IAC5C,SAAS,EAAE,uBAAuB,CAAC;gBAEvB,MAAM,EAAE,YAAY;IAKhC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAItE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAGnD"}
1
+ {"version":3,"file":"peppol.d.ts","sourceRoot":"","sources":["../../src/resources/peppol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACd,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACvD;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAWvE;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,oEAAoE;IACpE,SAAS,EAAE,uBAAuB,CAAC;gBAEvB,MAAM,EAAE,YAAY;IAKhC;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAOtE;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAGnD"}
@@ -1,5 +1,26 @@
1
1
  import { BaseResource, buildQuery } from "../utils/request.js";
2
+ /**
3
+ * Sub-resource for searching the Peppol Business Card directory.
4
+ * The directory contains publicly registered Peppol participants.
5
+ */
2
6
  export class PeppolDirectoryResource extends BaseResource {
7
+ /**
8
+ * Search the Peppol Business Card directory for registered participants.
9
+ * Supports free-text search and country filtering with pagination.
10
+ *
11
+ * @param params - Optional search query, country filter, and pagination
12
+ * @returns Paginated search results from the directory
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Search for Slovak companies
17
+ * const { results, total } = await client.peppol.directory.search({
18
+ * q: 'consulting',
19
+ * country: 'SK',
20
+ * page_size: 50,
21
+ * });
22
+ * ```
23
+ */
3
24
  search(params) {
4
25
  return this.request("GET", `/peppol/directory/search${buildQuery({
5
26
  q: params?.q,
@@ -9,16 +30,62 @@ export class PeppolDirectoryResource extends BaseResource {
9
30
  })}`);
10
31
  }
11
32
  }
33
+ /**
34
+ * Resource for Peppol network operations — SMP lookups, directory search,
35
+ * and Slovak company information retrieval.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // Look up a Peppol participant
40
+ * const participant = await client.peppol.lookup('0245', '1234567890');
41
+ * console.log(participant.capabilities);
42
+ *
43
+ * // Look up a Slovak company by ICO
44
+ * const company = await client.peppol.companyLookup('12345678');
45
+ * ```
46
+ */
12
47
  export class PeppolResource extends BaseResource {
13
- /** Access Peppol Business Card directory */
48
+ /** Sub-resource for searching the Peppol Business Card directory */
14
49
  directory;
15
50
  constructor(config) {
16
51
  super(config);
17
52
  this.directory = new PeppolDirectoryResource(config);
18
53
  }
54
+ /**
55
+ * Look up a Peppol participant by their identifier scheme and value.
56
+ * Queries the SMP (Service Metadata Publisher) to retrieve the participant's
57
+ * name, country, and supported document types.
58
+ *
59
+ * @param scheme - Peppol identifier scheme (e.g. `"0245"` for Slovak DIČ)
60
+ * @param identifier - Identifier value within the scheme (e.g. `"1234567890"`)
61
+ * @returns Participant details including capabilities (supported document types)
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const participant = await client.peppol.lookup('0245', '1234567890');
66
+ * if (participant.capabilities.length > 0) {
67
+ * console.log('Supports:', participant.capabilities.map(c => c.documentTypeId));
68
+ * }
69
+ * ```
70
+ */
19
71
  lookup(scheme, identifier) {
20
72
  return this.request("GET", `/peppol/participants/${encodeURIComponent(scheme)}/${encodeURIComponent(identifier)}`);
21
73
  }
74
+ /**
75
+ * Look up a Slovak company by its ICO (business registration number).
76
+ * Queries Slovak business registers (ORSR, FinStat) and checks Peppol
77
+ * registration status. Returns company name, tax IDs, address, and Peppol ID.
78
+ *
79
+ * @param ico - Slovak ICO (8-digit business registration number)
80
+ * @returns Company information including Peppol registration status
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const company = await client.peppol.companyLookup('12345678');
85
+ * console.log(company.name); // "ACME s.r.o."
86
+ * console.log(company.peppolId); // "0245:1234567890" or null
87
+ * ```
88
+ */
22
89
  companyLookup(ico) {
23
90
  return this.request("GET", `/company/lookup/${encodeURIComponent(ico)}`);
24
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"peppol.js","sourceRoot":"","sources":["../../src/resources/peppol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAS/D,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD,MAAM,CAAC,MAA8B;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,2BAA2B,UAAU,CAAC;YAC/D,CAAC,EAAE,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,OAAO;YACxB,IAAI,EAAE,MAAM,EAAE,IAAI;YAClB,SAAS,EAAE,MAAM,EAAE,SAAS;SAC7B,CAAC,EAAE,CAAC,CAAC;IACR,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,4CAA4C;IAC5C,SAAS,CAA0B;IAEnC,YAAY,MAAoB;QAC9B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,UAAkB;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrH,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"peppol.js","sourceRoot":"","sources":["../../src/resources/peppol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAS/D;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAA8B;QACnC,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,2BAA2B,UAAU,CAAC;YACpC,CAAC,EAAE,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,OAAO;YACxB,IAAI,EAAE,MAAM,EAAE,IAAI;YAClB,SAAS,EAAE,MAAM,EAAE,SAAS;SAC7B,CAAC,EAAE,CACL,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,oEAAoE;IACpE,SAAS,CAA0B;IAEnC,YAAY,MAAoB;QAC9B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAAc,EAAE,UAAkB;QACvC,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CACvF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -1,6 +1,34 @@
1
1
  import { BaseResource } from "../utils/request.js";
2
2
  import type { StatisticsParams, Statistics } from "../types.js";
3
+ /**
4
+ * Resource for retrieving document statistics and reports.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const stats = await client.reporting.statistics({ from: '2026-01-01', to: '2026-03-31' });
9
+ * console.log(`Sent: ${stats.outbound.total}, Received: ${stats.inbound.total}`);
10
+ * ```
11
+ */
3
12
  export declare class ReportingResource extends BaseResource {
13
+ /**
14
+ * Get aggregated document statistics for a time period.
15
+ * Returns counts of sent/received documents, delivery success rates,
16
+ * and acknowledgment status.
17
+ *
18
+ * @param params - Optional date range (defaults to last 30 days)
19
+ * @returns Aggregated statistics for outbound and inbound documents
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // Get stats for Q1 2026
24
+ * const stats = await client.reporting.statistics({
25
+ * from: '2026-01-01',
26
+ * to: '2026-03-31',
27
+ * });
28
+ * console.log(`Delivery rate: ${stats.outbound.delivered}/${stats.outbound.total}`);
29
+ * console.log(`Pending inbox: ${stats.inbound.pending}`);
30
+ * ```
31
+ */
4
32
  statistics(params?: StatisticsParams): Promise<Statistics>;
5
33
  }
6
34
  //# sourceMappingURL=reporting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../src/resources/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhE,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;CAM3D"}
1
+ {"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../src/resources/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhE;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;CAS3D"}
@@ -1,5 +1,33 @@
1
1
  import { BaseResource, buildQuery } from "../utils/request.js";
2
+ /**
3
+ * Resource for retrieving document statistics and reports.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const stats = await client.reporting.statistics({ from: '2026-01-01', to: '2026-03-31' });
8
+ * console.log(`Sent: ${stats.outbound.total}, Received: ${stats.inbound.total}`);
9
+ * ```
10
+ */
2
11
  export class ReportingResource extends BaseResource {
12
+ /**
13
+ * Get aggregated document statistics for a time period.
14
+ * Returns counts of sent/received documents, delivery success rates,
15
+ * and acknowledgment status.
16
+ *
17
+ * @param params - Optional date range (defaults to last 30 days)
18
+ * @returns Aggregated statistics for outbound and inbound documents
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * // Get stats for Q1 2026
23
+ * const stats = await client.reporting.statistics({
24
+ * from: '2026-01-01',
25
+ * to: '2026-03-31',
26
+ * });
27
+ * console.log(`Delivery rate: ${stats.outbound.delivered}/${stats.outbound.total}`);
28
+ * console.log(`Pending inbox: ${stats.inbound.pending}`);
29
+ * ```
30
+ */
3
31
  statistics(params) {
4
32
  return this.request("GET", `/reporting/statistics${buildQuery({
5
33
  from: params?.from,
@@ -1 +1 @@
1
- {"version":3,"file":"reporting.js","sourceRoot":"","sources":["../../src/resources/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG/D,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,UAAU,CAAC,MAAyB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wBAAwB,UAAU,CAAC;YAC5D,IAAI,EAAE,MAAM,EAAE,IAAI;YAClB,EAAE,EAAE,MAAM,EAAE,EAAE;SACf,CAAC,EAAE,CAAC,CAAC;IACR,CAAC;CACF"}
1
+ {"version":3,"file":"reporting.js","sourceRoot":"","sources":["../../src/resources/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG/D;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,MAAyB;QAClC,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,wBAAwB,UAAU,CAAC;YACjC,IAAI,EAAE,MAAM,EAAE,IAAI;YAClB,EAAE,EAAE,MAAM,EAAE,EAAE;SACf,CAAC,EAAE,CACL,CAAC;IACJ,CAAC;CACF"}
@@ -1,25 +1,230 @@
1
1
  import { BaseResource } from "../utils/request.js";
2
2
  import type { ClientConfig } from "../utils/request.js";
3
- import type { CreateWebhookRequest, UpdateWebhookRequest, Webhook, WebhookDetail, WebhookWithDeliveries, WebhookQueueParams, WebhookQueueResponse, WebhookQueueAllParams, WebhookQueueAllResponse } from "../types.js";
3
+ import type { CreateWebhookRequest, UpdateWebhookRequest, Webhook, WebhookDetail, WebhookWithDeliveries, WebhookQueueParams, WebhookQueueResponse, WebhookQueueAllParams, WebhookQueueAllResponse, WebhookTestResponse, WebhookDeliveriesParams, WebhookDeliveriesResponse, WebhookEvent } from "../types.js";
4
+ /**
5
+ * Sub-resource for the webhook pull queue — an alternative to push webhooks.
6
+ * Use the pull queue when your server cannot receive inbound HTTPS requests.
7
+ * Events accumulate in the queue and must be acknowledged after processing.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Poll-based event consumption loop
12
+ * const { items, has_more } = await client.webhooks.queue.pull({ limit: 50 });
13
+ * for (const item of items) {
14
+ * await processEvent(item);
15
+ * await client.webhooks.queue.ack(item.id);
16
+ * }
17
+ * ```
18
+ */
4
19
  export declare class WebhookQueueResource extends BaseResource {
20
+ /**
21
+ * Pull unacknowledged events from the webhook queue.
22
+ * Events remain in the queue until explicitly acknowledged via `ack()` or `batchAck()`.
23
+ *
24
+ * @param params - Optional limit and event type filter
25
+ * @returns Array of queue items and whether more items are available
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const { items, has_more } = await client.webhooks.queue.pull({
30
+ * limit: 20,
31
+ * event_type: 'document.received',
32
+ * });
33
+ * ```
34
+ */
5
35
  pull(params?: WebhookQueueParams): Promise<WebhookQueueResponse>;
36
+ /**
37
+ * Acknowledge (remove) a single event from the queue after processing.
38
+ *
39
+ * @param eventId - The event ID to acknowledge
40
+ * @returns void
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * await client.webhooks.queue.ack('event-uuid');
45
+ * ```
46
+ */
6
47
  ack(eventId: string): Promise<void>;
48
+ /**
49
+ * Acknowledge (remove) multiple events from the queue in a single request.
50
+ *
51
+ * @param eventIds - Array of event IDs to acknowledge
52
+ * @returns void
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const { items } = await client.webhooks.queue.pull({ limit: 50 });
57
+ * // Process all items...
58
+ * await client.webhooks.queue.batchAck(items.map(i => i.id));
59
+ * ```
60
+ */
7
61
  batchAck(eventIds: string[]): Promise<void>;
62
+ /**
63
+ * Pull events across all managed firms (integrator endpoint).
64
+ * Only available with integrator API keys (`sk_int_*`).
65
+ * Use the `since` parameter for cursor-based polling.
66
+ *
67
+ * @param params - Optional limit and since timestamp for cursor-based polling
68
+ * @returns Array of events across all firms with count
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const { events, count } = await client.webhooks.queue.pullAll({
73
+ * since: '2026-04-11T00:00:00Z',
74
+ * limit: 200,
75
+ * });
76
+ * ```
77
+ */
8
78
  pullAll(params?: WebhookQueueAllParams): Promise<WebhookQueueAllResponse>;
79
+ /**
80
+ * Acknowledge (remove) multiple events from the cross-firm queue (integrator endpoint).
81
+ * Only available with integrator API keys (`sk_int_*`).
82
+ *
83
+ * @param eventIds - Array of event IDs to acknowledge
84
+ * @returns Object with the count of acknowledged events
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const { events } = await client.webhooks.queue.pullAll({ limit: 100 });
89
+ * // Process all events...
90
+ * const { acknowledged } = await client.webhooks.queue.batchAckAll(
91
+ * events.map(e => e.event_id),
92
+ * );
93
+ * ```
94
+ */
9
95
  batchAckAll(eventIds: string[]): Promise<{
10
96
  acknowledged: number;
11
97
  }>;
12
98
  }
99
+ /**
100
+ * Resource for managing webhook subscriptions and the pull queue.
101
+ * Webhooks notify your server about document events (sent, received, validated).
102
+ * Choose between push webhooks (server receives HTTPS POST) or the pull queue
103
+ * (your code polls for events).
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * // Create a push webhook
108
+ * const webhook = await client.webhooks.create({
109
+ * url: 'https://example.com/webhooks/epostak',
110
+ * events: ['document.received', 'document.sent'],
111
+ * });
112
+ * // Store webhook.secret for HMAC verification
113
+ * ```
114
+ */
13
115
  export declare class WebhooksResource extends BaseResource {
14
- /** Access the webhook pull queue for polling-based consumption */
116
+ /** Sub-resource for the pull queue (polling-based event consumption) */
15
117
  queue: WebhookQueueResource;
16
118
  constructor(config: ClientConfig);
119
+ /**
120
+ * Create a new webhook subscription. Returns the HMAC-SHA256 signing secret
121
+ * which is only available at creation time — store it securely.
122
+ *
123
+ * @param body - Webhook URL and optional event filter
124
+ * @returns Webhook details including the one-time signing secret
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const webhook = await client.webhooks.create({
129
+ * url: 'https://example.com/webhooks',
130
+ * events: ['document.received'],
131
+ * });
132
+ * console.log(webhook.secret); // Store this securely!
133
+ * ```
134
+ */
17
135
  create(body: CreateWebhookRequest): Promise<WebhookDetail>;
136
+ /**
137
+ * List all webhook subscriptions for the current account.
138
+ *
139
+ * @returns Array of webhook subscriptions
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const webhooks = await client.webhooks.list();
144
+ * webhooks.forEach(w => console.log(w.url, w.isActive));
145
+ * ```
146
+ */
18
147
  list(): Promise<Webhook[]>;
148
+ /**
149
+ * Get a webhook subscription by ID, including recent delivery history.
150
+ * Use the delivery history to debug failed webhook deliveries.
151
+ *
152
+ * @param id - Webhook UUID
153
+ * @returns Webhook details with delivery history
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const webhook = await client.webhooks.get('webhook-uuid');
158
+ * const failedDeliveries = webhook.deliveries.filter(d => d.status === 'failed');
159
+ * ```
160
+ */
19
161
  get(id: string): Promise<WebhookWithDeliveries>;
162
+ /**
163
+ * Update a webhook subscription. Use this to change the URL, event filter,
164
+ * or pause/resume the webhook.
165
+ *
166
+ * @param id - Webhook UUID
167
+ * @param body - Fields to update (omit to leave unchanged)
168
+ * @returns The updated webhook
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * // Pause a webhook
173
+ * await client.webhooks.update('webhook-uuid', { isActive: false });
174
+ *
175
+ * // Change URL and events
176
+ * await client.webhooks.update('webhook-uuid', {
177
+ * url: 'https://new-url.com/webhooks',
178
+ * events: ['document.received', 'document.validated'],
179
+ * });
180
+ * ```
181
+ */
20
182
  update(id: string, body: UpdateWebhookRequest): Promise<Webhook>;
183
+ /**
184
+ * Delete a webhook subscription. Stops all future deliveries for this webhook.
185
+ *
186
+ * @param id - Webhook UUID to delete
187
+ * @returns Confirmation with `deleted: true`
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * await client.webhooks.delete('webhook-uuid');
192
+ * ```
193
+ */
21
194
  delete(id: string): Promise<{
22
195
  deleted: boolean;
23
196
  }>;
197
+ /**
198
+ * Send a test event to a webhook endpoint. Useful for verifying your
199
+ * webhook URL is reachable and responding correctly.
200
+ *
201
+ * @param id - Webhook UUID to test
202
+ * @param event - Event type to simulate (defaults to server-chosen event)
203
+ * @returns Test result with success status, HTTP status code, and response time
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * const result = await client.webhooks.test('webhook-uuid');
208
+ * console.log(result.success, result.responseTime + 'ms');
209
+ * ```
210
+ */
211
+ test(id: string, event?: WebhookEvent): Promise<WebhookTestResponse>;
212
+ /**
213
+ * Get paginated delivery history for a webhook. Use this to inspect
214
+ * individual delivery attempts, filter by status, and debug failures.
215
+ *
216
+ * @param id - Webhook UUID
217
+ * @param params - Optional pagination and filter parameters
218
+ * @returns Paginated list of delivery records with total count
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * const { deliveries, total } = await client.webhooks.deliveries('webhook-uuid', {
223
+ * status: 'FAILED',
224
+ * limit: 50,
225
+ * });
226
+ * ```
227
+ */
228
+ deliveries(id: string, params?: WebhookDeliveriesParams): Promise<WebhookDeliveriesResponse>;
24
229
  }
25
230
  //# sourceMappingURL=webhooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,OAAO,EACP,aAAa,EACb,qBAAqB,EAErB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAOhE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,OAAO,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAOzE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAGnE;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,kEAAkE;IAClE,KAAK,EAAE,oBAAoB,CAAC;gBAEhB,MAAM,EAAE,YAAY;IAKhC,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpD,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKhC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI/C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAGlD"}
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,OAAO,EACP,aAAa,EACb,qBAAqB,EAErB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACb,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAUhE;;;;;;;;;;OAUG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAUzE;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAKnE;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,wEAAwE;IACxE,KAAK,EAAE,oBAAoB,CAAC;gBAEhB,MAAM,EAAE,YAAY;IAKhC;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1D;;;;;;;;;;OAUG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKhC;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI/C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAIjD;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAUpE;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CACR,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,yBAAyB,CAAC;CAWtC"}