digital-tools 2.0.1

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 (452) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +1144 -0
  4. package/dist/define.d.ts +109 -0
  5. package/dist/define.d.ts.map +1 -0
  6. package/dist/define.js +268 -0
  7. package/dist/define.js.map +1 -0
  8. package/dist/entities/advertising.d.ts +79 -0
  9. package/dist/entities/advertising.d.ts.map +1 -0
  10. package/dist/entities/advertising.js +1000 -0
  11. package/dist/entities/advertising.js.map +1 -0
  12. package/dist/entities/ai.d.ts +69 -0
  13. package/dist/entities/ai.d.ts.map +1 -0
  14. package/dist/entities/ai.js +757 -0
  15. package/dist/entities/ai.js.map +1 -0
  16. package/dist/entities/analytics.d.ts +83 -0
  17. package/dist/entities/analytics.d.ts.map +1 -0
  18. package/dist/entities/analytics.js +1589 -0
  19. package/dist/entities/analytics.js.map +1 -0
  20. package/dist/entities/automation.d.ts +61 -0
  21. package/dist/entities/automation.d.ts.map +1 -0
  22. package/dist/entities/automation.js +602 -0
  23. package/dist/entities/automation.js.map +1 -0
  24. package/dist/entities/communication.d.ts +96 -0
  25. package/dist/entities/communication.d.ts.map +1 -0
  26. package/dist/entities/communication.js +1151 -0
  27. package/dist/entities/communication.js.map +1 -0
  28. package/dist/entities/crm.d.ts +91 -0
  29. package/dist/entities/crm.d.ts.map +1 -0
  30. package/dist/entities/crm.js +1387 -0
  31. package/dist/entities/crm.js.map +1 -0
  32. package/dist/entities/design.d.ts +61 -0
  33. package/dist/entities/design.d.ts.map +1 -0
  34. package/dist/entities/design.js +547 -0
  35. package/dist/entities/design.js.map +1 -0
  36. package/dist/entities/development.d.ts +145 -0
  37. package/dist/entities/development.d.ts.map +1 -0
  38. package/dist/entities/development.js +2213 -0
  39. package/dist/entities/development.js.map +1 -0
  40. package/dist/entities/document.d.ts +54 -0
  41. package/dist/entities/document.d.ts.map +1 -0
  42. package/dist/entities/document.js +875 -0
  43. package/dist/entities/document.js.map +1 -0
  44. package/dist/entities/ecommerce.d.ts +93 -0
  45. package/dist/entities/ecommerce.d.ts.map +1 -0
  46. package/dist/entities/ecommerce.js +1430 -0
  47. package/dist/entities/ecommerce.js.map +1 -0
  48. package/dist/entities/experiment.d.ts +89 -0
  49. package/dist/entities/experiment.d.ts.map +1 -0
  50. package/dist/entities/experiment.js +1040 -0
  51. package/dist/entities/experiment.js.map +1 -0
  52. package/dist/entities/finance.d.ts +272 -0
  53. package/dist/entities/finance.d.ts.map +1 -0
  54. package/dist/entities/finance.js +3479 -0
  55. package/dist/entities/finance.js.map +1 -0
  56. package/dist/entities/forms.d.ts +91 -0
  57. package/dist/entities/forms.d.ts.map +1 -0
  58. package/dist/entities/forms.js +1893 -0
  59. package/dist/entities/forms.js.map +1 -0
  60. package/dist/entities/hr.d.ts +62 -0
  61. package/dist/entities/hr.d.ts.map +1 -0
  62. package/dist/entities/hr.js +662 -0
  63. package/dist/entities/hr.js.map +1 -0
  64. package/dist/entities/identity.d.ts +90 -0
  65. package/dist/entities/identity.d.ts.map +1 -0
  66. package/dist/entities/identity.js +998 -0
  67. package/dist/entities/identity.js.map +1 -0
  68. package/dist/entities/index.d.ts +410 -0
  69. package/dist/entities/index.d.ts.map +1 -0
  70. package/dist/entities/index.js +283 -0
  71. package/dist/entities/index.js.map +1 -0
  72. package/dist/entities/infrastructure.d.ts +98 -0
  73. package/dist/entities/infrastructure.d.ts.map +1 -0
  74. package/dist/entities/infrastructure.js +1154 -0
  75. package/dist/entities/infrastructure.js.map +1 -0
  76. package/dist/entities/knowledge.d.ts +98 -0
  77. package/dist/entities/knowledge.d.ts.map +1 -0
  78. package/dist/entities/knowledge.js +1439 -0
  79. package/dist/entities/knowledge.js.map +1 -0
  80. package/dist/entities/marketing.d.ts +82 -0
  81. package/dist/entities/marketing.d.ts.map +1 -0
  82. package/dist/entities/marketing.js +1611 -0
  83. package/dist/entities/marketing.js.map +1 -0
  84. package/dist/entities/media.d.ts +83 -0
  85. package/dist/entities/media.d.ts.map +1 -0
  86. package/dist/entities/media.js +1635 -0
  87. package/dist/entities/media.js.map +1 -0
  88. package/dist/entities/notification.d.ts +76 -0
  89. package/dist/entities/notification.d.ts.map +1 -0
  90. package/dist/entities/notification.js +1200 -0
  91. package/dist/entities/notification.js.map +1 -0
  92. package/dist/entities/presentation.d.ts +61 -0
  93. package/dist/entities/presentation.d.ts.map +1 -0
  94. package/dist/entities/presentation.js +1275 -0
  95. package/dist/entities/presentation.js.map +1 -0
  96. package/dist/entities/productivity.d.ts +92 -0
  97. package/dist/entities/productivity.d.ts.map +1 -0
  98. package/dist/entities/productivity.js +1318 -0
  99. package/dist/entities/productivity.js.map +1 -0
  100. package/dist/entities/project-management.d.ts +89 -0
  101. package/dist/entities/project-management.d.ts.map +1 -0
  102. package/dist/entities/project-management.js +1137 -0
  103. package/dist/entities/project-management.js.map +1 -0
  104. package/dist/entities/recruiting.d.ts +54 -0
  105. package/dist/entities/recruiting.d.ts.map +1 -0
  106. package/dist/entities/recruiting.js +737 -0
  107. package/dist/entities/recruiting.js.map +1 -0
  108. package/dist/entities/shipping.d.ts +52 -0
  109. package/dist/entities/shipping.d.ts.map +1 -0
  110. package/dist/entities/shipping.js +510 -0
  111. package/dist/entities/shipping.js.map +1 -0
  112. package/dist/entities/signature.d.ts +83 -0
  113. package/dist/entities/signature.d.ts.map +1 -0
  114. package/dist/entities/signature.js +1103 -0
  115. package/dist/entities/signature.js.map +1 -0
  116. package/dist/entities/site.d.ts +33 -0
  117. package/dist/entities/site.d.ts.map +1 -0
  118. package/dist/entities/site.js +223 -0
  119. package/dist/entities/site.js.map +1 -0
  120. package/dist/entities/spreadsheet.d.ts +68 -0
  121. package/dist/entities/spreadsheet.d.ts.map +1 -0
  122. package/dist/entities/spreadsheet.js +1342 -0
  123. package/dist/entities/spreadsheet.js.map +1 -0
  124. package/dist/entities/storage.d.ts +74 -0
  125. package/dist/entities/storage.d.ts.map +1 -0
  126. package/dist/entities/storage.js +1199 -0
  127. package/dist/entities/storage.js.map +1 -0
  128. package/dist/entities/support.d.ts +83 -0
  129. package/dist/entities/support.d.ts.map +1 -0
  130. package/dist/entities/support.js +1167 -0
  131. package/dist/entities/support.js.map +1 -0
  132. package/dist/entities/video-conferencing.d.ts +129 -0
  133. package/dist/entities/video-conferencing.d.ts.map +1 -0
  134. package/dist/entities/video-conferencing.js +1751 -0
  135. package/dist/entities/video-conferencing.js.map +1 -0
  136. package/dist/entities/video.d.ts +76 -0
  137. package/dist/entities/video.d.ts.map +1 -0
  138. package/dist/entities/video.js +951 -0
  139. package/dist/entities/video.js.map +1 -0
  140. package/dist/entities.d.ts +147 -0
  141. package/dist/entities.d.ts.map +1 -0
  142. package/dist/entities.js +1664 -0
  143. package/dist/entities.js.map +1 -0
  144. package/dist/index.d.ts +29 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +75 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/providers/analytics/index.d.ts +19 -0
  149. package/dist/providers/analytics/index.d.ts.map +1 -0
  150. package/dist/providers/analytics/index.js +18 -0
  151. package/dist/providers/analytics/index.js.map +1 -0
  152. package/dist/providers/analytics/mixpanel.d.ts +25 -0
  153. package/dist/providers/analytics/mixpanel.d.ts.map +1 -0
  154. package/dist/providers/analytics/mixpanel.js +256 -0
  155. package/dist/providers/analytics/mixpanel.js.map +1 -0
  156. package/dist/providers/calendar/cal-com.d.ts +26 -0
  157. package/dist/providers/calendar/cal-com.d.ts.map +1 -0
  158. package/dist/providers/calendar/cal-com.js +304 -0
  159. package/dist/providers/calendar/cal-com.js.map +1 -0
  160. package/dist/providers/calendar/google-calendar.d.ts +25 -0
  161. package/dist/providers/calendar/google-calendar.d.ts.map +1 -0
  162. package/dist/providers/calendar/google-calendar.js +336 -0
  163. package/dist/providers/calendar/google-calendar.js.map +1 -0
  164. package/dist/providers/calendar/index.d.ts +20 -0
  165. package/dist/providers/calendar/index.d.ts.map +1 -0
  166. package/dist/providers/calendar/index.js +21 -0
  167. package/dist/providers/calendar/index.js.map +1 -0
  168. package/dist/providers/crm/hubspot.d.ts +25 -0
  169. package/dist/providers/crm/hubspot.d.ts.map +1 -0
  170. package/dist/providers/crm/hubspot.js +567 -0
  171. package/dist/providers/crm/hubspot.js.map +1 -0
  172. package/dist/providers/crm/index.d.ts +19 -0
  173. package/dist/providers/crm/index.d.ts.map +1 -0
  174. package/dist/providers/crm/index.js +18 -0
  175. package/dist/providers/crm/index.js.map +1 -0
  176. package/dist/providers/development/github.d.ts +25 -0
  177. package/dist/providers/development/github.d.ts.map +1 -0
  178. package/dist/providers/development/github.js +473 -0
  179. package/dist/providers/development/github.js.map +1 -0
  180. package/dist/providers/development/index.d.ts +19 -0
  181. package/dist/providers/development/index.d.ts.map +1 -0
  182. package/dist/providers/development/index.js +18 -0
  183. package/dist/providers/development/index.js.map +1 -0
  184. package/dist/providers/ecommerce/index.d.ts +19 -0
  185. package/dist/providers/ecommerce/index.d.ts.map +1 -0
  186. package/dist/providers/ecommerce/index.js +18 -0
  187. package/dist/providers/ecommerce/index.js.map +1 -0
  188. package/dist/providers/ecommerce/shopify.d.ts +25 -0
  189. package/dist/providers/ecommerce/shopify.d.ts.map +1 -0
  190. package/dist/providers/ecommerce/shopify.js +379 -0
  191. package/dist/providers/ecommerce/shopify.js.map +1 -0
  192. package/dist/providers/email/index.d.ts +20 -0
  193. package/dist/providers/email/index.d.ts.map +1 -0
  194. package/dist/providers/email/index.js +21 -0
  195. package/dist/providers/email/index.js.map +1 -0
  196. package/dist/providers/email/resend.d.ts +25 -0
  197. package/dist/providers/email/resend.d.ts.map +1 -0
  198. package/dist/providers/email/resend.js +259 -0
  199. package/dist/providers/email/resend.js.map +1 -0
  200. package/dist/providers/email/sendgrid.d.ts +25 -0
  201. package/dist/providers/email/sendgrid.d.ts.map +1 -0
  202. package/dist/providers/email/sendgrid.js +162 -0
  203. package/dist/providers/email/sendgrid.js.map +1 -0
  204. package/dist/providers/finance/index.d.ts +19 -0
  205. package/dist/providers/finance/index.d.ts.map +1 -0
  206. package/dist/providers/finance/index.js +18 -0
  207. package/dist/providers/finance/index.js.map +1 -0
  208. package/dist/providers/finance/stripe.d.ts +25 -0
  209. package/dist/providers/finance/stripe.d.ts.map +1 -0
  210. package/dist/providers/finance/stripe.js +550 -0
  211. package/dist/providers/finance/stripe.js.map +1 -0
  212. package/dist/providers/forms/index.d.ts +19 -0
  213. package/dist/providers/forms/index.d.ts.map +1 -0
  214. package/dist/providers/forms/index.js +18 -0
  215. package/dist/providers/forms/index.js.map +1 -0
  216. package/dist/providers/forms/typeform.d.ts +25 -0
  217. package/dist/providers/forms/typeform.d.ts.map +1 -0
  218. package/dist/providers/forms/typeform.js +501 -0
  219. package/dist/providers/forms/typeform.js.map +1 -0
  220. package/dist/providers/index.d.ts +56 -0
  221. package/dist/providers/index.d.ts.map +1 -0
  222. package/dist/providers/index.js +124 -0
  223. package/dist/providers/index.js.map +1 -0
  224. package/dist/providers/knowledge/index.d.ts +19 -0
  225. package/dist/providers/knowledge/index.d.ts.map +1 -0
  226. package/dist/providers/knowledge/index.js +18 -0
  227. package/dist/providers/knowledge/index.js.map +1 -0
  228. package/dist/providers/knowledge/notion.d.ts +25 -0
  229. package/dist/providers/knowledge/notion.d.ts.map +1 -0
  230. package/dist/providers/knowledge/notion.js +390 -0
  231. package/dist/providers/knowledge/notion.js.map +1 -0
  232. package/dist/providers/marketing/index.d.ts +19 -0
  233. package/dist/providers/marketing/index.d.ts.map +1 -0
  234. package/dist/providers/marketing/index.js +18 -0
  235. package/dist/providers/marketing/index.js.map +1 -0
  236. package/dist/providers/marketing/mailchimp.d.ts +25 -0
  237. package/dist/providers/marketing/mailchimp.d.ts.map +1 -0
  238. package/dist/providers/marketing/mailchimp.js +444 -0
  239. package/dist/providers/marketing/mailchimp.js.map +1 -0
  240. package/dist/providers/media/cloudinary.d.ts +25 -0
  241. package/dist/providers/media/cloudinary.d.ts.map +1 -0
  242. package/dist/providers/media/cloudinary.js +319 -0
  243. package/dist/providers/media/cloudinary.js.map +1 -0
  244. package/dist/providers/media/index.d.ts +19 -0
  245. package/dist/providers/media/index.d.ts.map +1 -0
  246. package/dist/providers/media/index.js +18 -0
  247. package/dist/providers/media/index.js.map +1 -0
  248. package/dist/providers/messaging/index.d.ts +24 -0
  249. package/dist/providers/messaging/index.d.ts.map +1 -0
  250. package/dist/providers/messaging/index.js +21 -0
  251. package/dist/providers/messaging/index.js.map +1 -0
  252. package/dist/providers/messaging/slack.d.ts +25 -0
  253. package/dist/providers/messaging/slack.d.ts.map +1 -0
  254. package/dist/providers/messaging/slack.js +394 -0
  255. package/dist/providers/messaging/slack.js.map +1 -0
  256. package/dist/providers/messaging/twilio-sms.d.ts +25 -0
  257. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -0
  258. package/dist/providers/messaging/twilio-sms.js +250 -0
  259. package/dist/providers/messaging/twilio-sms.js.map +1 -0
  260. package/dist/providers/project-management/index.d.ts +19 -0
  261. package/dist/providers/project-management/index.d.ts.map +1 -0
  262. package/dist/providers/project-management/index.js +18 -0
  263. package/dist/providers/project-management/index.js.map +1 -0
  264. package/dist/providers/project-management/linear.d.ts +25 -0
  265. package/dist/providers/project-management/linear.d.ts.map +1 -0
  266. package/dist/providers/project-management/linear.js +576 -0
  267. package/dist/providers/project-management/linear.js.map +1 -0
  268. package/dist/providers/registry.d.ts +41 -0
  269. package/dist/providers/registry.d.ts.map +1 -0
  270. package/dist/providers/registry.js +87 -0
  271. package/dist/providers/registry.js.map +1 -0
  272. package/dist/providers/spreadsheet/google-sheets.d.ts +25 -0
  273. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -0
  274. package/dist/providers/spreadsheet/google-sheets.js +376 -0
  275. package/dist/providers/spreadsheet/google-sheets.js.map +1 -0
  276. package/dist/providers/spreadsheet/index.d.ts +20 -0
  277. package/dist/providers/spreadsheet/index.d.ts.map +1 -0
  278. package/dist/providers/spreadsheet/index.js +21 -0
  279. package/dist/providers/spreadsheet/index.js.map +1 -0
  280. package/dist/providers/spreadsheet/xlsx.d.ts +26 -0
  281. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -0
  282. package/dist/providers/spreadsheet/xlsx.js +424 -0
  283. package/dist/providers/spreadsheet/xlsx.js.map +1 -0
  284. package/dist/providers/storage/index.d.ts +30 -0
  285. package/dist/providers/storage/index.d.ts.map +1 -0
  286. package/dist/providers/storage/index.js +25 -0
  287. package/dist/providers/storage/index.js.map +1 -0
  288. package/dist/providers/storage/s3.d.ts +25 -0
  289. package/dist/providers/storage/s3.d.ts.map +1 -0
  290. package/dist/providers/storage/s3.js +420 -0
  291. package/dist/providers/storage/s3.js.map +1 -0
  292. package/dist/providers/support/index.d.ts +19 -0
  293. package/dist/providers/support/index.d.ts.map +1 -0
  294. package/dist/providers/support/index.js +18 -0
  295. package/dist/providers/support/index.js.map +1 -0
  296. package/dist/providers/support/zendesk.d.ts +25 -0
  297. package/dist/providers/support/zendesk.d.ts.map +1 -0
  298. package/dist/providers/support/zendesk.js +374 -0
  299. package/dist/providers/support/zendesk.js.map +1 -0
  300. package/dist/providers/tasks/index.d.ts +19 -0
  301. package/dist/providers/tasks/index.d.ts.map +1 -0
  302. package/dist/providers/tasks/index.js +18 -0
  303. package/dist/providers/tasks/index.js.map +1 -0
  304. package/dist/providers/tasks/todoist.d.ts +25 -0
  305. package/dist/providers/tasks/todoist.d.ts.map +1 -0
  306. package/dist/providers/tasks/todoist.js +287 -0
  307. package/dist/providers/tasks/todoist.js.map +1 -0
  308. package/dist/providers/types.d.ts +1753 -0
  309. package/dist/providers/types.d.ts.map +1 -0
  310. package/dist/providers/types.js +10 -0
  311. package/dist/providers/types.js.map +1 -0
  312. package/dist/providers/video-conferencing/google-meet.d.ts +26 -0
  313. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -0
  314. package/dist/providers/video-conferencing/google-meet.js +287 -0
  315. package/dist/providers/video-conferencing/google-meet.js.map +1 -0
  316. package/dist/providers/video-conferencing/index.d.ts +22 -0
  317. package/dist/providers/video-conferencing/index.d.ts.map +1 -0
  318. package/dist/providers/video-conferencing/index.js +32 -0
  319. package/dist/providers/video-conferencing/index.js.map +1 -0
  320. package/dist/providers/video-conferencing/jitsi.d.ts +26 -0
  321. package/dist/providers/video-conferencing/jitsi.d.ts.map +1 -0
  322. package/dist/providers/video-conferencing/jitsi.js +255 -0
  323. package/dist/providers/video-conferencing/jitsi.js.map +1 -0
  324. package/dist/providers/video-conferencing/teams.d.ts +26 -0
  325. package/dist/providers/video-conferencing/teams.d.ts.map +1 -0
  326. package/dist/providers/video-conferencing/teams.js +271 -0
  327. package/dist/providers/video-conferencing/teams.js.map +1 -0
  328. package/dist/providers/video-conferencing/zoom.d.ts +25 -0
  329. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -0
  330. package/dist/providers/video-conferencing/zoom.js +333 -0
  331. package/dist/providers/video-conferencing/zoom.js.map +1 -0
  332. package/dist/providers/voice/vapi.d.ts +27 -0
  333. package/dist/providers/voice/vapi.d.ts.map +1 -0
  334. package/dist/providers/voice/vapi.js +440 -0
  335. package/dist/providers/voice/vapi.js.map +1 -0
  336. package/dist/registry.d.ts +38 -0
  337. package/dist/registry.d.ts.map +1 -0
  338. package/dist/registry.js +129 -0
  339. package/dist/registry.js.map +1 -0
  340. package/dist/tools/communication.d.ts +94 -0
  341. package/dist/tools/communication.d.ts.map +1 -0
  342. package/dist/tools/communication.js +185 -0
  343. package/dist/tools/communication.js.map +1 -0
  344. package/dist/tools/data.d.ts +61 -0
  345. package/dist/tools/data.d.ts.map +1 -0
  346. package/dist/tools/data.js +206 -0
  347. package/dist/tools/data.js.map +1 -0
  348. package/dist/tools/index.d.ts +12 -0
  349. package/dist/tools/index.d.ts.map +1 -0
  350. package/dist/tools/index.js +12 -0
  351. package/dist/tools/index.js.map +1 -0
  352. package/dist/tools/web.d.ts +45 -0
  353. package/dist/tools/web.d.ts.map +1 -0
  354. package/dist/tools/web.js +138 -0
  355. package/dist/tools/web.js.map +1 -0
  356. package/dist/types.d.ts +330 -0
  357. package/dist/types.d.ts.map +1 -0
  358. package/dist/types.js +11 -0
  359. package/dist/types.js.map +1 -0
  360. package/package.json +45 -0
  361. package/src/define.ts +321 -0
  362. package/src/entities/advertising.ts +1086 -0
  363. package/src/entities/ai.ts +835 -0
  364. package/src/entities/analytics.ts +1690 -0
  365. package/src/entities/automation.ts +669 -0
  366. package/src/entities/communication.ts +1255 -0
  367. package/src/entities/crm.ts +1481 -0
  368. package/src/entities/design.ts +606 -0
  369. package/src/entities/development.ts +2392 -0
  370. package/src/entities/document.ts +930 -0
  371. package/src/entities/ecommerce.ts +1539 -0
  372. package/src/entities/experiment.ts +1139 -0
  373. package/src/entities/finance.ts +3907 -0
  374. package/src/entities/forms.ts +2021 -0
  375. package/src/entities/hr.ts +725 -0
  376. package/src/entities/identity.ts +1093 -0
  377. package/src/entities/index.ts +731 -0
  378. package/src/entities/infrastructure.ts +1254 -0
  379. package/src/entities/knowledge.ts +1547 -0
  380. package/src/entities/marketing.ts +1718 -0
  381. package/src/entities/media.ts +1747 -0
  382. package/src/entities/notification.ts +1260 -0
  383. package/src/entities/presentation.ts +1360 -0
  384. package/src/entities/productivity.ts +1411 -0
  385. package/src/entities/project-management.ts +1222 -0
  386. package/src/entities/recruiting.ts +797 -0
  387. package/src/entities/shipping.ts +566 -0
  388. package/src/entities/signature.ts +1204 -0
  389. package/src/entities/site.ts +244 -0
  390. package/src/entities/spreadsheet.ts +1434 -0
  391. package/src/entities/storage.ts +1290 -0
  392. package/src/entities/support.ts +1267 -0
  393. package/src/entities/video-conferencing.ts +1874 -0
  394. package/src/entities/video.ts +1035 -0
  395. package/src/entities.ts +1795 -0
  396. package/src/index.ts +176 -0
  397. package/src/providers/analytics/index.ts +21 -0
  398. package/src/providers/analytics/mixpanel.ts +311 -0
  399. package/src/providers/calendar/cal-com.ts +435 -0
  400. package/src/providers/calendar/google-calendar.ts +412 -0
  401. package/src/providers/calendar/index.ts +24 -0
  402. package/src/providers/crm/hubspot.ts +667 -0
  403. package/src/providers/crm/index.ts +21 -0
  404. package/src/providers/development/github.ts +608 -0
  405. package/src/providers/development/index.ts +21 -0
  406. package/src/providers/ecommerce/index.ts +21 -0
  407. package/src/providers/ecommerce/shopify.ts +451 -0
  408. package/src/providers/email/index.ts +24 -0
  409. package/src/providers/email/resend.ts +301 -0
  410. package/src/providers/email/sendgrid.ts +196 -0
  411. package/src/providers/finance/index.ts +21 -0
  412. package/src/providers/finance/stripe.ts +665 -0
  413. package/src/providers/forms/index.ts +21 -0
  414. package/src/providers/forms/typeform.ts +598 -0
  415. package/src/providers/index.ts +281 -0
  416. package/src/providers/knowledge/index.ts +21 -0
  417. package/src/providers/knowledge/notion.ts +497 -0
  418. package/src/providers/marketing/index.ts +21 -0
  419. package/src/providers/marketing/mailchimp.ts +656 -0
  420. package/src/providers/media/cloudinary.ts +373 -0
  421. package/src/providers/media/index.ts +21 -0
  422. package/src/providers/messaging/index.ts +24 -0
  423. package/src/providers/messaging/slack.ts +487 -0
  424. package/src/providers/messaging/twilio-sms.ts +301 -0
  425. package/src/providers/project-management/index.ts +21 -0
  426. package/src/providers/project-management/linear.ts +693 -0
  427. package/src/providers/registry.ts +119 -0
  428. package/src/providers/spreadsheet/google-sheets.ts +464 -0
  429. package/src/providers/spreadsheet/index.ts +24 -0
  430. package/src/providers/spreadsheet/xlsx.ts +542 -0
  431. package/src/providers/storage/index.ts +35 -0
  432. package/src/providers/storage/s3.ts +513 -0
  433. package/src/providers/support/index.ts +21 -0
  434. package/src/providers/support/zendesk.ts +417 -0
  435. package/src/providers/tasks/index.ts +21 -0
  436. package/src/providers/tasks/todoist.ts +407 -0
  437. package/src/providers/types.ts +2113 -0
  438. package/src/providers/video-conferencing/google-meet.ts +412 -0
  439. package/src/providers/video-conferencing/index.ts +35 -0
  440. package/src/providers/video-conferencing/jitsi.ts +324 -0
  441. package/src/providers/video-conferencing/teams.ts +408 -0
  442. package/src/providers/video-conferencing/zoom.ts +451 -0
  443. package/src/registry.ts +172 -0
  444. package/src/tools/communication.ts +256 -0
  445. package/src/tools/data.ts +236 -0
  446. package/src/tools/index.ts +12 -0
  447. package/src/tools/web.ts +161 -0
  448. package/src/types.ts +539 -0
  449. package/test/define.test.ts +367 -0
  450. package/test/registry.test.ts +444 -0
  451. package/test/tools.test.ts +453 -0
  452. package/tsconfig.json +20 -0
