@lifi/composer-sdk 0.0.1-alpha → 0.1.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 (71) hide show
  1. package/README.md +37 -1
  2. package/dist/authoring/handles.cjs.map +1 -1
  3. package/dist/authoring/handles.d.cts +13 -6
  4. package/dist/authoring/handles.d.ts +13 -6
  5. package/dist/authoring/handles.js.map +1 -1
  6. package/dist/authoring/signatureArgs.cjs +2 -2
  7. package/dist/authoring/signatureArgs.cjs.map +1 -1
  8. package/dist/authoring/signatureArgs.js +2 -2
  9. package/dist/authoring/signatureArgs.js.map +1 -1
  10. package/dist/client.cjs +2 -2
  11. package/dist/client.cjs.map +1 -1
  12. package/dist/client.js +2 -2
  13. package/dist/client.js.map +1 -1
  14. package/dist/generated/config.generated.cjs.map +1 -1
  15. package/dist/generated/config.generated.d.cts +327 -16
  16. package/dist/generated/config.generated.d.ts +327 -16
  17. package/dist/generated/guards.generated.cjs +6 -0
  18. package/dist/generated/guards.generated.cjs.map +1 -1
  19. package/dist/generated/guards.generated.d.cts +1 -1
  20. package/dist/generated/guards.generated.d.ts +1 -1
  21. package/dist/generated/guards.generated.js +5 -0
  22. package/dist/generated/guards.generated.js.map +1 -1
  23. package/dist/generated/materialisers.generated.cjs.map +1 -1
  24. package/dist/generated/materialisers.generated.d.cts +1 -1
  25. package/dist/generated/materialisers.generated.d.ts +1 -1
  26. package/dist/generated/materialisers.generated.js.map +1 -1
  27. package/dist/generated/operations.generated.cjs +103 -14
  28. package/dist/generated/operations.generated.cjs.map +1 -1
  29. package/dist/generated/operations.generated.d.cts +255 -10
  30. package/dist/generated/operations.generated.d.ts +255 -10
  31. package/dist/generated/operations.generated.js +103 -14
  32. package/dist/generated/operations.generated.js.map +1 -1
  33. package/dist/guards.generated-BPLFwe7y.d.ts +19 -0
  34. package/dist/guards.generated-M3VAIevI.d.cts +19 -0
  35. package/dist/index.d.cts +3 -3
  36. package/dist/index.d.ts +3 -3
  37. package/dist/materialisers.generated-BMkBQgWZ.d.ts +24 -0
  38. package/dist/materialisers.generated-BWq5oePO.d.cts +24 -0
  39. package/dist/run/inputs.cjs +8 -5
  40. package/dist/run/inputs.cjs.map +1 -1
  41. package/dist/run/inputs.d.cts +8 -0
  42. package/dist/run/inputs.d.ts +8 -0
  43. package/dist/run/inputs.js +8 -5
  44. package/dist/run/inputs.js.map +1 -1
  45. package/dist/sdk.cjs +1 -0
  46. package/dist/sdk.cjs.map +1 -1
  47. package/dist/sdk.js +1 -0
  48. package/dist/sdk.js.map +1 -1
  49. package/package.json +16 -7
  50. package/src/authoring/handles.ts +19 -10
  51. package/src/authoring/signatureArgs.ts +2 -2
  52. package/src/client.ts +1 -1
  53. package/src/examples/aaveClaimRewards.ts +80 -0
  54. package/src/examples/aaveRepay.ts +69 -0
  55. package/src/examples/aaveRepayWithATokens.ts +81 -0
  56. package/src/examples/aaveSetEMode.ts +68 -0
  57. package/src/examples/emitCustomEvent.ts +75 -0
  58. package/src/examples/invariantChecks.ts +95 -0
  59. package/src/examples/run.ts +41 -4
  60. package/src/examples/swapToRecipient.ts +0 -19
  61. package/src/examples/swapWithFee.ts +59 -0
  62. package/src/generated/config.generated.ts +388 -16
  63. package/src/generated/guards.generated.ts +12 -1
  64. package/src/generated/materialisers.generated.ts +12 -12
  65. package/src/generated/operations.generated.ts +438 -9
  66. package/src/run/inputs.ts +16 -5
  67. package/src/sdk.ts +1 -0
  68. package/dist/guards.generated-DKKDKREA.d.ts +0 -14
  69. package/dist/guards.generated-hrQ1KPNv.d.cts +0 -14
  70. package/dist/materialisers.generated-BsA1uDW8.d.ts +0 -24
  71. package/dist/materialisers.generated-nMxTAaVi.d.cts +0 -24
@@ -1,4 +1,4 @@
1
- import { Address, IntegerStringInput } from '../types.js';
1
+ import { IntegerStringInput, Address } from '../types.js';
2
2
  import '@lifi/compose-spec';
3
3
 
