@energio/holded-mcp 1.0.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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1040 -0
  3. package/dist/constants.d.ts +60 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/constants.js +72 -0
  6. package/dist/constants.js.map +1 -0
  7. package/dist/index.d.ts +11 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +86 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/schemas/accounting/account-balances.d.ts +19 -0
  12. package/dist/schemas/accounting/account-balances.d.ts.map +1 -0
  13. package/dist/schemas/accounting/account-balances.js +28 -0
  14. package/dist/schemas/accounting/account-balances.js.map +1 -0
  15. package/dist/schemas/accounting/accounts.d.ts +49 -0
  16. package/dist/schemas/accounting/accounts.d.ts.map +1 -0
  17. package/dist/schemas/accounting/accounts.js +50 -0
  18. package/dist/schemas/accounting/accounts.js.map +1 -0
  19. package/dist/schemas/accounting/daily-ledger.d.ts +45 -0
  20. package/dist/schemas/accounting/daily-ledger.d.ts.map +1 -0
  21. package/dist/schemas/accounting/daily-ledger.js +57 -0
  22. package/dist/schemas/accounting/daily-ledger.js.map +1 -0
  23. package/dist/schemas/common.d.ts +118 -0
  24. package/dist/schemas/common.d.ts.map +1 -0
  25. package/dist/schemas/common.js +126 -0
  26. package/dist/schemas/common.js.map +1 -0
  27. package/dist/schemas/crm/bookings.d.ts +108 -0
  28. package/dist/schemas/crm/bookings.d.ts.map +1 -0
  29. package/dist/schemas/crm/bookings.js +96 -0
  30. package/dist/schemas/crm/bookings.js.map +1 -0
  31. package/dist/schemas/crm/events.d.ts +57 -0
  32. package/dist/schemas/crm/events.d.ts.map +1 -0
  33. package/dist/schemas/crm/events.js +53 -0
  34. package/dist/schemas/crm/events.js.map +1 -0
  35. package/dist/schemas/crm/funnels.d.ts +60 -0
  36. package/dist/schemas/crm/funnels.d.ts.map +1 -0
  37. package/dist/schemas/crm/funnels.js +48 -0
  38. package/dist/schemas/crm/funnels.js.map +1 -0
  39. package/dist/schemas/crm/leads.d.ts +146 -0
  40. package/dist/schemas/crm/leads.d.ts.map +1 -0
  41. package/dist/schemas/crm/leads.js +129 -0
  42. package/dist/schemas/crm/leads.js.map +1 -0
  43. package/dist/schemas/invoicing/contacts.d.ts +352 -0
  44. package/dist/schemas/invoicing/contacts.d.ts.map +1 -0
  45. package/dist/schemas/invoicing/contacts.js +187 -0
  46. package/dist/schemas/invoicing/contacts.js.map +1 -0
  47. package/dist/schemas/invoicing/documents.d.ts +424 -0
  48. package/dist/schemas/invoicing/documents.d.ts.map +1 -0
  49. package/dist/schemas/invoicing/documents.js +217 -0
  50. package/dist/schemas/invoicing/documents.js.map +1 -0
  51. package/dist/schemas/invoicing/expenses-accounts.d.ts +47 -0
  52. package/dist/schemas/invoicing/expenses-accounts.d.ts.map +1 -0
  53. package/dist/schemas/invoicing/expenses-accounts.js +43 -0
  54. package/dist/schemas/invoicing/expenses-accounts.js.map +1 -0
  55. package/dist/schemas/invoicing/numbering-series.d.ts +94 -0
  56. package/dist/schemas/invoicing/numbering-series.d.ts.map +1 -0
  57. package/dist/schemas/invoicing/numbering-series.js +43 -0
  58. package/dist/schemas/invoicing/numbering-series.js.map +1 -0
  59. package/dist/schemas/invoicing/payments.d.ts +50 -0
  60. package/dist/schemas/invoicing/payments.d.ts.map +1 -0
  61. package/dist/schemas/invoicing/payments.js +46 -0
  62. package/dist/schemas/invoicing/payments.js.map +1 -0
  63. package/dist/schemas/invoicing/products.d.ts +176 -0
  64. package/dist/schemas/invoicing/products.d.ts.map +1 -0
  65. package/dist/schemas/invoicing/products.js +149 -0
  66. package/dist/schemas/invoicing/products.js.map +1 -0
  67. package/dist/schemas/invoicing/remittances.d.ts +21 -0
  68. package/dist/schemas/invoicing/remittances.d.ts.map +1 -0
  69. package/dist/schemas/invoicing/remittances.js +20 -0
  70. package/dist/schemas/invoicing/remittances.js.map +1 -0
  71. package/dist/schemas/invoicing/sales-channels.d.ts +45 -0
  72. package/dist/schemas/invoicing/sales-channels.d.ts.map +1 -0
  73. package/dist/schemas/invoicing/sales-channels.js +41 -0
  74. package/dist/schemas/invoicing/sales-channels.js.map +1 -0
  75. package/dist/schemas/invoicing/services.d.ts +55 -0
  76. package/dist/schemas/invoicing/services.d.ts.map +1 -0
  77. package/dist/schemas/invoicing/services.js +51 -0
  78. package/dist/schemas/invoicing/services.js.map +1 -0
  79. package/dist/schemas/invoicing/taxes.d.ts +12 -0
  80. package/dist/schemas/invoicing/taxes.d.ts.map +1 -0
  81. package/dist/schemas/invoicing/taxes.js +12 -0
  82. package/dist/schemas/invoicing/taxes.js.map +1 -0
  83. package/dist/schemas/invoicing/treasury.d.ts +42 -0
  84. package/dist/schemas/invoicing/treasury.d.ts.map +1 -0
  85. package/dist/schemas/invoicing/treasury.js +39 -0
  86. package/dist/schemas/invoicing/treasury.js.map +1 -0
  87. package/dist/schemas/invoicing/warehouses.d.ts +61 -0
  88. package/dist/schemas/invoicing/warehouses.d.ts.map +1 -0
  89. package/dist/schemas/invoicing/warehouses.js +43 -0
  90. package/dist/schemas/invoicing/warehouses.js.map +1 -0
  91. package/dist/schemas/projects/projects.d.ts +60 -0
  92. package/dist/schemas/projects/projects.d.ts.map +1 -0
  93. package/dist/schemas/projects/projects.js +55 -0
  94. package/dist/schemas/projects/projects.js.map +1 -0
  95. package/dist/schemas/projects/tasks.d.ts +68 -0
  96. package/dist/schemas/projects/tasks.d.ts.map +1 -0
  97. package/dist/schemas/projects/tasks.js +64 -0
  98. package/dist/schemas/projects/tasks.js.map +1 -0
  99. package/dist/schemas/projects/time-tracking.d.ts +80 -0
  100. package/dist/schemas/projects/time-tracking.d.ts.map +1 -0
  101. package/dist/schemas/projects/time-tracking.js +75 -0
  102. package/dist/schemas/projects/time-tracking.js.map +1 -0
  103. package/dist/schemas/team/employees.d.ts +135 -0
  104. package/dist/schemas/team/employees.d.ts.map +1 -0
  105. package/dist/schemas/team/employees.js +144 -0
  106. package/dist/schemas/team/employees.js.map +1 -0
  107. package/dist/schemas/team/time-tracking.d.ts +98 -0
  108. package/dist/schemas/team/time-tracking.d.ts.map +1 -0
  109. package/dist/schemas/team/time-tracking.js +89 -0
  110. package/dist/schemas/team/time-tracking.js.map +1 -0
  111. package/dist/services/api.d.ts +118 -0
  112. package/dist/services/api.d.ts.map +1 -0
  113. package/dist/services/api.js +441 -0
  114. package/dist/services/api.js.map +1 -0
  115. package/dist/tools/accounting/account-balances.d.ts +44 -0
  116. package/dist/tools/accounting/account-balances.d.ts.map +1 -0
  117. package/dist/tools/accounting/account-balances.js +240 -0
  118. package/dist/tools/accounting/account-balances.js.map +1 -0
  119. package/dist/tools/accounting/accounts.d.ts +18 -0
  120. package/dist/tools/accounting/accounts.d.ts.map +1 -0
  121. package/dist/tools/accounting/accounts.js +131 -0
  122. package/dist/tools/accounting/accounts.js.map +1 -0
  123. package/dist/tools/accounting/daily-ledger.d.ts +9 -0
  124. package/dist/tools/accounting/daily-ledger.d.ts.map +1 -0
  125. package/dist/tools/accounting/daily-ledger.js +117 -0
  126. package/dist/tools/accounting/daily-ledger.js.map +1 -0
  127. package/dist/tools/accounting/index.d.ts +9 -0
  128. package/dist/tools/accounting/index.d.ts.map +1 -0
  129. package/dist/tools/accounting/index.js +15 -0
  130. package/dist/tools/accounting/index.js.map +1 -0
  131. package/dist/tools/crm/bookings.d.ts +18 -0
  132. package/dist/tools/crm/bookings.d.ts.map +1 -0
  133. package/dist/tools/crm/bookings.js +272 -0
  134. package/dist/tools/crm/bookings.js.map +1 -0
  135. package/dist/tools/crm/events.d.ts +18 -0
  136. package/dist/tools/crm/events.d.ts.map +1 -0
  137. package/dist/tools/crm/events.js +134 -0
  138. package/dist/tools/crm/events.js.map +1 -0
  139. package/dist/tools/crm/funnels.d.ts +18 -0
  140. package/dist/tools/crm/funnels.d.ts.map +1 -0
  141. package/dist/tools/crm/funnels.js +113 -0
  142. package/dist/tools/crm/funnels.js.map +1 -0
  143. package/dist/tools/crm/index.d.ts +9 -0
  144. package/dist/tools/crm/index.d.ts.map +1 -0
  145. package/dist/tools/crm/index.js +17 -0
  146. package/dist/tools/crm/index.js.map +1 -0
  147. package/dist/tools/crm/leads.d.ts +18 -0
  148. package/dist/tools/crm/leads.d.ts.map +1 -0
  149. package/dist/tools/crm/leads.js +519 -0
  150. package/dist/tools/crm/leads.js.map +1 -0
  151. package/dist/tools/factory.d.ts +55 -0
  152. package/dist/tools/factory.d.ts.map +1 -0
  153. package/dist/tools/factory.js +145 -0
  154. package/dist/tools/factory.js.map +1 -0
  155. package/dist/tools/invoicing/contacts.d.ts +26 -0
  156. package/dist/tools/invoicing/contacts.d.ts.map +1 -0
  157. package/dist/tools/invoicing/contacts.js +358 -0
  158. package/dist/tools/invoicing/contacts.js.map +1 -0
  159. package/dist/tools/invoicing/documents.d.ts +18 -0
  160. package/dist/tools/invoicing/documents.d.ts.map +1 -0
  161. package/dist/tools/invoicing/documents.js +578 -0
  162. package/dist/tools/invoicing/documents.js.map +1 -0
  163. package/dist/tools/invoicing/expenses-accounts.d.ts +25 -0
  164. package/dist/tools/invoicing/expenses-accounts.d.ts.map +1 -0
  165. package/dist/tools/invoicing/expenses-accounts.js +111 -0
  166. package/dist/tools/invoicing/expenses-accounts.js.map +1 -0
  167. package/dist/tools/invoicing/index.d.ts +9 -0
  168. package/dist/tools/invoicing/index.d.ts.map +1 -0
  169. package/dist/tools/invoicing/index.js +33 -0
  170. package/dist/tools/invoicing/index.js.map +1 -0
  171. package/dist/tools/invoicing/numbering-series.d.ts +9 -0
  172. package/dist/tools/invoicing/numbering-series.d.ts.map +1 -0
  173. package/dist/tools/invoicing/numbering-series.js +161 -0
  174. package/dist/tools/invoicing/numbering-series.js.map +1 -0
  175. package/dist/tools/invoicing/payments.d.ts +18 -0
  176. package/dist/tools/invoicing/payments.d.ts.map +1 -0
  177. package/dist/tools/invoicing/payments.js +175 -0
  178. package/dist/tools/invoicing/payments.js.map +1 -0
  179. package/dist/tools/invoicing/products.d.ts +18 -0
  180. package/dist/tools/invoicing/products.d.ts.map +1 -0
  181. package/dist/tools/invoicing/products.js +389 -0
  182. package/dist/tools/invoicing/products.js.map +1 -0
  183. package/dist/tools/invoicing/remittances.d.ts +17 -0
  184. package/dist/tools/invoicing/remittances.d.ts.map +1 -0
  185. package/dist/tools/invoicing/remittances.js +76 -0
  186. package/dist/tools/invoicing/remittances.js.map +1 -0
  187. package/dist/tools/invoicing/sales-channels.d.ts +24 -0
  188. package/dist/tools/invoicing/sales-channels.d.ts.map +1 -0
  189. package/dist/tools/invoicing/sales-channels.js +105 -0
  190. package/dist/tools/invoicing/sales-channels.js.map +1 -0
  191. package/dist/tools/invoicing/services.d.ts +29 -0
  192. package/dist/tools/invoicing/services.d.ts.map +1 -0
  193. package/dist/tools/invoicing/services.js +124 -0
  194. package/dist/tools/invoicing/services.js.map +1 -0
  195. package/dist/tools/invoicing/taxes.d.ts +18 -0
  196. package/dist/tools/invoicing/taxes.d.ts.map +1 -0
  197. package/dist/tools/invoicing/taxes.js +58 -0
  198. package/dist/tools/invoicing/taxes.js.map +1 -0
  199. package/dist/tools/invoicing/treasury.d.ts +9 -0
  200. package/dist/tools/invoicing/treasury.d.ts.map +1 -0
  201. package/dist/tools/invoicing/treasury.js +196 -0
  202. package/dist/tools/invoicing/treasury.js.map +1 -0
  203. package/dist/tools/invoicing/warehouses.d.ts +18 -0
  204. package/dist/tools/invoicing/warehouses.d.ts.map +1 -0
  205. package/dist/tools/invoicing/warehouses.js +133 -0
  206. package/dist/tools/invoicing/warehouses.js.map +1 -0
  207. package/dist/tools/projects/index.d.ts +9 -0
  208. package/dist/tools/projects/index.d.ts.map +1 -0
  209. package/dist/tools/projects/index.js +15 -0
  210. package/dist/tools/projects/index.js.map +1 -0
  211. package/dist/tools/projects/projects.d.ts +18 -0
  212. package/dist/tools/projects/projects.d.ts.map +1 -0
  213. package/dist/tools/projects/projects.js +203 -0
  214. package/dist/tools/projects/projects.js.map +1 -0
  215. package/dist/tools/projects/tasks.d.ts +18 -0
  216. package/dist/tools/projects/tasks.d.ts.map +1 -0
  217. package/dist/tools/projects/tasks.js +154 -0
  218. package/dist/tools/projects/tasks.js.map +1 -0
  219. package/dist/tools/projects/time-tracking.d.ts +14 -0
  220. package/dist/tools/projects/time-tracking.d.ts.map +1 -0
  221. package/dist/tools/projects/time-tracking.js +291 -0
  222. package/dist/tools/projects/time-tracking.js.map +1 -0
  223. package/dist/tools/team/employees.d.ts +18 -0
  224. package/dist/tools/team/employees.d.ts.map +1 -0
  225. package/dist/tools/team/employees.js +149 -0
  226. package/dist/tools/team/employees.js.map +1 -0
  227. package/dist/tools/team/index.d.ts +9 -0
  228. package/dist/tools/team/index.d.ts.map +1 -0
  229. package/dist/tools/team/index.js +13 -0
  230. package/dist/tools/team/index.js.map +1 -0
  231. package/dist/tools/team/time-tracking.d.ts +18 -0
  232. package/dist/tools/team/time-tracking.d.ts.map +1 -0
  233. package/dist/tools/team/time-tracking.js +398 -0
  234. package/dist/tools/team/time-tracking.js.map +1 -0
  235. package/dist/tools/utilities.d.ts +45 -0
  236. package/dist/tools/utilities.d.ts.map +1 -0
  237. package/dist/tools/utilities.js +55 -0
  238. package/dist/tools/utilities.js.map +1 -0
  239. package/dist/types.d.ts +640 -0
  240. package/dist/types.d.ts.map +1 -0
  241. package/dist/types.js +29 -0
  242. package/dist/types.js.map +1 -0
  243. package/package.json +70 -0
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Zod schemas for Employee-related operations
3
+ */
4
+ import { z } from "zod";
5
+ /**
6
+ * List employees input schema
7
+ */
8
+ export declare const ListEmployeesInputSchema: z.ZodObject<{
9
+ page: z.ZodDefault<z.ZodNumber>;
10
+ response_format: z.ZodDefault<z.ZodEnum<typeof import("../../constants.js").ResponseFormat>>;
11
+ }, z.core.$strict>;
12
+ export type ListEmployeesInput = z.infer<typeof ListEmployeesInputSchema>;
13
+ /**
14
+ * Get employee input schema
15
+ */
16
+ export declare const GetEmployeeInputSchema: z.ZodObject<{
17
+ employee_id: z.ZodString;
18
+ response_format: z.ZodDefault<z.ZodEnum<typeof import("../../constants.js").ResponseFormat>>;
19
+ }, z.core.$strict>;
20
+ export type GetEmployeeInput = z.infer<typeof GetEmployeeInputSchema>;
21
+ /**
22
+ * Create employee input schema
23
+ *
24
+ * According to the official Holded Team API v1.0.1 documentation,
25
+ * employee creation supports only these fields: name, lastName, email, sendInvite.
26
+ * All other fields should be set via the Update Employee endpoint.
27
+ *
28
+ * @see https://developers.holded.com/reference
29
+ * @apiVersion Team API v1.0.1
30
+ * @required name, lastName, email
31
+ * @optional sendInvite
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const input = {
36
+ * name: "John",
37
+ * lastName: "Doe",
38
+ * email: "john.doe@company.com",
39
+ * sendInvite: true
40
+ * };
41
+ * ```
42
+ */
43
+ export declare const CreateEmployeeInputSchema: z.ZodObject<{
44
+ name: z.ZodString;
45
+ lastName: z.ZodString;
46
+ email: z.ZodString;
47
+ sendInvite: z.ZodOptional<z.ZodBoolean>;
48
+ }, z.core.$strict>;
49
+ export type CreateEmployeeInput = z.infer<typeof CreateEmployeeInputSchema>;
50
+ /**
51
+ * Update employee input schema
52
+ */
53
+ export declare const UpdateEmployeeInputSchema: z.ZodObject<{
54
+ employee_id: z.ZodString;
55
+ name: z.ZodOptional<z.ZodString>;
56
+ lastName: z.ZodOptional<z.ZodString>;
57
+ mainEmail: z.ZodOptional<z.ZodString>;
58
+ email: z.ZodOptional<z.ZodString>;
59
+ nationality: z.ZodOptional<z.ZodString>;
60
+ phone: z.ZodOptional<z.ZodString>;
61
+ mobile: z.ZodOptional<z.ZodString>;
62
+ dateOfBirth: z.ZodOptional<z.ZodString>;
63
+ gender: z.ZodOptional<z.ZodEnum<{
64
+ male: "male";
65
+ female: "female";
66
+ }>>;
67
+ mainLanguage: z.ZodOptional<z.ZodEnum<{
68
+ English: "English";
69
+ "English(UK)": "English(UK)";
70
+ "English(US)": "English(US)";
71
+ "English(Canada)": "English(Canada)";
72
+ Spanish: "Spanish";
73
+ "Spanish(Spain)": "Spanish(Spain)";
74
+ "Spanish(Mexico)": "Spanish(Mexico)";
75
+ "Spanish(Argentina)": "Spanish(Argentina)";
76
+ "Spanish(Colombia)": "Spanish(Colombia)";
77
+ Portuguese: "Portuguese";
78
+ "Portuguese(Portugal)": "Portuguese(Portugal)";
79
+ "Portuguese(Brazil)": "Portuguese(Brazil)";
80
+ Catalan: "Catalan";
81
+ Galician: "Galician";
82
+ Euskera: "Euskera";
83
+ French: "French";
84
+ "German(Deutsch)": "German(Deutsch)";
85
+ Italian: "Italian";
86
+ Greek: "Greek";
87
+ Swedish: "Swedish";
88
+ Dutch: "Dutch";
89
+ Finnish: "Finnish";
90
+ Irish: "Irish";
91
+ Norwegian: "Norwegian";
92
+ Danish: "Danish";
93
+ Czech: "Czech";
94
+ Croatian: "Croatian";
95
+ Russian: "Russian";
96
+ Polish: "Polish";
97
+ }>>;
98
+ iban: z.ZodOptional<z.ZodString>;
99
+ timeOffPolicyId: z.ZodOptional<z.ZodString>;
100
+ timeOffSupervisors: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ reportingTo: z.ZodOptional<z.ZodString>;
102
+ code: z.ZodOptional<z.ZodString>;
103
+ socialSecurityNum: z.ZodOptional<z.ZodString>;
104
+ address: z.ZodOptional<z.ZodObject<{
105
+ address: z.ZodOptional<z.ZodString>;
106
+ city: z.ZodOptional<z.ZodString>;
107
+ postalCode: z.ZodOptional<z.ZodString>;
108
+ province: z.ZodOptional<z.ZodString>;
109
+ country: z.ZodOptional<z.ZodString>;
110
+ }, z.core.$strict>>;
111
+ fiscalResidence: z.ZodOptional<z.ZodBoolean>;
112
+ fiscalAddress: z.ZodOptional<z.ZodObject<{
113
+ idNum: z.ZodOptional<z.ZodString>;
114
+ address: z.ZodOptional<z.ZodString>;
115
+ city: z.ZodOptional<z.ZodString>;
116
+ cityOfBirth: z.ZodOptional<z.ZodString>;
117
+ postalCode: z.ZodOptional<z.ZodString>;
118
+ province: z.ZodOptional<z.ZodString>;
119
+ country: z.ZodOptional<z.ZodString>;
120
+ countryOfBirth: z.ZodOptional<z.ZodString>;
121
+ endSituationDate: z.ZodOptional<z.ZodString>;
122
+ }, z.core.$strict>>;
123
+ workplace: z.ZodOptional<z.ZodString>;
124
+ teams: z.ZodOptional<z.ZodArray<z.ZodString>>;
125
+ holdedUserId: z.ZodOptional<z.ZodString>;
126
+ }, z.core.$strict>;
127
+ export type UpdateEmployeeInput = z.infer<typeof UpdateEmployeeInputSchema>;
128
+ /**
129
+ * Delete employee input schema
130
+ */
131
+ export declare const DeleteEmployeeInputSchema: z.ZodObject<{
132
+ employee_id: z.ZodString;
133
+ }, z.core.$strict>;
134
+ export type DeleteEmployeeInput = z.infer<typeof DeleteEmployeeInputSchema>;
135
+ //# sourceMappingURL=employees.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"employees.d.ts","sourceRoot":"","sources":["../../../src/schemas/team/employees.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;kBAGnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;kBAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,yBAAyB;;;;;kBAKpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAgE5E;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2BpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,yBAAyB;;kBAEpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Zod schemas for Employee-related operations
3
+ */
4
+ import { z } from "zod";
5
+ import { IdSchema, PaginationSchema, ResponseFormatSchema, OptionalStringSchema, } from "../common.js";
6
+ /**
7
+ * List employees input schema
8
+ */
9
+ export const ListEmployeesInputSchema = z.strictObject({
10
+ page: PaginationSchema.shape.page,
11
+ response_format: ResponseFormatSchema,
12
+ });
13
+ /**
14
+ * Get employee input schema
15
+ */
16
+ export const GetEmployeeInputSchema = z.strictObject({
17
+ employee_id: IdSchema.describe("The employee ID to retrieve"),
18
+ response_format: ResponseFormatSchema,
19
+ });
20
+ /**
21
+ * Create employee input schema
22
+ *
23
+ * According to the official Holded Team API v1.0.1 documentation,
24
+ * employee creation supports only these fields: name, lastName, email, sendInvite.
25
+ * All other fields should be set via the Update Employee endpoint.
26
+ *
27
+ * @see https://developers.holded.com/reference
28
+ * @apiVersion Team API v1.0.1
29
+ * @required name, lastName, email
30
+ * @optional sendInvite
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const input = {
35
+ * name: "John",
36
+ * lastName: "Doe",
37
+ * email: "john.doe@company.com",
38
+ * sendInvite: true
39
+ * };
40
+ * ```
41
+ */
42
+ export const CreateEmployeeInputSchema = z.strictObject({
43
+ name: z.string().min(1, { message: "Name is required" }).describe("Employee name (required)"),
44
+ lastName: z.string().min(1, { message: "Last name is required" }).describe("Employee last name (required)"),
45
+ email: z.string().email({ message: "Valid email is required" }).describe("Email address (required)"),
46
+ sendInvite: z.boolean().optional().describe("Whether to send invitation email to the employee"),
47
+ });
48
+ /**
49
+ * Address schema for employee
50
+ */
51
+ const EmployeeAddressSchema = z.strictObject({
52
+ address: z.string().optional().describe("Street address"),
53
+ city: z.string().optional().describe("City name"),
54
+ postalCode: z.string().optional().describe("Postal/ZIP code"),
55
+ province: z.string().optional().describe("Province/State"),
56
+ country: z.string().optional().describe("Country name"),
57
+ });
58
+ /**
59
+ * Fiscal address schema for employee
60
+ */
61
+ const EmployeeFiscalAddressSchema = z.strictObject({
62
+ idNum: z.string().optional().describe("ID number"),
63
+ address: z.string().optional().describe("Street address"),
64
+ city: z.string().optional().describe("City name"),
65
+ cityOfBirth: z.string().optional().describe("City of birth"),
66
+ postalCode: z.string().optional().describe("Postal/ZIP code"),
67
+ province: z.string().optional().describe("Province/State"),
68
+ country: z.string().optional().describe("Country name"),
69
+ countryOfBirth: z.string().optional().describe("Country of birth"),
70
+ endSituationDate: z.string().optional().describe("End situation date"),
71
+ });
72
+ /**
73
+ * Supported languages for employee main language
74
+ * Per Holded Team API v1.0.1 documentation
75
+ */
76
+ const EmployeeLanguageEnum = z.enum([
77
+ "English",
78
+ "English(UK)",
79
+ "English(US)",
80
+ "English(Canada)",
81
+ "Spanish",
82
+ "Spanish(Spain)",
83
+ "Spanish(Mexico)",
84
+ "Spanish(Argentina)",
85
+ "Spanish(Colombia)",
86
+ "Portuguese",
87
+ "Portuguese(Portugal)",
88
+ "Portuguese(Brazil)",
89
+ "Catalan",
90
+ "Galician",
91
+ "Euskera",
92
+ "French",
93
+ "German(Deutsch)",
94
+ "Italian",
95
+ "Greek",
96
+ "Swedish",
97
+ "Dutch",
98
+ "Finnish",
99
+ "Irish",
100
+ "Norwegian",
101
+ "Danish",
102
+ "Czech",
103
+ "Croatian",
104
+ "Russian",
105
+ "Polish",
106
+ ]);
107
+ /**
108
+ * Update employee input schema
109
+ */
110
+ export const UpdateEmployeeInputSchema = z.strictObject({
111
+ employee_id: IdSchema.describe("The employee ID to update"),
112
+ name: z.string().min(1).optional().describe("Employee name"),
113
+ lastName: z.string().min(1).optional().describe("Employee last name"),
114
+ mainEmail: z.string().email().optional().describe("Main email address"),
115
+ email: z.string().email().optional().describe("Email address"),
116
+ nationality: OptionalStringSchema.describe("Nationality"),
117
+ phone: OptionalStringSchema.describe("Phone number"),
118
+ mobile: OptionalStringSchema.describe("Mobile phone number"),
119
+ dateOfBirth: z.string()
120
+ .regex(/^\d{2}\/\d{2}\/\d{4}$/, { message: "Date must be in dd/mm/yyyy format" })
121
+ .optional()
122
+ .describe("Date of birth (dd/mm/yyyy)"),
123
+ gender: z.enum(["male", "female"]).optional().describe("Gender"),
124
+ mainLanguage: EmployeeLanguageEnum.optional().describe("Main language"),
125
+ iban: OptionalStringSchema.describe("Bank IBAN"),
126
+ timeOffPolicyId: OptionalStringSchema.describe("Time off policy ID"),
127
+ timeOffSupervisors: z.array(z.string()).optional().describe("Array of supervisor employee IDs"),
128
+ reportingTo: OptionalStringSchema.describe("Reporting manager employee ID"),
129
+ code: OptionalStringSchema.describe("NIF/tax identification number"),
130
+ socialSecurityNum: OptionalStringSchema.describe("Social security number"),
131
+ address: EmployeeAddressSchema.optional().describe("Address"),
132
+ fiscalResidence: z.boolean().optional().describe("Fiscal residence (set to false to use fiscalAddress)"),
133
+ fiscalAddress: EmployeeFiscalAddressSchema.optional().describe("Fiscal address (requires fiscalResidence to be false)"),
134
+ workplace: OptionalStringSchema.describe("Workplace ID"),
135
+ teams: z.array(z.string()).optional().describe("Array of team IDs"),
136
+ holdedUserId: OptionalStringSchema.describe("Holded user ID"),
137
+ });
138
+ /**
139
+ * Delete employee input schema
140
+ */
141
+ export const DeleteEmployeeInputSchema = z.strictObject({
142
+ employee_id: IdSchema.describe("The employee ID to delete"),
143
+ });
144
+ //# sourceMappingURL=employees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"employees.js","sourceRoot":"","sources":["../../../src/schemas/team/employees.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Zod schemas for Time Tracking operations
3
+ */
4
+ import { z } from "zod";
5
+ /**
6
+ * List all time-trackings input schema
7
+ */
8
+ export declare const ListAllTimeTrackingsInputSchema: z.ZodObject<{
9
+ page: z.ZodDefault<z.ZodNumber>;
10
+ response_format: z.ZodDefault<z.ZodEnum<typeof import("../../constants.js").ResponseFormat>>;
11
+ }, z.core.$strict>;
12
+ export type ListAllTimeTrackingsInput = z.infer<typeof ListAllTimeTrackingsInputSchema>;
13
+ /**
14
+ * List employee time-trackings input schema
15
+ */
16
+ export declare const ListEmployeeTimeTrackingsInputSchema: z.ZodObject<{
17
+ employee_id: z.ZodString;
18
+ page: z.ZodDefault<z.ZodNumber>;
19
+ response_format: z.ZodDefault<z.ZodEnum<typeof import("../../constants.js").ResponseFormat>>;
20
+ }, z.core.$strict>;
21
+ export type ListEmployeeTimeTrackingsInput = z.infer<typeof ListEmployeeTimeTrackingsInputSchema>;
22
+ /**
23
+ * Get time-tracking input schema
24
+ */
25
+ export declare const GetTimeTrackingInputSchema: z.ZodObject<{
26
+ time_id: z.ZodString;
27
+ response_format: z.ZodDefault<z.ZodEnum<typeof import("../../constants.js").ResponseFormat>>;
28
+ }, z.core.$strict>;
29
+ export type GetTimeTrackingInput = z.infer<typeof GetTimeTrackingInputSchema>;
30
+ /**
31
+ * Create employee time-tracking input schema
32
+ *
33
+ * According to Holded API documentation, the required parameters are:
34
+ * - startTmp (string): Start timestamp as Unix timestamp string
35
+ * - endTmp (string): End timestamp as Unix timestamp string
36
+ */
37
+ export declare const CreateEmployeeTimeTrackingInputSchema: z.ZodObject<{
38
+ employee_id: z.ZodString;
39
+ startTmp: z.ZodString;
40
+ endTmp: z.ZodString;
41
+ }, z.core.$strict>;
42
+ export type CreateEmployeeTimeTrackingInput = z.infer<typeof CreateEmployeeTimeTrackingInputSchema>;
43
+ /**
44
+ * Update time-tracking input schema
45
+ *
46
+ * According to Holded API documentation, the required parameters are:
47
+ * - startTmp (string): Start timestamp as Unix timestamp string
48
+ * - endTmp (string): End timestamp as Unix timestamp string
49
+ */
50
+ export declare const UpdateTimeTrackingInputSchema: z.ZodObject<{
51
+ time_id: z.ZodString;
52
+ startTmp: z.ZodString;
53
+ endTmp: z.ZodString;
54
+ }, z.core.$strict>;
55
+ export type UpdateTimeTrackingInput = z.infer<typeof UpdateTimeTrackingInputSchema>;
56
+ /**
57
+ * Delete time-tracking input schema
58
+ */
59
+ export declare const DeleteTimeTrackingInputSchema: z.ZodObject<{
60
+ time_id: z.ZodString;
61
+ }, z.core.$strict>;
62
+ export type DeleteTimeTrackingInput = z.infer<typeof DeleteTimeTrackingInputSchema>;
63
+ /**
64
+ * Employee clock-in input schema
65
+ */
66
+ export declare const EmployeeClockInInputSchema: z.ZodObject<{
67
+ employee_id: z.ZodString;
68
+ location: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strict>;
70
+ export type EmployeeClockInInput = z.infer<typeof EmployeeClockInInputSchema>;
71
+ /**
72
+ * Employee clock-out input schema
73
+ */
74
+ export declare const EmployeeClockOutInputSchema: z.ZodObject<{
75
+ employee_id: z.ZodString;
76
+ latitude: z.ZodOptional<z.ZodString>;
77
+ longitude: z.ZodOptional<z.ZodString>;
78
+ }, z.core.$strict>;
79
+ export type EmployeeClockOutInput = z.infer<typeof EmployeeClockOutInputSchema>;
80
+ /**
81
+ * Employee pause input schema
82
+ */
83
+ export declare const EmployeePauseInputSchema: z.ZodObject<{
84
+ employee_id: z.ZodString;
85
+ latitude: z.ZodOptional<z.ZodString>;
86
+ longitude: z.ZodOptional<z.ZodString>;
87
+ }, z.core.$strict>;
88
+ export type EmployeePauseInput = z.infer<typeof EmployeePauseInputSchema>;
89
+ /**
90
+ * Employee unpause input schema
91
+ */
92
+ export declare const EmployeeUnpauseInputSchema: z.ZodObject<{
93
+ employee_id: z.ZodString;
94
+ latitude: z.ZodOptional<z.ZodString>;
95
+ longitude: z.ZodOptional<z.ZodString>;
96
+ }, z.core.$strict>;
97
+ export type EmployeeUnpauseInput = z.infer<typeof EmployeeUnpauseInputSchema>;
98
+ //# sourceMappingURL=time-tracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-tracking.d.ts","sourceRoot":"","sources":["../../../src/schemas/team/time-tracking.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;kBAG1C,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF;;GAEG;AACH,eAAO,MAAM,oCAAoC;;;;kBAI/C,CAAC;AAEH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAElG;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;kBAGrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC;;;;kBAIhD,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAEpG;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B;;;;kBAIxC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,6BAA6B;;kBAExC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;kBAGrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;kBAItC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;kBAInC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;kBAIrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Zod schemas for Time Tracking operations
3
+ */
4
+ import { z } from "zod";
5
+ import { IdSchema, PaginationSchema, ResponseFormatSchema, OptionalStringSchema, } from "../common.js";
6
+ /**
7
+ * List all time-trackings input schema
8
+ */
9
+ export const ListAllTimeTrackingsInputSchema = z.strictObject({
10
+ page: PaginationSchema.shape.page,
11
+ response_format: ResponseFormatSchema,
12
+ });
13
+ /**
14
+ * List employee time-trackings input schema
15
+ */
16
+ export const ListEmployeeTimeTrackingsInputSchema = z.strictObject({
17
+ employee_id: IdSchema.describe("The employee ID"),
18
+ page: PaginationSchema.shape.page,
19
+ response_format: ResponseFormatSchema,
20
+ });
21
+ /**
22
+ * Get time-tracking input schema
23
+ */
24
+ export const GetTimeTrackingInputSchema = z.strictObject({
25
+ time_id: IdSchema.describe("The time-tracking ID to retrieve"),
26
+ response_format: ResponseFormatSchema,
27
+ });
28
+ /**
29
+ * Create employee time-tracking input schema
30
+ *
31
+ * According to Holded API documentation, the required parameters are:
32
+ * - startTmp (string): Start timestamp as Unix timestamp string
33
+ * - endTmp (string): End timestamp as Unix timestamp string
34
+ */
35
+ export const CreateEmployeeTimeTrackingInputSchema = z.strictObject({
36
+ employee_id: IdSchema.describe("The employee ID (required)"),
37
+ startTmp: z.string().min(1, { message: "Start timestamp is required" }).describe("Start time as Unix timestamp string (required)"),
38
+ endTmp: z.string().min(1, { message: "End timestamp is required" }).describe("End time as Unix timestamp string (required)"),
39
+ });
40
+ /**
41
+ * Update time-tracking input schema
42
+ *
43
+ * According to Holded API documentation, the required parameters are:
44
+ * - startTmp (string): Start timestamp as Unix timestamp string
45
+ * - endTmp (string): End timestamp as Unix timestamp string
46
+ */
47
+ export const UpdateTimeTrackingInputSchema = z.strictObject({
48
+ time_id: IdSchema.describe("The time-tracking ID to update"),
49
+ startTmp: z.string().min(1, { message: "Start timestamp is required" }).describe("Start time as Unix timestamp string (required)"),
50
+ endTmp: z.string().min(1, { message: "End timestamp is required" }).describe("End time as Unix timestamp string (required)"),
51
+ });
52
+ /**
53
+ * Delete time-tracking input schema
54
+ */
55
+ export const DeleteTimeTrackingInputSchema = z.strictObject({
56
+ time_id: IdSchema.describe("The time-tracking ID to delete"),
57
+ });
58
+ /**
59
+ * Employee clock-in input schema
60
+ */
61
+ export const EmployeeClockInInputSchema = z.strictObject({
62
+ employee_id: IdSchema.describe("The employee ID to clock in"),
63
+ location: OptionalStringSchema.describe("Location name"),
64
+ });
65
+ /**
66
+ * Employee clock-out input schema
67
+ */
68
+ export const EmployeeClockOutInputSchema = z.strictObject({
69
+ employee_id: IdSchema.describe("The employee ID to clock out"),
70
+ latitude: OptionalStringSchema.describe("Latitude (e.g., -7.45556)"),
71
+ longitude: OptionalStringSchema.describe("Longitude (e.g., 55.55765)"),
72
+ });
73
+ /**
74
+ * Employee pause input schema
75
+ */
76
+ export const EmployeePauseInputSchema = z.strictObject({
77
+ employee_id: IdSchema.describe("The employee ID to pause"),
78
+ latitude: OptionalStringSchema.describe("Latitude (e.g., -7.45556)"),
79
+ longitude: OptionalStringSchema.describe("Longitude (e.g., 55.55765)"),
80
+ });
81
+ /**
82
+ * Employee unpause input schema
83
+ */
84
+ export const EmployeeUnpauseInputSchema = z.strictObject({
85
+ employee_id: IdSchema.describe("The employee ID to unpause"),
86
+ latitude: OptionalStringSchema.describe("Latitude (e.g., -7.45556)"),
87
+ longitude: OptionalStringSchema.describe("Longitude (e.g., 55.55765)"),
88
+ });
89
+ //# sourceMappingURL=time-tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-tracking.js","sourceRoot":"","sources":["../../../src/schemas/team/time-tracking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Holded API client with authentication, error handling, and retry logic
3
+ */
4
+ import { AxiosError } from "axios";
5
+ /**
6
+ * Token bucket for rate limiting
7
+ * Exported for testing purposes
8
+ */
9
+ export declare class TokenBucket {
10
+ private tokens;
11
+ private lastRefill;
12
+ private readonly capacity;
13
+ private readonly refillRate;
14
+ constructor(requestsPerSecond: number);
15
+ /**
16
+ * Refill tokens based on time elapsed
17
+ */
18
+ private refill;
19
+ /**
20
+ * Try to consume a token, wait if not available
21
+ */
22
+ consume(): Promise<void>;
23
+ /**
24
+ * Get current token count (for testing)
25
+ */
26
+ getTokens(): number;
27
+ /**
28
+ * Get capacity (for testing)
29
+ */
30
+ getCapacity(): number;
31
+ }
32
+ /**
33
+ * Sleep for a specified number of milliseconds
34
+ * Exported for testing purposes
35
+ */
36
+ export declare function sleep(ms: number): Promise<void>;
37
+ /**
38
+ * Calculate delay for retry with exponential backoff and jitter
39
+ * Exported for testing purposes
40
+ */
41
+ export declare function calculateRetryDelay(attempt: number, retryAfterHeader?: string): number;
42
+ /**
43
+ * Check if an error is retryable based on status code
44
+ * Exported for testing purposes
45
+ */
46
+ export declare function isRetryableError(error: unknown): boolean;
47
+ /**
48
+ * Get Retry-After header value if present
49
+ * Exported for testing purposes
50
+ */
51
+ export declare function getRetryAfterHeader(error: AxiosError): string | undefined;
52
+ /**
53
+ * Initialize the API client with the Holded API key
54
+ */
55
+ export declare function initializeApi(key: string): void;
56
+ /**
57
+ * Get the API key from environment or throw error
58
+ */
59
+ export declare function getApiKey(): string;
60
+ /**
61
+ * API module types
62
+ */
63
+ export type ApiModule = "invoicing" | "crm" | "projects" | "accounting" | "team";
64
+ /**
65
+ * Make an API request to the Holded API with automatic retry for transient errors
66
+ *
67
+ * Retries automatically on:
68
+ * - 429 (Rate limit exceeded)
69
+ * - 500, 502, 503, 504 (Server errors)
70
+ * - Network timeout errors
71
+ *
72
+ * Uses exponential backoff with jitter between retries.
73
+ * Includes proactive rate limiting to prevent hitting API limits.
74
+ */
75
+ export declare function makeApiRequest<T>(module: ApiModule, endpoint: string, method?: "GET" | "POST" | "PUT" | "DELETE", data?: unknown, params?: Record<string, unknown>): Promise<T>;
76
+ /**
77
+ * Make a multipart/form-data API request for file uploads with automatic retry
78
+ *
79
+ * Retries automatically on transient errors (rate limit, server errors).
80
+ * Includes proactive rate limiting to prevent hitting API limits.
81
+ */
82
+ export declare function makeMultipartApiRequest<T>(module: ApiModule, endpoint: string, fileBuffer: Buffer, fileName: string, setMain?: boolean): Promise<T>;
83
+ /**
84
+ * Handle API errors and return user-friendly messages with actionable remediation hints
85
+ *
86
+ * Error codes per Holded API documentation:
87
+ * - 400: Bad request
88
+ * - 401: Unauthorized (invalid API key)
89
+ * - 403: Forbidden
90
+ * - 404: Resource not found
91
+ * - 409: Conflict
92
+ * - 410: Gone (e.g., booking slot no longer available)
93
+ * - 422: Validation failed
94
+ * - 429: Rate limit exceeded
95
+ * - 500: Server error
96
+ */
97
+ export declare function handleApiError(error: unknown): string;
98
+ /**
99
+ * Format a successful response with optional truncation
100
+ */
101
+ export declare function formatResponse<T>(data: T, characterLimit?: number): {
102
+ text: string;
103
+ truncated: boolean;
104
+ };
105
+ /**
106
+ * Build pagination query parameters
107
+ */
108
+ export declare function buildPaginationParams(page?: number): Record<string, unknown>;
109
+ /**
110
+ * Safely convert API response to Record<string, unknown> for structuredContent
111
+ * Handles cases where API might return string, object, array, or other types
112
+ */
113
+ export declare function toStructuredContent(response: unknown): Record<string, unknown>;
114
+ /**
115
+ * Reset internal state for testing purposes only
116
+ */
117
+ export declare function _resetForTesting(): void;
118
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,UAAU,EAAqC,MAAM,OAAO,CAAC;AAuC7E;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,iBAAiB,EAAE,MAAM;IAOrC;;OAEG;IACH,OAAO,CAAC,MAAM;IASd;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB9B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB;AAsBD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAetF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAYxD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAEzE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAU/C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAYlC;AAYD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;AAoBjF;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAgB,EACjD,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CAoDZ;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC,CAuDZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAwDrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,EACP,cAAc,GAAE,MAAc,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CA2BtC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC"}