@clawnch/clawncher-sdk 0.3.2 → 0.3.3

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 (50) hide show
  1. package/README.md +89 -0
  2. package/dist/deployer.d.ts +13 -0
  3. package/dist/deployer.d.ts.map +1 -1
  4. package/dist/deployer.js +8 -0
  5. package/dist/deployer.js.map +1 -1
  6. package/dist/errors.d.ts +2 -1
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +2 -0
  9. package/dist/errors.js.map +1 -1
  10. package/dist/herd-auth.d.ts +79 -0
  11. package/dist/herd-auth.d.ts.map +1 -0
  12. package/dist/herd-auth.js +188 -0
  13. package/dist/herd-auth.js.map +1 -0
  14. package/dist/herd-hal.d.ts +92 -0
  15. package/dist/herd-hal.d.ts.map +1 -0
  16. package/dist/herd-hal.js +337 -0
  17. package/dist/herd-hal.js.map +1 -0
  18. package/dist/herd-types.d.ts +479 -0
  19. package/dist/herd-types.d.ts.map +1 -0
  20. package/dist/herd-types.js +18 -0
  21. package/dist/herd-types.js.map +1 -0
  22. package/dist/herd.d.ts +223 -0
  23. package/dist/herd.d.ts.map +1 -0
  24. package/dist/herd.js +1486 -0
  25. package/dist/herd.js.map +1 -0
  26. package/dist/hummingbot-types.d.ts +702 -0
  27. package/dist/hummingbot-types.d.ts.map +1 -0
  28. package/dist/hummingbot-types.js +12 -0
  29. package/dist/hummingbot-types.js.map +1 -0
  30. package/dist/hummingbot.d.ts +747 -0
  31. package/dist/hummingbot.d.ts.map +1 -0
  32. package/dist/hummingbot.js +1478 -0
  33. package/dist/hummingbot.js.map +1 -0
  34. package/dist/index.d.ts +8 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +10 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/price.d.ts +16 -11
  39. package/dist/price.d.ts.map +1 -1
  40. package/dist/price.js +56 -25
  41. package/dist/price.js.map +1 -1
  42. package/dist/uniswap-quoter.d.ts +25 -4
  43. package/dist/uniswap-quoter.d.ts.map +1 -1
  44. package/dist/uniswap-quoter.js +52 -8
  45. package/dist/uniswap-quoter.js.map +1 -1
  46. package/dist/walletconnect-signer.d.ts +154 -0
  47. package/dist/walletconnect-signer.d.ts.map +1 -0
  48. package/dist/walletconnect-signer.js +307 -0
  49. package/dist/walletconnect-signer.js.map +1 -0
  50. package/package.json +1 -1
@@ -0,0 +1,337 @@
1
+ /**
2
+ * HAL Expression Builder — Programmatic construction of Herd Action Language expressions.
3
+ *
4
+ * HAL (Herd Action Language) is a JSON DSL for composing blockchain transactions
5
+ * and data reads. Instead of requiring users to hand-write the nested JSON,
6
+ * this module provides a TypeScript builder API.
7
+ *
8
+ * Use cases:
9
+ * - Pre-simulate any transaction before sending
10
+ * - Generate reusable adapters for common Clawncher operations
11
+ * - Validate parameter types at compile time
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const hal = new HalBuilder();
16
+ *
17
+ * // Build an ERC-20 transfer adapter
18
+ * const expr = hal.buildTransferAdapter({
19
+ * token: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
20
+ * blockchain: 'base',
21
+ * decimals: 6,
22
+ * });
23
+ *
24
+ * // Simulate it via Herd
25
+ * const result = await herd.simulateAction(expr, {
26
+ * to: '0xRecipient...',
27
+ * amount: '100',
28
+ * });
29
+ * ```
30
+ */
31
+ // =========================================================================
32
+ // Function Signatures (4-byte selectors)
33
+ // =========================================================================
34
+ const SELECTORS = {
35
+ transfer: '0xa9059cbb', // transfer(address,uint256)
36
+ approve: '0x095ea7b3', // approve(address,uint256)
37
+ balanceOf: '0x70a08231', // balanceOf(address)
38
+ allowance: '0xdd62ed3e', // allowance(address,address)
39
+ totalSupply: '0x18160ddd', // totalSupply()
40
+ };
41
+ // =========================================================================
42
+ // HAL Expression Helpers (build individual nodes)
43
+ // =========================================================================
44
+ /**
45
+ * Create a ["do", ...] block — the top-level wrapper.
46
+ */
47
+ function doBlock(...exprs) {
48
+ return ['do', ...exprs];
49
+ }
50
+ /**
51
+ * Create an ["import", module, [functions]] node.
52
+ */
53
+ function importStdlib(module, functions) {
54
+ return ['import', module, functions];
55
+ }
56
+ /**
57
+ * Create a ["define", { name, parameters, body, meta? }] node.
58
+ */
59
+ function define(name, parameters, body, meta) {
60
+ const def = { name, parameters, body };
61
+ if (meta)
62
+ def.meta = meta;
63
+ return ['define', def];
64
+ }
65
+ /**
66
+ * Create an ["export", ...] wrapper.
67
+ */
68
+ function exportExpr(expr) {
69
+ return ['export', expr];
70
+ }
71
+ /**
72
+ * Create a ["coerce", { type, value }] node.
73
+ */
74
+ function coerce(type, value) {
75
+ return ['coerce', { type, value }];
76
+ }
77
+ /**
78
+ * Create an ["encode-calldata", { ... }] node.
79
+ */
80
+ function encodeCalldata(params) {
81
+ return [
82
+ 'encode-calldata',
83
+ {
84
+ blockchain: params.blockchain,
85
+ contractAddress: params.contractAddress,
86
+ functionSignature: params.functionSignature,
87
+ args: params.args,
88
+ inputAbi: ['quote', params.inputAbi],
89
+ functionName: params.functionName,
90
+ },
91
+ ];
92
+ }
93
+ /**
94
+ * Create a ["decimals", { value, decimals }] node.
95
+ */
96
+ function decimalsExpr(value, decimals) {
97
+ return ['decimals', { value, decimals }];
98
+ }
99
+ /**
100
+ * Create a ["write-function", <data>] node for use in batch steps.
101
+ */
102
+ function writeFunction(data) {
103
+ return ['write-function', data];
104
+ }
105
+ /**
106
+ * Create a ["read-function", { calldata, outputAbi }] node.
107
+ */
108
+ function readFunction(calldata, outputAbi) {
109
+ return [
110
+ 'read-function',
111
+ {
112
+ calldata,
113
+ outputAbi: ['quote', outputAbi],
114
+ },
115
+ ];
116
+ }
117
+ /**
118
+ * Create a batch call data return value (for write adapters).
119
+ */
120
+ function batchCallData(payable, payableAmount, encodedCalldata) {
121
+ return [
122
+ 'coerce',
123
+ {
124
+ type: {
125
+ payable: 'bool',
126
+ payableAmount: 'uint256',
127
+ encodedCalldata: {
128
+ blockchain: 'string',
129
+ contractAddress: 'address',
130
+ functionSignature: 'bytes4',
131
+ calldata: 'bytes',
132
+ },
133
+ },
134
+ value: {
135
+ payable,
136
+ payableAmount,
137
+ encodedCalldata,
138
+ },
139
+ },
140
+ ];
141
+ }
142
+ export class HalBuilder {
143
+ /**
144
+ * Build a HAL adapter expression for an ERC-20 transfer.
145
+ *
146
+ * Parameters exposed to the user: `to` (address), `amount` (human-readable).
147
+ * The adapter handles decimal conversion and calldata encoding.
148
+ */
149
+ buildTransferAdapter(options) {
150
+ const decimals = options.decimals ?? 18;
151
+ return doBlock(importStdlib('herd', ['encode-calldata', 'decimals']), exportExpr(define('transfer', [
152
+ { name: 'to', type: 'address', meta: { description: 'Recipient address' } },
153
+ { name: 'amount', type: 'uint256', meta: { description: 'Amount (human-readable)', decimals } },
154
+ ], batchCallData(false, '0', encodeCalldata({
155
+ blockchain: options.blockchain,
156
+ contractAddress: options.token,
157
+ functionSignature: SELECTORS.transfer,
158
+ args: {
159
+ recipient: 'to',
160
+ value: coerce('uint256', decimalsExpr('amount', decimals)),
161
+ },
162
+ inputAbi: [
163
+ { name: 'recipient', type: 'address' },
164
+ { name: 'value', type: 'uint256' },
165
+ ],
166
+ functionName: 'transfer',
167
+ })), {
168
+ description: `Transfer ${options.tokenName || 'tokens'}`,
169
+ originContract: {
170
+ address: options.token,
171
+ blockchain: options.blockchain,
172
+ contractName: options.tokenName || 'ERC20',
173
+ functionName: 'transfer',
174
+ },
175
+ })));
176
+ }
177
+ /**
178
+ * Build a HAL action for a swap using 0x API.
179
+ *
180
+ * This generates an action with an optional approval step (conditional
181
+ * on whether the wallet has already approved the spender).
182
+ */
183
+ buildSwapAction(options) {
184
+ const includeApproval = options.includeApproval !== false;
185
+ const swapCall = [
186
+ 'swap',
187
+ {
188
+ blockchain: options.blockchain,
189
+ sellTokenAddress: options.sellToken,
190
+ sellTokenAmount: 'amount',
191
+ buyTokenAddress: options.buyToken,
192
+ walletAddress: ['user-wallet'],
193
+ divideDecimals: false,
194
+ },
195
+ ];
196
+ const swapStep = writeFunction([
197
+ 'getPath',
198
+ {
199
+ object: swapCall,
200
+ path: ['quote', ['swapSteps', 'swap']],
201
+ },
202
+ ]);
203
+ const steps = [];
204
+ if (includeApproval) {
205
+ // Conditional approval: only add if approvalRequired is true
206
+ steps.push([
207
+ 'if',
208
+ [
209
+ 'getPath',
210
+ {
211
+ object: swapCall,
212
+ path: ['quote', ['swapSteps', 'approval', 'approvalRequired']],
213
+ },
214
+ ],
215
+ writeFunction([
216
+ 'getPath',
217
+ {
218
+ object: swapCall,
219
+ path: ['quote', ['swapSteps', 'approval']],
220
+ },
221
+ ]),
222
+ null,
223
+ ]);
224
+ }
225
+ steps.push(swapStep);
226
+ return doBlock(importStdlib('herd', ['swap', 'write-function', 'user-wallet']), importStdlib('object', ['getPath']), exportExpr(define('main', [
227
+ { name: 'amount', type: 'uint256', meta: { description: 'Sell amount (human-readable)' } },
228
+ ], [
229
+ define('batch0', [], steps, { isBatch: true, batchLabel: 'Swap Tokens' }),
230
+ ])));
231
+ }
232
+ /**
233
+ * Build a HAL read adapter for checking an ERC-20 balance.
234
+ */
235
+ buildBalanceReader(options) {
236
+ return doBlock(importStdlib('herd', ['encode-calldata', 'read-function']), exportExpr(define('checkBalance', [
237
+ { name: 'account', type: 'address', meta: { description: 'Wallet to check' } },
238
+ ], coerce({ balance: 'uint256' }, readFunction(encodeCalldata({
239
+ blockchain: options.blockchain,
240
+ contractAddress: options.token,
241
+ functionSignature: SELECTORS.balanceOf,
242
+ args: { account: 'account' },
243
+ inputAbi: [{ name: 'account', type: 'address' }],
244
+ functionName: 'balanceOf',
245
+ }), [{ name: 'balance', type: 'uint256' }])), {
246
+ description: 'Check ERC-20 token balance',
247
+ originContract: {
248
+ address: options.token,
249
+ blockchain: options.blockchain,
250
+ contractName: 'ERC20',
251
+ functionName: 'balanceOf',
252
+ },
253
+ })));
254
+ }
255
+ /**
256
+ * Build a HAL read adapter for checking allowance.
257
+ */
258
+ buildAllowanceReader(options) {
259
+ return doBlock(importStdlib('herd', ['encode-calldata', 'read-function']), exportExpr(define('checkAllowance', [
260
+ { name: 'owner', type: 'address' },
261
+ { name: 'spender', type: 'address' },
262
+ ], coerce({ remaining: 'uint256' }, readFunction(encodeCalldata({
263
+ blockchain: options.blockchain,
264
+ contractAddress: options.token,
265
+ functionSignature: SELECTORS.allowance,
266
+ args: { owner: 'owner', spender: 'spender' },
267
+ inputAbi: [
268
+ { name: 'owner', type: 'address' },
269
+ { name: 'spender', type: 'address' },
270
+ ],
271
+ functionName: 'allowance',
272
+ }), [{ name: 'remaining', type: 'uint256' }])), {
273
+ description: 'Check ERC-20 token allowance',
274
+ originContract: {
275
+ address: options.token,
276
+ blockchain: options.blockchain,
277
+ contractName: 'ERC20',
278
+ functionName: 'allowance',
279
+ },
280
+ })));
281
+ }
282
+ /**
283
+ * Build a HAL approve adapter.
284
+ */
285
+ buildApproveAdapter(options) {
286
+ const decimals = options.decimals ?? 18;
287
+ return doBlock(importStdlib('herd', ['encode-calldata', 'decimals']), exportExpr(define('approve', [
288
+ { name: 'spender', type: 'address', meta: { description: 'Spender address' } },
289
+ { name: 'amount', type: 'uint256', meta: { description: 'Approval amount', decimals } },
290
+ ], batchCallData(false, '0', encodeCalldata({
291
+ blockchain: options.blockchain,
292
+ contractAddress: options.token,
293
+ functionSignature: SELECTORS.approve,
294
+ args: {
295
+ spender: 'spender',
296
+ value: coerce('uint256', decimalsExpr('amount', decimals)),
297
+ },
298
+ inputAbi: [
299
+ { name: 'spender', type: 'address' },
300
+ { name: 'value', type: 'uint256' },
301
+ ],
302
+ functionName: 'approve',
303
+ })), {
304
+ description: `Approve ${options.tokenName || 'token'} spending`,
305
+ originContract: {
306
+ address: options.token,
307
+ blockchain: options.blockchain,
308
+ contractName: options.tokenName || 'ERC20',
309
+ functionName: 'approve',
310
+ },
311
+ })));
312
+ }
313
+ }
314
+ // =========================================================================
315
+ // Simulation Result Parsing
316
+ // =========================================================================
317
+ /**
318
+ * Parse a raw HAL simulation response into typed structure.
319
+ */
320
+ export function parseSimulationResult(raw) {
321
+ const data = (raw || {});
322
+ const oplog = (data.entries || data.oplog || []).map((entry) => ({
323
+ operationId: entry.operationId || '',
324
+ functionName: entry.functionName || '',
325
+ status: entry.status || 'success',
326
+ timestamp: entry.timestamp || entry.timestampIso || '',
327
+ args: entry.args,
328
+ result: entry.result,
329
+ }));
330
+ return {
331
+ success: data.executionStatus === 'completed' || data.success === true,
332
+ finalResult: data.finalResult ?? data.result ?? null,
333
+ oplog,
334
+ error: data.error || null,
335
+ };
336
+ }
337
+ //# sourceMappingURL=herd-hal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herd-hal.js","sourceRoot":"","sources":["../src/herd-hal.ts"],"names":[],"mappings":"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"}