4
4
  interface CoreSplitConfig {
@@ -8,6 +8,16 @@ interface CoreSplitConfig {
8
8
  * a positive number
9
9
  */
10
10
  type Positive = number;
11
+ /**
12
+ * a string at most 64 character(s) long
13
+ */
14
+ type MaxLength64 = string;
15
+ /**
16
+ * an array of at most 50 item(s)
17
+ *
18
+ * @maxItems 50
19
+ */
20
+ type MaxItems50 = MaxLength64[];
11
21
  interface LifiSwapConfig {
12
22
  resourceOut: {
13
23
  kind: 'native';
@@ -32,17 +42,20 @@ interface LifiSwapConfig {
32
42
  reduceEveryMs: number;
33
43
  }[];
34
44
  };
35
- }
36
- interface LifiZapConfig {
37
- resourceOut: {
38
- kind: 'native';
39
- chainId: Positive;
40
- } | {
41
- kind: 'erc20';
42
- token: Address;
43
- chainId: Positive;
45
+ exchanges?: {
46
+ allow?: MaxItems50;
47
+ deny?: MaxItems50;
48
+ prefer?: MaxItems50;
44
49
  };
45
50
  }
51
+ interface InvariantNumericConfig {
52
+ op: 'gte' | 'gt' | 'lte' | 'lt' | 'eq' | 'neq';
53
+ threshold: IntegerStringInput;
54
+ }
55
+ interface InvariantNumericInRangeConfig {
56
+ min: IntegerStringInput;
57
+ max: IntegerStringInput;
58
+ }
46
59
  interface CoreBpsDownConfig {
47
60
  bps: number;
48
61
  }
@@ -59,6 +72,18 @@ interface CoreBalanceOfConfig {
59
72
  interface CoreTransferConfig {
60
73
  amount?: IntegerStringInput;
61
74
  }
75
+ interface CoreEmitEvent1Config {
76
+ signature: string;
77
+ }
78
+ interface CoreEmitEvent2Config {
79
+ signature: string;
80
+ }
81
+ interface CoreEmitEvent3Config {
82
+ signature: string;
83
+ }
84
+ interface CoreEmitEvent4Config {
85
+ signature: string;
86
+ }
62
87
  interface CoreCallConfig {
63
88
  target: Address;
64
89
  functionSignature: string;
@@ -98,19 +123,298 @@ interface CoreAsResourceConfig {
98
123
  chainId: Positive;
99
124
  };
100
125
  }
101
- interface CorePeekConfig {
102
- target: Address;
103
- functionSignature: string;
104
- args?: string[];
126
+ interface AaveBorrowConfig {
127
+ pool: string;
128
+ asset: string;
129
+ variableDebtToken: string;
130
+ amount: IntegerStringInput;
131
+ referralId?: number;
132
+ }
133
+ type AaveRepayConfig = {
134
+ pool: string;
135
+ mode: 'exact';
136
+ } | {
137
+ pool: string;
138
+ mode: 'max';
139
+ };
140
+ interface AaveRepayWithATokensConfig {
141
+ pool: string;
142
+ asset: string;
143
+ }
144
+ interface AaveClaimRewardsConfig {
145
+ rewardsController: string;
146
+ assets: string[];
147
+ reward: string;
148
+ amount?: IntegerStringInput;
149
+ to?: string;
150
+ }
151
+ /**
152
+ * a number between 0 and 255
153
+ */
154
+ type Between0255 = number;
155
+ interface AaveSetEModeConfig {
156
+ pool: string;
157
+ category: Between0255;
158
+ }
159
+ interface AaveGetHealthFactorConfig {
160
+ pool: string;
161
+ user?: string;
162
+ }
163
+ type MorphoBlueSupplyCollateralConfig = ({
164
+ morpho?: string;
165
+ onBehalfOf?: string;
166
+ mode: 'exact';
167
+ /**
168
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
169
+ */
170
+ marketId: string;
171
+ } | {
172
+ morpho?: string;
173
+ onBehalfOf?: string;
174
+ mode: 'exact';
175
+ marketParams: {
176
+ loanToken: string;
177
+ collateralToken: string;
178
+ oracle: string;
179
+ irm: string;
180
+ lltv: string;
181
+ };
182
+ }) | ({
183
+ morpho?: string;
184
+ onBehalfOf?: string;
185
+ mode: 'all';
186
+ /**
187
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
188
+ */
189
+ marketId: string;
190
+ } | {
191
+ morpho?: string;
192
+ onBehalfOf?: string;
193
+ mode: 'all';
194
+ marketParams: {
195
+ loanToken: string;
196
+ collateralToken: string;
197
+ oracle: string;
198
+ irm: string;
199
+ lltv: string;
200
+ };
201
+ });
202
+ type MorphoBlueWithdrawCollateralConfig = {
203
+ morpho?: string;
204
+ amount: IntegerStringInput;
205
+ onBehalfOf?: string;
206
+ receiver?: string;
207
+ /**
208
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
209
+ */
210
+ marketId: string;
211
+ } | {
212
+ morpho?: string;
213
+ amount: IntegerStringInput;
214
+ onBehalfOf?: string;
215
+ receiver?: string;
216
+ marketParams: {
217
+ loanToken: string;
218
+ collateralToken: string;
219
+ oracle: string;
220
+ irm: string;
221
+ lltv: string;
222
+ };
223
+ };
224
+ type MorphoBlueBorrowConfig = {
225
+ morpho?: string;
226
+ amount: IntegerStringInput;
227
+ onBehalfOf?: string;
228
+ receiver?: string;
229
+ /**
230
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
231
+ */
232
+ marketId: string;
233
+ } | {
234
+ morpho?: string;
235
+ amount: IntegerStringInput;
236
+ onBehalfOf?: string;
237
+ receiver?: string;
238
+ marketParams: {
239
+ loanToken: string;
240
+ collateralToken: string;
241
+ oracle: string;
242
+ irm: string;
243
+ lltv: string;
244
+ };
245
+ };
246
+ type MorphoBlueRepayConfig = ({
247
+ morpho?: string;
248
+ mode: 'exact';
249
+ /**
250
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
251
+ */
252
+ marketId: string;
253
+ } | {
254
+ morpho?: string;
255
+ mode: 'exact';
256
+ marketParams: {
257
+ loanToken: string;
258
+ collateralToken: string;
259
+ oracle: string;
260
+ irm: string;
261
+ lltv: string;
262
+ };
263
+ }) | ({
264
+ morpho?: string;
265
+ mode: 'max';
266
+ /**
267
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
268
+ */
269
+ marketId: string;
270
+ } | {
271
+ morpho?: string;
272
+ mode: 'max';
273
+ marketParams: {
274
+ loanToken: string;
275
+ collateralToken: string;
276
+ oracle: string;
277
+ irm: string;
278
+ lltv: string;
279
+ };
280
+ });
281
+ type MorphoBlueSupplyConfig = {
282
+ morpho?: string;
283
+ onBehalfOf?: string;
284
+ /**
285
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
286
+ */
287
+ marketId: string;
288
+ } | {
289
+ morpho?: string;
290
+ onBehalfOf?: string;
291
+ marketParams: {
292
+ loanToken: string;
293
+ collateralToken: string;
294
+ oracle: string;
295
+ irm: string;
296
+ lltv: string;
297
+ };
298
+ };
299
+ type MorphoBlueWithdrawConfig = ({
300
+ morpho?: string;
301
+ mode: 'exact';
302
+ amount: IntegerStringInput;
303
+ onBehalfOf?: string;
304
+ receiver?: string;
305
+ /**
306
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
307
+ */
308
+ marketId: string;
309
+ } | {
310
+ morpho?: string;
311
+ mode: 'exact';
312
+ amount: IntegerStringInput;
313
+ onBehalfOf?: string;
314
+ receiver?: string;
315
+ marketParams: {
316
+ loanToken: string;
317
+ collateralToken: string;
318
+ oracle: string;
319
+ irm: string;
320
+ lltv: string;
321
+ };
322
+ }) | ({
323
+ morpho?: string;
324
+ mode: 'max';
325
+ onBehalfOf?: string;
326
+ receiver?: string;
327
+ /**
328
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
329
+ */
330
+ marketId: string;
331
+ } | {
332
+ morpho?: string;
333
+ mode: 'max';
334
+ onBehalfOf?: string;
335
+ receiver?: string;
336
+ marketParams: {
337
+ loanToken: string;
338
+ collateralToken: string;
339
+ oracle: string;
340
+ irm: string;
341
+ lltv: string;
342
+ };
343
+ });
344
+ type MorphoBlueGetPositionConfig = {
345
+ morpho?: string;
346
+ user?: string;
347
+ /**
348
+ * a string matching the pattern ^0x[0-9a-fA-F]{64}$
349
+ */
350
+ marketId: string;
351
+ } | {
352
+ morpho?: string;
353
+ user?: string;
354
+ marketParams: {
355
+ loanToken: string;
356
+ collateralToken: string;
357
+ oracle: string;
358
+ irm: string;
359
+ lltv: string;
360
+ };
361
+ };
362
+ interface LifiFlashloanRepayConfig {
363
+ leg: string;
364
+ fee?: string;
365
+ }
366
+ interface LifiZapConfig {
367
+ resourceOut: {
368
+ kind: 'native';
369
+ chainId: Positive;
370
+ } | {
371
+ kind: 'erc20';
372
+ token: Address;
373
+ chainId: Positive;
374
+ };
105
375
  }
376
+ /**
377
+ * a non-negative number
378
+ */
379
+ type GreaterThanOrEqualTo0 = number;
106
380
  /**
107
381
  * a number between 0 and 10000
108
382
  */
109
383
  type Between010000 = number;
384
+ interface ParaswapBuyConfig {
385
+ resourceOut: {
386
+ kind: 'native';
387
+ chainId: Positive;
388
+ } | {
389
+ kind: 'erc20';
390
+ token: Address;
391
+ chainId: Positive;
392
+ };
393
+ exactAmountOut: string;
394
+ srcDecimals: GreaterThanOrEqualTo0;
395
+ destDecimals: GreaterThanOrEqualTo0;
396
+ maxSlippageBps?: Between010000;
397
+ partner?: string;
398
+ partnerAddress?: string;
399
+ /**
400
+ * Integrator fee in basis points; non-negative integer string capped at 9000.
401
+ */
402
+ partnerFeeBps?: string;
403
+ }
404
+ interface CorePeekConfig {
405
+ target: Address;
406
+ functionSignature: string;
407
+ args?: string[];
408
+ }
110
409
  interface SlippageGuardConfig {
111
410
  port: string;
112
411
  bps: Between010000;
113
412
  }
413
+ interface CoreNumericInvariantGuardConfig {
414
+ port: string;
415
+ op: 'gte' | 'gt' | 'lte' | 'lt' | 'eq' | 'neq';
416
+ threshold: IntegerStringInput;
417
+ }
114
418
  interface BalanceOfMaterialiserConfig {
115
419
  owner: Address;
116
420
  }
@@ -118,13 +422,20 @@ type DirectDepositMaterialiserConfig = {
118
422
  amount: IntegerStringInput;
119
423
  allowNonExact?: false;
120
424
  } | {
121
- amount?: IntegerStringInput;
425
+ amount: IntegerStringInput;
426
+ allowNonExact: true;
427
+ } | {
122
428
  allowNonExact: true;
429
+ simAmount?: string;
123
430
  };
124
431
  interface CallMaterialiserConfig {
125
432
  target: Address;
126
433
  calldata: string;
127
434
  }
435
+ interface FlashloanMaterialiserConfig {
436
+ providerKind: 'aave-v3' | 'erc3156' | 'balancer-v2' | 'morpho-blue';
437
+ amount: IntegerStringInput;
438
+ }
128
439
  interface Erc20BalancePreconditionConfig {
129
440
  wallet: Address;
130
441
  token: Address;
@@ -141,4 +452,4 @@ interface Erc20AllowancePreconditionConfig {
141
452
  allowance: IntegerStringInput;
142
453
  }
143
454
 
144
- export type { BalanceOfMaterialiserConfig, Between010000, CallMaterialiserConfig, CoreApproveConfig, CoreAsResourceConfig, CoreBalanceOfConfig, CoreBpsDownConfig, CoreBpsUpConfig, CoreCallConfig, CoreInvokeConfig, CorePeekConfig, CoreRawCallConfig, CoreSplitConfig, CoreStaticCallConfig, CoreTransferConfig, DirectDepositMaterialiserConfig, Erc20AllowancePreconditionConfig, Erc20BalancePreconditionConfig, LifiSwapConfig, LifiZapConfig, NativeBalancePreconditionConfig, Positive, SlippageGuardConfig, Unknown };
455
+ export type { AaveBorrowConfig, AaveClaimRewardsConfig, AaveGetHealthFactorConfig, AaveRepayConfig, AaveRepayWithATokensConfig, AaveSetEModeConfig, BalanceOfMaterialiserConfig, Between010000, Between0255, CallMaterialiserConfig, CoreApproveConfig, CoreAsResourceConfig, CoreBalanceOfConfig, CoreBpsDownConfig, CoreBpsUpConfig, CoreCallConfig, CoreEmitEvent1Config, CoreEmitEvent2Config, CoreEmitEvent3Config, CoreEmitEvent4Config, CoreInvokeConfig, CoreNumericInvariantGuardConfig, CorePeekConfig, CoreRawCallConfig, CoreSplitConfig, CoreStaticCallConfig, CoreTransferConfig, DirectDepositMaterialiserConfig, Erc20AllowancePreconditionConfig, Erc20BalancePreconditionConfig, FlashloanMaterialiserConfig, GreaterThanOrEqualTo0, InvariantNumericConfig, InvariantNumericInRangeConfig, LifiFlashloanRepayConfig, LifiSwapConfig, LifiZapConfig, MaxItems50, MaxLength64, MorphoBlueBorrowConfig, MorphoBlueGetPositionConfig, MorphoBlueRepayConfig, MorphoBlueSupplyCollateralConfig, MorphoBlueSupplyConfig, MorphoBlueWithdrawCollateralConfig, MorphoBlueWithdrawConfig, NativeBalancePreconditionConfig, ParaswapBuyConfig, Positive, SlippageGuardConfig, Unknown };
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var guards_generated_exports = {};
20
20
  __export(guards_generated_exports, {
21
+ coreNumericInvariant: () => coreNumericInvariant,
21
22
  slippage: () => slippage
22
23
  });
23
24
  module.exports = __toCommonJS(guards_generated_exports);
@@ -25,8 +26,13 @@ const slippage = (config) => ({
25
26
  kind: "slippage",
26
27
  ...config
27
28
  });
29
+ const coreNumericInvariant = (config) => ({
30
+ kind: "core.numericInvariant",
31
+ ...config
32
+ });
28
33
  // Annotate the CommonJS export names for ESM import in node:
29
34
  0 && (module.exports = {
35
+ coreNumericInvariant,
30
36
  slippage
31
37
  });
32
38
  //# sourceMappingURL=guards.generated.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated/guards.generated.ts"],"sourcesContent":["// AUTO-GENERATED from manifest.json — do not edit by hand.\n// Regenerate with: yarn workspace @lifi/composer-sdk generate\n\nimport type { TypedGuard } from '../types.js';\n\nimport type { SlippageGuardConfig } from './config.generated.js';\n\n/** Assert that output amounts are within a slippage tolerance in basis points */\nexport const slippage = <P extends string>(\n config: Omit<SlippageGuardConfig, 'port'> & { port: P },\n): TypedGuard<P> => ({\n kind: 'slippage',\n ...config,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQO,MAAM,WAAW,CACtB,YACmB;AAAA,EACnB,MAAM;AAAA,EACN,GAAG;AACL;","names":[]}
1
+ {"version":3,"sources":["../../src/generated/guards.generated.ts"],"sourcesContent":["// AUTO-GENERATED from manifest.json — do not edit by hand.\n// Regenerate with: yarn workspace @lifi/composer-sdk generate\n\nimport type { TypedGuard } from '../types.js';\n\nimport type {\n CoreNumericInvariantGuardConfig,\n SlippageGuardConfig,\n} from './config.generated.js';\n\n/** Assert that output amounts are within a slippage tolerance in basis points */\nexport const slippage = <P extends string>(\n config: Omit<SlippageGuardConfig, 'port'> & { port: P },\n): TypedGuard<P> => ({\n kind: 'slippage',\n ...config,\n});\n\n/** Assert a numeric (uint256) handle output of the target op satisfies a comparison against a constant threshold. Emits one IR1 binary invariant; reverts the run on violation. */\nexport const coreNumericInvariant = <P extends string>(\n config: Omit<CoreNumericInvariantGuardConfig, 'port'> & { port: P },\n): TypedGuard<P> => ({\n kind: 'core.numericInvariant',\n ...config,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,WAAW,CACtB,YACmB;AAAA,EACnB,MAAM;AAAA,EACN,GAAG;AACL;AAGO,MAAM,uBAAuB,CAClC,YACmB;AAAA,EACnB,MAAM;AAAA,EACN,GAAG;AACL;","names":[]}
@@ -1,4 +1,4 @@
1
1
  import '../types.cjs';
2
2
  import './config.generated.cjs';
3
- export { s as slippage } from '../guards.generated-hrQ1KPNv.cjs';
3
+ export { c as coreNumericInvariant, s as slippage } from '../guards.generated-M3VAIevI.cjs';
4
4
  import '@lifi/compose-spec';
@@ -1,4 +1,4 @@
1
1
  import '../types.js';
2
2
  import './config.generated.js';
3
- export { s as slippage } from '../guards.generated-DKKDKREA.js';
3
+ export { c as coreNumericInvariant, s as slippage } from '../guards.generated-BPLFwe7y.js';
4
4
  import '@lifi/compose-spec';
@@ -2,7 +2,12 @@ const slippage = (config) => ({
2
2
  kind: "slippage",
3
3
  ...config
4
4
  });
5
+ const coreNumericInvariant = (config) => ({
6
+ kind: "core.numericInvariant",
7
+ ...config
8
+ });
5
9
  export {
10
+ coreNumericInvariant,
6
11
  slippage
7
12
  };
8
13
  //# sourceMappingURL=guards.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated/guards.generated.ts"],"sourcesContent":["// AUTO-GENERATED from manifest.json — do not edit by hand.\n// Regenerate with: yarn workspace @lifi/composer-sdk generate\n\nimport type { TypedGuard } from '../types.js';\n\nimport type { SlippageGuardConfig } from './config.generated.js';\n\n/** Assert that output amounts are within a slippage tolerance in basis points */\nexport const slippage = <P extends string>(\n config: Omit<SlippageGuardConfig, 'port'> & { port: P },\n): TypedGuard<P> => ({\n kind: 'slippage',\n ...config,\n});\n"],"mappings":"AAQO,MAAM,WAAW,CACtB,YACmB;AAAA,EACnB,MAAM;AAAA,EACN,GAAG;AACL;","names":[]}
1
+ {"version":3,"sources":["../../src/generated/guards.generated.ts"],"sourcesContent":["// AUTO-GENERATED from manifest.json — do not edit by hand.\n// Regenerate with: yarn workspace @lifi/composer-sdk generate\n\nimport type { TypedGuard } from '../types.js';\n\nimport type {\n CoreNumericInvariantGuardConfig,\n SlippageGuardConfig,\n} from './config.generated.js';\n\n/** Assert that output amounts are within a slippage tolerance in basis points */\nexport const slippage = <P extends string>(\n config: Omit<SlippageGuardConfig, 'port'> & { port: P },\n): TypedGuard<P> => ({\n kind: 'slippage',\n ...config,\n});\n\n/** Assert a numeric (uint256) handle output of the target op satisfies a comparison against a constant threshold. Emits one IR1 binary invariant; reverts the run on violation. */\nexport const coreNumericInvariant = <P extends string>(\n config: Omit<CoreNumericInvariantGuardConfig, 'port'> & { port: P },\n): TypedGuard<P> => ({\n kind: 'core.numericInvariant',\n ...config,\n});\n"],"mappings":"AAWO,MAAM,WAAW,CACtB,YACmB;AAAA,EACnB,MAAM;AAAA,EACN,GAAG;AACL;AAGO,MAAM,uBAAuB,CAClC,YACmB;AAAA,EACnB,MAAM;AAAA,EACN,GAAG;AACL;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated/materialisers.generated.ts"],"sourcesContent":["// AUTO-GENERATED from manifest.json — do not edit by hand.\n// Regenerate with: yarn workspace @lifi/composer-sdk generate\n\nimport type {\n MaterialiserConfigOf,\n MaterialiserInput,\n} from '@lifi/compose-spec';\n\nimport type {\n BalanceOfMaterialiserConfig,\n CallMaterialiserConfig,\n DirectDepositMaterialiserConfig,\n} from './config.generated.js';\n\nexport type BalanceOfMaterialiserInput =\n MaterialiserConfigOf<BalanceOfMaterialiserConfig>;\n\n/** Read the on-chain token balance of an address as the input amount — accepts: resource */\nexport const balanceOf = (\n config: BalanceOfMaterialiserInput,\n): MaterialiserInput => ({\n kind: 'balanceOf',\n ...config,\n});\n\nexport type DirectDepositMaterialiserInput =\n MaterialiserConfigOf<DirectDepositMaterialiserConfig>;\n\n/** Deposit tokens into the VM — native via msg.value, ERC-20 via transferFrom — accepts: resource */\nexport const directDeposit = (\n config: DirectDepositMaterialiserInput,\n): MaterialiserInput => ({\n kind: 'directDeposit',\n ...config,\n});\n\nexport type CallMaterialiserInput =\n MaterialiserConfigOf<CallMaterialiserConfig>;\n\n/** Execute an arbitrary contract call and measure the resulting token balance diff — accepts: resource */\nexport const call = (config: CallMaterialiserInput): MaterialiserInput => ({\n kind: 'call',\n ...config,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBO,MAAM,YAAY,CACvB,YACuB;AAAA,EACvB,MAAM;AAAA,EACN,GAAG;AACL;AAMO,MAAM,gBAAgB,CAC3B,YACuB;AAAA,EACvB,MAAM;AAAA,EACN,GAAG;AACL;AAMO,MAAM,OAAO,CAAC,YAAsD;AAAA,EACzE,MAAM;AAAA,EACN,GAAG;AACL;","names":[]}
1
+ {"version":3,"sources":["../../src/generated/materialisers.generated.ts"],"sourcesContent":["// AUTO-GENERATED from manifest.json — do not edit by hand.\n// Regenerate with: yarn workspace @lifi/composer-sdk generate\n\nimport type {\n MaterialiserConfigOf,\n MaterialiserInput,\n} from '@lifi/compose-spec';\n\nimport type {\n BalanceOfMaterialiserConfig as BalanceOfMaterialiserConfigSchema,\n CallMaterialiserConfig as CallMaterialiserConfigSchema,\n DirectDepositMaterialiserConfig as DirectDepositMaterialiserConfigSchema,\n} from './config.generated.js';\n\nexport type BalanceOfMaterialiserConfig =\n MaterialiserConfigOf<BalanceOfMaterialiserConfigSchema>;\n\n/** Read the on-chain token balance of an address as the input amount — accepts: resource */\nexport const balanceOf = (\n config: BalanceOfMaterialiserConfig,\n): MaterialiserInput => ({\n kind: 'balanceOf',\n ...config,\n});\n\nexport type DirectDepositMaterialiserConfig =\n MaterialiserConfigOf<DirectDepositMaterialiserConfigSchema>;\n\n/** Deposit tokens into the VM — native via msg.value, ERC-20 via transferFrom — accepts: resource */\nexport const directDeposit = (\n config: DirectDepositMaterialiserConfig,\n): MaterialiserInput => ({\n kind: 'directDeposit',\n ...config,\n});\n\nexport type CallMaterialiserConfig =\n MaterialiserConfigOf<CallMaterialiserConfigSchema>;\n\n/** Execute an arbitrary contract call and measure the resulting token balance diff — accepts: resource */\nexport const call = (config: CallMaterialiserConfig): MaterialiserInput => ({\n kind: 'call',\n ...config,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBO,MAAM,YAAY,CACvB,YACuB;AAAA,EACvB,MAAM;AAAA,EACN,GAAG;AACL;AAMO,MAAM,gBAAgB,CAC3B,YACuB;AAAA,EACvB,MAAM;AAAA,EACN,GAAG;AACL;AAMO,MAAM,OAAO,CAAC,YAAuD;AAAA,EAC1E,MAAM;AAAA,EACN,GAAG;AACL;","names":[]}
@@ -1,4 +1,4 @@
1
1
  import '@lifi/compose-spec';
2
2
  import './config.generated.cjs';
3
- export { B as BalanceOfMaterialiserInput, C as CallMaterialiserInput, D as DirectDepositMaterialiserInput, b as balanceOf, c as call, d as directDeposit } from '../materialisers.generated-nMxTAaVi.cjs';
3
+ export { B as BalanceOfMaterialiserConfig, C as CallMaterialiserConfig, D as DirectDepositMaterialiserConfig, b as balanceOf, c as call, d as directDeposit } from '../materialisers.generated-BWq5oePO.cjs';
4
4
  import '../types.cjs';
@@ -1,4 +1,4 @@
1
1
  import '@lifi/compose-spec';
2
2
  import './config.generated.js';
3
- export { B as BalanceOfMaterialiserInput, C as CallMaterialiserInput, D as DirectDepositMaterialiserInput, b as balanceOf, c as call, d as directDeposit } from '../materialisers.generated-BsA1uDW8.js';
3
+ export { B as BalanceOfMaterialiserConfig, C as CallMaterialiserConfig, D as DirectDepositMaterialiserConfig, b as balanceOf, c as call, d as directDeposit } from '../materialisers.generated-BMkBQgWZ.js';
4
4
  import '../types.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated/materialisers.generated.ts"],"sourcesContent":["// AUTO-GENERATED from manifest.json — do not edit by hand.\n// Regenerate with: yarn workspace @lifi/composer-sdk generate\n\nimport type {\n MaterialiserConfigOf,\n MaterialiserInput,\n} from '@lifi/compose-spec';\n\nimport type {\n BalanceOfMaterialiserConfig,\n CallMaterialiserConfig,\n DirectDepositMaterialiserConfig,\n} from './config.generated.js';\n\nexport type BalanceOfMaterialiserInput =\n MaterialiserConfigOf<BalanceOfMaterialiserConfig>;\n\n/** Read the on-chain token balance of an address as the input amount — accepts: resource */\nexport const balanceOf = (\n config: BalanceOfMaterialiserInput,\n): MaterialiserInput => ({\n kind: 'balanceOf',\n ...config,\n});\n\nexport type DirectDepositMaterialiserInput =\n MaterialiserConfigOf<DirectDepositMaterialiserConfig>;\n\n/** Deposit tokens into the VM — native via msg.value, ERC-20 via transferFrom — accepts: resource */\nexport const directDeposit = (\n config: DirectDepositMaterialiserInput,\n): MaterialiserInput => ({\n kind: 'directDeposit',\n ...config,\n});\n\nexport type CallMaterialiserInput =\n MaterialiserConfigOf<CallMaterialiserConfig>;\n\n/** Execute an arbitrary contract call and measure the resulting token balance diff — accepts: resource */\nexport const call = (config: CallMaterialiserInput): MaterialiserInput => ({\n kind: 'call',\n ...config,\n});\n"],"mappings":"AAkBO,MAAM,YAAY,CACvB,YACuB;AAAA,EACvB,MAAM;AAAA,EACN,GAAG;AACL;AAMO,MAAM,gBAAgB,CAC3B,YACuB;AAAA,EACvB,MAAM;AAAA,EACN,GAAG;AACL;AAMO,MAAM,OAAO,CAAC,YAAsD;AAAA,EACzE,MAAM;AAAA,EACN,GAAG;AACL;","names":[]}
1
+ {"version":3,"sources":["../../src/generated/materialisers.generated.ts"],"sourcesContent":["// AUTO-GENERATED from manifest.json — do not edit by hand.\n// Regenerate with: yarn workspace @lifi/composer-sdk generate\n\nimport type {\n MaterialiserConfigOf,\n MaterialiserInput,\n} from '@lifi/compose-spec';\n\nimport type {\n BalanceOfMaterialiserConfig as BalanceOfMaterialiserConfigSchema,\n CallMaterialiserConfig as CallMaterialiserConfigSchema,\n DirectDepositMaterialiserConfig as DirectDepositMaterialiserConfigSchema,\n} from './config.generated.js';\n\nexport type BalanceOfMaterialiserConfig =\n MaterialiserConfigOf<BalanceOfMaterialiserConfigSchema>;\n\n/** Read the on-chain token balance of an address as the input amount — accepts: resource */\nexport const balanceOf = (\n config: BalanceOfMaterialiserConfig,\n): MaterialiserInput => ({\n kind: 'balanceOf',\n ...config,\n});\n\nexport type DirectDepositMaterialiserConfig =\n MaterialiserConfigOf<DirectDepositMaterialiserConfigSchema>;\n\n/** Deposit tokens into the VM — native via msg.value, ERC-20 via transferFrom — accepts: resource */\nexport const directDeposit = (\n config: DirectDepositMaterialiserConfig,\n): MaterialiserInput => ({\n kind: 'directDeposit',\n ...config,\n});\n\nexport type CallMaterialiserConfig =\n MaterialiserConfigOf<CallMaterialiserConfigSchema>;\n\n/** Execute an arbitrary contract call and measure the resulting token balance diff — accepts: resource */\nexport const call = (config: CallMaterialiserConfig): MaterialiserInput => ({\n kind: 'call',\n ...config,\n});\n"],"mappings":"AAkBO,MAAM,YAAY,CACvB,YACuB;AAAA,EACvB,MAAM;AAAA,EACN,GAAG;AACL;AAMO,MAAM,gBAAgB,CAC3B,YACuB;AAAA,EACvB,MAAM;AAAA,EACN,GAAG;AACL;AAMO,MAAM,OAAO,CAAC,YAAuD;AAAA,EAC1E,MAAM;AAAA,EACN,GAAG;AACL;","names":[]}
@@ -28,31 +28,35 @@ const bindGeneratedOps = (builder) => ({
28
28
  a: "resource",
29
29
  b: "resource"
30
30
  }),
31
- merge: (nodeId, args) => builder.call(nodeId, "core.merge", args, { merged: "resource" }),
32
- add: (nodeId, args) => builder.call(nodeId, "core.add", args, { result: "uint256" }),
33
- subtract: (nodeId, args) => builder.call(nodeId, "core.subtract", args, {
31
+ merge: (nodeId, args) => builder.call(nodeId, "core.merge", { ...args, config: {} }, {
32
+ merged: "resource"
33
+ }),
34
+ add: (nodeId, args) => builder.call(nodeId, "core.add", { ...args, config: {} }, {
35
+ result: "uint256"
36
+ }),
37
+ subtract: (nodeId, args) => builder.call(nodeId, "core.subtract", { ...args, config: {} }, {
34
38
  result: "uint256"
35
39
  }),
36
- multiply: (nodeId, args) => builder.call(nodeId, "core.multiply", args, {
40
+ multiply: (nodeId, args) => builder.call(nodeId, "core.multiply", { ...args, config: {} }, {
37
41
  result: "uint256"
38
42
  }),
39
- divideDown: (nodeId, args) => builder.call(nodeId, "core.divideDown", args, {
43
+ divideDown: (nodeId, args) => builder.call(nodeId, "core.divideDown", { ...args, config: {} }, {
40
44
  result: "uint256"
41
45
  }),
42
- divideUp: (nodeId, args) => builder.call(nodeId, "core.divideUp", args, {
46
+ divideUp: (nodeId, args) => builder.call(nodeId, "core.divideUp", { ...args, config: {} }, {
43
47
  result: "uint256"
44
48
  }),
45
49
  bpsDown: (nodeId, args) => builder.call(nodeId, "core.bpsDown", args, {
46
50
  result: "uint256"
47
51
  }),
48
52
  bpsUp: (nodeId, args) => builder.call(nodeId, "core.bpsUp", args, { result: "uint256" }),
49
- assertEqual: (nodeId, args) => builder.call(nodeId, "core.assertEqual", args, {}),
50
- assertNotEqual: (nodeId, args) => builder.call(nodeId, "core.assertNotEqual", args, {}),
51
- assertGt: (nodeId, args) => builder.call(nodeId, "core.assertGt", args, {}),
52
- assertGte: (nodeId, args) => builder.call(nodeId, "core.assertGte", args, {}),
53
- assertLt: (nodeId, args) => builder.call(nodeId, "core.assertLt", args, {}),
54
- assertLte: (nodeId, args) => builder.call(nodeId, "core.assertLte", args, {}),
55
- assertInRange: (nodeId, args) => builder.call(nodeId, "core.assertInRange", args, {}),
53
+ assertEqual: (nodeId, args) => builder.call(nodeId, "core.assertEqual", { ...args, config: {} }, {}),
54
+ assertNotEqual: (nodeId, args) => builder.call(nodeId, "core.assertNotEqual", { ...args, config: {} }, {}),
55
+ assertGt: (nodeId, args) => builder.call(nodeId, "core.assertGt", { ...args, config: {} }, {}),
56
+ assertGte: (nodeId, args) => builder.call(nodeId, "core.assertGte", { ...args, config: {} }, {}),
57
+ assertLt: (nodeId, args) => builder.call(nodeId, "core.assertLt", { ...args, config: {} }, {}),
58
+ assertLte: (nodeId, args) => builder.call(nodeId, "core.assertLte", { ...args, config: {} }, {}),
59
+ assertInRange: (nodeId, args) => builder.call(nodeId, "core.assertInRange", { ...args, config: {} }, {}),
56
60
  approve: (nodeId, args) => builder.call(nodeId, "core.approve", args, {}),
57
61
  balanceOf: (nodeId, args) => builder.call(nodeId, "core.balanceOf", args, {
58
62
  balance: "resource"
@@ -61,6 +65,10 @@ const bindGeneratedOps = (builder) => ({
61
65
  transferred: "resource",
62
66
  remainder: "resource"
63
67
  }),
68
+ emitEvent1: (nodeId, args) => builder.call(nodeId, "core.emitEvent1", args, {}),
69
+ emitEvent2: (nodeId, args) => builder.call(nodeId, "core.emitEvent2", args, {}),
70
+ emitEvent3: (nodeId, args) => builder.call(nodeId, "core.emitEvent3", args, {}),
71
+ emitEvent4: (nodeId, args) => builder.call(nodeId, "core.emitEvent4", args, {}),
64
72
  call: (nodeId, args) => {
65
73
  const wire = (0, import_signatureArgs.buildCallWireFormat)({
66
74
  resource: args.resource,
@@ -100,7 +108,88 @@ const bindGeneratedOps = (builder) => ({
100
108
  })
101
109
  },
102
110
  invariant: {
103
- balanceAtLeast: (nodeId, args) => builder.call(nodeId, "invariant.balanceAtLeast", args, {})
111
+ balanceAtLeast: (nodeId, args) => builder.call(
112
+ nodeId,
113
+ "invariant.balanceAtLeast",
114
+ { ...args, config: {} },
115
+ {}
116
+ ),
117
+ balanceEquals: (nodeId, args) => builder.call(
118
+ nodeId,
119
+ "invariant.balanceEquals",
120
+ { ...args, config: {} },
121
+ {}
122
+ ),
123
+ balanceAtMost: (nodeId, args) => builder.call(
124
+ nodeId,
125
+ "invariant.balanceAtMost",
126
+ { ...args, config: {} },
127
+ {}
128
+ ),
129
+ balanceInRange: (nodeId, args) => builder.call(
130
+ nodeId,
131
+ "invariant.balanceInRange",
132
+ { ...args, config: {} },
133
+ {}
134
+ ),
135
+ allowanceAtLeast: (nodeId, args) => builder.call(
136
+ nodeId,
137
+ "invariant.allowanceAtLeast",
138
+ { ...args, config: {} },
139
+ {}
140
+ ),
141
+ allowanceEquals: (nodeId, args) => builder.call(
142
+ nodeId,
143
+ "invariant.allowanceEquals",
144
+ { ...args, config: {} },
145
+ {}
146
+ ),
147
+ allowanceAtMost: (nodeId, args) => builder.call(
148
+ nodeId,
149
+ "invariant.allowanceAtMost",
150
+ { ...args, config: {} },
151
+ {}
152
+ ),
153
+ allowanceInRange: (nodeId, args) => builder.call(
154
+ nodeId,
155
+ "invariant.allowanceInRange",
156
+ { ...args, config: {} },
157
+ {}
158
+ ),
159
+ numeric: (nodeId, args) => builder.call(nodeId, "invariant.numeric", args, {}),
160
+ numericInRange: (nodeId, args) => builder.call(nodeId, "invariant.numericInRange", args, {})
161
+ },
162
+ aave: {
163
+ borrow: (nodeId, args) => builder.call(nodeId, "aave.borrow", args, {
164
+ borrowed: "resource",
165
+ debtBalance: "uint256"
166
+ }),
167
+ repay: (nodeId, args) => builder.call(nodeId, "aave.repay", args, {
168
+ actualRepaid: "uint256",
169
+ residual: "resource"
170
+ }),
171
+ repayWithATokens: (nodeId, args) => builder.call(nodeId, "aave.repayWithATokens", args, {
172
+ actualRepaid: "uint256",
173
+ residual: "resource"
174
+ }),
175
+ claimRewards: (nodeId, args) => builder.call(nodeId, "aave.claimRewards", args, {
176
+ claimed: "resource",
177
+ claimedAmount: "uint256"
178
+ }),
179
+ setEMode: (nodeId, args) => builder.call(nodeId, "aave.setEMode", args, {})
180
+ },
181
+ morphoBlue: {
182
+ supplyCollateral: (nodeId, args) => builder.call(nodeId, "morphoBlue.supplyCollateral", args, {}),
183
+ withdrawCollateral: (nodeId, args) => builder.call(nodeId, "morphoBlue.withdrawCollateral", args, {
184
+ withdrawn: "resource",
185
+ collateralWithdrawn: "uint256"
186
+ })
187
+ },
188
+ paraswap: {
189
+ buy: (nodeId, args) => builder.call(nodeId, "paraswap.buy", args, {
190
+ amountOut: "resource",
191
+ unspentIn: "resource"
192
+ })
104
193
  }
105
194
  });
106
195
  // Annotate the CommonJS export names for ESM import in node: