arc402-cli 0.2.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 (308) hide show
  1. package/README.md +245 -0
  2. package/dist/abis.d.ts +19 -0
  3. package/dist/abis.d.ts.map +1 -0
  4. package/dist/abis.js +177 -0
  5. package/dist/abis.js.map +1 -0
  6. package/dist/bundler.d.ts +65 -0
  7. package/dist/bundler.d.ts.map +1 -0
  8. package/dist/bundler.js +181 -0
  9. package/dist/bundler.js.map +1 -0
  10. package/dist/client.d.ts +14 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +24 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/coinbase-smart-wallet.d.ts +28 -0
  15. package/dist/coinbase-smart-wallet.d.ts.map +1 -0
  16. package/dist/coinbase-smart-wallet.js +38 -0
  17. package/dist/coinbase-smart-wallet.js.map +1 -0
  18. package/dist/commands/accept.d.ts +3 -0
  19. package/dist/commands/accept.d.ts.map +1 -0
  20. package/dist/commands/accept.js +26 -0
  21. package/dist/commands/accept.js.map +1 -0
  22. package/dist/commands/agent-handshake.d.ts +3 -0
  23. package/dist/commands/agent-handshake.d.ts.map +1 -0
  24. package/dist/commands/agent-handshake.js +61 -0
  25. package/dist/commands/agent-handshake.js.map +1 -0
  26. package/dist/commands/agent.d.ts +3 -0
  27. package/dist/commands/agent.d.ts.map +1 -0
  28. package/dist/commands/agent.js +417 -0
  29. package/dist/commands/agent.js.map +1 -0
  30. package/dist/commands/agreements.d.ts +3 -0
  31. package/dist/commands/agreements.d.ts.map +1 -0
  32. package/dist/commands/agreements.js +344 -0
  33. package/dist/commands/agreements.js.map +1 -0
  34. package/dist/commands/arbitrator.d.ts +3 -0
  35. package/dist/commands/arbitrator.d.ts.map +1 -0
  36. package/dist/commands/arbitrator.js +157 -0
  37. package/dist/commands/arbitrator.js.map +1 -0
  38. package/dist/commands/arena-handshake.d.ts +3 -0
  39. package/dist/commands/arena-handshake.d.ts.map +1 -0
  40. package/dist/commands/arena-handshake.js +187 -0
  41. package/dist/commands/arena-handshake.js.map +1 -0
  42. package/dist/commands/cancel.d.ts +3 -0
  43. package/dist/commands/cancel.d.ts.map +1 -0
  44. package/dist/commands/cancel.js +30 -0
  45. package/dist/commands/cancel.js.map +1 -0
  46. package/dist/commands/channel.d.ts +3 -0
  47. package/dist/commands/channel.d.ts.map +1 -0
  48. package/dist/commands/channel.js +238 -0
  49. package/dist/commands/channel.js.map +1 -0
  50. package/dist/commands/coldstart.d.ts +3 -0
  51. package/dist/commands/coldstart.d.ts.map +1 -0
  52. package/dist/commands/coldstart.js +148 -0
  53. package/dist/commands/coldstart.js.map +1 -0
  54. package/dist/commands/config.d.ts +3 -0
  55. package/dist/commands/config.d.ts.map +1 -0
  56. package/dist/commands/config.js +40 -0
  57. package/dist/commands/config.js.map +1 -0
  58. package/dist/commands/contract-interaction.d.ts +3 -0
  59. package/dist/commands/contract-interaction.d.ts.map +1 -0
  60. package/dist/commands/contract-interaction.js +165 -0
  61. package/dist/commands/contract-interaction.js.map +1 -0
  62. package/dist/commands/daemon.d.ts +3 -0
  63. package/dist/commands/daemon.d.ts.map +1 -0
  64. package/dist/commands/daemon.js +891 -0
  65. package/dist/commands/daemon.js.map +1 -0
  66. package/dist/commands/deliver.d.ts +3 -0
  67. package/dist/commands/deliver.d.ts.map +1 -0
  68. package/dist/commands/deliver.js +156 -0
  69. package/dist/commands/deliver.js.map +1 -0
  70. package/dist/commands/discover.d.ts +3 -0
  71. package/dist/commands/discover.d.ts.map +1 -0
  72. package/dist/commands/discover.js +224 -0
  73. package/dist/commands/discover.js.map +1 -0
  74. package/dist/commands/dispute.d.ts +3 -0
  75. package/dist/commands/dispute.d.ts.map +1 -0
  76. package/dist/commands/dispute.js +348 -0
  77. package/dist/commands/dispute.js.map +1 -0
  78. package/dist/commands/endpoint.d.ts +3 -0
  79. package/dist/commands/endpoint.d.ts.map +1 -0
  80. package/dist/commands/endpoint.js +604 -0
  81. package/dist/commands/endpoint.js.map +1 -0
  82. package/dist/commands/hire.d.ts +3 -0
  83. package/dist/commands/hire.d.ts.map +1 -0
  84. package/dist/commands/hire.js +189 -0
  85. package/dist/commands/hire.js.map +1 -0
  86. package/dist/commands/migrate.d.ts +3 -0
  87. package/dist/commands/migrate.d.ts.map +1 -0
  88. package/dist/commands/migrate.js +163 -0
  89. package/dist/commands/migrate.js.map +1 -0
  90. package/dist/commands/negotiate.d.ts +3 -0
  91. package/dist/commands/negotiate.d.ts.map +1 -0
  92. package/dist/commands/negotiate.js +247 -0
  93. package/dist/commands/negotiate.js.map +1 -0
  94. package/dist/commands/openshell.d.ts +3 -0
  95. package/dist/commands/openshell.d.ts.map +1 -0
  96. package/dist/commands/openshell.js +952 -0
  97. package/dist/commands/openshell.js.map +1 -0
  98. package/dist/commands/owner.d.ts +3 -0
  99. package/dist/commands/owner.d.ts.map +1 -0
  100. package/dist/commands/owner.js +32 -0
  101. package/dist/commands/owner.js.map +1 -0
  102. package/dist/commands/policy.d.ts +4 -0
  103. package/dist/commands/policy.d.ts.map +1 -0
  104. package/dist/commands/policy.js +248 -0
  105. package/dist/commands/policy.js.map +1 -0
  106. package/dist/commands/relay.d.ts +3 -0
  107. package/dist/commands/relay.d.ts.map +1 -0
  108. package/dist/commands/relay.js +279 -0
  109. package/dist/commands/relay.js.map +1 -0
  110. package/dist/commands/remediate.d.ts +3 -0
  111. package/dist/commands/remediate.d.ts.map +1 -0
  112. package/dist/commands/remediate.js +42 -0
  113. package/dist/commands/remediate.js.map +1 -0
  114. package/dist/commands/reputation.d.ts +4 -0
  115. package/dist/commands/reputation.d.ts.map +1 -0
  116. package/dist/commands/reputation.js +72 -0
  117. package/dist/commands/reputation.js.map +1 -0
  118. package/dist/commands/setup.d.ts +3 -0
  119. package/dist/commands/setup.d.ts.map +1 -0
  120. package/dist/commands/setup.js +332 -0
  121. package/dist/commands/setup.js.map +1 -0
  122. package/dist/commands/trust.d.ts +3 -0
  123. package/dist/commands/trust.d.ts.map +1 -0
  124. package/dist/commands/trust.js +23 -0
  125. package/dist/commands/trust.js.map +1 -0
  126. package/dist/commands/verify.d.ts +3 -0
  127. package/dist/commands/verify.d.ts.map +1 -0
  128. package/dist/commands/verify.js +88 -0
  129. package/dist/commands/verify.js.map +1 -0
  130. package/dist/commands/wallet.d.ts +3 -0
  131. package/dist/commands/wallet.d.ts.map +1 -0
  132. package/dist/commands/wallet.js +2520 -0
  133. package/dist/commands/wallet.js.map +1 -0
  134. package/dist/commands/watchtower.d.ts +3 -0
  135. package/dist/commands/watchtower.d.ts.map +1 -0
  136. package/dist/commands/watchtower.js +238 -0
  137. package/dist/commands/watchtower.js.map +1 -0
  138. package/dist/commands/workroom.d.ts +3 -0
  139. package/dist/commands/workroom.d.ts.map +1 -0
  140. package/dist/commands/workroom.js +855 -0
  141. package/dist/commands/workroom.js.map +1 -0
  142. package/dist/config.d.ts +62 -0
  143. package/dist/config.d.ts.map +1 -0
  144. package/dist/config.js +141 -0
  145. package/dist/config.js.map +1 -0
  146. package/dist/daemon/config.d.ts +74 -0
  147. package/dist/daemon/config.d.ts.map +1 -0
  148. package/dist/daemon/config.js +271 -0
  149. package/dist/daemon/config.js.map +1 -0
  150. package/dist/daemon/hire-listener.d.ts +31 -0
  151. package/dist/daemon/hire-listener.d.ts.map +1 -0
  152. package/dist/daemon/hire-listener.js +207 -0
  153. package/dist/daemon/hire-listener.js.map +1 -0
  154. package/dist/daemon/index.d.ts +29 -0
  155. package/dist/daemon/index.d.ts.map +1 -0
  156. package/dist/daemon/index.js +535 -0
  157. package/dist/daemon/index.js.map +1 -0
  158. package/dist/daemon/job-lifecycle.d.ts +62 -0
  159. package/dist/daemon/job-lifecycle.d.ts.map +1 -0
  160. package/dist/daemon/job-lifecycle.js +201 -0
  161. package/dist/daemon/job-lifecycle.js.map +1 -0
  162. package/dist/daemon/notify.d.ts +22 -0
  163. package/dist/daemon/notify.d.ts.map +1 -0
  164. package/dist/daemon/notify.js +148 -0
  165. package/dist/daemon/notify.js.map +1 -0
  166. package/dist/daemon/token-metering.d.ts +42 -0
  167. package/dist/daemon/token-metering.d.ts.map +1 -0
  168. package/dist/daemon/token-metering.js +178 -0
  169. package/dist/daemon/token-metering.js.map +1 -0
  170. package/dist/daemon/userops.d.ts +21 -0
  171. package/dist/daemon/userops.d.ts.map +1 -0
  172. package/dist/daemon/userops.js +88 -0
  173. package/dist/daemon/userops.js.map +1 -0
  174. package/dist/daemon/wallet-monitor.d.ts +16 -0
  175. package/dist/daemon/wallet-monitor.d.ts.map +1 -0
  176. package/dist/daemon/wallet-monitor.js +57 -0
  177. package/dist/daemon/wallet-monitor.js.map +1 -0
  178. package/dist/drain-v4.d.ts +2 -0
  179. package/dist/drain-v4.d.ts.map +1 -0
  180. package/dist/drain-v4.js +167 -0
  181. package/dist/drain-v4.js.map +1 -0
  182. package/dist/endpoint-config.d.ts +36 -0
  183. package/dist/endpoint-config.d.ts.map +1 -0
  184. package/dist/endpoint-config.js +96 -0
  185. package/dist/endpoint-config.js.map +1 -0
  186. package/dist/index.d.ts +3 -0
  187. package/dist/index.d.ts.map +1 -0
  188. package/dist/index.js +79 -0
  189. package/dist/index.js.map +1 -0
  190. package/dist/openshell-runtime.d.ts +55 -0
  191. package/dist/openshell-runtime.d.ts.map +1 -0
  192. package/dist/openshell-runtime.js +268 -0
  193. package/dist/openshell-runtime.js.map +1 -0
  194. package/dist/signing.d.ts +2 -0
  195. package/dist/signing.d.ts.map +1 -0
  196. package/dist/signing.js +23 -0
  197. package/dist/signing.js.map +1 -0
  198. package/dist/telegram-notify.d.ts +23 -0
  199. package/dist/telegram-notify.d.ts.map +1 -0
  200. package/dist/telegram-notify.js +106 -0
  201. package/dist/telegram-notify.js.map +1 -0
  202. package/dist/ui/banner.d.ts +7 -0
  203. package/dist/ui/banner.d.ts.map +1 -0
  204. package/dist/ui/banner.js +37 -0
  205. package/dist/ui/banner.js.map +1 -0
  206. package/dist/ui/colors.d.ts +14 -0
  207. package/dist/ui/colors.d.ts.map +1 -0
  208. package/dist/ui/colors.js +29 -0
  209. package/dist/ui/colors.js.map +1 -0
  210. package/dist/ui/format.d.ts +26 -0
  211. package/dist/ui/format.d.ts.map +1 -0
  212. package/dist/ui/format.js +77 -0
  213. package/dist/ui/format.js.map +1 -0
  214. package/dist/ui/spinner.d.ts +8 -0
  215. package/dist/ui/spinner.d.ts.map +1 -0
  216. package/dist/ui/spinner.js +43 -0
  217. package/dist/ui/spinner.js.map +1 -0
  218. package/dist/utils/format.d.ts +10 -0
  219. package/dist/utils/format.d.ts.map +1 -0
  220. package/dist/utils/format.js +61 -0
  221. package/dist/utils/format.js.map +1 -0
  222. package/dist/utils/hash.d.ts +3 -0
  223. package/dist/utils/hash.d.ts.map +1 -0
  224. package/dist/utils/hash.js +43 -0
  225. package/dist/utils/hash.js.map +1 -0
  226. package/dist/utils/time.d.ts +3 -0
  227. package/dist/utils/time.d.ts.map +1 -0
  228. package/dist/utils/time.js +21 -0
  229. package/dist/utils/time.js.map +1 -0
  230. package/dist/wallet-router.d.ts +25 -0
  231. package/dist/wallet-router.d.ts.map +1 -0
  232. package/dist/wallet-router.js +153 -0
  233. package/dist/wallet-router.js.map +1 -0
  234. package/dist/walletconnect-session.d.ts +12 -0
  235. package/dist/walletconnect-session.d.ts.map +1 -0
  236. package/dist/walletconnect-session.js +26 -0
  237. package/dist/walletconnect-session.js.map +1 -0
  238. package/dist/walletconnect.d.ts +46 -0
  239. package/dist/walletconnect.d.ts.map +1 -0
  240. package/dist/walletconnect.js +267 -0
  241. package/dist/walletconnect.js.map +1 -0
  242. package/package.json +38 -0
  243. package/scripts/authorize-machine-key.ts +43 -0
  244. package/scripts/drain-wallet.ts +149 -0
  245. package/scripts/execute-spend-only.ts +81 -0
  246. package/scripts/register-agent-userop.ts +186 -0
  247. package/src/abis.ts +187 -0
  248. package/src/bundler.ts +235 -0
  249. package/src/client.ts +34 -0
  250. package/src/coinbase-smart-wallet.ts +51 -0
  251. package/src/commands/accept.ts +25 -0
  252. package/src/commands/agent-handshake.ts +67 -0
  253. package/src/commands/agent.ts +458 -0
  254. package/src/commands/agreements.ts +324 -0
  255. package/src/commands/arbitrator.ts +129 -0
  256. package/src/commands/arena-handshake.ts +217 -0
  257. package/src/commands/cancel.ts +26 -0
  258. package/src/commands/channel.ts +208 -0
  259. package/src/commands/coldstart.ts +156 -0
  260. package/src/commands/config.ts +35 -0
  261. package/src/commands/contract-interaction.ts +166 -0
  262. package/src/commands/daemon.ts +971 -0
  263. package/src/commands/deliver.ts +116 -0
  264. package/src/commands/discover.ts +295 -0
  265. package/src/commands/dispute.ts +373 -0
  266. package/src/commands/endpoint.ts +619 -0
  267. package/src/commands/hire.ts +200 -0
  268. package/src/commands/migrate.ts +175 -0
  269. package/src/commands/negotiate.ts +270 -0
  270. package/src/commands/openshell.ts +1053 -0
  271. package/src/commands/owner.ts +30 -0
  272. package/src/commands/policy.ts +252 -0
  273. package/src/commands/relay.ts +272 -0
  274. package/src/commands/remediate.ts +22 -0
  275. package/src/commands/reputation.ts +71 -0
  276. package/src/commands/setup.ts +343 -0
  277. package/src/commands/trust.ts +15 -0
  278. package/src/commands/verify.ts +88 -0
  279. package/src/commands/wallet.ts +2892 -0
  280. package/src/commands/watchtower.ts +232 -0
  281. package/src/commands/workroom.ts +889 -0
  282. package/src/config.ts +153 -0
  283. package/src/daemon/config.ts +308 -0
  284. package/src/daemon/hire-listener.ts +226 -0
  285. package/src/daemon/index.ts +609 -0
  286. package/src/daemon/job-lifecycle.ts +215 -0
  287. package/src/daemon/notify.ts +157 -0
  288. package/src/daemon/token-metering.ts +183 -0
  289. package/src/daemon/userops.ts +119 -0
  290. package/src/daemon/wallet-monitor.ts +90 -0
  291. package/src/drain-v4.ts +159 -0
  292. package/src/endpoint-config.ts +83 -0
  293. package/src/index.ts +75 -0
  294. package/src/openshell-runtime.ts +277 -0
  295. package/src/signing.ts +28 -0
  296. package/src/telegram-notify.ts +88 -0
  297. package/src/ui/banner.ts +41 -0
  298. package/src/ui/colors.ts +30 -0
  299. package/src/ui/format.ts +77 -0
  300. package/src/ui/spinner.ts +46 -0
  301. package/src/utils/format.ts +48 -0
  302. package/src/utils/hash.ts +5 -0
  303. package/src/utils/time.ts +15 -0
  304. package/src/wallet-router.ts +178 -0
  305. package/src/walletconnect-session.ts +27 -0
  306. package/src/walletconnect.ts +294 -0
  307. package/test/time.test.js +11 -0
  308. package/tsconfig.json +19 -0
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.registerAgreementsCommands = registerAgreementsCommands;
37
+ const ethers_1 = require("ethers");
38
+ const readline = __importStar(require("readline"));
39
+ const sdk_1 = require("@arc402/sdk");
40
+ const config_1 = require("../config");
41
+ const client_1 = require("../client");
42
+ const format_1 = require("../utils/format");
43
+ const time_1 = require("../utils/time");
44
+ const hash_1 = require("../utils/hash");
45
+ // ─── AgreementTree minimal ABI ────────────────────────────────────────────────
46
+ const AGREEMENT_TREE_ABI = [
47
+ "function registerSubAgreement(uint256 parentAgreementId, uint256 childAgreementId) external",
48
+ "function getChildren(uint256 agreementId) external view returns (uint256[])",
49
+ "function getRoot(uint256 agreementId) external view returns (uint256)",
50
+ "function getPath(uint256 agreementId) external view returns (uint256[])",
51
+ "function allChildrenSettled(uint256 agreementId) external view returns (bool)",
52
+ "function getDepth(uint256 agreementId) external view returns (uint256)",
53
+ ];
54
+ function registerAgreementsCommands(program) {
55
+ // ── arc402 agreements ────────────────────────────────────────────────────────
56
+ program
57
+ .command("agreements")
58
+ .description("List agreements for the configured wallet")
59
+ .option("--as <role>", "client or provider", "client")
60
+ .option("--json")
61
+ .action(async (opts) => {
62
+ const config = (0, config_1.loadConfig)();
63
+ if (!config.serviceAgreementAddress)
64
+ throw new Error("serviceAgreementAddress missing in config");
65
+ const { provider, address } = await (0, client_1.getClient)(config);
66
+ if (!address)
67
+ throw new Error("No wallet configured");
68
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, provider);
69
+ const agreements = opts.as === "provider"
70
+ ? await client.getProviderAgreements(address)
71
+ : await client.getClientAgreements(address);
72
+ if (opts.json)
73
+ return console.log(JSON.stringify(agreements, (_k, value) => typeof value === "bigint" ? value.toString() : value, 2));
74
+ (0, format_1.printTable)(["ID", "COUNTERPARTY", "SERVICE", "DEADLINE", "STATUS"], agreements.map((agreement) => [
75
+ agreement.id.toString(),
76
+ (0, format_1.truncateAddress)(opts.as === "provider" ? agreement.client : agreement.provider),
77
+ agreement.serviceType,
78
+ (0, time_1.formatDeadline)(Number(agreement.deadline)),
79
+ (0, format_1.agreementStatusLabel)(agreement.status),
80
+ ]));
81
+ });
82
+ // ── arc402 agreement <id> ────────────────────────────────────────────────────
83
+ program
84
+ .command("agreement <id>")
85
+ .description("Show agreement detail, including remediation/dispute fields")
86
+ .option("--json")
87
+ .action(async (id, opts) => {
88
+ const config = (0, config_1.loadConfig)();
89
+ if (!config.serviceAgreementAddress)
90
+ throw new Error("serviceAgreementAddress missing in config");
91
+ const { provider } = await (0, client_1.getClient)(config);
92
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, provider);
93
+ const agreement = await client.getAgreement(BigInt(id));
94
+ if (opts.json)
95
+ return console.log(JSON.stringify(agreement, (_k, value) => typeof value === "bigint" ? value.toString() : value, 2));
96
+ console.log(`agreement #${agreement.id}\nclient=${agreement.client}\nprovider=${agreement.provider}\nstatus=${(0, format_1.agreementStatusLabel)(agreement.status)}\ncreated=${(0, format_1.formatDate)(Number(agreement.createdAt))}\ndeadline=${(0, format_1.formatDate)(Number(agreement.deadline))}\nverifyWindowEnd=${Number(agreement.verifyWindowEnd) ? (0, format_1.formatDate)(Number(agreement.verifyWindowEnd)) : "n/a"}\ncommittedHash=${agreement.committedHash}`);
97
+ if ([sdk_1.AgreementStatus.REVISION_REQUESTED, sdk_1.AgreementStatus.REVISED, sdk_1.AgreementStatus.PARTIAL_SETTLEMENT, sdk_1.AgreementStatus.ESCALATED_TO_HUMAN, sdk_1.AgreementStatus.DISPUTED, sdk_1.AgreementStatus.ESCALATED_TO_ARBITRATION].includes(agreement.status)) {
98
+ const remediation = await client.getRemediationCase(agreement.id);
99
+ const dispute = await client.getDisputeCase(agreement.id);
100
+ console.log(`remediationActive=${remediation.active} cycles=${remediation.cycleCount} disputeOutcome=${dispute.outcome}`);
101
+ }
102
+ });
103
+ // ── arc402 agreements-sub-register ──────────────────────────────────────────
104
+ // Spec 19: arc402 agreements sub-register --parent <id> --child <id>
105
+ program
106
+ .command("agreements-sub-register")
107
+ .description("Link a child agreement to its parent in the AgreementTree (Spec 19)")
108
+ .requiredOption("--parent <id>", "Parent agreement ID")
109
+ .requiredOption("--child <id>", "Child agreement ID to register under the parent")
110
+ .option("--json", "Machine-parseable output")
111
+ .action(async (opts) => {
112
+ const config = (0, config_1.loadConfig)();
113
+ if (!config.agreementTreeAddress)
114
+ throw new Error("agreementTreeAddress missing in config");
115
+ const { signer } = await (0, client_1.getClient)(config);
116
+ if (!signer) {
117
+ console.error("No private key configured.");
118
+ process.exit(1);
119
+ }
120
+ const tree = new ethers_1.ethers.Contract(config.agreementTreeAddress, AGREEMENT_TREE_ABI, signer);
121
+ const tx = await tree.registerSubAgreement(BigInt(opts.parent), BigInt(opts.child));
122
+ const receipt = await tx.wait();
123
+ if (opts.json) {
124
+ console.log(JSON.stringify({ txHash: receipt.hash, parentId: opts.parent, childId: opts.child }));
125
+ }
126
+ else {
127
+ console.log(`Sub-agreement registered.`);
128
+ console.log(` Parent: ${opts.parent} Child: ${opts.child}`);
129
+ console.log(` tx: ${receipt.hash}`);
130
+ }
131
+ });
132
+ // ── arc402 agreements-tree <id> ──────────────────────────────────────────────
133
+ // Spec 19: arc402 agreements tree <agreementId>
134
+ program
135
+ .command("agreements-tree <agreementId>")
136
+ .description("View full agreement tree for an agreement (Spec 19)")
137
+ .option("--json", "Machine-parseable output")
138
+ .action(async (agreementId, opts) => {
139
+ const config = (0, config_1.loadConfig)();
140
+ if (!config.agreementTreeAddress)
141
+ throw new Error("agreementTreeAddress missing in config");
142
+ const { provider } = await (0, client_1.getClient)(config);
143
+ const tree = new ethers_1.ethers.Contract(config.agreementTreeAddress, AGREEMENT_TREE_ABI, provider);
144
+ const id = BigInt(agreementId);
145
+ const [root, path, children, depth] = await Promise.all([
146
+ tree.getRoot(id),
147
+ tree.getPath(id),
148
+ tree.getChildren(id),
149
+ tree.getDepth(id),
150
+ ]);
151
+ const result = {
152
+ agreementId: agreementId,
153
+ root: root.toString(),
154
+ path: path.map(String),
155
+ children: children.map(String),
156
+ depth: Number(depth),
157
+ };
158
+ if (opts.json) {
159
+ console.log(JSON.stringify(result));
160
+ return;
161
+ }
162
+ console.log(`Agreement Tree — node #${agreementId}`);
163
+ console.log(` Root: #${result.root}`);
164
+ console.log(` Depth: ${result.depth}`);
165
+ console.log(` Path: ${result.path.map((p) => "#" + p).join(" → ")}`);
166
+ console.log(` Children: ${result.children.length > 0 ? result.children.map((c) => "#" + c).join(", ") : "(none)"}`);
167
+ });
168
+ // ── arc402 agreements-tree-status <id> ───────────────────────────────────────
169
+ // Spec 19: arc402 agreements tree-status <agreementId>
170
+ program
171
+ .command("agreements-tree-status <agreementId>")
172
+ .description("Check whether all sub-agreements are settled before delivering (Spec 19)")
173
+ .option("--json", "Machine-parseable output")
174
+ .action(async (agreementId, opts) => {
175
+ const config = (0, config_1.loadConfig)();
176
+ if (!config.agreementTreeAddress)
177
+ throw new Error("agreementTreeAddress missing in config");
178
+ const { provider } = await (0, client_1.getClient)(config);
179
+ const tree = new ethers_1.ethers.Contract(config.agreementTreeAddress, AGREEMENT_TREE_ABI, provider);
180
+ const id = BigInt(agreementId);
181
+ const [allSettled, children] = await Promise.all([
182
+ tree.allChildrenSettled(id),
183
+ tree.getChildren(id),
184
+ ]);
185
+ const result = {
186
+ agreementId: agreementId,
187
+ childCount: children.length,
188
+ allChildrenSettled: Boolean(allSettled),
189
+ readyToDeliver: Boolean(allSettled),
190
+ };
191
+ if (opts.json) {
192
+ console.log(JSON.stringify(result));
193
+ return;
194
+ }
195
+ console.log(`Agreement #${agreementId} tree status:`);
196
+ console.log(` Sub-agreements: ${result.childCount}`);
197
+ console.log(` All settled: ${result.allChildrenSettled ? "YES" : "NO"}`);
198
+ console.log(` Ready to deliver to parent: ${result.readyToDeliver ? "YES" : "NO"}`);
199
+ });
200
+ // ── arc402 agreements-create-tree ────────────────────────────────────────────
201
+ // Spec 19: interactive multi-party agreement setup
202
+ // Usage: arc402 agreements-create-tree \
203
+ // --provider <addr> --task <desc> --service-type <type> --price <wei> --deadline <s> \
204
+ // --sub <addr>,<task>,<type>,<wei>,<deadline> [--sub ...]
205
+ program
206
+ .command("agreements-create-tree")
207
+ .description("Create a multi-party agreement tree: one root agreement plus sub-agreements (Spec 19)")
208
+ .requiredOption("--provider <address>", "Root provider (Agent B)")
209
+ .requiredOption("--task <description>", "Root task description")
210
+ .requiredOption("--service-type <type>", "Root service type")
211
+ .requiredOption("--price <wei>", "Root price in wei")
212
+ .requiredOption("--deadline <seconds>", "Root deadline offset in seconds from now")
213
+ .option("--sub <spec>", "Sub-agreement in format <provider>,<task>,<serviceType>,<priceWei>,<deadlineSeconds>. Repeatable.", (val, acc) => { acc.push(val); return acc; }, [])
214
+ .option("--interactive", "Prompt interactively for sub-agreements")
215
+ .option("--json", "Machine-parseable output")
216
+ .action(async (opts) => {
217
+ const config = (0, config_1.loadConfig)();
218
+ if (!config.serviceAgreementAddress)
219
+ throw new Error("serviceAgreementAddress missing in config");
220
+ if (!config.agreementTreeAddress)
221
+ throw new Error("agreementTreeAddress missing in config");
222
+ const { signer } = await (0, client_1.getClient)(config);
223
+ if (!signer) {
224
+ console.error("No private key configured.");
225
+ process.exit(1);
226
+ }
227
+ const subSpecs = [];
228
+ // Parse --sub flags
229
+ for (const raw of opts.sub) {
230
+ const parts = raw.split(",");
231
+ if (parts.length < 5) {
232
+ console.error(`--sub format: <provider>,<task>,<serviceType>,<priceWei>,<deadlineSeconds> got: ${raw}`);
233
+ process.exit(1);
234
+ }
235
+ subSpecs.push({
236
+ provider: parts[0],
237
+ task: parts.slice(1, parts.length - 3).join(",") || parts[1],
238
+ serviceType: parts[parts.length - 3],
239
+ price: BigInt(parts[parts.length - 2]),
240
+ deadline: Number(parts[parts.length - 1]),
241
+ });
242
+ }
243
+ // Interactive mode: prompt for sub-agreements if no --sub flags provided
244
+ if (opts.interactive || subSpecs.length === 0) {
245
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
246
+ const ask = (q) => new Promise((res) => rl.question(q, res));
247
+ console.log("\nMulti-party agreement setup — add sub-agreements (leave provider blank to finish)");
248
+ while (true) {
249
+ const provider = await ask(" Sub-provider address (blank to finish): ");
250
+ if (!provider.trim())
251
+ break;
252
+ const task = await ask(" Task description: ");
253
+ const serviceType = await ask(" Service type: ");
254
+ const priceRaw = await ask(" Price (wei): ");
255
+ const deadlineRaw = await ask(" Deadline offset (seconds): ");
256
+ subSpecs.push({
257
+ provider: provider.trim(),
258
+ task: task.trim(),
259
+ serviceType: serviceType.trim(),
260
+ price: BigInt(priceRaw.trim()),
261
+ deadline: Number(deadlineRaw.trim()),
262
+ });
263
+ }
264
+ rl.close();
265
+ }
266
+ const saContract = new ethers_1.ethers.Contract(config.serviceAgreementAddress, [
267
+ "function propose(address provider, string serviceType, string description, uint256 price, address token, uint256 deadline, bytes32 deliverablesHash) external payable returns (uint256)",
268
+ "event AgreementProposed(uint256 indexed id, address indexed client, address indexed provider, string serviceType, uint256 price, address token, uint256 deadline)",
269
+ ], signer);
270
+ const treeContract = new ethers_1.ethers.Contract(config.agreementTreeAddress, AGREEMENT_TREE_ABI, signer);
271
+ const rootPrice = BigInt(opts.price);
272
+ const rootDeadline = Number(opts.deadline);
273
+ const rootHash = (0, hash_1.hashString)(opts.task);
274
+ if (!opts.json)
275
+ console.log(`\nProposing root agreement to ${opts.provider}...`);
276
+ const rootTx = await saContract.propose(opts.provider, opts.serviceType, opts.task, rootPrice, ethers_1.ethers.ZeroAddress, rootDeadline, rootHash, { value: rootPrice });
277
+ const rootReceipt = await rootTx.wait();
278
+ const iface = new ethers_1.ethers.Interface([
279
+ "event AgreementProposed(uint256 indexed id, address indexed client, address indexed provider, string serviceType, uint256 price, address token, uint256 deadline)",
280
+ ]);
281
+ let rootAgreementId;
282
+ for (const log of rootReceipt.logs) {
283
+ try {
284
+ const parsed = iface.parseLog(log);
285
+ if (parsed?.name === "AgreementProposed") {
286
+ rootAgreementId = BigInt(parsed.args.id);
287
+ break;
288
+ }
289
+ }
290
+ catch { /* skip */ }
291
+ }
292
+ if (rootAgreementId === undefined)
293
+ throw new Error("Could not parse root AgreementProposed event");
294
+ if (!opts.json)
295
+ console.log(` Root agreement ID: ${rootAgreementId}`);
296
+ const childAgreementIds = [];
297
+ for (const sub of subSpecs) {
298
+ if (!opts.json)
299
+ console.log(` Proposing sub-agreement to ${sub.provider}...`);
300
+ const subHash = (0, hash_1.hashString)(sub.task);
301
+ const subTx = await saContract.propose(sub.provider, sub.serviceType, sub.task, sub.price, ethers_1.ethers.ZeroAddress, sub.deadline, subHash, { value: sub.price });
302
+ const subReceipt = await subTx.wait();
303
+ let childId;
304
+ for (const log of subReceipt.logs) {
305
+ try {
306
+ const parsed = iface.parseLog(log);
307
+ if (parsed?.name === "AgreementProposed") {
308
+ childId = BigInt(parsed.args.id);
309
+ break;
310
+ }
311
+ }
312
+ catch { /* skip */ }
313
+ }
314
+ if (childId === undefined)
315
+ throw new Error(`Could not parse AgreementProposed for sub-agreement to ${sub.provider}`);
316
+ if (!opts.json)
317
+ console.log(` Sub-agreement ID: ${childId} — registering in tree...`);
318
+ await (await treeContract.registerSubAgreement(rootAgreementId, childId)).wait();
319
+ childAgreementIds.push(childId);
320
+ }
321
+ const result = {
322
+ rootAgreementId: rootAgreementId.toString(),
323
+ childAgreementIds: childAgreementIds.map(String),
324
+ txHash: rootReceipt.hash,
325
+ };
326
+ if (opts.json) {
327
+ console.log(JSON.stringify(result, null, 2));
328
+ }
329
+ else {
330
+ console.log(`\nAgreement tree created.`);
331
+ console.log(` Root: #${result.rootAgreementId}`);
332
+ if (result.childAgreementIds.length > 0) {
333
+ console.log(` Children: ${result.childAgreementIds.map((id) => "#" + id).join(", ")}`);
334
+ }
335
+ else {
336
+ console.log(` Children: (none — sub-agreements can be added with agreements-sub-register)`);
337
+ }
338
+ }
339
+ });
340
+ // ── arc402 agreements-tree <id> (alias) already exists above ─────────────────
341
+ // The spec also refers to this as "arc402 agreements tree <id>" — the flat
342
+ // command agreements-tree <agreementId> above fulfils that requirement.
343
+ }
344
+ //# sourceMappingURL=agreements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agreements.js","sourceRoot":"","sources":["../../src/commands/agreements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerArbitratorCommand(program: Command): void;
3
+ //# sourceMappingURL=arbitrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrator.d.ts","sourceRoot":"","sources":["../../src/commands/arbitrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2HhE"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.registerArbitratorCommand = registerArbitratorCommand;
37
+ const sdk_1 = require("@arc402/sdk");
38
+ const config_1 = require("../config");
39
+ const client_1 = require("../client");
40
+ function registerArbitratorCommand(program) {
41
+ const arbitrator = program
42
+ .command("arbitrator")
43
+ .description("Arbitrator panel operations: bonds, eligibility, status");
44
+ // Bond subcommands — nest under 'bond' to avoid duplicate registration
45
+ const bond = arbitrator
46
+ .command("bond")
47
+ .description("Arbitrator bond operations: status, accept, fallback");
48
+ bond
49
+ .command("status <arbitratorAddress> [agreementId]")
50
+ .description("Check arbitrator bond status for an agreement (or general eligibility)")
51
+ .action(async (arbitratorAddress, agreementId, _opts) => {
52
+ const config = (0, config_1.loadConfig)();
53
+ if (!config.disputeArbitrationAddress)
54
+ throw new Error("disputeArbitrationAddress missing in config");
55
+ const { provider } = await (0, client_1.getClient)(config);
56
+ const client = new sdk_1.DisputeArbitrationClient(config.disputeArbitrationAddress, provider);
57
+ const eligible = await client.isEligibleArbitrator(arbitratorAddress);
58
+ console.log(`Arbitrator ${arbitratorAddress} eligible: ${eligible}`);
59
+ if (agreementId) {
60
+ const bondState = await client.getArbitratorBondState(arbitratorAddress, BigInt(agreementId));
61
+ console.log(`Bond state for agreement ${agreementId}:`);
62
+ console.log(` Amount: ${bondState.bondAmount.toString()} tokens`);
63
+ console.log(` Locked: ${bondState.locked}`);
64
+ console.log(` Slashed: ${bondState.slashed}`);
65
+ console.log(` Returned: ${bondState.returned}`);
66
+ console.log(` Locked at: ${new Date(Number(bondState.lockedAt) * 1000).toISOString()}`);
67
+ }
68
+ });
69
+ bond
70
+ .command("accept <agreementId>")
71
+ .description("Accept panel assignment and post bond")
72
+ .option("--bond <bond>", "Bond amount in wei (for ETH agreements)", "0")
73
+ .action(async (agreementId, opts) => {
74
+ const config = (0, config_1.loadConfig)();
75
+ if (!config.disputeArbitrationAddress)
76
+ throw new Error("disputeArbitrationAddress missing in config");
77
+ const { signer } = await (0, client_1.requireSigner)(config);
78
+ const client = new sdk_1.DisputeArbitrationClient(config.disputeArbitrationAddress, signer);
79
+ const bondAmount = BigInt(opts.bond);
80
+ if (bondAmount === 0n) {
81
+ console.warn("Warning: bond amount is 0. For ERC-20 agreements, pre-approve the DisputeArbitration contract.");
82
+ }
83
+ await client.acceptAssignment(BigInt(agreementId), bondAmount);
84
+ console.log(`accepted assignment for agreement ${agreementId}`);
85
+ });
86
+ bond
87
+ .command("fallback <agreementId>")
88
+ .description("Trigger fallback to human backstop (mutual unfunded or panel incomplete)")
89
+ .action(async (agreementId, _opts) => {
90
+ const config = (0, config_1.loadConfig)();
91
+ if (!config.disputeArbitrationAddress)
92
+ throw new Error("disputeArbitrationAddress missing in config");
93
+ const { signer } = await (0, client_1.requireSigner)(config);
94
+ const client = new sdk_1.DisputeArbitrationClient(config.disputeArbitrationAddress, signer);
95
+ await client.triggerFallback(BigInt(agreementId));
96
+ console.log(`fallback triggered for ${agreementId}`);
97
+ });
98
+ // Rate subcommands — nest under 'rate'
99
+ const rate = arbitrator
100
+ .command("rate")
101
+ .description("Token USD rate management (owner only)");
102
+ rate
103
+ .command("set <tokenAddress> <usdPerToken>")
104
+ .description("Set USD rate for a token. Rate in USD with 18 decimals. e.g. 2000e18 for $2000")
105
+ .action(async (tokenAddress, usdPerToken, _opts) => {
106
+ const config = (0, config_1.loadConfig)();
107
+ if (!config.disputeArbitrationAddress)
108
+ throw new Error("disputeArbitrationAddress missing in config");
109
+ const { signer } = await (0, client_1.requireSigner)(config);
110
+ const client = new sdk_1.DisputeArbitrationClient(config.disputeArbitrationAddress, signer);
111
+ const rateVal = BigInt(usdPerToken);
112
+ await client.setTokenUsdRate(tokenAddress, rateVal);
113
+ console.log(`token rate set: ${tokenAddress} = ${rateVal.toString()} USD/token`);
114
+ });
115
+ // Admin: slash arbitrator (manual rules violation)
116
+ arbitrator
117
+ .command("slash <agreementId> <arbitratorAddress> <reason>")
118
+ .description("Owner only: manually slash an arbitrator for rules violation")
119
+ .action(async (agreementId, arbitratorAddress, reason, _opts) => {
120
+ const config = (0, config_1.loadConfig)();
121
+ if (!config.disputeArbitrationAddress)
122
+ throw new Error("disputeArbitrationAddress missing in config");
123
+ const { signer } = await (0, client_1.requireSigner)(config);
124
+ const client = new sdk_1.DisputeArbitrationClient(config.disputeArbitrationAddress, signer);
125
+ await client.slashArbitrator(BigInt(agreementId), arbitratorAddress, reason);
126
+ console.log(`slashed arbitrator ${arbitratorAddress} for ${reason}`);
127
+ });
128
+ arbitrator
129
+ .command("reclaim-bond <agreementId>")
130
+ .description("Reclaim an arbitrator bond after 45 days if dispute was never resolved via resolveDisputeFee")
131
+ .action(async (agreementId, _opts) => {
132
+ const config = (0, config_1.loadConfig)();
133
+ if (!config.disputeArbitrationAddress)
134
+ throw new Error("disputeArbitrationAddress missing in config");
135
+ const { signer } = await (0, client_1.requireSigner)(config);
136
+ const client = new sdk_1.DisputeArbitrationClient(config.disputeArbitrationAddress, signer);
137
+ await client.reclaimExpiredBond(BigInt(agreementId));
138
+ console.log(`bond reclaimed for agreement ${agreementId}`);
139
+ });
140
+ arbitrator
141
+ .command("resolve-from <agreementId>")
142
+ .description("Resolve a dispute from arbitration with split amounts (calls ServiceAgreement.resolveFromArbitration)")
143
+ .requiredOption("--recipient <address>", "Winning recipient address")
144
+ .requiredOption("--provider-amount <amount>", "Provider payout in wei/tokens")
145
+ .requiredOption("--client-amount <amount>", "Client refund in wei/tokens")
146
+ .action(async (agreementId, opts) => {
147
+ const { ServiceAgreementClient } = await Promise.resolve().then(() => __importStar(require("@arc402/sdk")));
148
+ const config = (0, config_1.loadConfig)();
149
+ if (!config.serviceAgreementAddress)
150
+ throw new Error("serviceAgreementAddress missing in config");
151
+ const { signer } = await (0, client_1.requireSigner)(config);
152
+ const client = new ServiceAgreementClient(config.serviceAgreementAddress, signer);
153
+ await client.resolveFromArbitration(BigInt(agreementId), opts.recipient, BigInt(opts.providerAmount), BigInt(opts.clientAmount));
154
+ console.log(`resolved from arbitration: agreement ${agreementId}, recipient ${opts.recipient}`);
155
+ });
156
+ }
157
+ //# sourceMappingURL=arbitrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrator.js","sourceRoot":"","sources":["../../src/commands/arbitrator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,8DA2HC;AA/HD,qCAAuD;AACvD,sCAAuC;AACvC,sCAAqD;AAErD,SAAgB,yBAAyB,CAAC,OAAgB;IACxD,MAAM,UAAU,GAAG,OAAO;SACvB,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAE1E,uEAAuE;IACvE,MAAM,IAAI,GAAG,UAAU;SACpB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sDAAsD,CAAC,CAAC;IAEvE,IAAI;SACD,OAAO,CAAC,0CAA0C,CAAC;SACnD,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,yBAAyB;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACtG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,8BAAwB,CAAC,MAAM,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;QAExF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,cAAc,iBAAiB,cAAc,QAAQ,EAAE,CAAC,CAAC;QAErE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9F,OAAO,CAAC,GAAG,CAAC,4BAA4B,WAAW,GAAG,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,eAAe,EAAE,yCAAyC,EAAE,GAAG,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,yBAAyB;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACtG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,8BAAwB,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QAEtF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;QACjH,CAAC;QAED,MAAM,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,wBAAwB,CAAC;SACjC,WAAW,CAAC,0EAA0E,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,yBAAyB;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACtG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,8BAAwB,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QACtF,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEL,uCAAuC;IACvC,MAAM,IAAI,GAAG,UAAU;SACpB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wCAAwC,CAAC,CAAC;IAEzD,IAAI;SACD,OAAO,CAAC,kCAAkC,CAAC;SAC3C,WAAW,CAAC,gFAAgF,CAAC;SAC7F,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,yBAAyB;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACtG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,8BAAwB,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QAEtF,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,YAAY,MAAM,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEL,mDAAmD;IACnD,UAAU;SACP,OAAO,CAAC,kDAAkD,CAAC;SAC3D,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,yBAAyB;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACtG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,8BAAwB,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QACtF,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,sBAAsB,iBAAiB,QAAQ,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,8FAA8F,CAAC;SAC3G,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,yBAAyB;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACtG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,8BAAwB,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QACtF,MAAM,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,uGAAuG,CAAC;SACpH,cAAc,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;SACpE,cAAc,CAAC,4BAA4B,EAAE,+BAA+B,CAAC;SAC7E,cAAc,CAAC,0BAA0B,EAAE,6BAA6B,CAAC;SACzE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;QAClC,MAAM,EAAE,sBAAsB,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,uBAAuB;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAClG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;QAClF,MAAM,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACjI,OAAO,CAAC,GAAG,CAAC,wCAAwC,WAAW,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerArenaHandshakeCommands(program: Command): void;
3
+ //# sourceMappingURL=arena-handshake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arena-handshake.d.ts","sourceRoot":"","sources":["../../src/commands/arena-handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiEpC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuJrE"}