thevoidforge 21.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 (328) hide show
  1. package/dist/scripts/vault-read.d.ts +11 -0
  2. package/dist/scripts/vault-read.js +89 -0
  3. package/dist/scripts/voidforge.d.ts +20 -0
  4. package/dist/scripts/voidforge.js +404 -0
  5. package/dist/tsconfig.tsbuildinfo +1 -0
  6. package/dist/wizard/api/auth.d.ts +5 -0
  7. package/dist/wizard/api/auth.js +133 -0
  8. package/dist/wizard/api/blueprint.d.ts +45 -0
  9. package/dist/wizard/api/blueprint.js +184 -0
  10. package/dist/wizard/api/cloud-providers.d.ts +16 -0
  11. package/dist/wizard/api/cloud-providers.js +363 -0
  12. package/dist/wizard/api/credentials.d.ts +1 -0
  13. package/dist/wizard/api/credentials.js +258 -0
  14. package/dist/wizard/api/danger-room.d.ts +18 -0
  15. package/dist/wizard/api/danger-room.js +401 -0
  16. package/dist/wizard/api/deploy.d.ts +4 -0
  17. package/dist/wizard/api/deploy.js +164 -0
  18. package/dist/wizard/api/prd.d.ts +1 -0
  19. package/dist/wizard/api/prd.js +363 -0
  20. package/dist/wizard/api/project.d.ts +1 -0
  21. package/dist/wizard/api/project.js +239 -0
  22. package/dist/wizard/api/projects.d.ts +6 -0
  23. package/dist/wizard/api/projects.js +648 -0
  24. package/dist/wizard/api/provision.d.ts +4 -0
  25. package/dist/wizard/api/provision.js +535 -0
  26. package/dist/wizard/api/terminal.d.ts +25 -0
  27. package/dist/wizard/api/terminal.js +241 -0
  28. package/dist/wizard/api/users.d.ts +6 -0
  29. package/dist/wizard/api/users.js +244 -0
  30. package/dist/wizard/api/war-room.d.ts +14 -0
  31. package/dist/wizard/api/war-room.js +45 -0
  32. package/dist/wizard/lib/ad-platform-core.d.ts +6 -0
  33. package/dist/wizard/lib/ad-platform-core.js +1 -0
  34. package/dist/wizard/lib/adapters/index.d.ts +52 -0
  35. package/dist/wizard/lib/adapters/index.js +38 -0
  36. package/dist/wizard/lib/adapters/sandbox-bank.d.ts +17 -0
  37. package/dist/wizard/lib/adapters/sandbox-bank.js +77 -0
  38. package/dist/wizard/lib/adapters/sandbox.d.ts +39 -0
  39. package/dist/wizard/lib/adapters/sandbox.js +174 -0
  40. package/dist/wizard/lib/adapters/stripe.d.ts +19 -0
  41. package/dist/wizard/lib/adapters/stripe.js +143 -0
  42. package/dist/wizard/lib/adapters/types.d.ts +9 -0
  43. package/dist/wizard/lib/adapters/types.js +10 -0
  44. package/dist/wizard/lib/agent-memory.d.ts +36 -0
  45. package/dist/wizard/lib/agent-memory.js +114 -0
  46. package/dist/wizard/lib/anomaly-detection.d.ts +59 -0
  47. package/dist/wizard/lib/anomaly-detection.js +122 -0
  48. package/dist/wizard/lib/anthropic.d.ts +21 -0
  49. package/dist/wizard/lib/anthropic.js +105 -0
  50. package/dist/wizard/lib/asset-scanner.d.ts +23 -0
  51. package/dist/wizard/lib/asset-scanner.js +107 -0
  52. package/dist/wizard/lib/audit-log.d.ts +23 -0
  53. package/dist/wizard/lib/audit-log.js +70 -0
  54. package/dist/wizard/lib/autonomy-controller.d.ts +76 -0
  55. package/dist/wizard/lib/autonomy-controller.js +183 -0
  56. package/dist/wizard/lib/body-parser.d.ts +2 -0
  57. package/dist/wizard/lib/body-parser.js +36 -0
  58. package/dist/wizard/lib/build-analytics.d.ts +39 -0
  59. package/dist/wizard/lib/build-analytics.js +91 -0
  60. package/dist/wizard/lib/build-step.d.ts +21 -0
  61. package/dist/wizard/lib/build-step.js +104 -0
  62. package/dist/wizard/lib/campaign-proposer.d.ts +39 -0
  63. package/dist/wizard/lib/campaign-proposer.js +180 -0
  64. package/dist/wizard/lib/campaign-state-machine.d.ts +63 -0
  65. package/dist/wizard/lib/campaign-state-machine.js +114 -0
  66. package/dist/wizard/lib/ci-generator.d.ts +14 -0
  67. package/dist/wizard/lib/ci-generator.js +187 -0
  68. package/dist/wizard/lib/claude-merge.d.ts +38 -0
  69. package/dist/wizard/lib/claude-merge.js +115 -0
  70. package/dist/wizard/lib/codegen/erd-gen.d.ts +16 -0
  71. package/dist/wizard/lib/codegen/erd-gen.js +98 -0
  72. package/dist/wizard/lib/codegen/integrations.d.ts +18 -0
  73. package/dist/wizard/lib/codegen/integrations.js +189 -0
  74. package/dist/wizard/lib/codegen/openapi-gen.d.ts +15 -0
  75. package/dist/wizard/lib/codegen/openapi-gen.js +79 -0
  76. package/dist/wizard/lib/codegen/prisma-types.d.ts +15 -0
  77. package/dist/wizard/lib/codegen/prisma-types.js +44 -0
  78. package/dist/wizard/lib/codegen/seed-gen.d.ts +16 -0
  79. package/dist/wizard/lib/codegen/seed-gen.js +128 -0
  80. package/dist/wizard/lib/compliance.d.ts +51 -0
  81. package/dist/wizard/lib/compliance.js +112 -0
  82. package/dist/wizard/lib/correlation-engine.d.ts +59 -0
  83. package/dist/wizard/lib/correlation-engine.js +151 -0
  84. package/dist/wizard/lib/cost-estimator.d.ts +22 -0
  85. package/dist/wizard/lib/cost-estimator.js +72 -0
  86. package/dist/wizard/lib/cost-tracker.d.ts +27 -0
  87. package/dist/wizard/lib/cost-tracker.js +37 -0
  88. package/dist/wizard/lib/daemon-aggregator.d.ts +71 -0
  89. package/dist/wizard/lib/daemon-aggregator.js +204 -0
  90. package/dist/wizard/lib/daemon-core.d.ts +6 -0
  91. package/dist/wizard/lib/daemon-core.js +5 -0
  92. package/dist/wizard/lib/dashboard-data.d.ts +132 -0
  93. package/dist/wizard/lib/dashboard-data.js +336 -0
  94. package/dist/wizard/lib/dashboard-ws.d.ts +25 -0
  95. package/dist/wizard/lib/dashboard-ws.js +91 -0
  96. package/dist/wizard/lib/deep-current.d.ts +77 -0
  97. package/dist/wizard/lib/deep-current.js +234 -0
  98. package/dist/wizard/lib/deploy-coordinator.d.ts +40 -0
  99. package/dist/wizard/lib/deploy-coordinator.js +86 -0
  100. package/dist/wizard/lib/deploy-log.d.ts +28 -0
  101. package/dist/wizard/lib/deploy-log.js +52 -0
  102. package/dist/wizard/lib/desktop-notify.d.ts +27 -0
  103. package/dist/wizard/lib/desktop-notify.js +98 -0
  104. package/dist/wizard/lib/dns/cloudflare-dns.d.ts +35 -0
  105. package/dist/wizard/lib/dns/cloudflare-dns.js +216 -0
  106. package/dist/wizard/lib/dns/cloudflare-registrar.d.ts +31 -0
  107. package/dist/wizard/lib/dns/cloudflare-registrar.js +148 -0
  108. package/dist/wizard/lib/dns/types.d.ts +22 -0
  109. package/dist/wizard/lib/dns/types.js +4 -0
  110. package/dist/wizard/lib/document-discovery.d.ts +33 -0
  111. package/dist/wizard/lib/document-discovery.js +145 -0
  112. package/dist/wizard/lib/env-validator.d.ts +14 -0
  113. package/dist/wizard/lib/env-validator.js +205 -0
  114. package/dist/wizard/lib/env-writer.d.ts +13 -0
  115. package/dist/wizard/lib/env-writer.js +26 -0
  116. package/dist/wizard/lib/exec.d.ts +30 -0
  117. package/dist/wizard/lib/exec.js +52 -0
  118. package/dist/wizard/lib/experiment.d.ts +70 -0
  119. package/dist/wizard/lib/experiment.js +169 -0
  120. package/dist/wizard/lib/extensions.d.ts +20 -0
  121. package/dist/wizard/lib/extensions.js +183 -0
  122. package/dist/wizard/lib/financial/adapter-factory.d.ts +47 -0
  123. package/dist/wizard/lib/financial/adapter-factory.js +225 -0
  124. package/dist/wizard/lib/financial/billing/base.d.ts +6 -0
  125. package/dist/wizard/lib/financial/billing/base.js +1 -0
  126. package/dist/wizard/lib/financial/billing/google-billing.d.ts +56 -0
  127. package/dist/wizard/lib/financial/billing/google-billing.js +298 -0
  128. package/dist/wizard/lib/financial/billing/meta-billing.d.ts +54 -0
  129. package/dist/wizard/lib/financial/billing/meta-billing.js +243 -0
  130. package/dist/wizard/lib/financial/billing/tiktok-billing.d.ts +54 -0
  131. package/dist/wizard/lib/financial/billing/tiktok-billing.js +260 -0
  132. package/dist/wizard/lib/financial/campaign/base.d.ts +13 -0
  133. package/dist/wizard/lib/financial/campaign/base.js +1 -0
  134. package/dist/wizard/lib/financial/campaign/google-campaign.d.ts +42 -0
  135. package/dist/wizard/lib/financial/campaign/google-campaign.js +388 -0
  136. package/dist/wizard/lib/financial/campaign/meta-campaign.d.ts +41 -0
  137. package/dist/wizard/lib/financial/campaign/meta-campaign.js +311 -0
  138. package/dist/wizard/lib/financial/campaign/sandbox-campaign.d.ts +45 -0
  139. package/dist/wizard/lib/financial/campaign/sandbox-campaign.js +261 -0
  140. package/dist/wizard/lib/financial/campaign/tiktok-campaign.d.ts +40 -0
  141. package/dist/wizard/lib/financial/campaign/tiktok-campaign.js +350 -0
  142. package/dist/wizard/lib/financial/funding-auto.d.ts +44 -0
  143. package/dist/wizard/lib/financial/funding-auto.js +52 -0
  144. package/dist/wizard/lib/financial/funding-policy.d.ts +60 -0
  145. package/dist/wizard/lib/financial/funding-policy.js +179 -0
  146. package/dist/wizard/lib/financial/platform-planner.d.ts +47 -0
  147. package/dist/wizard/lib/financial/platform-planner.js +134 -0
  148. package/dist/wizard/lib/financial/reconciliation-engine.d.ts +78 -0
  149. package/dist/wizard/lib/financial/reconciliation-engine.js +193 -0
  150. package/dist/wizard/lib/financial/registry.d.ts +22 -0
  151. package/dist/wizard/lib/financial/registry.js +26 -0
  152. package/dist/wizard/lib/financial/reporting.d.ts +96 -0
  153. package/dist/wizard/lib/financial/reporting.js +198 -0
  154. package/dist/wizard/lib/financial/stablecoin/base.d.ts +6 -0
  155. package/dist/wizard/lib/financial/stablecoin/base.js +1 -0
  156. package/dist/wizard/lib/financial/stablecoin/circle.d.ts +54 -0
  157. package/dist/wizard/lib/financial/stablecoin/circle.js +367 -0
  158. package/dist/wizard/lib/financial/stablecoin/mercury.d.ts +24 -0
  159. package/dist/wizard/lib/financial/stablecoin/mercury.js +171 -0
  160. package/dist/wizard/lib/financial/stablecoin/sandbox-stablecoin.d.ts +47 -0
  161. package/dist/wizard/lib/financial/stablecoin/sandbox-stablecoin.js +202 -0
  162. package/dist/wizard/lib/financial/treasury-planner.d.ts +52 -0
  163. package/dist/wizard/lib/financial/treasury-planner.js +128 -0
  164. package/dist/wizard/lib/financial-core.d.ts +6 -0
  165. package/dist/wizard/lib/financial-core.js +5 -0
  166. package/dist/wizard/lib/financial-vault.d.ts +34 -0
  167. package/dist/wizard/lib/financial-vault.js +199 -0
  168. package/dist/wizard/lib/frontmatter.d.ts +30 -0
  169. package/dist/wizard/lib/frontmatter.js +96 -0
  170. package/dist/wizard/lib/gap-analysis.d.ts +37 -0
  171. package/dist/wizard/lib/gap-analysis.js +218 -0
  172. package/dist/wizard/lib/github.d.ts +22 -0
  173. package/dist/wizard/lib/github.js +261 -0
  174. package/dist/wizard/lib/headless-deploy.d.ts +14 -0
  175. package/dist/wizard/lib/headless-deploy.js +452 -0
  176. package/dist/wizard/lib/health-monitor.d.ts +15 -0
  177. package/dist/wizard/lib/health-monitor.js +91 -0
  178. package/dist/wizard/lib/health-poller.d.ts +9 -0
  179. package/dist/wizard/lib/health-poller.js +123 -0
  180. package/dist/wizard/lib/heartbeat.d.ts +15 -0
  181. package/dist/wizard/lib/heartbeat.js +827 -0
  182. package/dist/wizard/lib/http-helpers.d.ts +9 -0
  183. package/dist/wizard/lib/http-helpers.js +24 -0
  184. package/dist/wizard/lib/image-gen.d.ts +56 -0
  185. package/dist/wizard/lib/image-gen.js +159 -0
  186. package/dist/wizard/lib/instance-sizing.d.ts +26 -0
  187. package/dist/wizard/lib/instance-sizing.js +51 -0
  188. package/dist/wizard/lib/kongo/analytics.d.ts +29 -0
  189. package/dist/wizard/lib/kongo/analytics.js +179 -0
  190. package/dist/wizard/lib/kongo/campaigns.d.ts +52 -0
  191. package/dist/wizard/lib/kongo/campaigns.js +91 -0
  192. package/dist/wizard/lib/kongo/client.d.ts +58 -0
  193. package/dist/wizard/lib/kongo/client.js +221 -0
  194. package/dist/wizard/lib/kongo/jobs.d.ts +57 -0
  195. package/dist/wizard/lib/kongo/jobs.js +122 -0
  196. package/dist/wizard/lib/kongo/pages.d.ts +60 -0
  197. package/dist/wizard/lib/kongo/pages.js +150 -0
  198. package/dist/wizard/lib/kongo/provisioner.d.ts +64 -0
  199. package/dist/wizard/lib/kongo/provisioner.js +116 -0
  200. package/dist/wizard/lib/kongo/seed.d.ts +49 -0
  201. package/dist/wizard/lib/kongo/seed.js +237 -0
  202. package/dist/wizard/lib/kongo/types.d.ts +323 -0
  203. package/dist/wizard/lib/kongo/types.js +11 -0
  204. package/dist/wizard/lib/kongo/variants.d.ts +57 -0
  205. package/dist/wizard/lib/kongo/variants.js +88 -0
  206. package/dist/wizard/lib/kongo/webhooks.d.ts +41 -0
  207. package/dist/wizard/lib/kongo/webhooks.js +112 -0
  208. package/dist/wizard/lib/marker.d.ts +28 -0
  209. package/dist/wizard/lib/marker.js +79 -0
  210. package/dist/wizard/lib/migrator.d.ts +35 -0
  211. package/dist/wizard/lib/migrator.js +190 -0
  212. package/dist/wizard/lib/natural-language-deploy.d.ts +30 -0
  213. package/dist/wizard/lib/natural-language-deploy.js +186 -0
  214. package/dist/wizard/lib/network.d.ts +22 -0
  215. package/dist/wizard/lib/network.js +72 -0
  216. package/dist/wizard/lib/oauth-core.d.ts +6 -0
  217. package/dist/wizard/lib/oauth-core.js +5 -0
  218. package/dist/wizard/lib/open-browser.d.ts +1 -0
  219. package/dist/wizard/lib/open-browser.js +26 -0
  220. package/dist/wizard/lib/patterns/ad-billing-adapter.d.ts +209 -0
  221. package/dist/wizard/lib/patterns/ad-billing-adapter.js +269 -0
  222. package/dist/wizard/lib/patterns/ad-platform-adapter.d.ts +200 -0
  223. package/dist/wizard/lib/patterns/ad-platform-adapter.js +212 -0
  224. package/dist/wizard/lib/patterns/daemon-process.d.ts +88 -0
  225. package/dist/wizard/lib/patterns/daemon-process.js +271 -0
  226. package/dist/wizard/lib/patterns/financial-transaction.d.ts +161 -0
  227. package/dist/wizard/lib/patterns/financial-transaction.js +132 -0
  228. package/dist/wizard/lib/patterns/funding-plan.d.ts +136 -0
  229. package/dist/wizard/lib/patterns/funding-plan.js +200 -0
  230. package/dist/wizard/lib/patterns/oauth-token-lifecycle.d.ts +94 -0
  231. package/dist/wizard/lib/patterns/oauth-token-lifecycle.js +139 -0
  232. package/dist/wizard/lib/patterns/outbound-rate-limiter.d.ts +67 -0
  233. package/dist/wizard/lib/patterns/outbound-rate-limiter.js +216 -0
  234. package/dist/wizard/lib/patterns/revenue-source-adapter.d.ts +96 -0
  235. package/dist/wizard/lib/patterns/revenue-source-adapter.js +182 -0
  236. package/dist/wizard/lib/patterns/stablecoin-adapter.d.ts +218 -0
  237. package/dist/wizard/lib/patterns/stablecoin-adapter.js +264 -0
  238. package/dist/wizard/lib/prd-validator.d.ts +39 -0
  239. package/dist/wizard/lib/prd-validator.js +137 -0
  240. package/dist/wizard/lib/project-init.d.ts +24 -0
  241. package/dist/wizard/lib/project-init.js +193 -0
  242. package/dist/wizard/lib/project-registry.d.ts +86 -0
  243. package/dist/wizard/lib/project-registry.js +359 -0
  244. package/dist/wizard/lib/provision-manifest.d.ts +44 -0
  245. package/dist/wizard/lib/provision-manifest.js +164 -0
  246. package/dist/wizard/lib/provisioner-registry.d.ts +15 -0
  247. package/dist/wizard/lib/provisioner-registry.js +34 -0
  248. package/dist/wizard/lib/provisioners/aws-vps.d.ts +6 -0
  249. package/dist/wizard/lib/provisioners/aws-vps.js +643 -0
  250. package/dist/wizard/lib/provisioners/cloudflare.d.ts +6 -0
  251. package/dist/wizard/lib/provisioners/cloudflare.js +300 -0
  252. package/dist/wizard/lib/provisioners/docker.d.ts +6 -0
  253. package/dist/wizard/lib/provisioners/docker.js +75 -0
  254. package/dist/wizard/lib/provisioners/http-client.d.ts +20 -0
  255. package/dist/wizard/lib/provisioners/http-client.js +79 -0
  256. package/dist/wizard/lib/provisioners/railway.d.ts +6 -0
  257. package/dist/wizard/lib/provisioners/railway.js +413 -0
  258. package/dist/wizard/lib/provisioners/scripts/caddyfile.d.ts +10 -0
  259. package/dist/wizard/lib/provisioners/scripts/caddyfile.js +54 -0
  260. package/dist/wizard/lib/provisioners/scripts/deploy-vps.d.ts +10 -0
  261. package/dist/wizard/lib/provisioners/scripts/deploy-vps.js +112 -0
  262. package/dist/wizard/lib/provisioners/scripts/docker-compose.d.ts +11 -0
  263. package/dist/wizard/lib/provisioners/scripts/docker-compose.js +91 -0
  264. package/dist/wizard/lib/provisioners/scripts/dockerfile.d.ts +5 -0
  265. package/dist/wizard/lib/provisioners/scripts/dockerfile.js +185 -0
  266. package/dist/wizard/lib/provisioners/scripts/ecosystem-config.d.ts +10 -0
  267. package/dist/wizard/lib/provisioners/scripts/ecosystem-config.js +36 -0
  268. package/dist/wizard/lib/provisioners/scripts/provision-vps.d.ts +14 -0
  269. package/dist/wizard/lib/provisioners/scripts/provision-vps.js +202 -0
  270. package/dist/wizard/lib/provisioners/scripts/rollback-vps.d.ts +10 -0
  271. package/dist/wizard/lib/provisioners/scripts/rollback-vps.js +67 -0
  272. package/dist/wizard/lib/provisioners/self-deploy.d.ts +41 -0
  273. package/dist/wizard/lib/provisioners/self-deploy.js +185 -0
  274. package/dist/wizard/lib/provisioners/static-s3.d.ts +6 -0
  275. package/dist/wizard/lib/provisioners/static-s3.js +235 -0
  276. package/dist/wizard/lib/provisioners/types.d.ts +40 -0
  277. package/dist/wizard/lib/provisioners/types.js +4 -0
  278. package/dist/wizard/lib/provisioners/vercel.d.ts +6 -0
  279. package/dist/wizard/lib/provisioners/vercel.js +287 -0
  280. package/dist/wizard/lib/pty-manager.d.ts +42 -0
  281. package/dist/wizard/lib/pty-manager.js +231 -0
  282. package/dist/wizard/lib/rate-limiter-core.d.ts +5 -0
  283. package/dist/wizard/lib/rate-limiter-core.js +5 -0
  284. package/dist/wizard/lib/reconciliation.d.ts +43 -0
  285. package/dist/wizard/lib/reconciliation.js +173 -0
  286. package/dist/wizard/lib/revenue-types.d.ts +5 -0
  287. package/dist/wizard/lib/revenue-types.js +1 -0
  288. package/dist/wizard/lib/route-optimizer.d.ts +28 -0
  289. package/dist/wizard/lib/route-optimizer.js +93 -0
  290. package/dist/wizard/lib/s3-deploy.d.ts +19 -0
  291. package/dist/wizard/lib/s3-deploy.js +156 -0
  292. package/dist/wizard/lib/safety-tiers.d.ts +76 -0
  293. package/dist/wizard/lib/safety-tiers.js +134 -0
  294. package/dist/wizard/lib/sentry-generator.d.ts +15 -0
  295. package/dist/wizard/lib/sentry-generator.js +116 -0
  296. package/dist/wizard/lib/server-config.d.ts +13 -0
  297. package/dist/wizard/lib/server-config.js +23 -0
  298. package/dist/wizard/lib/service-install.d.ts +18 -0
  299. package/dist/wizard/lib/service-install.js +182 -0
  300. package/dist/wizard/lib/site-scanner.d.ts +80 -0
  301. package/dist/wizard/lib/site-scanner.js +262 -0
  302. package/dist/wizard/lib/ssh-deploy.d.ts +25 -0
  303. package/dist/wizard/lib/ssh-deploy.js +225 -0
  304. package/dist/wizard/lib/templates.d.ts +24 -0
  305. package/dist/wizard/lib/templates.js +219 -0
  306. package/dist/wizard/lib/totp.d.ts +35 -0
  307. package/dist/wizard/lib/totp.js +276 -0
  308. package/dist/wizard/lib/tower-auth.d.ts +43 -0
  309. package/dist/wizard/lib/tower-auth.js +352 -0
  310. package/dist/wizard/lib/tower-rate-limit.d.ts +14 -0
  311. package/dist/wizard/lib/tower-rate-limit.js +61 -0
  312. package/dist/wizard/lib/tower-session.d.ts +28 -0
  313. package/dist/wizard/lib/tower-session.js +119 -0
  314. package/dist/wizard/lib/treasury-backup.d.ts +23 -0
  315. package/dist/wizard/lib/treasury-backup.js +126 -0
  316. package/dist/wizard/lib/treasury-heartbeat.d.ts +82 -0
  317. package/dist/wizard/lib/treasury-heartbeat.js +1104 -0
  318. package/dist/wizard/lib/updater.d.ts +29 -0
  319. package/dist/wizard/lib/updater.js +190 -0
  320. package/dist/wizard/lib/user-manager.d.ts +39 -0
  321. package/dist/wizard/lib/user-manager.js +182 -0
  322. package/dist/wizard/lib/vault.d.ts +26 -0
  323. package/dist/wizard/lib/vault.js +161 -0
  324. package/dist/wizard/router.d.ts +5 -0
  325. package/dist/wizard/router.js +15 -0
  326. package/dist/wizard/server.d.ts +18 -0
  327. package/dist/wizard/server.js +436 -0
  328. package/package.json +59 -0
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Extension system — install, uninstall, and list extensions for VoidForge projects.
3
+ *
4
+ * Extensions add optional capabilities to projects without npm dependencies.
5
+ * Templates are copied into the project; runtime imports come from the global wizard.
6
+ */
7
+ import { mkdir, writeFile, rm } from 'node:fs/promises';
8
+ import { existsSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ import { readMarker, writeMarker } from './marker.js';
11
+ const extensions = new Map();
12
+ export function getExtension(name) {
13
+ return extensions.get(name);
14
+ }
15
+ export function listExtensions() {
16
+ return Array.from(extensions.values());
17
+ }
18
+ // ── Install / Uninstall ──────────────────────────────────
19
+ export async function installExtension(projectDir, name) {
20
+ const ext = getExtension(name);
21
+ if (!ext) {
22
+ throw new Error(`Unknown extension: ${name}. Available: ${listExtensions().map(e => e.name).join(', ')}`);
23
+ }
24
+ const marker = await readMarker(projectDir);
25
+ if (!marker) {
26
+ throw new Error('Not a VoidForge project — no .voidforge marker found.');
27
+ }
28
+ if (marker.extensions.includes(name)) {
29
+ throw new Error(`Extension "${name}" is already installed.`);
30
+ }
31
+ const filesCreated = await ext.install(projectDir);
32
+ // Register in marker
33
+ marker.extensions.push(name);
34
+ await writeMarker(projectDir, marker);
35
+ return { filesCreated };
36
+ }
37
+ export async function uninstallExtension(projectDir, name) {
38
+ const ext = getExtension(name);
39
+ if (!ext) {
40
+ throw new Error(`Unknown extension: ${name}.`);
41
+ }
42
+ const marker = await readMarker(projectDir);
43
+ if (!marker) {
44
+ throw new Error('Not a VoidForge project — no .voidforge marker found.');
45
+ }
46
+ if (!marker.extensions.includes(name)) {
47
+ throw new Error(`Extension "${name}" is not installed.`);
48
+ }
49
+ await ext.uninstall(projectDir);
50
+ // Deregister from marker
51
+ marker.extensions = marker.extensions.filter(e => e !== name);
52
+ await writeMarker(projectDir, marker);
53
+ }
54
+ // ── Danger Room Extension ────────────────────────────────
55
+ const DANGER_ROOM_CONFIG = {
56
+ refreshIntervalMs: 30000,
57
+ panels: {
58
+ heartbeat: { enabled: true },
59
+ campaigns: { enabled: true },
60
+ treasury: { enabled: true },
61
+ deployments: { enabled: true },
62
+ },
63
+ alerts: {
64
+ spendThresholdCents: 100_00,
65
+ errorRateThreshold: 0.05,
66
+ },
67
+ };
68
+ extensions.set('danger-room', {
69
+ name: 'danger-room',
70
+ description: 'Operations dashboard — heartbeat grid, campaigns, treasury, deployments',
71
+ async install(projectDir) {
72
+ const configPath = join(projectDir, 'danger-room.config.json');
73
+ await writeFile(configPath, JSON.stringify(DANGER_ROOM_CONFIG, null, 2) + '\n', 'utf-8');
74
+ return 1;
75
+ },
76
+ async uninstall(projectDir) {
77
+ const configPath = join(projectDir, 'danger-room.config.json');
78
+ if (existsSync(configPath)) {
79
+ await rm(configPath);
80
+ }
81
+ },
82
+ });
83
+ // ── Cultivation Extension ────────────────────────────────
84
+ const CULTIVATION_JOBS = [
85
+ 'token-refresh',
86
+ 'spend-check',
87
+ 'campaign-status',
88
+ 'reconciliation',
89
+ 'ab-evaluation',
90
+ 'revenue-ingest',
91
+ 'budget-rebalance',
92
+ 'anomaly-scan',
93
+ 'report-generation',
94
+ 'platform-health',
95
+ 'creative-rotation',
96
+ 'audience-refresh',
97
+ ];
98
+ function jobTemplate(jobName) {
99
+ const camelName = jobName.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
100
+ return `/**
101
+ * ${jobName} — thin wrapper importing from the VoidForge wizard.
102
+ *
103
+ * This file is a project-local entry point for the heartbeat daemon.
104
+ * The actual implementation lives in the globally-installed wizard.
105
+ */
106
+
107
+ import type { HeartbeatJob } from 'voidforge/wizard/lib/daemon-core.js';
108
+
109
+ export const job: HeartbeatJob = {
110
+ name: '${jobName}',
111
+ async execute(context) {
112
+ const { ${camelName} } = await import('voidforge/wizard/lib/heartbeat.js');
113
+ return ${camelName}(context);
114
+ },
115
+ };
116
+ `;
117
+ }
118
+ const HEARTBEAT_CONFIG = {
119
+ schedules: {
120
+ 'token-refresh': { intervalMs: 3600000, enabled: true },
121
+ 'spend-check': { intervalMs: 300000, enabled: true },
122
+ 'campaign-status': { intervalMs: 600000, enabled: true },
123
+ 'reconciliation': { intervalMs: 86400000, enabled: true },
124
+ 'ab-evaluation': { intervalMs: 3600000, enabled: true },
125
+ 'revenue-ingest': { intervalMs: 3600000, enabled: true },
126
+ 'budget-rebalance': { intervalMs: 86400000, enabled: true },
127
+ 'anomaly-scan': { intervalMs: 1800000, enabled: true },
128
+ 'report-generation': { intervalMs: 86400000, enabled: false },
129
+ 'platform-health': { intervalMs: 300000, enabled: true },
130
+ 'creative-rotation': { intervalMs: 86400000, enabled: false },
131
+ 'audience-refresh': { intervalMs: 86400000, enabled: false },
132
+ },
133
+ circuitBreakers: {
134
+ maxConsecutiveFailures: 3,
135
+ cooldownMs: 300000,
136
+ resetAfterMs: 3600000,
137
+ },
138
+ platforms: [],
139
+ };
140
+ const CULTIVATION_GITIGNORE = `# Runtime state — never committed
141
+ treasury/spend-log.jsonl
142
+ treasury/revenue-log.jsonl
143
+ treasury/campaigns/
144
+ treasury/*.json
145
+ heartbeat.pid
146
+ heartbeat.sock
147
+ `;
148
+ extensions.set('cultivation', {
149
+ name: 'cultivation',
150
+ description: 'Growth engine — ad platforms, treasury, heartbeat daemon, A/B testing',
151
+ async install(projectDir) {
152
+ const cultDir = join(projectDir, 'cultivation');
153
+ const jobsDir = join(cultDir, 'jobs');
154
+ const treasuryDir = join(cultDir, 'treasury');
155
+ const campaignsDir = join(treasuryDir, 'campaigns');
156
+ await mkdir(jobsDir, { recursive: true });
157
+ await mkdir(campaignsDir, { recursive: true });
158
+ let count = 0;
159
+ // Config
160
+ await writeFile(join(cultDir, 'heartbeat.config.json'), JSON.stringify(HEARTBEAT_CONFIG, null, 2) + '\n', 'utf-8');
161
+ count++;
162
+ // Job files
163
+ for (const jobName of CULTIVATION_JOBS) {
164
+ await writeFile(join(jobsDir, `${jobName}.ts`), jobTemplate(jobName), 'utf-8');
165
+ count++;
166
+ }
167
+ // .gitignore
168
+ await writeFile(join(cultDir, '.gitignore'), CULTIVATION_GITIGNORE, 'utf-8');
169
+ count++;
170
+ return count;
171
+ },
172
+ async uninstall(projectDir) {
173
+ const cultDir = join(projectDir, 'cultivation');
174
+ if (existsSync(cultDir)) {
175
+ await rm(cultDir, { recursive: true, force: true });
176
+ }
177
+ // Clean up PID/socket if running
178
+ const pidFile = join(projectDir, '.voidforge', 'heartbeat.pid');
179
+ if (existsSync(pidFile)) {
180
+ await rm(pidFile);
181
+ }
182
+ },
183
+ });
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Adapter Factory — config-driven adapter instantiation.
3
+ *
4
+ * Reads funding-config from the financial vault and returns the correct
5
+ * adapter (real or sandbox) based on what the user configured during
6
+ * the interactive setup wizard.
7
+ *
8
+ * This eliminates the hard-coded SandboxStablecoinAdapter in the daemon.
9
+ * Each factory function:
10
+ * 1. If vaultKey is null → sandbox adapter (no vault access)
11
+ * 2. Reads funding-config from vault → determines provider
12
+ * 3. Reads provider API key from vault → instantiates real adapter
13
+ * 4. If API key missing → logs warning, falls back to sandbox
14
+ *
15
+ * PRD Reference: §12.1, §12.2, §12.3
16
+ * No Stubs Doctrine: every code path returns a working adapter instance.
17
+ */
18
+ import type { StablecoinAdapter } from './stablecoin/base.js';
19
+ import type { RevenueSourceAdapter } from '../revenue-types.js';
20
+ import type { AdBillingAdapter, AdPlatform } from './billing/base.js';
21
+ import type { AdPlatformAdapter } from './campaign/base.js';
22
+ /** Minimal logger — matches the daemon Logger interface. */
23
+ interface FactoryLogger {
24
+ log(message: string): void;
25
+ }
26
+ /**
27
+ * Returns a StablecoinAdapter: CircleAdapter if configured with credentials,
28
+ * otherwise SandboxStablecoinAdapter.
29
+ */
30
+ export declare function getStablecoinAdapter(vaultKey: string | null, logger?: FactoryLogger): Promise<StablecoinAdapter>;
31
+ /**
32
+ * Returns a RevenueSourceAdapter for bank operations: MercuryBankAdapter
33
+ * if configured with credentials, otherwise SandboxBankAdapter.
34
+ */
35
+ export declare function getBankAdapter(vaultKey: string | null, logger?: FactoryLogger): Promise<RevenueSourceAdapter>;
36
+ /**
37
+ * Returns an AdBillingAdapter for the given platform, or null if not configured.
38
+ * Platform credentials are read from the financial vault.
39
+ */
40
+ export declare function getBillingAdapter(platform: AdPlatform, vaultKey: string | null, logger?: FactoryLogger): Promise<AdBillingAdapter | null>;
41
+ /**
42
+ * Returns an AdPlatformAdapter for campaign CRUD on the given platform.
43
+ * If credentials are missing or platform is unrecognized, returns a cached
44
+ * SandboxCampaignAdapter (one per platform, so campaign state persists).
45
+ */
46
+ export declare function getCampaignAdapter(platform: AdPlatform, vaultKey: string | null, logger?: FactoryLogger): Promise<AdPlatformAdapter>;
47
+ export {};
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Adapter Factory — config-driven adapter instantiation.
3
+ *
4
+ * Reads funding-config from the financial vault and returns the correct
5
+ * adapter (real or sandbox) based on what the user configured during
6
+ * the interactive setup wizard.
7
+ *
8
+ * This eliminates the hard-coded SandboxStablecoinAdapter in the daemon.
9
+ * Each factory function:
10
+ * 1. If vaultKey is null → sandbox adapter (no vault access)
11
+ * 2. Reads funding-config from vault → determines provider
12
+ * 3. Reads provider API key from vault → instantiates real adapter
13
+ * 4. If API key missing → logs warning, falls back to sandbox
14
+ *
15
+ * PRD Reference: §12.1, §12.2, §12.3
16
+ * No Stubs Doctrine: every code path returns a working adapter instance.
17
+ */
18
+ import { financialVaultGet } from '../financial-vault.js';
19
+ import { SandboxStablecoinAdapter } from './stablecoin/sandbox-stablecoin.js';
20
+ import { SandboxBankAdapter } from '../adapters/sandbox-bank.js';
21
+ import { SandboxCampaignAdapter } from './campaign/sandbox-campaign.js';
22
+ const noopLogger = { log() { } };
23
+ // ── Config Reader ────────────────────────────────────
24
+ async function readFundingConfig(vaultKey) {
25
+ const raw = await financialVaultGet(vaultKey, 'funding-config');
26
+ if (!raw)
27
+ return null;
28
+ try {
29
+ return JSON.parse(raw);
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ // ── Stablecoin Adapter Factory ───────────────────────
36
+ /**
37
+ * Returns a StablecoinAdapter: CircleAdapter if configured with credentials,
38
+ * otherwise SandboxStablecoinAdapter.
39
+ */
40
+ export async function getStablecoinAdapter(vaultKey, logger = noopLogger) {
41
+ if (!vaultKey) {
42
+ logger.log('Adapter factory: no vault key — using sandbox stablecoin adapter');
43
+ return new SandboxStablecoinAdapter();
44
+ }
45
+ try {
46
+ const config = await readFundingConfig(vaultKey);
47
+ if (!config || config.stablecoinProvider === 'sandbox') {
48
+ logger.log('Adapter factory: funding config specifies sandbox stablecoin');
49
+ return new SandboxStablecoinAdapter();
50
+ }
51
+ if (config.stablecoinProvider === 'circle') {
52
+ const apiKey = await financialVaultGet(vaultKey, 'circle-api-key');
53
+ if (!apiKey) {
54
+ logger.log('Adapter factory: circle-api-key not found in vault — falling back to sandbox');
55
+ return new SandboxStablecoinAdapter();
56
+ }
57
+ const bankId = config.circleBankId ?? '';
58
+ if (!bankId) {
59
+ logger.log('Adapter factory: circleBankId missing in funding config — falling back to sandbox');
60
+ return new SandboxStablecoinAdapter();
61
+ }
62
+ const { CircleAdapter } = await import('./stablecoin/circle.js');
63
+ logger.log('Adapter factory: using Circle stablecoin adapter');
64
+ return new CircleAdapter({ apiKey, bankId });
65
+ }
66
+ }
67
+ catch (err) {
68
+ const msg = err instanceof Error ? err.message : 'Unknown error';
69
+ logger.log(`Adapter factory: stablecoin adapter creation failed (${msg}) — falling back to sandbox`);
70
+ }
71
+ return new SandboxStablecoinAdapter();
72
+ }
73
+ // ── Bank Adapter Factory ─────────────────────────────
74
+ /**
75
+ * Returns a RevenueSourceAdapter for bank operations: MercuryBankAdapter
76
+ * if configured with credentials, otherwise SandboxBankAdapter.
77
+ */
78
+ export async function getBankAdapter(vaultKey, logger = noopLogger) {
79
+ if (!vaultKey) {
80
+ logger.log('Adapter factory: no vault key — using sandbox bank adapter');
81
+ return new SandboxBankAdapter('Sandbox Bank');
82
+ }
83
+ try {
84
+ const config = await readFundingConfig(vaultKey);
85
+ if (!config || config.bankProvider === 'sandbox') {
86
+ logger.log('Adapter factory: funding config specifies sandbox bank');
87
+ return new SandboxBankAdapter('Sandbox Bank');
88
+ }
89
+ if (config.bankProvider === 'mercury') {
90
+ const apiKey = await financialVaultGet(vaultKey, 'mercury-api-key');
91
+ if (!apiKey) {
92
+ logger.log('Adapter factory: mercury-api-key not found in vault — falling back to sandbox');
93
+ return new SandboxBankAdapter('Sandbox Bank');
94
+ }
95
+ const { MercuryBankAdapter } = await import('./stablecoin/mercury.js');
96
+ logger.log('Adapter factory: using Mercury bank adapter');
97
+ return new MercuryBankAdapter(apiKey, config.mercuryAccountId);
98
+ }
99
+ }
100
+ catch (err) {
101
+ const msg = err instanceof Error ? err.message : 'Unknown error';
102
+ logger.log(`Adapter factory: bank adapter creation failed (${msg}) — falling back to sandbox`);
103
+ }
104
+ return new SandboxBankAdapter('Sandbox Bank');
105
+ }
106
+ // ── Billing Adapter Factory ──────────────────────────
107
+ /**
108
+ * Returns an AdBillingAdapter for the given platform, or null if not configured.
109
+ * Platform credentials are read from the financial vault.
110
+ */
111
+ export async function getBillingAdapter(platform, vaultKey, logger = noopLogger) {
112
+ if (!vaultKey) {
113
+ logger.log(`Adapter factory: no vault key — no ${platform} billing adapter`);
114
+ return null;
115
+ }
116
+ try {
117
+ if (platform === 'google') {
118
+ const accessToken = await financialVaultGet(vaultKey, 'google-ads-token');
119
+ const developerToken = await financialVaultGet(vaultKey, 'google-developer-token');
120
+ const customerId = await financialVaultGet(vaultKey, 'google-customer-id');
121
+ if (!accessToken || !developerToken || !customerId) {
122
+ logger.log('Adapter factory: Google Ads credentials incomplete — billing adapter unavailable');
123
+ return null;
124
+ }
125
+ const { GoogleBillingAdapter } = await import('./billing/google-billing.js');
126
+ logger.log('Adapter factory: using Google billing adapter');
127
+ return new GoogleBillingAdapter({ customerId, accessToken, developerToken });
128
+ }
129
+ if (platform === 'meta') {
130
+ const accessToken = await financialVaultGet(vaultKey, 'meta-access-token');
131
+ const adAccountId = await financialVaultGet(vaultKey, 'meta-ad-account-id');
132
+ if (!accessToken || !adAccountId) {
133
+ logger.log('Adapter factory: Meta Ads credentials incomplete — billing adapter unavailable');
134
+ return null;
135
+ }
136
+ const { MetaBillingAdapter } = await import('./billing/meta-billing.js');
137
+ logger.log('Adapter factory: using Meta billing adapter');
138
+ return new MetaBillingAdapter({ adAccountId, accessToken });
139
+ }
140
+ if (platform === 'tiktok') {
141
+ const accessToken = await financialVaultGet(vaultKey, 'tiktok-access-token');
142
+ const appId = await financialVaultGet(vaultKey, 'tiktok-app-id');
143
+ if (!accessToken || !appId) {
144
+ logger.log('Adapter factory: TikTok Ads credentials incomplete — billing adapter unavailable');
145
+ return null;
146
+ }
147
+ const { TikTokBillingAdapter } = await import('./billing/tiktok-billing.js');
148
+ logger.log('Adapter factory: using TikTok billing adapter');
149
+ return new TikTokBillingAdapter({ appId, accessToken });
150
+ }
151
+ }
152
+ catch (err) {
153
+ const msg = err instanceof Error ? err.message : 'Unknown error';
154
+ logger.log(`Adapter factory: ${platform} billing adapter creation failed (${msg})`);
155
+ }
156
+ return null;
157
+ }
158
+ // ── Campaign Adapter Factory ────────────────────────
159
+ /**
160
+ * Cached sandbox campaign adapters — one per platform.
161
+ * The sandbox adapter stores campaigns in memory; creating a new instance
162
+ * per call loses all campaign state between operations.
163
+ */
164
+ const sandboxCampaignAdapters = new Map();
165
+ function getSandboxCampaignAdapter(platform) {
166
+ let adapter = sandboxCampaignAdapters.get(platform);
167
+ if (!adapter) {
168
+ adapter = new SandboxCampaignAdapter(platform);
169
+ sandboxCampaignAdapters.set(platform, adapter);
170
+ }
171
+ return adapter;
172
+ }
173
+ /**
174
+ * Returns an AdPlatformAdapter for campaign CRUD on the given platform.
175
+ * If credentials are missing or platform is unrecognized, returns a cached
176
+ * SandboxCampaignAdapter (one per platform, so campaign state persists).
177
+ */
178
+ export async function getCampaignAdapter(platform, vaultKey, logger = noopLogger) {
179
+ if (!vaultKey) {
180
+ logger.log(`Adapter factory: no vault key — using sandbox campaign adapter for ${platform}`);
181
+ return getSandboxCampaignAdapter(platform);
182
+ }
183
+ try {
184
+ if (platform === 'google') {
185
+ const accessToken = await financialVaultGet(vaultKey, 'google-ads-token');
186
+ const developerToken = await financialVaultGet(vaultKey, 'google-developer-token');
187
+ const customerId = await financialVaultGet(vaultKey, 'google-customer-id');
188
+ if (!accessToken || !developerToken || !customerId) {
189
+ logger.log('Adapter factory: Google Ads credentials incomplete — falling back to sandbox campaign adapter');
190
+ return getSandboxCampaignAdapter(platform);
191
+ }
192
+ const { GoogleCampaignAdapter } = await import('./campaign/google-campaign.js');
193
+ logger.log('Adapter factory: using Google campaign adapter');
194
+ return new GoogleCampaignAdapter({ customerId, accessToken, developerToken });
195
+ }
196
+ if (platform === 'meta') {
197
+ const accessToken = await financialVaultGet(vaultKey, 'meta-access-token');
198
+ const adAccountId = await financialVaultGet(vaultKey, 'meta-ad-account-id');
199
+ if (!accessToken || !adAccountId) {
200
+ logger.log('Adapter factory: Meta Ads credentials incomplete — falling back to sandbox campaign adapter');
201
+ return getSandboxCampaignAdapter(platform);
202
+ }
203
+ const { MetaCampaignAdapter } = await import('./campaign/meta-campaign.js');
204
+ logger.log('Adapter factory: using Meta campaign adapter');
205
+ return new MetaCampaignAdapter({ adAccountId, accessToken });
206
+ }
207
+ if (platform === 'tiktok') {
208
+ const accessToken = await financialVaultGet(vaultKey, 'tiktok-access-token');
209
+ const appId = await financialVaultGet(vaultKey, 'tiktok-app-id');
210
+ if (!accessToken || !appId) {
211
+ logger.log('Adapter factory: TikTok credentials incomplete — falling back to sandbox campaign adapter');
212
+ return getSandboxCampaignAdapter(platform);
213
+ }
214
+ const { TikTokCampaignAdapter } = await import('./campaign/tiktok-campaign.js');
215
+ logger.log('Adapter factory: using TikTok campaign adapter');
216
+ return new TikTokCampaignAdapter({ appId, accessToken });
217
+ }
218
+ }
219
+ catch (err) {
220
+ const msg = err instanceof Error ? err.message : 'Unknown error';
221
+ logger.log(`Adapter factory: ${platform} campaign adapter creation failed (${msg}) — falling back to sandbox`);
222
+ }
223
+ logger.log(`Adapter factory: unrecognized platform '${platform}' — using sandbox campaign adapter`);
224
+ return getSandboxCampaignAdapter(platform);
225
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Ad billing adapter types — re-exports from the pattern file.
3
+ * ARCH-R2-012: Production code should not import from docs/patterns/ directly.
4
+ */
5
+ export type { AdBillingSetup, AdBillingAdapter, CapabilityState, BillingMode, AdPlatform, Invoice, InvoiceLineItem, ExpectedDebit, SettlementInstruction, PlatformBillingProfile, BillingConfiguration, NormalizedFundingState, DateRange, Cents, } from '../../patterns/ad-billing-adapter.js';
6
+ export { toCents } from '../../patterns/ad-billing-adapter.js';
@@ -0,0 +1 @@
1
+ export { toCents } from '../../patterns/ad-billing-adapter.js';
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Google Ads Billing Adapter — real implementation via node:https (zero new dependencies).
3
+ *
4
+ * Implements AdBillingSetup (interactive CLI) + AdBillingAdapter (daemon runtime)
5
+ * for Google Ads API v17.
6
+ *
7
+ * Google Ads API v17:
8
+ * Base URL: https://googleads.googleapis.com/v17
9
+ * Auth: Authorization: Bearer {accessToken} (OAuth2)
10
+ * Also requires developer-token header for API access.
11
+ *
12
+ * Billing model: Monthly invoicing accounts receive invoices that must be paid
13
+ * via wire/ACH. Non-invoicing accounts are monitor-only (card or manual bank).
14
+ *
15
+ * PRD Reference: $10.2, $11.1B, $12.3
16
+ * No Stubs Doctrine: every method makes a real API call or returns documented empty.
17
+ */
18
+ import type { AdBillingSetup, AdBillingAdapter, CapabilityState, BillingMode, AdPlatform, Invoice, ExpectedDebit, SettlementInstruction, PlatformBillingProfile, BillingConfiguration, NormalizedFundingState, DateRange, Cents } from './base.js';
19
+ interface GoogleBillingConfig {
20
+ customerId: string;
21
+ accessToken: string;
22
+ developerToken: string;
23
+ }
24
+ export declare class GoogleBillingSetup implements AdBillingSetup {
25
+ private readonly developerToken;
26
+ constructor(developerToken: string);
27
+ verifyBillingCapability(_platform: AdPlatform, externalAccountId: string, tokens: {
28
+ accessToken: string;
29
+ }): Promise<CapabilityState>;
30
+ readBillingConfiguration(_platform: AdPlatform, externalAccountId: string, tokens: {
31
+ accessToken: string;
32
+ }): Promise<BillingConfiguration>;
33
+ detectBillingMode(_platform: AdPlatform, externalAccountId: string, tokens: {
34
+ accessToken: string;
35
+ }): Promise<BillingMode>;
36
+ /** Query billing_setup resource via Google Ads searchStream. */
37
+ private queryBillingSetup;
38
+ }
39
+ export declare class GoogleBillingAdapter implements AdBillingAdapter {
40
+ private readonly config;
41
+ private profile;
42
+ constructor(config: GoogleBillingConfig);
43
+ /** Set or update the billing profile (called by heartbeat after setup verification). */
44
+ setProfile(profile: PlatformBillingProfile): void;
45
+ getCapabilityState(_platform: AdPlatform): Promise<CapabilityState>;
46
+ readInvoices(_platform: AdPlatform, dateRange: DateRange): Promise<Invoice[]>;
47
+ readExpectedDebits(_platform: AdPlatform, _dateRange: DateRange): Promise<ExpectedDebit[]>;
48
+ generateSettlementInstructions(invoice: Invoice): Promise<SettlementInstruction>;
49
+ confirmSettlement(invoiceId: string, bankTransactionId: string): Promise<{
50
+ confirmed: boolean;
51
+ reconciledAmountCents: Cents;
52
+ varianceCents: Cents;
53
+ }>;
54
+ normalizeFundingState(): Promise<NormalizedFundingState[]>;
55
+ }
56
+ export {};