@payload-exchange/solver-agent 0.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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { SolverClient } from "@payload-exchange/solver-sdk";
4
+ import { privateKeyToAccount, generatePrivateKey } from "viem/accounts";
5
+ const program = new Command()
6
+ .name("px-solver")
7
+ .description("Register as a solver on the payload.exchange coordinator")
8
+ .option("--coordinator <url>", "Coordinator URL", process.env.COORDINATOR_URL ?? "https://px-test.fly.dev")
9
+ .option("--key <hex>", "Tempo private key (hex)", process.env.TEMPO_PRIVATE_KEY)
10
+ .option("--tasks <classes>", "Comma-separated task classes", "price_feed")
11
+ .option("--price <n>", "Fee per task in USDC", "0.075")
12
+ .option("--stake <n>", "Stake amount", "10")
13
+ .parse();
14
+ const opts = program.opts();
15
+ const coordinatorUrl = opts.coordinator;
16
+ const privateKey = (opts.key ?? generatePrivateKey());
17
+ const account = privateKeyToAccount(privateKey);
18
+ const solverAddress = account.address;
19
+ const hasKey = !!opts.key;
20
+ const taskClasses = opts.tasks.split(",").map((s) => s.trim());
21
+ /**
22
+ * Mock price fetcher. Returns simulated price data for any token pair.
23
+ * Replace with real API calls (CoinGecko, Binance, etc.) in production.
24
+ */
25
+ async function fetchPrices(token) {
26
+ const now = Math.floor(Date.now() / 1000);
27
+ // Simulated prices with small variance
28
+ const base = token.toUpperCase().includes("ETH") ? 3421.5 : 1.0;
29
+ const variance = () => base * (1 + (Math.random() - 0.5) * 0.002);
30
+ const sources = [
31
+ { name: "binance", price: Number(variance().toFixed(2)), timestamp: now - 2 },
32
+ { name: "coinbase", price: Number(variance().toFixed(2)), timestamp: now - 5 },
33
+ { name: "kraken", price: Number(variance().toFixed(2)), timestamp: now - 3 },
34
+ ];
35
+ const twap = Number((sources.reduce((sum, s) => sum + s.price, 0) / sources.length).toFixed(2));
36
+ return { twap, sources };
37
+ }
38
+ async function main() {
39
+ const client = new SolverClient(coordinatorUrl);
40
+ // 1. Register as a solver
41
+ console.log(`[solver] Coordinator: ${coordinatorUrl}`);
42
+ console.log(`[solver] Wallet: ${solverAddress}`);
43
+ if (!hasKey) {
44
+ console.log("[solver] No --key set — generated ephemeral wallet");
45
+ }
46
+ console.log(`[solver] Registering for tasks: ${taskClasses.join(", ")}...`);
47
+ let registration;
48
+ try {
49
+ registration = await client.register({
50
+ seller: solverAddress,
51
+ supportedTaskClasses: taskClasses,
52
+ pricingModel: "fixed",
53
+ price: Number.parseFloat(opts.price),
54
+ stake: Number.parseFloat(opts.stake),
55
+ executionTerms: {
56
+ maxLatency: "5s",
57
+ minSources: 3,
58
+ },
59
+ });
60
+ }
61
+ catch (err) {
62
+ console.error("[solver] Failed to register:", err.message);
63
+ console.error("[solver] Is the coordinator running at", coordinatorUrl, "?");
64
+ process.exit(1);
65
+ }
66
+ console.log(`[solver] Registered: ${registration.id} (stake: $${opts.stake})`);
67
+ // 2. Connect to WebSocket for match notifications
68
+ console.log("[solver] Watching for intents...");
69
+ let connection;
70
+ try {
71
+ connection = client.connect({ taskClasses });
72
+ }
73
+ catch (err) {
74
+ console.error("[solver] WebSocket connection failed:", err.message);
75
+ process.exit(1);
76
+ }
77
+ // Handle graceful shutdown
78
+ process.on("SIGINT", () => {
79
+ console.log("\n[solver] Shutting down...");
80
+ connection.close();
81
+ process.exit(0);
82
+ });
83
+ process.on("SIGTERM", () => {
84
+ console.log("\n[solver] Shutting down...");
85
+ connection.close();
86
+ process.exit(0);
87
+ });
88
+ for await (const event of connection.events) {
89
+ console.log(`[solver] Event: ${event.event}`);
90
+ if (event.event === "subscribed") {
91
+ console.log(`[solver] Subscribed to ${taskClasses.join(", ")} intents`);
92
+ continue;
93
+ }
94
+ // Handle new_intent — this means the coordinator broadcast an intent we should look at
95
+ if (event.event === "new_intent") {
96
+ const data = event.data;
97
+ console.log(`[solver] New intent received! Order: ${data.orderId}`);
98
+ console.log(`[solver] Intent: ${data.intent}`);
99
+ console.log(`[solver] Max fee: $${data.maxPrice}`);
100
+ // Wait briefly for the matching engine to process
101
+ await new Promise((resolve) => setTimeout(resolve, 2_000));
102
+ continue;
103
+ }
104
+ // Handle match — this means we've been assigned to an order
105
+ if (event.event === "order_matched") {
106
+ const data = event.data;
107
+ // Only act on matches assigned to us
108
+ if (data.seller !== solverAddress)
109
+ continue;
110
+ console.log(`[solver] Match received! Order: ${data.orderId}`);
111
+ console.log(`[solver] Intent: ${data.intent}`);
112
+ console.log(`[solver] Agreed price: $${data.agreedPrice}`);
113
+ // Fetch price data
114
+ console.log("[solver] Fetching prices...");
115
+ const priceData = await fetchPrices(data.intent);
116
+ console.log(`[solver] TWAP: $${priceData.twap} from ${priceData.sources.length} sources`);
117
+ // Submit fulfillment
118
+ console.log("[solver] Submitting fulfillment...");
119
+ try {
120
+ const response = await client.submitFulfillment({
121
+ orderId: data.orderId,
122
+ sellerId: solverAddress,
123
+ result: priceData,
124
+ proof: {
125
+ source_urls: priceData.sources.map((s) => `https://api.${s.name}.com/v1/ticker`),
126
+ timestamps: priceData.sources.map((s) => s.timestamp),
127
+ methodology: "TWAP",
128
+ },
129
+ executionTime: `${Date.now() - event.timestamp}ms`,
130
+ });
131
+ if (response.attestation.success) {
132
+ const checkCount = response.attestation.checks?.length ?? 0;
133
+ const passedCount = response.attestation.checks?.filter((c) => c.passed).length ?? 0;
134
+ console.log(`[solver] Attestation: PASSED (${passedCount}/${checkCount} checks)`);
135
+ }
136
+ else {
137
+ console.log(`[solver] Attestation: FAILED - ${response.attestation.reason ?? "unknown reason"}`);
138
+ }
139
+ console.log(`[solver] Next step: ${response.nextStep}`);
140
+ console.log("[solver] Waiting for buyer payment...");
141
+ }
142
+ catch (err) {
143
+ console.error("[solver] Fulfillment failed:", err.message);
144
+ }
145
+ continue;
146
+ }
147
+ // Log settlement events
148
+ if (event.event === "settlement_complete") {
149
+ const data = event.data;
150
+ console.log(`[solver] Settlement complete for order ${data.orderId}`);
151
+ console.log(`[solver] Received: $${data.sellerReceived}`);
152
+ if (data.txHash) {
153
+ console.log(`[solver] Tx: ${data.txHash}`);
154
+ }
155
+ }
156
+ }
157
+ console.log("[solver] WebSocket connection closed.");
158
+ }
159
+ main().catch((err) => {
160
+ console.error("[solver] Fatal error:", err);
161
+ process.exit(1);
162
+ });
163
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAG3D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC3B,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAC;KAC1G,MAAM,CAAC,aAAa,EAAE,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;KAC/E,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,EAAE,YAAY,CAAC;KACzE,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,OAAO,CAAC;KACtD,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC;KAC3C,KAAK,EAAE,CAAA;AAET,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;AAE3B,MAAM,cAAc,GAAW,IAAI,CAAC,WAAW,CAAA;AAC/C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,kBAAkB,EAAE,CAAkB,CAAA;AACtE,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;AAC/C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAA;AACrC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;AACzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAgB,CAAA;AAErF;;;GAGG;AACH,KAAK,UAAU,WAAW,CACzB,KAAa;IAEb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IAEzC,uCAAuC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;IAC/D,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IAEjE,MAAM,OAAO,GAAG;QACf,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE;QAC7E,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE;QAC9E,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE;KAC5E,CAAA;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAE/F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,IAAI;IAClB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAA;IAE/C,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAA;IACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,mCAAmC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE3E,IAAI,YAA4C,CAAA;IAChD,IAAI,CAAC;QACJ,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACpC,MAAM,EAAE,aAAa;YACrB,oBAAoB,EAAE,WAAW;YACjC,YAAY,EAAE,OAAO;YACrB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YACpC,cAAc,EAAE;gBACf,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,CAAC;aACb;SACD,CAAC,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QACrE,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,YAAY,CAAC,EAAE,aAAa,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAE9E,kDAAkD;IAClD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;IAE/C,IAAI,UAA6C,CAAA;IACjD,IAAI,CAAC;QACJ,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;QAC1C,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;QAC1C,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAE7C,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACvE,SAAQ;QACT,CAAC;QAED,uFAAuF;QACvF,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAMlB,CAAA;YAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;YACnE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAChD,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YAEpD,kDAAkD;YAClD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;YAC1D,SAAQ;QACT,CAAC;QAED,4DAA4D;QAC5D,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAOlB,CAAA;YAED,qCAAqC;YACrC,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;gBAAE,SAAQ;YAE3C,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;YAC9D,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAChD,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAE5D,mBAAmB;YACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;YAC1C,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAChD,OAAO,CAAC,GAAG,CAAC,mBAAmB,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAA;YAEzF,qBAAqB;YACrB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;YACjD,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;oBAC/C,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,QAAQ,EAAE,aAAa;oBACvB,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE;wBACN,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,IAAI,gBAAgB,CAAC;wBAChF,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;wBACrD,WAAW,EAAE,MAAM;qBACnB;oBACD,aAAa,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI;iBAClD,CAAC,CAAA;gBAEF,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAA;oBAC3D,MAAM,WAAW,GAChB,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,CAAA;oBACjE,OAAO,CAAC,GAAG,CACV,iCAAiC,WAAW,IAAI,UAAU,UAAU,CACpE,CAAA;gBACF,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,GAAG,CACV,kCAAkC,QAAQ,CAAC,WAAW,CAAC,MAAM,IAAI,gBAAgB,EAAE,CACnF,CAAA;gBACF,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACvD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;YACrD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;YACtE,CAAC;YAED,SAAQ;QACT,CAAC;QAED,wBAAwB;QACxB,IAAI,KAAK,CAAC,KAAK,KAAK,qBAAqB,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAKlB,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;YACrE,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;YAC3D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAC7C,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA"}
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@payload-exchange/solver-agent",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "bin": {
6
+ "px-solver": "./dist/index.js"
7
+ },
8
+ "main": "./dist/index.js",
9
+ "files": ["dist"],
10
+ "scripts": {
11
+ "start": "bun run src/index.ts",
12
+ "build": "tsc -p tsconfig.build.json",
13
+ "typecheck": "tsc --noEmit",
14
+ "clean": "rm -rf dist"
15
+ },
16
+ "dependencies": {
17
+ "@payload-exchange/solver-sdk": "workspace:*",
18
+ "@payload-exchange/protocol": "workspace:*",
19
+ "commander": "^13.0.0",
20
+ "viem": "^2.0.0"
21
+ },
22
+ "devDependencies": {
23
+ "@payload-exchange/tsconfig": "workspace:*",
24
+ "@types/bun": "^1.3.11",
25
+ "typescript": "^5.7.0"
26
+ }
27
+ }