@@ -0,0 +1,2113 @@
1
+ /**
2
+ * Provider Interface Types
3
+ *
4
+ * Defines the contract that concrete providers must implement.
5
+ * Each provider binds abstract entity types (Nouns) to real APIs/services.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+
10
+ import type {
11
+ Email,
12
+ EmailThread,
13
+ Spreadsheet,
14
+ Sheet,
15
+ Cell,
16
+ Document,
17
+ Presentation,
18
+ Slide,
19
+ PhoneCall,
20
+ Voicemail,
21
+ Workspace,
22
+ Channel,
23
+ Message,
24
+ Thread,
25
+ DirectMessage,
26
+ Member,
27
+ Attachment,
28
+ Contact,
29
+ } from '../entities.js'
30
+
31
+ // =============================================================================
32
+ // Base Provider Types
33
+ // =============================================================================
34
+
35
+ /**
36
+ * Provider metadata
37
+ */
38
+ export interface ProviderInfo {
39
+ /** Unique provider identifier */
40
+ id: string
41
+ /** Human-readable name */
42
+ name: string
43
+ /** Provider description */
44
+ description: string
45
+ /** Provider category */
46
+ category: ProviderCategory
47
+ /** Website URL */
48
+ website?: string
49
+ /** Documentation URL */
50
+ docsUrl?: string
51
+ /** Required configuration keys */
52
+ requiredConfig: string[]
53
+ /** Optional configuration keys */
54
+ optionalConfig?: string[]
55
+ }
56
+
57
+ /**
58
+ * Provider categories
59
+ */
60
+ export type ProviderCategory =
61
+ | 'email'
62
+ | 'messaging'
63
+ | 'spreadsheet'
64
+ | 'document'
65
+ | 'presentation'
66
+ | 'phone'
67
+ | 'storage'
68
+ | 'calendar'
69
+ | 'tasks'
70
+ | 'project-management'
71
+ | 'crm'
72
+ | 'development'
73
+ | 'finance'
74
+ | 'support'
75
+ | 'media'
76
+ | 'marketing'
77
+ | 'knowledge'
78
+ | 'ecommerce'
79
+ | 'analytics'
80
+ | 'video-conferencing'
81
+ | 'forms'
82
+
83
+ /**
84
+ * Provider configuration
85
+ */
86
+ export interface ProviderConfig {
87
+ /** API key or token */
88
+ apiKey?: string
89
+ /** API secret */
90
+ apiSecret?: string
91
+ /** OAuth access token */
92
+ accessToken?: string
93
+ /** OAuth refresh token */
94
+ refreshToken?: string
95
+ /** Base URL override */
96
+ baseUrl?: string
97
+ /** Webhook URL for callbacks */
98
+ webhookUrl?: string
99
+ /** Additional provider-specific config */
100
+ [key: string]: unknown
101
+ }
102
+
103
+ /**
104
+ * Provider health status
105
+ */
106
+ export interface ProviderHealth {
107
+ healthy: boolean
108
+ latencyMs?: number
109
+ message?: string
110
+ checkedAt: Date
111
+ }
112
+
113
+ /**
114
+ * Base provider interface
115
+ */
116
+ export interface BaseProvider {
117
+ /** Provider metadata */
118
+ readonly info: ProviderInfo
119
+
120
+ /** Initialize the provider with config */
121
+ initialize(config: ProviderConfig): Promise<void>
122
+
123
+ /** Check provider health/connectivity */
124
+ healthCheck(): Promise<ProviderHealth>
125
+
126
+ /** Dispose of provider resources */
127
+ dispose(): Promise<void>
128
+ }
129
+
130
+ /**
131
+ * Pagination options
132
+ */
133
+ export interface PaginationOptions {
134
+ limit?: number
135
+ offset?: number
136
+ cursor?: string
137
+ }
138
+
139
+ /**
140
+ * Paginated result
141
+ */
142
+ export interface PaginatedResult<T> {
143
+ items: T[]
144
+ total?: number
145
+ hasMore: boolean
146
+ nextCursor?: string
147
+ }
148
+
149
+ // =============================================================================
150
+ // Email Provider
151
+ // =============================================================================
152
+
153
+ /**
154
+ * Email send options
155
+ */
156
+ export interface SendEmailOptions {
157
+ to: string[]
158
+ cc?: string[]
159
+ bcc?: string[]
160
+ from?: string
161
+ replyTo?: string
162
+ subject: string
163
+ text?: string
164
+ html?: string
165
+ attachments?: Array<{
166
+ filename: string
167
+ content: string | Buffer
168
+ contentType?: string
169
+ contentId?: string
170
+ }>
171
+ headers?: Record<string, string>
172
+ tags?: string[]
173
+ metadata?: Record<string, string>
174
+ /** Schedule send time */
175
+ sendAt?: Date
176
+ /** Track opens */
177
+ trackOpens?: boolean
178
+ /** Track clicks */
179
+ trackClicks?: boolean
180
+ }
181
+
182
+ /**
183
+ * Email send result
184
+ */
185
+ export interface SendEmailResult {
186
+ success: boolean
187
+ messageId?: string
188
+ error?: {
189
+ code: string
190
+ message: string
191
+ }
192
+ }
193
+
194
+ /**
195
+ * Email provider interface
196
+ */
197
+ export interface EmailProvider extends BaseProvider {
198
+ /** Send an email */
199
+ send(options: SendEmailOptions): Promise<SendEmailResult>
200
+
201
+ /** Send multiple emails (batch) */
202
+ sendBatch?(emails: SendEmailOptions[]): Promise<SendEmailResult[]>
203
+
204
+ /** Get email by ID */
205
+ get?(messageId: string): Promise<EmailData | null>
206
+
207
+ /** List emails */
208
+ list?(options?: EmailListOptions): Promise<PaginatedResult<EmailData>>
209
+
210
+ /** Search emails */
211
+ search?(query: string, options?: EmailListOptions): Promise<PaginatedResult<EmailData>>
212
+
213
+ /** Get email thread */
214
+ getThread?(threadId: string): Promise<EmailThreadData | null>
215
+
216
+ /** Verify domain */
217
+ verifyDomain?(domain: string): Promise<DomainVerification>
218
+
219
+ /** List verified domains */
220
+ listDomains?(): Promise<DomainInfo[]>
221
+ }
222
+
223
+ export interface EmailData {
224
+ id: string
225
+ from: string
226
+ to: string[]
227
+ cc?: string[]
228
+ bcc?: string[]
229
+ subject: string
230
+ text?: string
231
+ html?: string
232
+ status: 'queued' | 'sent' | 'delivered' | 'bounced' | 'failed'
233
+ sentAt?: Date
234
+ deliveredAt?: Date
235
+ openedAt?: Date
236
+ clickedAt?: Date
237
+ }
238
+
239
+ export interface EmailThreadData {
240
+ id: string
241
+ subject: string
242
+ messages: EmailData[]
243
+ participantCount: number
244
+ lastMessageAt: Date
245
+ }
246
+
247
+ export interface EmailListOptions extends PaginationOptions {
248
+ status?: string
249
+ from?: string
250
+ to?: string
251
+ since?: Date
252
+ until?: Date
253
+ }
254
+
255
+ export interface DomainVerification {
256
+ domain: string
257
+ verified: boolean
258
+ dnsRecords: Array<{
259
+ type: 'TXT' | 'CNAME' | 'MX'
260
+ name: string
261
+ value: string
262
+ verified: boolean
263
+ }>
264
+ }
265
+
266
+ export interface DomainInfo {
267
+ domain: string
268
+ verified: boolean
269
+ createdAt: Date
270
+ }
271
+
272
+ // =============================================================================
273
+ // Messaging Provider (Slack/Teams/Discord/SMS)
274
+ // =============================================================================
275
+
276
+ /**
277
+ * Send message options
278
+ */
279
+ export interface SendMessageOptions {
280
+ /** Channel ID or name */
281
+ channel?: string
282
+ /** User ID for DM */
283
+ userId?: string
284
+ /** Thread ID for replies */
285
+ threadId?: string
286
+ /** Message text */
287
+ text: string
288
+ /** Rich blocks/attachments */
289
+ blocks?: unknown[]
290
+ /** Attachments */
291
+ attachments?: Array<{
292
+ filename: string
293
+ content: string | Buffer
294
+ contentType?: string
295
+ }>
296
+ /** Metadata */
297
+ metadata?: Record<string, unknown>
298
+ }
299
+
300
+ /**
301
+ * Send message result
302
+ */
303
+ export interface SendMessageResult {
304
+ success: boolean
305
+ messageId?: string
306
+ timestamp?: string
307
+ channel?: string
308
+ error?: {
309
+ code: string
310
+ message: string
311
+ }
312
+ }
313
+
314
+ /**
315
+ * Messaging provider interface
316
+ */
317
+ export interface MessagingProvider extends BaseProvider {
318
+ /** Send a message */
319
+ send(options: SendMessageOptions): Promise<SendMessageResult>
320
+
321
+ /** Edit a message */
322
+ edit?(messageId: string, text: string, blocks?: unknown[]): Promise<SendMessageResult>
323
+
324
+ /** Delete a message */
325
+ delete?(messageId: string, channel: string): Promise<boolean>
326
+
327
+ /** React to a message */
328
+ react?(messageId: string, channel: string, emoji: string): Promise<boolean>
329
+
330
+ /** Remove reaction */
331
+ unreact?(messageId: string, channel: string, emoji: string): Promise<boolean>
332
+
333
+ /** Get message */
334
+ getMessage?(messageId: string, channel: string): Promise<MessageData | null>
335
+
336
+ /** List messages in channel */
337
+ listMessages?(channel: string, options?: MessageListOptions): Promise<PaginatedResult<MessageData>>
338
+
339
+ /** Search messages */
340
+ searchMessages?(query: string, options?: MessageSearchOptions): Promise<PaginatedResult<MessageData>>
341
+
342
+ // Channel operations
343
+ /** List channels */
344
+ listChannels?(options?: ChannelListOptions): Promise<PaginatedResult<ChannelData>>
345
+
346
+ /** Get channel */
347
+ getChannel?(channelId: string): Promise<ChannelData | null>
348
+
349
+ /** Create channel */
350
+ createChannel?(name: string, options?: CreateChannelOptions): Promise<ChannelData>
351
+
352
+ /** Archive channel */
353
+ archiveChannel?(channelId: string): Promise<boolean>
354
+
355
+ /** Join channel */
356
+ joinChannel?(channelId: string): Promise<boolean>
357
+
358
+ /** Leave channel */
359
+ leaveChannel?(channelId: string): Promise<boolean>
360
+
361
+ // User/Member operations
362
+ /** List members */
363
+ listMembers?(options?: MemberListOptions): Promise<PaginatedResult<MemberData>>
364
+
365
+ /** Get member */
366
+ getMember?(userId: string): Promise<MemberData | null>
367
+
368
+ /** Get user presence */
369
+ getPresence?(userId: string): Promise<PresenceData>
370
+
371
+ // Workspace operations
372
+ /** Get workspace info */
373
+ getWorkspace?(): Promise<WorkspaceData>
374
+ }
375
+
376
+ export interface MessageData {
377
+ id: string
378
+ channel: string
379
+ userId: string
380
+ text: string
381
+ timestamp: string
382
+ threadId?: string
383
+ replyCount?: number
384
+ reactions?: Array<{ emoji: string; count: number; users: string[] }>
385
+ edited?: boolean
386
+ editedAt?: Date
387
+ }
388
+
389
+ export interface MessageListOptions extends PaginationOptions {
390
+ since?: Date
391
+ until?: Date
392
+ inclusive?: boolean
393
+ }
394
+
395
+ export interface MessageSearchOptions extends PaginationOptions {
396
+ channels?: string[]
397
+ users?: string[]
398
+ since?: Date
399
+ until?: Date
400
+ }
401
+
402
+ export interface ChannelData {
403
+ id: string
404
+ name: string
405
+ topic?: string
406
+ description?: string
407
+ isPrivate: boolean
408
+ isArchived: boolean
409
+ memberCount: number
410
+ createdAt: Date
411
+ }
412
+
413
+ export interface ChannelListOptions extends PaginationOptions {
414
+ types?: ('public' | 'private')[]
415
+ excludeArchived?: boolean
416
+ }
417
+
418
+ export interface CreateChannelOptions {
419
+ isPrivate?: boolean
420
+ topic?: string
421
+ description?: string
422
+ }
423
+
424
+ export interface MemberData {
425
+ id: string
426
+ username: string
427
+ displayName: string
428
+ email?: string
429
+ avatar?: string
430
+ title?: string
431
+ isAdmin: boolean
432
+ isBot: boolean
433
+ timezone?: string
434
+ }
435
+
436
+ export interface MemberListOptions extends PaginationOptions {
437
+ channel?: string
438
+ }
439
+
440
+ export interface PresenceData {
441
+ userId: string
442
+ presence: 'online' | 'away' | 'dnd' | 'offline'
443
+ statusText?: string
444
+ statusEmoji?: string
445
+ }
446
+
447
+ export interface WorkspaceData {
448
+ id: string
449
+ name: string
450
+ domain?: string
451
+ icon?: string
452
+ memberCount?: number
453
+ }
454
+
455
+ // =============================================================================
456
+ // SMS Provider (Twilio, etc.)
457
+ // =============================================================================
458
+
459
+ /**
460
+ * Send SMS options
461
+ */
462
+ export interface SendSmsOptions {
463
+ to: string
464
+ from?: string
465
+ body: string
466
+ mediaUrls?: string[]
467
+ statusCallback?: string
468
+ }
469
+
470
+ /**
471
+ * SMS provider interface
472
+ */
473
+ export interface SmsProvider extends BaseProvider {
474
+ /** Send SMS */
475
+ send(options: SendSmsOptions): Promise<SendSmsResult>
476
+
477
+ /** Send MMS with media */
478
+ sendMms?(options: SendSmsOptions & { mediaUrls: string[] }): Promise<SendSmsResult>
479
+
480
+ /** Get message status */
481
+ getStatus?(messageId: string): Promise<SmsStatus>
482
+
483
+ /** List messages */
484
+ list?(options?: SmsListOptions): Promise<PaginatedResult<SmsData>>
485
+ }
486
+
487
+ export interface SendSmsResult {
488
+ success: boolean
489
+ messageId?: string
490
+ status?: string
491
+ error?: {
492
+ code: string
493
+ message: string
494
+ }
495
+ }
496
+
497
+ export interface SmsStatus {
498
+ messageId: string
499
+ status: 'queued' | 'sending' | 'sent' | 'delivered' | 'failed' | 'undelivered'
500
+ errorCode?: string
501
+ errorMessage?: string
502
+ }
503
+
504
+ export interface SmsData {
505
+ id: string
506
+ to: string
507
+ from: string
508
+ body: string
509
+ status: string
510
+ direction: 'inbound' | 'outbound'
511
+ sentAt?: Date
512
+ deliveredAt?: Date
513
+ }
514
+
515
+ export interface SmsListOptions extends PaginationOptions {
516
+ to?: string
517
+ from?: string
518
+ since?: Date
519
+ until?: Date
520
+ }
521
+
522
+ // =============================================================================
523
+ // Spreadsheet Provider (Google Sheets, xlsx, Excel Online)
524
+ // =============================================================================
525
+
526
+ /**
527
+ * Spreadsheet provider interface
528
+ */
529
+ export interface SpreadsheetProvider extends BaseProvider {
530
+ /** Create spreadsheet */
531
+ create(name: string, options?: CreateSpreadsheetOptions): Promise<SpreadsheetData>
532
+
533
+ /** Get spreadsheet */
534
+ get(spreadsheetId: string): Promise<SpreadsheetData | null>
535
+
536
+ /** List spreadsheets */
537
+ list?(options?: SpreadsheetListOptions): Promise<PaginatedResult<SpreadsheetData>>
538
+
539
+ /** Delete spreadsheet */
540
+ delete?(spreadsheetId: string): Promise<boolean>
541
+
542
+ // Sheet operations
543
+ /** Get sheet */
544
+ getSheet(spreadsheetId: string, sheetId: string | number): Promise<SheetData | null>
545
+
546
+ /** Add sheet */
547
+ addSheet(spreadsheetId: string, name: string, options?: AddSheetOptions): Promise<SheetData>
548
+
549
+ /** Delete sheet */
550
+ deleteSheet(spreadsheetId: string, sheetId: string | number): Promise<boolean>
551
+
552
+ /** Rename sheet */
553
+ renameSheet?(spreadsheetId: string, sheetId: string | number, name: string): Promise<boolean>
554
+
555
+ // Cell operations
556
+ /** Read cell range */
557
+ readRange(spreadsheetId: string, range: string): Promise<CellValue[][]>
558
+
559
+ /** Write cell range */
560
+ writeRange(spreadsheetId: string, range: string, values: CellValue[][]): Promise<UpdateResult>
561
+
562
+ /** Append rows */
563
+ appendRows(spreadsheetId: string, range: string, values: CellValue[][]): Promise<AppendResult>
564
+
565
+ /** Clear range */
566
+ clearRange(spreadsheetId: string, range: string): Promise<boolean>
567
+
568
+ /** Batch read */
569
+ batchRead?(spreadsheetId: string, ranges: string[]): Promise<Map<string, CellValue[][]>>
570
+
571
+ /** Batch write */
572
+ batchWrite?(spreadsheetId: string, data: Array<{ range: string; values: CellValue[][] }>): Promise<UpdateResult>
573
+
574
+ // Import/Export
575
+ /** Export to format */
576
+ export?(spreadsheetId: string, format: 'xlsx' | 'csv' | 'pdf'): Promise<Buffer>
577
+
578
+ /** Import from file */
579
+ import?(file: Buffer, format: 'xlsx' | 'csv', options?: ImportOptions): Promise<SpreadsheetData>
580
+ }
581
+
582
+ export type CellValue = string | number | boolean | null | Date
583
+
584
+ export interface SpreadsheetData {
585
+ id: string
586
+ name: string
587
+ sheets: SheetInfo[]
588
+ createdAt?: Date
589
+ modifiedAt?: Date
590
+ url?: string
591
+ }
592
+
593
+ export interface SheetInfo {
594
+ id: string | number
595
+ name: string
596
+ index: number
597
+ rowCount?: number
598
+ columnCount?: number
599
+ }
600
+
601
+ export interface SheetData extends SheetInfo {
602
+ data?: CellValue[][]
603
+ frozenRows?: number
604
+ frozenColumns?: number
605
+ }
606
+
607
+ export interface CreateSpreadsheetOptions {
608
+ sheets?: Array<{ name: string }>
609
+ locale?: string
610
+ timeZone?: string
611
+ }
612
+
613
+ export interface SpreadsheetListOptions extends PaginationOptions {
614
+ query?: string
615
+ }
616
+
617
+ export interface AddSheetOptions {
618
+ index?: number
619
+ rowCount?: number
620
+ columnCount?: number
621
+ }
622
+
623
+ export interface UpdateResult {
624
+ updatedRange: string
625
+ updatedRows: number
626
+ updatedColumns: number
627
+ updatedCells: number
628
+ }
629
+
630
+ export interface AppendResult {
631
+ spreadsheetId: string
632
+ updatedRange: string
633
+ updatedRows: number
634
+ }
635
+
636
+ export interface ImportOptions {
637
+ name?: string
638
+ sheetName?: string
639
+ }
640
+
641
+ // =============================================================================
642
+ // Document Provider (Google Docs, docx, etc.)
643
+ // =============================================================================
644
+
645
+ /**
646
+ * Document provider interface
647
+ */
648
+ export interface DocumentProvider extends BaseProvider {
649
+ /** Create document */
650
+ create(title: string, options?: CreateDocumentOptions): Promise<DocumentData>
651
+
652
+ /** Get document */
653
+ get(documentId: string): Promise<DocumentData | null>
654
+
655
+ /** List documents */
656
+ list?(options?: DocumentListOptions): Promise<PaginatedResult<DocumentData>>
657
+
658
+ /** Delete document */
659
+ delete?(documentId: string): Promise<boolean>
660
+
661
+ /** Get document content */
662
+ getContent(documentId: string): Promise<DocumentContent>
663
+
664
+ /** Update document content */
665
+ updateContent(documentId: string, content: DocumentContent): Promise<boolean>
666
+
667
+ /** Insert text */
668
+ insertText?(documentId: string, text: string, index?: number): Promise<boolean>
669
+
670
+ /** Delete content */
671
+ deleteContent?(documentId: string, startIndex: number, endIndex: number): Promise<boolean>
672
+
673
+ // Export/Import
674
+ /** Export document */
675
+ export?(documentId: string, format: 'docx' | 'pdf' | 'txt' | 'html' | 'md'): Promise<Buffer>
676
+
677
+ /** Import document */
678
+ import?(file: Buffer, format: 'docx' | 'txt' | 'html' | 'md', options?: ImportDocumentOptions): Promise<DocumentData>
679
+ }
680
+
681
+ export interface DocumentData {
682
+ id: string
683
+ title: string
684
+ createdAt?: Date
685
+ modifiedAt?: Date
686
+ url?: string
687
+ wordCount?: number
688
+ characterCount?: number
689
+ }
690
+
691
+ export interface DocumentContent {
692
+ /** Plain text content */
693
+ text?: string
694
+ /** HTML content */
695
+ html?: string
696
+ /** Markdown content */
697
+ markdown?: string
698
+ /** Structured content (for Google Docs) */
699
+ body?: unknown
700
+ }
701
+
702
+ export interface CreateDocumentOptions {
703
+ content?: string
704
+ template?: string
705
+ }
706
+
707
+ export interface DocumentListOptions extends PaginationOptions {
708
+ query?: string
709
+ }
710
+
711
+ export interface ImportDocumentOptions {
712
+ title?: string
713
+ }
714
+
715
+ // =============================================================================
716
+ // Presentation Provider (Google Slides, pptx, etc.)
717
+ // =============================================================================
718
+
719
+ /**
720
+ * Presentation provider interface
721
+ */
722
+ export interface PresentationProvider extends BaseProvider {
723
+ /** Create presentation */
724
+ create(title: string, options?: CreatePresentationOptions): Promise<PresentationData>
725
+
726
+ /** Get presentation */
727
+ get(presentationId: string): Promise<PresentationData | null>
728
+
729
+ /** List presentations */
730
+ list?(options?: PresentationListOptions): Promise<PaginatedResult<PresentationData>>
731
+
732
+ /** Delete presentation */
733
+ delete?(presentationId: string): Promise<boolean>
734
+
735
+ // Slide operations
736
+ /** Get slide */
737
+ getSlide(presentationId: string, slideId: string): Promise<SlideData | null>
738
+
739
+ /** Add slide */
740
+ addSlide(presentationId: string, options?: AddSlideOptions): Promise<SlideData>
741
+
742
+ /** Delete slide */
743
+ deleteSlide(presentationId: string, slideId: string): Promise<boolean>
744
+
745
+ /** Reorder slides */
746
+ reorderSlides?(presentationId: string, slideIds: string[]): Promise<boolean>
747
+
748
+ /** Update slide content */
749
+ updateSlide?(presentationId: string, slideId: string, updates: SlideUpdates): Promise<boolean>
750
+
751
+ // Export/Import
752
+ /** Export presentation */
753
+ export?(presentationId: string, format: 'pptx' | 'pdf' | 'png'): Promise<Buffer>
754
+
755
+ /** Import presentation */
756
+ import?(file: Buffer, format: 'pptx', options?: ImportPresentationOptions): Promise<PresentationData>
757
+ }
758
+
759
+ export interface PresentationData {
760
+ id: string
761
+ title: string
762
+ slideCount: number
763
+ slides?: SlideInfo[]
764
+ createdAt?: Date
765
+ modifiedAt?: Date
766
+ url?: string
767
+ }
768
+
769
+ export interface SlideInfo {
770
+ id: string
771
+ index: number
772
+ layout?: string
773
+ }
774
+
775
+ export interface SlideData extends SlideInfo {
776
+ title?: string
777
+ notes?: string
778
+ elements?: SlideElement[]
779
+ }
780
+
781
+ export interface SlideElement {
782
+ id: string
783
+ type: 'text' | 'image' | 'shape' | 'table' | 'chart'
784
+ position: { x: number; y: number }
785
+ size: { width: number; height: number }
786
+ content?: unknown
787
+ }
788
+
789
+ export interface CreatePresentationOptions {
790
+ template?: string
791
+ aspectRatio?: '16:9' | '4:3'
792
+ }
793
+
794
+ export interface PresentationListOptions extends PaginationOptions {
795
+ query?: string
796
+ }
797
+
798
+ export interface AddSlideOptions {
799
+ layout?: string
800
+ index?: number
801
+ }
802
+
803
+ export interface SlideUpdates {
804
+ title?: string
805
+ notes?: string
806
+ elements?: Partial<SlideElement>[]
807
+ }
808
+
809
+ export interface ImportPresentationOptions {
810
+ title?: string
811
+ }
812
+
813
+ // =============================================================================
814
+ // Phone Provider (Twilio, Vonage, etc.)
815
+ // =============================================================================
816
+
817
+ /**
818
+ * Phone provider interface
819
+ */
820
+ export interface PhoneProvider extends BaseProvider {
821
+ /** Make outbound call */
822
+ call(to: string, from: string, options?: CallOptions): Promise<CallResult>
823
+
824
+ /** Get call status */
825
+ getCall(callId: string): Promise<CallData | null>
826
+
827
+ /** List calls */
828
+ listCalls?(options?: CallListOptions): Promise<PaginatedResult<CallData>>
829
+
830
+ /** Hangup call */
831
+ hangup?(callId: string): Promise<boolean>
832
+
833
+ /** Transfer call */
834
+ transfer?(callId: string, to: string): Promise<boolean>
835
+
836
+ /** Play audio */
837
+ playAudio?(callId: string, audioUrl: string): Promise<boolean>
838
+
839
+ /** Send DTMF tones */
840
+ sendDtmf?(callId: string, digits: string): Promise<boolean>
841
+
842
+ /** Start recording */
843
+ startRecording?(callId: string): Promise<RecordingData>
844
+
845
+ /** Stop recording */
846
+ stopRecording?(callId: string, recordingId: string): Promise<boolean>
847
+
848
+ /** Get recording */
849
+ getRecording?(recordingId: string): Promise<RecordingData | null>
850
+
851
+ /** Transcribe recording */
852
+ transcribe?(recordingId: string): Promise<TranscriptionData>
853
+
854
+ // Voicemail
855
+ /** List voicemails */
856
+ listVoicemails?(options?: VoicemailListOptions): Promise<PaginatedResult<VoicemailData>>
857
+
858
+ /** Get voicemail */
859
+ getVoicemail?(voicemailId: string): Promise<VoicemailData | null>
860
+
861
+ /** Delete voicemail */
862
+ deleteVoicemail?(voicemailId: string): Promise<boolean>
863
+ }
864
+
865
+ export interface CallOptions {
866
+ /** TwiML or webhook URL for call handling */
867
+ url?: string
868
+ /** Status callback URL */
869
+ statusCallback?: string
870
+ /** Timeout in seconds */
871
+ timeout?: number
872
+ /** Record the call */
873
+ record?: boolean
874
+ /** Machine detection */
875
+ machineDetection?: 'Enable' | 'DetectMessageEnd'
876
+ }
877
+
878
+ export interface CallResult {
879
+ success: boolean
880
+ callId?: string
881
+ status?: string
882
+ error?: {
883
+ code: string
884
+ message: string
885
+ }
886
+ }
887
+
888
+ export interface CallData {
889
+ id: string
890
+ to: string
891
+ from: string
892
+ status: 'queued' | 'ringing' | 'in-progress' | 'completed' | 'busy' | 'failed' | 'no-answer' | 'canceled'
893
+ direction: 'inbound' | 'outbound'
894
+ duration?: number
895
+ startedAt?: Date
896
+ answeredAt?: Date
897
+ endedAt?: Date
898
+ recordingUrl?: string
899
+ }
900
+
901
+ export interface CallListOptions extends PaginationOptions {
902
+ status?: string
903
+ to?: string
904
+ from?: string
905
+ since?: Date
906
+ until?: Date
907
+ }
908
+
909
+ export interface RecordingData {
910
+ id: string
911
+ callId: string
912
+ duration: number
913
+ url: string
914
+ status: 'processing' | 'completed' | 'failed'
915
+ createdAt: Date
916
+ }
917
+
918
+ export interface TranscriptionData {
919
+ id: string
920
+ recordingId: string
921
+ text: string
922
+ confidence?: number
923
+ status: 'processing' | 'completed' | 'failed'
924
+ }
925
+
926
+ export interface VoicemailData {
927
+ id: string
928
+ from: string
929
+ to: string
930
+ duration: number
931
+ audioUrl: string
932
+ transcription?: string
933
+ read: boolean
934
+ createdAt: Date
935
+ }
936
+
937
+ export interface VoicemailListOptions extends PaginationOptions {
938
+ read?: boolean
939
+ since?: Date
940
+ }
941
+
942
+ // =============================================================================
943
+ // Calendar Provider (Google Calendar, Outlook, Calendly)
944
+ // =============================================================================
945
+
946
+ export interface CalendarProvider extends BaseProvider {
947
+ listCalendars?(options?: PaginationOptions): Promise<PaginatedResult<CalendarData>>
948
+ getCalendar?(calendarId: string): Promise<CalendarData | null>
949
+ createEvent(calendarId: string, event: CreateEventOptions): Promise<EventData>
950
+ getEvent(calendarId: string, eventId: string): Promise<EventData | null>
951
+ updateEvent(calendarId: string, eventId: string, updates: Partial<CreateEventOptions>): Promise<EventData>
952
+ deleteEvent(calendarId: string, eventId: string): Promise<boolean>
953
+ listEvents(calendarId: string, options?: EventListOptions): Promise<PaginatedResult<EventData>>
954
+ findAvailability?(calendarIds: string[], timeMin: Date, timeMax: Date): Promise<AvailabilityData[]>
955
+ }
956
+
957
+ export interface CalendarData {
958
+ id: string
959
+ name: string
960
+ description?: string
961
+ timeZone: string
962
+ primary: boolean
963
+ accessRole: 'owner' | 'writer' | 'reader'
964
+ }
965
+
966
+ export interface CreateEventOptions {
967
+ summary: string
968
+ description?: string
969
+ location?: string
970
+ start: Date
971
+ end: Date
972
+ attendees?: string[]
973
+ reminders?: Array<{ method: 'email' | 'popup'; minutes: number }>
974
+ recurrence?: string[]
975
+ conferenceData?: { type: 'hangoutsMeet' | 'zoom' | 'teams' }
976
+ }
977
+
978
+ export interface EventData {
979
+ id: string
980
+ calendarId: string
981
+ summary: string
982
+ description?: string
983
+ location?: string
984
+ start: Date
985
+ end: Date
986
+ attendees?: Array<{ email: string; responseStatus: string }>
987
+ status: 'confirmed' | 'tentative' | 'cancelled'
988
+ recurringEventId?: string
989
+ htmlLink?: string
990
+ }
991
+
992
+ export interface EventListOptions extends PaginationOptions {
993
+ timeMin?: Date
994
+ timeMax?: Date
995
+ singleEvents?: boolean
996
+ orderBy?: 'startTime' | 'updated'
997
+ }
998
+
999
+ export interface AvailabilityData {
1000
+ calendarId: string
1001
+ busy: Array<{ start: Date; end: Date }>
1002
+ }
1003
+
1004
+ // =============================================================================
1005
+ // Task Provider (Todoist, Asana, Things)
1006
+ // =============================================================================
1007
+
1008
+ export interface TaskProvider extends BaseProvider {
1009
+ listProjects?(): Promise<ProjectData[]>
1010
+ createTask(task: CreateTaskOptions): Promise<TaskData>
1011
+ getTask(taskId: string): Promise<TaskData | null>
1012
+ updateTask(taskId: string, updates: Partial<CreateTaskOptions>): Promise<TaskData>
1013
+ deleteTask(taskId: string): Promise<boolean>
1014
+ completeTask(taskId: string): Promise<boolean>
1015
+ reopenTask?(taskId: string): Promise<boolean>
1016
+ listTasks(options?: TaskListOptions): Promise<PaginatedResult<TaskData>>
1017
+ addComment?(taskId: string, content: string): Promise<CommentData>
1018
+ }
1019
+
1020
+ export interface ProjectData {
1021
+ id: string
1022
+ name: string
1023
+ color?: string
1024
+ parentId?: string
1025
+ }
1026
+
1027
+ export interface CreateTaskOptions {
1028
+ content: string
1029
+ description?: string
1030
+ projectId?: string
1031
+ parentId?: string
1032
+ priority?: 1 | 2 | 3 | 4
1033
+ dueDate?: Date
1034
+ dueString?: string
1035
+ labels?: string[]
1036
+ assigneeId?: string
1037
+ }
1038
+
1039
+ export interface TaskData {
1040
+ id: string
1041
+ content: string
1042
+ description?: string
1043
+ projectId?: string
1044
+ parentId?: string
1045
+ priority: number
1046
+ dueDate?: Date
1047
+ completed: boolean
1048
+ labels: string[]
1049
+ createdAt: Date
1050
+ completedAt?: Date
1051
+ }
1052
+
1053
+ export interface TaskListOptions extends PaginationOptions {
1054
+ projectId?: string
1055
+ filter?: string
1056
+ completed?: boolean
1057
+ }
1058
+
1059
+ export interface CommentData {
1060
+ id: string
1061
+ taskId: string
1062
+ content: string
1063
+ authorId: string
1064
+ createdAt: Date
1065
+ }
1066
+
1067
+ // =============================================================================
1068
+ // Project Management Provider (Jira, Linear, Asana, Monday)
1069
+ // =============================================================================
1070
+
1071
+ export interface ProjectManagementProvider extends BaseProvider {
1072
+ listProjects(options?: PaginationOptions): Promise<PaginatedResult<PMProjectData>>
1073
+ getProject(projectId: string): Promise<PMProjectData | null>
1074
+ createIssue(projectId: string, issue: CreateIssueOptions): Promise<IssueData>
1075
+ getIssue(issueId: string): Promise<IssueData | null>
1076
+ updateIssue(issueId: string, updates: Partial<CreateIssueOptions>): Promise<IssueData>
1077
+ deleteIssue?(issueId: string): Promise<boolean>
1078
+ listIssues(projectId: string, options?: IssueListOptions): Promise<PaginatedResult<IssueData>>
1079
+ searchIssues?(query: string, options?: IssueListOptions): Promise<PaginatedResult<IssueData>>
1080
+ addComment(issueId: string, body: string): Promise<IssueCommentData>
1081
+ transition?(issueId: string, statusId: string): Promise<boolean>
1082
+ assign?(issueId: string, userId: string): Promise<boolean>
1083
+ }
1084
+
1085
+ export interface PMProjectData {
1086
+ id: string
1087
+ key: string
1088
+ name: string
1089
+ description?: string
1090
+ lead?: string
1091
+ url?: string
1092
+ }
1093
+
1094
+ export interface CreateIssueOptions {
1095
+ title: string
1096
+ description?: string
1097
+ type: string
1098
+ priority?: string
1099
+ labels?: string[]
1100
+ assigneeId?: string
1101
+ sprintId?: string
1102
+ parentId?: string
1103
+ estimate?: number
1104
+ }
1105
+
1106
+ export interface IssueData {
1107
+ id: string
1108
+ key: string
1109
+ title: string
1110
+ description?: string
1111
+ type: string
1112
+ status: string
1113
+ priority?: string
1114
+ labels: string[]
1115
+ assigneeId?: string
1116
+ reporterId?: string
1117
+ createdAt: Date
1118
+ updatedAt: Date
1119
+ url?: string
1120
+ }
1121
+
1122
+ export interface IssueListOptions extends PaginationOptions {
1123
+ status?: string[]
1124
+ type?: string[]
1125
+ assignee?: string
1126
+ labels?: string[]
1127
+ sprintId?: string
1128
+ }
1129
+
1130
+ export interface IssueCommentData {
1131
+ id: string
1132
+ issueId: string
1133
+ body: string
1134
+ authorId: string
1135
+ createdAt: Date
1136
+ }
1137
+
1138
+ // =============================================================================
1139
+ // CRM Provider (Salesforce, HubSpot, Pipedrive)
1140
+ // =============================================================================
1141
+
1142
+ export interface CRMProvider extends BaseProvider {
1143
+ // Contacts
1144
+ createContact(contact: CreateContactOptions): Promise<CRMContactData>
1145
+ getContact(contactId: string): Promise<CRMContactData | null>
1146
+ updateContact(contactId: string, updates: Partial<CreateContactOptions>): Promise<CRMContactData>
1147
+ listContacts(options?: ContactListOptions): Promise<PaginatedResult<CRMContactData>>
1148
+ searchContacts?(query: string): Promise<CRMContactData[]>
1149
+ // Deals
1150
+ createDeal(deal: CreateDealOptions): Promise<DealData>
1151
+ getDeal(dealId: string): Promise<DealData | null>
1152
+ updateDeal(dealId: string, updates: Partial<CreateDealOptions>): Promise<DealData>
1153
+ listDeals(options?: DealListOptions): Promise<PaginatedResult<DealData>>
1154
+ // Activities
1155
+ logActivity?(contactId: string, activity: CreateActivityOptions): Promise<CRMActivityData>
1156
+ listActivities?(contactId: string): Promise<CRMActivityData[]>
1157
+ }
1158
+
1159
+ export interface CreateContactOptions {
1160
+ firstName: string
1161
+ lastName: string
1162
+ email?: string
1163
+ phone?: string
1164
+ company?: string
1165
+ title?: string
1166
+ customFields?: Record<string, unknown>
1167
+ }
1168
+
1169
+ export interface CRMContactData {
1170
+ id: string
1171
+ firstName: string
1172
+ lastName: string
1173
+ email?: string
1174
+ phone?: string
1175
+ company?: string
1176
+ title?: string
1177
+ ownerId?: string
1178
+ createdAt: Date
1179
+ updatedAt: Date
1180
+ }
1181
+
1182
+ export interface ContactListOptions extends PaginationOptions {
1183
+ ownerId?: string
1184
+ company?: string
1185
+ }
1186
+
1187
+ export interface CreateDealOptions {
1188
+ name: string
1189
+ value?: number
1190
+ currency?: string
1191
+ stage: string
1192
+ contactId?: string
1193
+ companyId?: string
1194
+ closeDate?: Date
1195
+ probability?: number
1196
+ }
1197
+
1198
+ export interface DealData {
1199
+ id: string
1200
+ name: string
1201
+ value?: number
1202
+ currency?: string
1203
+ stage: string
1204
+ probability?: number
1205
+ contactId?: string
1206
+ companyId?: string
1207
+ ownerId?: string
1208
+ closeDate?: Date
1209
+ createdAt: Date
1210
+ updatedAt: Date
1211
+ wonAt?: Date
1212
+ lostAt?: Date
1213
+ }
1214
+
1215
+ export interface DealListOptions extends PaginationOptions {
1216
+ stage?: string
1217
+ ownerId?: string
1218
+ minValue?: number
1219
+ maxValue?: number
1220
+ }
1221
+
1222
+ export interface CreateActivityOptions {
1223
+ type: 'call' | 'email' | 'meeting' | 'task' | 'note'
1224
+ subject: string
1225
+ body?: string
1226
+ dueDate?: Date
1227
+ duration?: number
1228
+ }
1229
+
1230
+ export interface CRMActivityData {
1231
+ id: string
1232
+ type: string
1233
+ subject: string
1234
+ body?: string
1235
+ contactId: string
1236
+ ownerId: string
1237
+ dueDate?: Date
1238
+ completedAt?: Date
1239
+ createdAt: Date
1240
+ }
1241
+
1242
+ // =============================================================================
1243
+ // Development Provider (GitHub, GitLab, Bitbucket)
1244
+ // =============================================================================
1245
+
1246
+ export interface DevelopmentProvider extends BaseProvider {
1247
+ // Repositories
1248
+ listRepos(options?: RepoListOptions): Promise<PaginatedResult<RepoData>>
1249
+ getRepo(owner: string, repo: string): Promise<RepoData | null>
1250
+ // Issues
1251
+ createIssue(owner: string, repo: string, issue: CreateDevIssueOptions): Promise<DevIssueData>
1252
+ getIssue(owner: string, repo: string, issueNumber: number): Promise<DevIssueData | null>
1253
+ updateIssue(owner: string, repo: string, issueNumber: number, updates: Partial<CreateDevIssueOptions>): Promise<DevIssueData>
1254
+ listIssues(owner: string, repo: string, options?: DevIssueListOptions): Promise<PaginatedResult<DevIssueData>>
1255
+ // Pull Requests
1256
+ createPullRequest(owner: string, repo: string, pr: CreatePROptions): Promise<PRData>
1257
+ getPullRequest(owner: string, repo: string, prNumber: number): Promise<PRData | null>
1258
+ listPullRequests(owner: string, repo: string, options?: PRListOptions): Promise<PaginatedResult<PRData>>
1259
+ mergePullRequest?(owner: string, repo: string, prNumber: number): Promise<boolean>
1260
+ // Comments
1261
+ addComment(owner: string, repo: string, issueNumber: number, body: string): Promise<DevCommentData>
1262
+ }
1263
+
1264
+ export interface RepoListOptions extends PaginationOptions {
1265
+ visibility?: 'public' | 'private' | 'all'
1266
+ sort?: 'created' | 'updated' | 'pushed'
1267
+ }
1268
+
1269
+ export interface RepoData {
1270
+ id: string
1271
+ owner: string
1272
+ name: string
1273
+ fullName: string
1274
+ description?: string
1275
+ private: boolean
1276
+ defaultBranch: string
1277
+ url: string
1278
+ cloneUrl: string
1279
+ stars: number
1280
+ forks: number
1281
+ openIssues: number
1282
+ createdAt: Date
1283
+ updatedAt: Date
1284
+ }
1285
+
1286
+ export interface CreateDevIssueOptions {
1287
+ title: string
1288
+ body?: string
1289
+ labels?: string[]
1290
+ assignees?: string[]
1291
+ milestone?: number
1292
+ }
1293
+
1294
+ export interface DevIssueData {
1295
+ id: string
1296
+ number: number
1297
+ title: string
1298
+ body?: string
1299
+ state: 'open' | 'closed'
1300
+ labels: string[]
1301
+ assignees: string[]
1302
+ authorId: string
1303
+ url: string
1304
+ createdAt: Date
1305
+ updatedAt: Date
1306
+ closedAt?: Date
1307
+ }
1308
+
1309
+ export interface DevIssueListOptions extends PaginationOptions {
1310
+ state?: 'open' | 'closed' | 'all'
1311
+ labels?: string[]
1312
+ assignee?: string
1313
+ sort?: 'created' | 'updated' | 'comments'
1314
+ }
1315
+
1316
+ export interface CreatePROptions {
1317
+ title: string
1318
+ body?: string
1319
+ head: string
1320
+ base: string
1321
+ draft?: boolean
1322
+ }
1323
+
1324
+ export interface PRData {
1325
+ id: string
1326
+ number: number
1327
+ title: string
1328
+ body?: string
1329
+ state: 'open' | 'closed' | 'merged'
1330
+ head: string
1331
+ base: string
1332
+ authorId: string
1333
+ draft: boolean
1334
+ mergeable?: boolean
1335
+ url: string
1336
+ createdAt: Date
1337
+ updatedAt: Date
1338
+ mergedAt?: Date
1339
+ closedAt?: Date
1340
+ }
1341
+
1342
+ export interface PRListOptions extends PaginationOptions {
1343
+ state?: 'open' | 'closed' | 'all'
1344
+ sort?: 'created' | 'updated' | 'popularity'
1345
+ direction?: 'asc' | 'desc'
1346
+ }
1347
+
1348
+ export interface DevCommentData {
1349
+ id: string
1350
+ body: string
1351
+ authorId: string
1352
+ createdAt: Date
1353
+ updatedAt: Date
1354
+ }
1355
+
1356
+ // =============================================================================
1357
+ // Finance Provider (Stripe, QuickBooks, Xero)
1358
+ // =============================================================================
1359
+
1360
+ export interface FinanceProvider extends BaseProvider {
1361
+ // Invoices
1362
+ createInvoice(invoice: CreateInvoiceOptions): Promise<InvoiceData>
1363
+ getInvoice(invoiceId: string): Promise<InvoiceData | null>
1364
+ updateInvoice?(invoiceId: string, updates: Partial<CreateInvoiceOptions>): Promise<InvoiceData>
1365
+ listInvoices(options?: InvoiceListOptions): Promise<PaginatedResult<InvoiceData>>
1366
+ sendInvoice?(invoiceId: string): Promise<boolean>
1367
+ voidInvoice?(invoiceId: string): Promise<boolean>
1368
+ // Payments
1369
+ createPayment(payment: CreatePaymentOptions): Promise<PaymentData>
1370
+ getPayment(paymentId: string): Promise<PaymentData | null>
1371
+ listPayments(options?: PaymentListOptions): Promise<PaginatedResult<PaymentData>>
1372
+ refundPayment?(paymentId: string, amount?: number): Promise<RefundData>
1373
+ // Customers
1374
+ createCustomer?(customer: CreateFinanceCustomerOptions): Promise<FinanceCustomerData>
1375
+ getCustomer?(customerId: string): Promise<FinanceCustomerData | null>
1376
+ listCustomers?(options?: PaginationOptions): Promise<PaginatedResult<FinanceCustomerData>>
1377
+ }
1378
+
1379
+ export interface CreateInvoiceOptions {
1380
+ customerId: string
1381
+ lineItems: Array<{ description: string; quantity: number; unitPrice: number }>
1382
+ currency?: string
1383
+ dueDate?: Date
1384
+ memo?: string
1385
+ }
1386
+
1387
+ export interface InvoiceData {
1388
+ id: string
1389
+ number: string
1390
+ customerId: string
1391
+ status: 'draft' | 'open' | 'paid' | 'void' | 'uncollectible'
1392
+ currency: string
1393
+ subtotal: number
1394
+ tax?: number
1395
+ total: number
1396
+ amountDue: number
1397
+ amountPaid: number
1398
+ dueDate?: Date
1399
+ paidAt?: Date
1400
+ url?: string
1401
+ createdAt: Date
1402
+ }
1403
+
1404
+ export interface InvoiceListOptions extends PaginationOptions {
1405
+ customerId?: string
1406
+ status?: string
1407
+ since?: Date
1408
+ until?: Date
1409
+ }
1410
+
1411
+ export interface CreatePaymentOptions {
1412
+ amount: number
1413
+ currency: string
1414
+ customerId?: string
1415
+ invoiceId?: string
1416
+ paymentMethod: string
1417
+ description?: string
1418
+ }
1419
+
1420
+ export interface PaymentData {
1421
+ id: string
1422
+ amount: number
1423
+ currency: string
1424
+ status: 'pending' | 'succeeded' | 'failed' | 'refunded'
1425
+ customerId?: string
1426
+ invoiceId?: string
1427
+ paymentMethod: string
1428
+ description?: string
1429
+ createdAt: Date
1430
+ refundedAt?: Date
1431
+ }
1432
+
1433
+ export interface PaymentListOptions extends PaginationOptions {
1434
+ customerId?: string
1435
+ status?: string
1436
+ since?: Date
1437
+ until?: Date
1438
+ }
1439
+
1440
+ export interface RefundData {
1441
+ id: string
1442
+ paymentId: string
1443
+ amount: number
1444
+ status: string
1445
+ createdAt: Date
1446
+ }
1447
+
1448
+ export interface CreateFinanceCustomerOptions {
1449
+ name: string
1450
+ email?: string
1451
+ phone?: string
1452
+ address?: {
1453
+ line1: string
1454
+ line2?: string
1455
+ city: string
1456
+ state?: string
1457
+ postalCode: string
1458
+ country: string
1459
+ }
1460
+ }
1461
+
1462
+ export interface FinanceCustomerData {
1463
+ id: string
1464
+ name: string
1465
+ email?: string
1466
+ phone?: string
1467
+ balance?: number
1468
+ createdAt: Date
1469
+ }
1470
+
1471
+ // =============================================================================
1472
+ // Support Provider (Zendesk, Intercom, Freshdesk)
1473
+ // =============================================================================
1474
+
1475
+ export interface SupportProvider extends BaseProvider {
1476
+ // Tickets
1477
+ createTicket(ticket: CreateTicketOptions): Promise<TicketData>
1478
+ getTicket(ticketId: string): Promise<TicketData | null>
1479
+ updateTicket(ticketId: string, updates: Partial<CreateTicketOptions>): Promise<TicketData>
1480
+ listTickets(options?: TicketListOptions): Promise<PaginatedResult<TicketData>>
1481
+ closeTicket?(ticketId: string): Promise<boolean>
1482
+ // Comments
1483
+ addTicketComment(ticketId: string, body: string, isPublic?: boolean): Promise<TicketCommentData>
1484
+ listTicketComments(ticketId: string): Promise<TicketCommentData[]>
1485
+ // Users
1486
+ getUser?(userId: string): Promise<SupportUserData | null>
1487
+ searchUsers?(query: string): Promise<SupportUserData[]>
1488
+ }
1489
+
1490
+ export interface CreateTicketOptions {
1491
+ subject: string
1492
+ description: string
1493
+ priority?: 'low' | 'normal' | 'high' | 'urgent'
1494
+ type?: 'question' | 'incident' | 'problem' | 'task'
1495
+ requesterId?: string
1496
+ assigneeId?: string
1497
+ tags?: string[]
1498
+ customFields?: Record<string, unknown>
1499
+ }
1500
+
1501
+ export interface TicketData {
1502
+ id: string
1503
+ subject: string
1504
+ description: string
1505
+ status: 'new' | 'open' | 'pending' | 'hold' | 'solved' | 'closed'
1506
+ priority: string
1507
+ type?: string
1508
+ requesterId?: string
1509
+ assigneeId?: string
1510
+ tags: string[]
1511
+ createdAt: Date
1512
+ updatedAt: Date
1513
+ solvedAt?: Date
1514
+ }
1515
+
1516
+ export interface TicketListOptions extends PaginationOptions {
1517
+ status?: string
1518
+ priority?: string
1519
+ assigneeId?: string
1520
+ requesterId?: string
1521
+ }
1522
+
1523
+ export interface TicketCommentData {
1524
+ id: string
1525
+ ticketId: string
1526
+ body: string
1527
+ authorId: string
1528
+ isPublic: boolean
1529
+ createdAt: Date
1530
+ }
1531
+
1532
+ export interface SupportUserData {
1533
+ id: string
1534
+ name: string
1535
+ email: string
1536
+ role: string
1537
+ createdAt: Date
1538
+ }
1539
+
1540
+ // =============================================================================
1541
+ // Media Provider (Cloudinary, ImageKit, Mux)
1542
+ // =============================================================================
1543
+
1544
+ export interface MediaProvider extends BaseProvider {
1545
+ upload(file: Buffer | string, options?: UploadOptions): Promise<MediaAssetData>
1546
+ get(assetId: string): Promise<MediaAssetData | null>
1547
+ delete(assetId: string): Promise<boolean>
1548
+ list(options?: MediaListOptions): Promise<PaginatedResult<MediaAssetData>>
1549
+ transform?(assetId: string, transformations: TransformOptions): Promise<string>
1550
+ getUrl(assetId: string, options?: UrlOptions): Promise<string>
1551
+ }
1552
+
1553
+ export interface UploadOptions {
1554
+ folder?: string
1555
+ publicId?: string
1556
+ resourceType?: 'image' | 'video' | 'raw' | 'auto'
1557
+ tags?: string[]
1558
+ metadata?: Record<string, string>
1559
+ }
1560
+
1561
+ export interface MediaAssetData {
1562
+ id: string
1563
+ publicId: string
1564
+ url: string
1565
+ secureUrl: string
1566
+ resourceType: 'image' | 'video' | 'raw'
1567
+ format: string
1568
+ bytes: number
1569
+ width?: number
1570
+ height?: number
1571
+ duration?: number
1572
+ createdAt: Date
1573
+ }
1574
+
1575
+ export interface MediaListOptions extends PaginationOptions {
1576
+ resourceType?: string
1577
+ folder?: string
1578
+ tags?: string[]
1579
+ }
1580
+
1581
+ export interface TransformOptions {
1582
+ width?: number
1583
+ height?: number
1584
+ crop?: string
1585
+ quality?: number | 'auto'
1586
+ format?: string
1587
+ }
1588
+
1589
+ export interface UrlOptions {
1590
+ transformation?: TransformOptions
1591
+ signed?: boolean
1592
+ expiration?: Date
1593
+ }
1594
+
1595
+ // =============================================================================
1596
+ // Marketing Provider (Mailchimp, HubSpot Marketing, Klaviyo)
1597
+ // =============================================================================
1598
+
1599
+ export interface MarketingProvider extends BaseProvider {
1600
+ // Audiences/Lists
1601
+ listAudiences(): Promise<AudienceData[]>
1602
+ getAudience(audienceId: string): Promise<AudienceData | null>
1603
+ // Subscribers
1604
+ addSubscriber(audienceId: string, subscriber: AddSubscriberOptions): Promise<SubscriberData>
1605
+ updateSubscriber(audienceId: string, email: string, updates: Partial<AddSubscriberOptions>): Promise<SubscriberData>
1606
+ removeSubscriber?(audienceId: string, email: string): Promise<boolean>
1607
+ listSubscribers(audienceId: string, options?: SubscriberListOptions): Promise<PaginatedResult<SubscriberData>>
1608
+ // Campaigns
1609
+ createCampaign(campaign: CreateCampaignOptions): Promise<CampaignData>
1610
+ getCampaign(campaignId: string): Promise<CampaignData | null>
1611
+ updateCampaign?(campaignId: string, updates: Partial<CreateCampaignOptions>): Promise<CampaignData>
1612
+ listCampaigns(options?: CampaignListOptions): Promise<PaginatedResult<CampaignData>>
1613
+ sendCampaign?(campaignId: string): Promise<boolean>
1614
+ scheduleCampaign?(campaignId: string, sendAt: Date): Promise<boolean>
1615
+ getCampaignReport?(campaignId: string): Promise<CampaignReportData>
1616
+ }
1617
+
1618
+ export interface AudienceData {
1619
+ id: string
1620
+ name: string
1621
+ memberCount: number
1622
+ createdAt: Date
1623
+ }
1624
+
1625
+ export interface AddSubscriberOptions {
1626
+ email: string
1627
+ firstName?: string
1628
+ lastName?: string
1629
+ tags?: string[]
1630
+ mergeFields?: Record<string, unknown>
1631
+ status?: 'subscribed' | 'pending' | 'unsubscribed'
1632
+ }
1633
+
1634
+ export interface SubscriberData {
1635
+ id: string
1636
+ email: string
1637
+ firstName?: string
1638
+ lastName?: string
1639
+ status: string
1640
+ tags: string[]
1641
+ subscribedAt?: Date
1642
+ unsubscribedAt?: Date
1643
+ }
1644
+
1645
+ export interface SubscriberListOptions extends PaginationOptions {
1646
+ status?: string
1647
+ sinceSubscribed?: Date
1648
+ }
1649
+
1650
+ export interface CreateCampaignOptions {
1651
+ name: string
1652
+ audienceId: string
1653
+ subject: string
1654
+ fromName: string
1655
+ fromEmail: string
1656
+ content?: { html?: string; text?: string }
1657
+ templateId?: string
1658
+ }
1659
+
1660
+ export interface CampaignData {
1661
+ id: string
1662
+ name: string
1663
+ status: 'draft' | 'scheduled' | 'sending' | 'sent'
1664
+ audienceId: string
1665
+ subject: string
1666
+ fromName: string
1667
+ fromEmail: string
1668
+ sentAt?: Date
1669
+ scheduledAt?: Date
1670
+ createdAt: Date
1671
+ }
1672
+
1673
+ export interface CampaignListOptions extends PaginationOptions {
1674
+ status?: string
1675
+ since?: Date
1676
+ }
1677
+
1678
+ export interface CampaignReportData {
1679
+ campaignId: string
1680
+ sent: number
1681
+ delivered: number
1682
+ opens: number
1683
+ uniqueOpens: number
1684
+ clicks: number
1685
+ uniqueClicks: number
1686
+ bounces: number
1687
+ unsubscribes: number
1688
+ openRate: number
1689
+ clickRate: number
1690
+ }
1691
+
1692
+ // =============================================================================
1693
+ // Knowledge Provider (Notion, Confluence, GitBook)
1694
+ // =============================================================================
1695
+
1696
+ export interface KnowledgeProvider extends BaseProvider {
1697
+ // Pages
1698
+ createPage(page: CreatePageOptions): Promise<PageData>
1699
+ getPage(pageId: string): Promise<PageData | null>
1700
+ updatePage(pageId: string, updates: Partial<CreatePageOptions>): Promise<PageData>
1701
+ deletePage?(pageId: string): Promise<boolean>
1702
+ listPages(options?: PageListOptions): Promise<PaginatedResult<PageData>>
1703
+ searchPages(query: string, options?: PaginationOptions): Promise<PaginatedResult<PageData>>
1704
+ // Databases/Spaces
1705
+ listSpaces?(): Promise<SpaceData[]>
1706
+ getSpace?(spaceId: string): Promise<SpaceData | null>
1707
+ }
1708
+
1709
+ export interface CreatePageOptions {
1710
+ title: string
1711
+ content?: string
1712
+ parentId?: string
1713
+ spaceId?: string
1714
+ icon?: string
1715
+ cover?: string
1716
+ }
1717
+
1718
+ export interface PageData {
1719
+ id: string
1720
+ title: string
1721
+ content?: string
1722
+ parentId?: string
1723
+ spaceId?: string
1724
+ url: string
1725
+ icon?: string
1726
+ cover?: string
1727
+ createdAt: Date
1728
+ updatedAt: Date
1729
+ createdBy?: string
1730
+ updatedBy?: string
1731
+ }
1732
+
1733
+ export interface PageListOptions extends PaginationOptions {
1734
+ parentId?: string
1735
+ spaceId?: string
1736
+ }
1737
+
1738
+ export interface SpaceData {
1739
+ id: string
1740
+ name: string
1741
+ description?: string
1742
+ icon?: string
1743
+ url?: string
1744
+ }
1745
+
1746
+ // =============================================================================
1747
+ // E-commerce Provider (Shopify, WooCommerce, Stripe Commerce)
1748
+ // =============================================================================
1749
+
1750
+ export interface EcommerceProvider extends BaseProvider {
1751
+ // Products
1752
+ createProduct(product: CreateProductOptions): Promise<EcommerceProductData>
1753
+ getProduct(productId: string): Promise<EcommerceProductData | null>
1754
+ updateProduct(productId: string, updates: Partial<CreateProductOptions>): Promise<EcommerceProductData>
1755
+ deleteProduct?(productId: string): Promise<boolean>
1756
+ listProducts(options?: ProductListOptions): Promise<PaginatedResult<EcommerceProductData>>
1757
+ // Orders
1758
+ getOrder(orderId: string): Promise<OrderData | null>
1759
+ listOrders(options?: OrderListOptions): Promise<PaginatedResult<OrderData>>
1760
+ updateOrderStatus?(orderId: string, status: string): Promise<OrderData>
1761
+ // Customers
1762
+ getEcommerceCustomer?(customerId: string): Promise<EcommerceCustomerData | null>
1763
+ listEcommerceCustomers?(options?: PaginationOptions): Promise<PaginatedResult<EcommerceCustomerData>>
1764
+ // Inventory
1765
+ updateInventory?(productId: string, variantId: string, quantity: number): Promise<boolean>
1766
+ }
1767
+
1768
+ export interface CreateProductOptions {
1769
+ title: string
1770
+ description?: string
1771
+ price: number
1772
+ compareAtPrice?: number
1773
+ sku?: string
1774
+ inventory?: number
1775
+ images?: string[]
1776
+ variants?: Array<{ title: string; price: number; sku?: string; inventory?: number }>
1777
+ tags?: string[]
1778
+ status?: 'active' | 'draft' | 'archived'
1779
+ }
1780
+
1781
+ export interface EcommerceProductData {
1782
+ id: string
1783
+ title: string
1784
+ description?: string
1785
+ price: number
1786
+ compareAtPrice?: number
1787
+ sku?: string
1788
+ inventory?: number
1789
+ images: string[]
1790
+ variants?: Array<{ id: string; title: string; price: number; sku?: string; inventory?: number }>
1791
+ tags: string[]
1792
+ status: string
1793
+ url?: string
1794
+ createdAt: Date
1795
+ updatedAt: Date
1796
+ }
1797
+
1798
+ export interface ProductListOptions extends PaginationOptions {
1799
+ status?: string
1800
+ collection?: string
1801
+ vendor?: string
1802
+ }
1803
+
1804
+ export interface OrderData {
1805
+ id: string
1806
+ orderNumber: string
1807
+ status: string
1808
+ financialStatus: string
1809
+ fulfillmentStatus: string
1810
+ customerId?: string
1811
+ email: string
1812
+ lineItems: Array<{ productId: string; variantId?: string; title: string; quantity: number; price: number }>
1813
+ subtotal: number
1814
+ tax: number
1815
+ shipping: number
1816
+ total: number
1817
+ currency: string
1818
+ shippingAddress?: AddressData
1819
+ billingAddress?: AddressData
1820
+ createdAt: Date
1821
+ updatedAt: Date
1822
+ }
1823
+
1824
+ export interface OrderListOptions extends PaginationOptions {
1825
+ status?: string
1826
+ financialStatus?: string
1827
+ fulfillmentStatus?: string
1828
+ customerId?: string
1829
+ since?: Date
1830
+ until?: Date
1831
+ }
1832
+
1833
+ export interface AddressData {
1834
+ firstName: string
1835
+ lastName: string
1836
+ address1: string
1837
+ address2?: string
1838
+ city: string
1839
+ province?: string
1840
+ postalCode: string
1841
+ country: string
1842
+ phone?: string
1843
+ }
1844
+
1845
+ export interface EcommerceCustomerData {
1846
+ id: string
1847
+ email: string
1848
+ firstName?: string
1849
+ lastName?: string
1850
+ phone?: string
1851
+ ordersCount: number
1852
+ totalSpent: number
1853
+ createdAt: Date
1854
+ }
1855
+
1856
+ // =============================================================================
1857
+ // Analytics Provider (Google Analytics, Mixpanel, Amplitude)
1858
+ // =============================================================================
1859
+
1860
+ export interface AnalyticsProvider extends BaseProvider {
1861
+ track(event: TrackEventOptions): Promise<boolean>
1862
+ identify?(userId: string, traits?: Record<string, unknown>): Promise<boolean>
1863
+ page?(name: string, properties?: Record<string, unknown>): Promise<boolean>
1864
+ alias?(userId: string, previousId: string): Promise<boolean>
1865
+ getReport?(reportId: string): Promise<AnalyticsReportData | null>
1866
+ runQuery?(query: AnalyticsQueryOptions): Promise<AnalyticsQueryResult>
1867
+ }
1868
+
1869
+ export interface TrackEventOptions {
1870
+ event: string
1871
+ userId?: string
1872
+ anonymousId?: string
1873
+ properties?: Record<string, unknown>
1874
+ timestamp?: Date
1875
+ }
1876
+
1877
+ export interface AnalyticsQueryOptions {
1878
+ metrics: string[]
1879
+ dimensions?: string[]
1880
+ dateRange: { start: Date; end: Date }
1881
+ filters?: Array<{ dimension: string; operator: string; value: string }>
1882
+ orderBy?: Array<{ field: string; order: 'asc' | 'desc' }>
1883
+ limit?: number
1884
+ }
1885
+
1886
+ export interface AnalyticsQueryResult {
1887
+ rows: Array<Record<string, unknown>>
1888
+ totals?: Record<string, number>
1889
+ rowCount: number
1890
+ }
1891
+
1892
+ export interface AnalyticsReportData {
1893
+ id: string
1894
+ name: string
1895
+ description?: string
1896
+ query: AnalyticsQueryOptions
1897
+ result?: AnalyticsQueryResult
1898
+ createdAt: Date
1899
+ updatedAt: Date
1900
+ }
1901
+
1902
+ // =============================================================================
1903
+ // Storage Provider (AWS S3, Google Cloud Storage, Dropbox)
1904
+ // =============================================================================
1905
+
1906
+ export interface StorageProvider extends BaseProvider {
1907
+ upload(path: string, content: Buffer | string, options?: StorageUploadOptions): Promise<StorageFileData>
1908
+ download(path: string): Promise<Buffer>
1909
+ delete(path: string): Promise<boolean>
1910
+ list(prefix?: string, options?: StorageListOptions): Promise<PaginatedResult<StorageFileData>>
1911
+ getMetadata(path: string): Promise<StorageFileData | null>
1912
+ copy?(source: string, destination: string): Promise<StorageFileData>
1913
+ move?(source: string, destination: string): Promise<StorageFileData>
1914
+ getSignedUrl?(path: string, expiresIn?: number): Promise<string>
1915
+ createFolder?(path: string): Promise<boolean>
1916
+ }
1917
+
1918
+ export interface StorageUploadOptions {
1919
+ contentType?: string
1920
+ metadata?: Record<string, string>
1921
+ acl?: 'private' | 'public-read'
1922
+ }
1923
+
1924
+ export interface StorageFileData {
1925
+ path: string
1926
+ name: string
1927
+ size: number
1928
+ contentType?: string
1929
+ etag?: string
1930
+ lastModified: Date
1931
+ isFolder: boolean
1932
+ url?: string
1933
+ }
1934
+
1935
+ export interface StorageListOptions extends PaginationOptions {
1936
+ delimiter?: string
1937
+ recursive?: boolean
1938
+ }
1939
+
1940
+ // =============================================================================
1941
+ // Video Conferencing Provider (Zoom, Google Meet, Microsoft Teams)
1942
+ // =============================================================================
1943
+
1944
+ export interface VideoConferencingProvider extends BaseProvider {
1945
+ createMeeting(meeting: CreateMeetingOptions): Promise<MeetingData>
1946
+ getMeeting(meetingId: string): Promise<MeetingData | null>
1947
+ updateMeeting?(meetingId: string, updates: Partial<CreateMeetingOptions>): Promise<MeetingData>
1948
+ deleteMeeting?(meetingId: string): Promise<boolean>
1949
+ listMeetings(options?: MeetingListOptions): Promise<PaginatedResult<MeetingData>>
1950
+ endMeeting?(meetingId: string): Promise<boolean>
1951
+ getParticipants?(meetingId: string): Promise<ParticipantData[]>
1952
+ getRecordings?(meetingId: string): Promise<MeetingRecordingData[]>
1953
+ }
1954
+
1955
+ export interface CreateMeetingOptions {
1956
+ topic: string
1957
+ startTime?: Date
1958
+ duration?: number
1959
+ timezone?: string
1960
+ agenda?: string
1961
+ password?: string
1962
+ settings?: {
1963
+ hostVideo?: boolean
1964
+ participantVideo?: boolean
1965
+ joinBeforeHost?: boolean
1966
+ muteUponEntry?: boolean
1967
+ waitingRoom?: boolean
1968
+ autoRecording?: 'none' | 'local' | 'cloud'
1969
+ }
1970
+ }
1971
+
1972
+ export interface MeetingData {
1973
+ id: string
1974
+ topic: string
1975
+ startTime?: Date
1976
+ duration?: number
1977
+ timezone?: string
1978
+ agenda?: string
1979
+ joinUrl: string
1980
+ hostId: string
1981
+ status: 'waiting' | 'started' | 'finished'
1982
+ password?: string
1983
+ createdAt: Date
1984
+ }
1985
+
1986
+ export interface MeetingListOptions extends PaginationOptions {
1987
+ type?: 'scheduled' | 'live' | 'upcoming' | 'previous'
1988
+ }
1989
+
1990
+ export interface ParticipantData {
1991
+ id: string
1992
+ name: string
1993
+ email?: string
1994
+ joinTime: Date
1995
+ leaveTime?: Date
1996
+ duration?: number
1997
+ }
1998
+
1999
+ export interface MeetingRecordingData {
2000
+ id: string
2001
+ meetingId: string
2002
+ type: 'video' | 'audio' | 'transcript'
2003
+ url: string
2004
+ size?: number
2005
+ duration?: number
2006
+ createdAt: Date
2007
+ }
2008
+
2009
+ // =============================================================================
2010
+ // Forms Provider (Typeform, Google Forms, JotForm)
2011
+ // =============================================================================
2012
+
2013
+ export interface FormsProvider extends BaseProvider {
2014
+ createForm(form: CreateFormOptions): Promise<FormData>
2015
+ getForm(formId: string): Promise<FormData | null>
2016
+ updateForm?(formId: string, updates: Partial<CreateFormOptions>): Promise<FormData>
2017
+ deleteForm?(formId: string): Promise<boolean>
2018
+ listForms(options?: PaginationOptions): Promise<PaginatedResult<FormData>>
2019
+ getResponses(formId: string, options?: ResponseListOptions): Promise<PaginatedResult<FormResponseData>>
2020
+ getResponse?(formId: string, responseId: string): Promise<FormResponseData | null>
2021
+ }
2022
+
2023
+ export interface CreateFormOptions {
2024
+ title: string
2025
+ description?: string
2026
+ fields: FormFieldOption[]
2027
+ settings?: {
2028
+ isPublic?: boolean
2029
+ submitOnce?: boolean
2030
+ showProgressBar?: boolean
2031
+ confirmationMessage?: string
2032
+ redirectUrl?: string
2033
+ }
2034
+ }
2035
+
2036
+ export interface FormFieldOption {
2037
+ type: 'text' | 'email' | 'number' | 'date' | 'dropdown' | 'checkbox' | 'radio' | 'textarea' | 'file'
2038
+ title: string
2039
+ description?: string
2040
+ required?: boolean
2041
+ choices?: string[]
2042
+ validation?: {
2043
+ min?: number
2044
+ max?: number
2045
+ pattern?: string
2046
+ }
2047
+ }
2048
+
2049
+ export interface FormData {
2050
+ id: string
2051
+ title: string
2052
+ description?: string
2053
+ fields: FormFieldOption[]
2054
+ responseCount: number
2055
+ url: string
2056
+ createdAt: Date
2057
+ updatedAt: Date
2058
+ }
2059
+
2060
+ export interface ResponseListOptions extends PaginationOptions {
2061
+ since?: Date
2062
+ until?: Date
2063
+ completed?: boolean
2064
+ }
2065
+
2066
+ export interface FormResponseData {
2067
+ id: string
2068
+ formId: string
2069
+ answers: Array<{ fieldId: string; value: unknown }>
2070
+ submittedAt: Date
2071
+ metadata?: {
2072
+ ip?: string
2073
+ userAgent?: string
2074
+ referer?: string
2075
+ }
2076
+ }
2077
+
2078
+ // =============================================================================
2079
+ // Provider Registry
2080
+ // =============================================================================
2081
+
2082
+ /**
2083
+ * Provider factory function
2084
+ */
2085
+ export type ProviderFactory<T extends BaseProvider> = (config: ProviderConfig) => Promise<T>
2086
+
2087
+ /**
2088
+ * Registered provider entry
2089
+ */
2090
+ export interface RegisteredProvider<T extends BaseProvider = BaseProvider> {
2091
+ info: ProviderInfo
2092
+ factory: ProviderFactory<T>
2093
+ }
2094
+
2095
+ /**
2096
+ * Provider registry for discovering and instantiating providers
2097
+ */
2098
+ export interface ProviderRegistry {
2099
+ /** Register a provider */
2100
+ register<T extends BaseProvider>(info: ProviderInfo, factory: ProviderFactory<T>): void
2101
+
2102
+ /** Get provider by ID */
2103
+ get<T extends BaseProvider>(providerId: string): RegisteredProvider<T> | undefined
2104
+
2105
+ /** List providers by category */
2106
+ list(category?: ProviderCategory): RegisteredProvider[]
2107
+
2108
+ /** Create provider instance */
2109
+ create<T extends BaseProvider>(providerId: string, config: ProviderConfig): Promise<T>
2110
+
2111
+ /** Check if provider exists */
2112
+ has(providerId: string): boolean
2113
+ }