@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.
- package/README.md +37 -1
- package/dist/authoring/handles.cjs.map +1 -1
- package/dist/authoring/handles.d.cts +13 -6
- package/dist/authoring/handles.d.ts +13 -6
- package/dist/authoring/handles.js.map +1 -1
- package/dist/authoring/signatureArgs.cjs +2 -2
- package/dist/authoring/signatureArgs.cjs.map +1 -1
- package/dist/authoring/signatureArgs.js +2 -2
- package/dist/authoring/signatureArgs.js.map +1 -1
- package/dist/client.cjs +2 -2
- package/dist/client.cjs.map +1 -1
- package/dist/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/generated/config.generated.cjs.map +1 -1
- package/dist/generated/config.generated.d.cts +327 -16
- package/dist/generated/config.generated.d.ts +327 -16
- package/dist/generated/guards.generated.cjs +6 -0
- package/dist/generated/guards.generated.cjs.map +1 -1
- package/dist/generated/guards.generated.d.cts +1 -1
- package/dist/generated/guards.generated.d.ts +1 -1
- package/dist/generated/guards.generated.js +5 -0
- package/dist/generated/guards.generated.js.map +1 -1
- package/dist/generated/materialisers.generated.cjs.map +1 -1
- package/dist/generated/materialisers.generated.d.cts +1 -1
- package/dist/generated/materialisers.generated.d.ts +1 -1
- package/dist/generated/materialisers.generated.js.map +1 -1
- package/dist/generated/operations.generated.cjs +103 -14
- package/dist/generated/operations.generated.cjs.map +1 -1
- package/dist/generated/operations.generated.d.cts +255 -10
- package/dist/generated/operations.generated.d.ts +255 -10
- package/dist/generated/operations.generated.js +103 -14
- package/dist/generated/operations.generated.js.map +1 -1
- package/dist/guards.generated-BPLFwe7y.d.ts +19 -0
- package/dist/guards.generated-M3VAIevI.d.cts +19 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/materialisers.generated-BMkBQgWZ.d.ts +24 -0
- package/dist/materialisers.generated-BWq5oePO.d.cts +24 -0
- package/dist/run/inputs.cjs +8 -5
- package/dist/run/inputs.cjs.map +1 -1
- package/dist/run/inputs.d.cts +8 -0
- package/dist/run/inputs.d.ts +8 -0
- package/dist/run/inputs.js +8 -5
- package/dist/run/inputs.js.map +1 -1
- package/dist/sdk.cjs +1 -0
- package/dist/sdk.cjs.map +1 -1
- package/dist/sdk.js +1 -0
- package/dist/sdk.js.map +1 -1
- package/package.json +16 -7
- package/src/authoring/handles.ts +19 -10
- package/src/authoring/signatureArgs.ts +2 -2
- package/src/client.ts +1 -1
- package/src/examples/aaveClaimRewards.ts +80 -0
- package/src/examples/aaveRepay.ts +69 -0
- package/src/examples/aaveRepayWithATokens.ts +81 -0
- package/src/examples/aaveSetEMode.ts +68 -0
- package/src/examples/emitCustomEvent.ts +75 -0
- package/src/examples/invariantChecks.ts +95 -0
- package/src/examples/run.ts +41 -4
- package/src/examples/swapToRecipient.ts +0 -19
- package/src/examples/swapWithFee.ts +59 -0
- package/src/generated/config.generated.ts +388 -16
- package/src/generated/guards.generated.ts +12 -1
- package/src/generated/materialisers.generated.ts +12 -12
- package/src/generated/operations.generated.ts +438 -9
- package/src/run/inputs.ts +16 -5
- package/src/sdk.ts +1 -0
- package/dist/guards.generated-DKKDKREA.d.ts +0 -14
- package/dist/guards.generated-hrQ1KPNv.d.cts +0 -14
- package/dist/materialisers.generated-BsA1uDW8.d.ts +0 -24
- package/dist/materialisers.generated-nMxTAaVi.d.cts +0 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/generated/operations.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 AnyBindable,\n FlowBuilderInternal,\n} from '../authoring/FlowBuilderCore.js';\nimport type { Bindable, OutputHandle } from '../authoring/handles.js';\nimport type {\n CoreCallResult,\n SignatureBind,\n StaticCallResult,\n} from '../authoring/signatureArgs.js';\nimport {\n buildCallWireFormat,\n buildStaticCallWireFormat,\n} from '../authoring/signatureArgs.js';\nimport type { TypedGuard } from '../types.js';\n\nimport type {\n CoreApproveConfig,\n CoreAsResourceConfig,\n CoreBalanceOfConfig,\n CoreBpsDownConfig,\n CoreBpsUpConfig,\n CoreCallConfig,\n CorePeekConfig,\n CoreRawCallConfig,\n CoreSplitConfig,\n CoreStaticCallConfig,\n CoreTransferConfig,\n LifiSwapConfig,\n LifiZapConfig,\n} from './config.generated.js';\n\n/** Split a resource into two outputs by basis-point ratio */\nexport interface CoreSplitArgs {\n readonly bind: {\n readonly source: Bindable<'resource'>;\n };\n readonly config: CoreSplitConfig;\n readonly guards?: readonly TypedGuard<'a' | 'b'>[];\n}\n\n/** Merge two same-token resources into one by addition */\nexport interface CoreMergeArgs {\n readonly bind: {\n readonly a: Bindable<'resource'>;\n readonly b: Bindable<'resource'>;\n };\n readonly guards?: readonly TypedGuard<'merged'>[];\n}\n\n/** Swap tokens via the LI.FI aggregator API */\nexport interface LifiSwapArgs {\n readonly bind: {\n readonly amountIn: Bindable<'resource'>;\n };\n readonly config: LifiSwapConfig;\n readonly guards?: readonly TypedGuard<'unspentIn'>[];\n}\n\n/** Assert that an account holds at least a minimum token balance */\nexport interface InvariantBalanceAtLeastArgs {\n readonly bind: {\n readonly minimumAmount: Bindable<'resource'>;\n readonly account: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Route tokens into a DeFi protocol position via the edge catalog */\nexport interface LifiZapArgs {\n readonly bind: {\n readonly amountIn: Bindable<'resource'>;\n };\n readonly config: LifiZapConfig;\n readonly guards?: readonly TypedGuard<'amountOut'>[];\n}\n\n/** Add two unsigned integers (a + b) */\nexport interface CoreAddArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Subtract b from a (a - b); reverts on underflow */\nexport interface CoreSubtractArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Multiply two unsigned integers (a * b) */\nexport interface CoreMultiplyArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Divide a by b, rounding toward zero */\nexport interface CoreDivideDownArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Divide a by b, rounding away from zero */\nexport interface CoreDivideUpArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Multiply value by basis points and divide by 10000, rounding down */\nexport interface CoreBpsDownArgs {\n readonly bind: {\n readonly value: Bindable<'uint256'>;\n };\n readonly config: CoreBpsDownConfig;\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Multiply value by basis points and divide by 10000, rounding up */\nexport interface CoreBpsUpArgs {\n readonly bind: {\n readonly value: Bindable<'uint256'>;\n };\n readonly config: CoreBpsUpConfig;\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Assert a == b; reverts if not equal */\nexport interface CoreAssertEqualArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a != b; reverts if equal */\nexport interface CoreAssertNotEqualArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a > b; reverts if a <= b */\nexport interface CoreAssertGtArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a >= b; reverts if a < b */\nexport interface CoreAssertGteArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a < b; reverts if a >= b */\nexport interface CoreAssertLtArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a <= b; reverts if a > b */\nexport interface CoreAssertLteArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert min <= value <= max; reverts if value is outside the range */\nexport interface CoreAssertInRangeArgs {\n readonly bind: {\n readonly value: Bindable<'uint256'>;\n readonly min: Bindable<'uint256'>;\n readonly max: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Approve an ERC20 spender for the given token and amount */\nexport interface CoreApproveArgs {\n readonly bind: {\n readonly amount: Bindable<'resource'>;\n };\n readonly config: CoreApproveConfig;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Read an ERC20 balance, producing a resource */\nexport interface CoreBalanceOfArgs {\n readonly bind: Record<string, never>;\n readonly config: CoreBalanceOfConfig;\n readonly guards?: readonly TypedGuard<'balance'>[];\n}\n\n/** Transfer tokens to a recipient address, optionally specifying a partial amount */\nexport interface CoreTransferArgs {\n readonly bind: {\n readonly amount: Bindable<'resource'>;\n readonly recipient: Bindable<'address'>;\n };\n readonly config: CoreTransferConfig;\n readonly guards?: readonly TypedGuard<'transferred' | 'remainder'>[];\n}\n\n/** Invoke a smart contract function, optionally spending a token resource */\nexport interface CoreCallArgs<TSig extends string = string> {\n readonly resource?: Bindable<'resource'>;\n readonly bind: SignatureBind<TSig>;\n readonly config: Omit<CoreCallConfig, 'args' | 'functionSignature'> & {\n readonly functionSignature: TSig;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Read from a smart contract at runtime (StaticCall); result is fresh at execution time */\nexport interface CoreStaticCallArgs<TSig extends string = string> {\n readonly bind: SignatureBind<TSig>;\n readonly config: Omit<CoreStaticCallConfig, 'args' | 'functionSignature'> & {\n readonly functionSignature: TSig;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Invoke a contract with pre-encoded calldata */\nexport interface CoreRawCallArgs {\n readonly bind: Record<string, never>;\n readonly config: CoreRawCallConfig;\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Graduate a raw handle to a resource, enabling slippage surfacing and linearity tracking */\nexport interface CoreAsResourceArgs {\n readonly bind: {\n readonly handle: Bindable<'uint256'>;\n };\n readonly config: CoreAsResourceConfig;\n readonly guards?: readonly TypedGuard<'resource'>[];\n}\n\n/** Read a smart contract value at compile time (off-chain eth_call); result is baked as a literal */\nexport interface CorePeekArgs {\n readonly bind: Record<string, never>;\n readonly config: CorePeekConfig;\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\nexport interface CoreSplitOutputs {\n readonly a: OutputHandle<'resource'>;\n readonly b: OutputHandle<'resource'>;\n}\n\nexport interface CoreMergeOutputs {\n readonly merged: OutputHandle<'resource'>;\n}\n\nexport interface LifiSwapOutputs {\n readonly amountOut: OutputHandle<'resource'>;\n readonly unspentIn: OutputHandle<'resource'>;\n}\n\nexport interface LifiZapOutputs {\n readonly amountOut: OutputHandle<'resource'>;\n}\n\nexport interface CoreAddOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreSubtractOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreMultiplyOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreDivideDownOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreDivideUpOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreBpsDownOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreBpsUpOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreBalanceOfOutputs {\n readonly balance: OutputHandle<'resource'>;\n}\n\nexport interface CoreTransferOutputs {\n readonly transferred: OutputHandle<'resource'>;\n readonly remainder: OutputHandle<'resource'>;\n}\n\nexport interface CoreRawCallOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreAsResourceOutputs {\n readonly resource: OutputHandle<'resource'>;\n}\n\nexport interface CorePeekOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport type GeneratedOps = {\n readonly core: {\n /** Split a resource into two outputs by basis-point ratio — original id: \"core.split\" */\n readonly split: (nodeId: string, args: CoreSplitArgs) => CoreSplitOutputs;\n /** Merge two same-token resources into one by addition — original id: \"core.merge\" */\n readonly merge: (nodeId: string, args: CoreMergeArgs) => CoreMergeOutputs;\n /** Add two unsigned integers (a + b) — original id: \"core.add\" */\n readonly add: (nodeId: string, args: CoreAddArgs) => CoreAddOutputs;\n /** Subtract b from a (a - b); reverts on underflow — original id: \"core.subtract\" */\n readonly subtract: (\n nodeId: string,\n args: CoreSubtractArgs,\n ) => CoreSubtractOutputs;\n /** Multiply two unsigned integers (a * b) — original id: \"core.multiply\" */\n readonly multiply: (\n nodeId: string,\n args: CoreMultiplyArgs,\n ) => CoreMultiplyOutputs;\n /** Divide a by b, rounding toward zero — original id: \"core.divideDown\" */\n readonly divideDown: (\n nodeId: string,\n args: CoreDivideDownArgs,\n ) => CoreDivideDownOutputs;\n /** Divide a by b, rounding away from zero — original id: \"core.divideUp\" */\n readonly divideUp: (\n nodeId: string,\n args: CoreDivideUpArgs,\n ) => CoreDivideUpOutputs;\n /** Multiply value by basis points and divide by 10000, rounding down — original id: \"core.bpsDown\" */\n readonly bpsDown: (\n nodeId: string,\n args: CoreBpsDownArgs,\n ) => CoreBpsDownOutputs;\n /** Multiply value by basis points and divide by 10000, rounding up — original id: \"core.bpsUp\" */\n readonly bpsUp: (nodeId: string, args: CoreBpsUpArgs) => CoreBpsUpOutputs;\n /** Assert a == b; reverts if not equal — original id: \"core.assertEqual\" */\n readonly assertEqual: (nodeId: string, args: CoreAssertEqualArgs) => void;\n /** Assert a != b; reverts if equal — original id: \"core.assertNotEqual\" */\n readonly assertNotEqual: (\n nodeId: string,\n args: CoreAssertNotEqualArgs,\n ) => void;\n /** Assert a > b; reverts if a <= b — original id: \"core.assertGt\" */\n readonly assertGt: (nodeId: string, args: CoreAssertGtArgs) => void;\n /** Assert a >= b; reverts if a < b — original id: \"core.assertGte\" */\n readonly assertGte: (nodeId: string, args: CoreAssertGteArgs) => void;\n /** Assert a < b; reverts if a >= b — original id: \"core.assertLt\" */\n readonly assertLt: (nodeId: string, args: CoreAssertLtArgs) => void;\n /** Assert a <= b; reverts if a > b — original id: \"core.assertLte\" */\n readonly assertLte: (nodeId: string, args: CoreAssertLteArgs) => void;\n /** Assert min <= value <= max; reverts if value is outside the range — original id: \"core.assertInRange\" */\n readonly assertInRange: (\n nodeId: string,\n args: CoreAssertInRangeArgs,\n ) => void;\n /** Approve an ERC20 spender for the given token and amount — original id: \"core.approve\" */\n readonly approve: (nodeId: string, args: CoreApproveArgs) => void;\n /** Read an ERC20 balance, producing a resource — original id: \"core.balanceOf\" */\n readonly balanceOf: (\n nodeId: string,\n args: CoreBalanceOfArgs,\n ) => CoreBalanceOfOutputs;\n /** Transfer tokens to a recipient address, optionally specifying a partial amount — original id: \"core.transfer\" */\n readonly transfer: (\n nodeId: string,\n args: CoreTransferArgs,\n ) => CoreTransferOutputs;\n /** Invoke a smart contract function, optionally spending a token resource — original id: \"core.call\" */\n readonly call: <TSig extends string>(\n nodeId: string,\n args: CoreCallArgs<TSig>,\n ) => CoreCallResult<TSig>;\n /** Read from a smart contract at runtime (StaticCall); result is fresh at execution time — original id: \"core.staticCall\" */\n readonly staticCall: <TSig extends string>(\n nodeId: string,\n args: CoreStaticCallArgs<TSig>,\n ) => StaticCallResult<TSig>;\n /** Invoke a contract with pre-encoded calldata — original id: \"core.rawCall\" */\n readonly rawCall: (\n nodeId: string,\n args: CoreRawCallArgs,\n ) => CoreRawCallOutputs;\n /** Graduate a raw handle to a resource, enabling slippage surfacing and linearity tracking — original id: \"core.asResource\" */\n readonly asResource: (\n nodeId: string,\n args: CoreAsResourceArgs,\n ) => CoreAsResourceOutputs;\n /** Read a smart contract value at compile time (off-chain eth_call); result is baked as a literal — original id: \"core.peek\" */\n readonly peek: (nodeId: string, args: CorePeekArgs) => CorePeekOutputs;\n };\n readonly lifi: {\n /** Swap tokens via the LI.FI aggregator API — original id: \"lifi.swap\" */\n readonly swap: (nodeId: string, args: LifiSwapArgs) => LifiSwapOutputs;\n /** Route tokens into a DeFi protocol position via the edge catalog — original id: \"lifi.zap\" */\n readonly zap: (nodeId: string, args: LifiZapArgs) => LifiZapOutputs;\n };\n readonly invariant: {\n /** Assert that an account holds at least a minimum token balance — original id: \"invariant.balanceAtLeast\" */\n readonly balanceAtLeast: (\n nodeId: string,\n args: InvariantBalanceAtLeastArgs,\n ) => void;\n };\n};\n\nexport const bindGeneratedOps = (\n builder: FlowBuilderInternal,\n): GeneratedOps => ({\n core: {\n split: (nodeId: string, args: CoreSplitArgs) =>\n builder.call(nodeId, 'core.split', args, {\n a: 'resource',\n b: 'resource',\n } as const),\n merge: (nodeId: string, args: CoreMergeArgs) =>\n builder.call(nodeId, 'core.merge', args, { merged: 'resource' } as const),\n add: (nodeId: string, args: CoreAddArgs) =>\n builder.call(nodeId, 'core.add', args, { result: 'uint256' } as const),\n subtract: (nodeId: string, args: CoreSubtractArgs) =>\n builder.call(nodeId, 'core.subtract', args, {\n result: 'uint256',\n } as const),\n multiply: (nodeId: string, args: CoreMultiplyArgs) =>\n builder.call(nodeId, 'core.multiply', args, {\n result: 'uint256',\n } as const),\n divideDown: (nodeId: string, args: CoreDivideDownArgs) =>\n builder.call(nodeId, 'core.divideDown', args, {\n result: 'uint256',\n } as const),\n divideUp: (nodeId: string, args: CoreDivideUpArgs) =>\n builder.call(nodeId, 'core.divideUp', args, {\n result: 'uint256',\n } as const),\n bpsDown: (nodeId: string, args: CoreBpsDownArgs) =>\n builder.call(nodeId, 'core.bpsDown', args, {\n result: 'uint256',\n } as const),\n bpsUp: (nodeId: string, args: CoreBpsUpArgs) =>\n builder.call(nodeId, 'core.bpsUp', args, { result: 'uint256' } as const),\n assertEqual: (nodeId: string, args: CoreAssertEqualArgs) =>\n builder.call(nodeId, 'core.assertEqual', args, {}),\n assertNotEqual: (nodeId: string, args: CoreAssertNotEqualArgs) =>\n builder.call(nodeId, 'core.assertNotEqual', args, {}),\n assertGt: (nodeId: string, args: CoreAssertGtArgs) =>\n builder.call(nodeId, 'core.assertGt', args, {}),\n assertGte: (nodeId: string, args: CoreAssertGteArgs) =>\n builder.call(nodeId, 'core.assertGte', args, {}),\n assertLt: (nodeId: string, args: CoreAssertLtArgs) =>\n builder.call(nodeId, 'core.assertLt', args, {}),\n assertLte: (nodeId: string, args: CoreAssertLteArgs) =>\n builder.call(nodeId, 'core.assertLte', args, {}),\n assertInRange: (nodeId: string, args: CoreAssertInRangeArgs) =>\n builder.call(nodeId, 'core.assertInRange', args, {}),\n approve: (nodeId: string, args: CoreApproveArgs) =>\n builder.call(nodeId, 'core.approve', args, {}),\n balanceOf: (nodeId: string, args: CoreBalanceOfArgs) =>\n builder.call(nodeId, 'core.balanceOf', args, {\n balance: 'resource',\n } as const),\n transfer: (nodeId: string, args: CoreTransferArgs) =>\n builder.call(nodeId, 'core.transfer', args, {\n transferred: 'resource',\n remainder: 'resource',\n } as const),\n call: <TSig extends string>(nodeId: string, args: CoreCallArgs<TSig>) => {\n const wire = buildCallWireFormat({\n resource: args.resource,\n bind: args.bind as Record<string, AnyBindable>,\n config: args.config as Record<string, unknown>,\n guards: args.guards,\n });\n return builder.call(nodeId, wire.op, wire, {\n result: 'uint256',\n } as const) as unknown as CoreCallResult<TSig>;\n },\n staticCall: <TSig extends string>(\n nodeId: string,\n args: CoreStaticCallArgs<TSig>,\n ) =>\n builder.call(\n nodeId,\n 'core.staticCall',\n buildStaticCallWireFormat({\n bind: args.bind as Record<string, AnyBindable>,\n config: args.config as Record<string, unknown>,\n guards: args.guards,\n }),\n { result: 'uint256' } as const,\n ) as unknown as StaticCallResult<TSig>,\n rawCall: (nodeId: string, args: CoreRawCallArgs) =>\n builder.call(nodeId, 'core.rawCall', args, {\n result: 'uint256',\n } as const),\n asResource: (nodeId: string, args: CoreAsResourceArgs) =>\n builder.call(nodeId, 'core.asResource', args, {\n resource: 'resource',\n } as const),\n peek: (nodeId: string, args: CorePeekArgs) =>\n builder.call(nodeId, 'core.peek', args, { result: 'uint256' } as const),\n },\n lifi: {\n swap: (nodeId: string, args: LifiSwapArgs) =>\n builder.call(nodeId, 'lifi.swap', args, {\n amountOut: 'resource',\n unspentIn: 'resource',\n } as const),\n zap: (nodeId: string, args: LifiZapArgs) =>\n builder.call(nodeId, 'lifi.zap', args, {\n amountOut: 'resource',\n } as const),\n },\n invariant: {\n balanceAtLeast: (nodeId: string, args: InvariantBalanceAtLeastArgs) =>\n builder.call(nodeId, 'invariant.balanceAtLeast', args, {}),\n },\n});\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/generated/operations.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 AnyBindable,\n FlowBuilderInternal,\n} from '../authoring/FlowBuilderCore.js';\nimport type { Bindable, OutputHandle } from '../authoring/handles.js';\nimport type {\n CoreCallResult,\n SignatureBind,\n StaticCallResult,\n} from '../authoring/signatureArgs.js';\nimport {\n buildCallWireFormat,\n buildStaticCallWireFormat,\n} from '../authoring/signatureArgs.js';\nimport type { TypedGuard } from '../types.js';\n\nimport type {\n AaveBorrowConfig,\n AaveClaimRewardsConfig,\n AaveRepayConfig,\n AaveRepayWithATokensConfig,\n AaveSetEModeConfig,\n CoreApproveConfig,\n CoreAsResourceConfig,\n CoreBalanceOfConfig,\n CoreBpsDownConfig,\n CoreBpsUpConfig,\n CoreCallConfig,\n CoreEmitEvent1Config,\n CoreEmitEvent2Config,\n CoreEmitEvent3Config,\n CoreEmitEvent4Config,\n CorePeekConfig,\n CoreRawCallConfig,\n CoreSplitConfig,\n CoreStaticCallConfig,\n CoreTransferConfig,\n InvariantNumericConfig,\n InvariantNumericInRangeConfig,\n LifiSwapConfig,\n LifiZapConfig,\n MorphoBlueSupplyCollateralConfig,\n MorphoBlueWithdrawCollateralConfig,\n ParaswapBuyConfig,\n} from './config.generated.js';\n\n/** Split a resource into two outputs by basis-point ratio */\nexport interface CoreSplitArgs {\n readonly bind: {\n readonly source: Bindable<'resource'>;\n };\n readonly config: CoreSplitConfig;\n readonly guards?: readonly TypedGuard<'a' | 'b'>[];\n}\n\n/** Merge two same-token resources into one by addition */\nexport interface CoreMergeArgs {\n readonly bind: {\n readonly a: Bindable<'resource'>;\n readonly b: Bindable<'resource'>;\n };\n readonly guards?: readonly TypedGuard<'merged'>[];\n}\n\n/** Swap tokens via the LI.FI aggregator API */\nexport interface LifiSwapArgs {\n readonly bind: {\n readonly amountIn: Bindable<'resource'>;\n };\n readonly config: LifiSwapConfig;\n readonly guards?: readonly TypedGuard<'unspentIn'>[];\n}\n\n/** Assert that an account holds at least a minimum token balance */\nexport interface InvariantBalanceAtLeastArgs {\n readonly bind: {\n readonly minimumAmount: Bindable<'resource'>;\n readonly account: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert that an account holds exactly an expected token balance */\nexport interface InvariantBalanceEqualsArgs {\n readonly bind: {\n readonly expectedAmount: Bindable<'resource'>;\n readonly account: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert that an account holds at most a maximum token balance */\nexport interface InvariantBalanceAtMostArgs {\n readonly bind: {\n readonly maximumAmount: Bindable<'resource'>;\n readonly account: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert that an account's token balance is between a minimum and a maximum (inclusive) */\nexport interface InvariantBalanceInRangeArgs {\n readonly bind: {\n readonly minimumAmount: Bindable<'resource'>;\n readonly maximumAmount: Bindable<'uint256'>;\n readonly account: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert that a spender is permitted to move at least a minimum allowance on behalf of an owner */\nexport interface InvariantAllowanceAtLeastArgs {\n readonly bind: {\n readonly minimumAmount: Bindable<'resource'>;\n readonly owner: Bindable<'address'>;\n readonly spender: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert that a spender's allowance on behalf of an owner exactly equals an expected amount */\nexport interface InvariantAllowanceEqualsArgs {\n readonly bind: {\n readonly expectedAmount: Bindable<'resource'>;\n readonly owner: Bindable<'address'>;\n readonly spender: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert that a spender is permitted to move at most a maximum allowance on behalf of an owner */\nexport interface InvariantAllowanceAtMostArgs {\n readonly bind: {\n readonly maximumAmount: Bindable<'resource'>;\n readonly owner: Bindable<'address'>;\n readonly spender: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert that a spender's allowance on behalf of an owner is between a minimum and a maximum (inclusive) */\nexport interface InvariantAllowanceInRangeArgs {\n readonly bind: {\n readonly minimumAmount: Bindable<'resource'>;\n readonly maximumAmount: Bindable<'uint256'>;\n readonly owner: Bindable<'address'>;\n readonly spender: Bindable<'address'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a uint256 value satisfies a comparison against a constant threshold; reverts on violation */\nexport interface InvariantNumericArgs {\n readonly bind: {\n readonly value: Bindable<'uint256'>;\n };\n readonly config: InvariantNumericConfig;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert min <= value <= max against constant bounds; reverts if outside the range */\nexport interface InvariantNumericInRangeArgs {\n readonly bind: {\n readonly value: Bindable<'uint256'>;\n };\n readonly config: InvariantNumericInRangeConfig;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Add two unsigned integers (a + b) */\nexport interface CoreAddArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Subtract b from a (a - b); reverts on underflow */\nexport interface CoreSubtractArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Multiply two unsigned integers (a * b) */\nexport interface CoreMultiplyArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Divide a by b, rounding toward zero */\nexport interface CoreDivideDownArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Divide a by b, rounding away from zero */\nexport interface CoreDivideUpArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Multiply value by basis points and divide by 10000, rounding down */\nexport interface CoreBpsDownArgs {\n readonly bind: {\n readonly value: Bindable<'uint256'>;\n };\n readonly config: CoreBpsDownConfig;\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Multiply value by basis points and divide by 10000, rounding up */\nexport interface CoreBpsUpArgs {\n readonly bind: {\n readonly value: Bindable<'uint256'>;\n };\n readonly config: CoreBpsUpConfig;\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Assert a == b; reverts if not equal */\nexport interface CoreAssertEqualArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a != b; reverts if equal */\nexport interface CoreAssertNotEqualArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a > b; reverts if a <= b */\nexport interface CoreAssertGtArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a >= b; reverts if a < b */\nexport interface CoreAssertGteArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a < b; reverts if a >= b */\nexport interface CoreAssertLtArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert a <= b; reverts if a > b */\nexport interface CoreAssertLteArgs {\n readonly bind: {\n readonly a: Bindable<'uint256'>;\n readonly b: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Assert min <= value <= max; reverts if value is outside the range */\nexport interface CoreAssertInRangeArgs {\n readonly bind: {\n readonly value: Bindable<'uint256'>;\n readonly min: Bindable<'uint256'>;\n readonly max: Bindable<'uint256'>;\n };\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Approve an ERC20 spender for the given token and amount */\nexport interface CoreApproveArgs {\n readonly bind: {\n readonly amount: Bindable<'resource'>;\n };\n readonly config: CoreApproveConfig;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Read an ERC20 balance, producing a resource */\nexport interface CoreBalanceOfArgs {\n readonly bind: Record<string, never>;\n readonly config: CoreBalanceOfConfig;\n readonly guards?: readonly TypedGuard<'balance'>[];\n}\n\n/** Transfer tokens to a recipient address, optionally specifying a partial amount */\nexport interface CoreTransferArgs {\n readonly bind: {\n readonly amount: Bindable<'resource'>;\n readonly recipient: Bindable<'address'>;\n };\n readonly config: CoreTransferConfig;\n readonly guards?: readonly TypedGuard<'transferred' | 'remainder'>[];\n}\n\n/** Emit a custom on-chain event carrying 1 32-byte payload value. The value becomes a non-indexed data word in a fixed VM log event; the signature is hashed into a discriminator word (it is NOT an indexed EVM topic). */\nexport interface CoreEmitEvent1Args {\n readonly bind: {\n readonly value0: Bindable<'bytes32'>;\n };\n readonly config: CoreEmitEvent1Config;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Emit a custom on-chain event carrying 2 32-byte payload values. The values become non-indexed data words in a fixed VM log event; the signature is hashed into a discriminator word (it is NOT an indexed EVM topic). */\nexport interface CoreEmitEvent2Args {\n readonly bind: {\n readonly value0: Bindable<'bytes32'>;\n readonly value1: Bindable<'bytes32'>;\n };\n readonly config: CoreEmitEvent2Config;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Emit a custom on-chain event carrying 3 32-byte payload values. The values become non-indexed data words in a fixed VM log event; the signature is hashed into a discriminator word (it is NOT an indexed EVM topic). */\nexport interface CoreEmitEvent3Args {\n readonly bind: {\n readonly value0: Bindable<'bytes32'>;\n readonly value1: Bindable<'bytes32'>;\n readonly value2: Bindable<'bytes32'>;\n };\n readonly config: CoreEmitEvent3Config;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Emit a custom on-chain event carrying 4 32-byte payload values. The values become non-indexed data words in a fixed VM log event; the signature is hashed into a discriminator word (it is NOT an indexed EVM topic). */\nexport interface CoreEmitEvent4Args {\n readonly bind: {\n readonly value0: Bindable<'bytes32'>;\n readonly value1: Bindable<'bytes32'>;\n readonly value2: Bindable<'bytes32'>;\n readonly value3: Bindable<'bytes32'>;\n };\n readonly config: CoreEmitEvent4Config;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Invoke a smart contract function, optionally spending a token resource */\nexport interface CoreCallArgs<TSig extends string = string> {\n readonly resource?: Bindable<'resource'>;\n readonly bind: SignatureBind<TSig>;\n readonly config: Omit<CoreCallConfig, 'args' | 'functionSignature'> & {\n readonly functionSignature: TSig;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Read from a smart contract at runtime (StaticCall); result is fresh at execution time */\nexport interface CoreStaticCallArgs<TSig extends string = string> {\n readonly bind: SignatureBind<TSig>;\n readonly config: Omit<CoreStaticCallConfig, 'args' | 'functionSignature'> & {\n readonly functionSignature: TSig;\n };\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Invoke a contract with pre-encoded calldata */\nexport interface CoreRawCallArgs {\n readonly bind: Record<string, never>;\n readonly config: CoreRawCallConfig;\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\n/** Graduate a raw handle to a resource, enabling slippage surfacing and linearity tracking */\nexport interface CoreAsResourceArgs {\n readonly bind: {\n readonly handle: Bindable<'uint256'>;\n };\n readonly config: CoreAsResourceConfig;\n readonly guards?: readonly TypedGuard<'resource'>[];\n}\n\n/** Borrow an asset from an Aave v3 pool against existing collateral, exposing the borrowed asset as a Resource */\nexport interface AaveBorrowArgs {\n readonly bind: Record<string, never>;\n readonly config: AaveBorrowConfig;\n readonly guards?: readonly TypedGuard<'debtBalance'>[];\n}\n\n/** Repay an Aave v3 variable-rate debt position with the supplied asset. mode: 'exact' passes the input handle amount; mode: 'max' passes type(uint256).max so Aave's Pool clamps paybackAmount to userVariableDebt exactly. Any unspent input is returned through the residual port. */\nexport interface AaveRepayArgs {\n readonly bind: {\n readonly assetIn: Bindable<'resource'>;\n readonly onBehalfOf: Bindable<'address'>;\n };\n readonly config: AaveRepayConfig;\n readonly guards?: readonly TypedGuard<'actualRepaid' | 'residual'>[];\n}\n\n/** Repay an Aave v3 variable-rate debt by burning the caller's aToken balance, returning any unspent residual */\nexport interface AaveRepayWithATokensArgs {\n readonly bind: {\n readonly aTokenIn: Bindable<'resource'>;\n };\n readonly config: AaveRepayWithATokensConfig;\n readonly guards?: readonly TypedGuard<'actualRepaid' | 'residual'>[];\n}\n\n/** Claim a specific Aave v3 incentives reward token against a set of receipt-token positions, exposing the claimed amount as a Resource */\nexport interface AaveClaimRewardsArgs {\n readonly bind: Record<string, never>;\n readonly config: AaveClaimRewardsConfig;\n readonly guards?: readonly TypedGuard<'claimedAmount'>[];\n}\n\n/** Switch the executionAddress's Aave v3 eMode category. 0 disables eMode. The pool reverts if the switch would make the position unhealthy or if any open borrow is for an asset outside the target category. */\nexport interface AaveSetEModeArgs {\n readonly bind: Record<string, never>;\n readonly config: AaveSetEModeConfig;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Deposit the collateral asset of a Morpho Blue market on behalf of the execution proxy. mode: 'exact' pulls the input handle's amount. mode: 'all' reads the proxy's current ERC20 balance of the market's collateral token and pulls that amount, ignoring the input handle's literal value — note this pulls the proxy's total balance (including unrelated upstream residuals), not just the input port's delivery. Credits Position.collateral on the Morpho singleton; emits no return value and exposes no resource output (the collateral is non-transferable accounting state). */\nexport interface MorphoBlueSupplyCollateralArgs {\n readonly bind: {\n readonly assetIn: Bindable<'resource'>;\n };\n readonly config: MorphoBlueSupplyCollateralConfig;\n readonly guards?: readonly TypedGuard<never>[];\n}\n\n/** Withdraw collateral from a Morpho Blue market position to the receiver address. Exposes the withdrawn ERC20 amount as a Resource output. */\nexport interface MorphoBlueWithdrawCollateralArgs {\n readonly bind: Record<string, never>;\n readonly config: MorphoBlueWithdrawCollateralConfig;\n readonly guards?: readonly TypedGuard<'collateralWithdrawn'>[];\n}\n\n/** Route tokens into a DeFi protocol position via the edge catalog */\nexport interface LifiZapArgs {\n readonly bind: {\n readonly amountIn: Bindable<'resource'>;\n };\n readonly config: LifiZapConfig;\n readonly guards?: readonly TypedGuard<'amountOut'>[];\n}\n\n/** Exact-output (BUY) swap via the Paraswap/Velora Market API: produce exactly `exactAmountOut` of the destination token, pulling only the source needed and exposing the genuinely-unspent source as `unspentIn`. */\nexport interface ParaswapBuyArgs {\n readonly bind: {\n readonly amountIn: Bindable<'resource'>;\n };\n readonly config: ParaswapBuyConfig;\n readonly guards?: readonly TypedGuard<'unspentIn'>[];\n}\n\n/** Read a smart contract value at compile time (off-chain eth_call); result is baked as a literal */\nexport interface CorePeekArgs {\n readonly bind: Record<string, never>;\n readonly config: CorePeekConfig;\n readonly guards?: readonly TypedGuard<'result'>[];\n}\n\nexport interface CoreSplitOutputs {\n readonly a: OutputHandle<'resource'>;\n readonly b: OutputHandle<'resource'>;\n}\n\nexport interface CoreMergeOutputs {\n readonly merged: OutputHandle<'resource'>;\n}\n\nexport interface LifiSwapOutputs {\n readonly amountOut: OutputHandle<'resource'>;\n readonly unspentIn: OutputHandle<'resource'>;\n}\n\nexport interface CoreAddOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreSubtractOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreMultiplyOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreDivideDownOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreDivideUpOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreBpsDownOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreBpsUpOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreBalanceOfOutputs {\n readonly balance: OutputHandle<'resource'>;\n}\n\nexport interface CoreTransferOutputs {\n readonly transferred: OutputHandle<'resource'>;\n readonly remainder: OutputHandle<'resource'>;\n}\n\nexport interface CoreRawCallOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport interface CoreAsResourceOutputs {\n readonly resource: OutputHandle<'resource'>;\n}\n\nexport interface AaveBorrowOutputs {\n readonly borrowed: OutputHandle<'resource'>;\n readonly debtBalance: OutputHandle<'uint256'>;\n}\n\nexport interface AaveRepayOutputs {\n readonly actualRepaid: OutputHandle<'uint256'>;\n readonly residual: OutputHandle<'resource'>;\n}\n\nexport interface AaveRepayWithATokensOutputs {\n readonly actualRepaid: OutputHandle<'uint256'>;\n readonly residual: OutputHandle<'resource'>;\n}\n\nexport interface AaveClaimRewardsOutputs {\n readonly claimed: OutputHandle<'resource'>;\n readonly claimedAmount: OutputHandle<'uint256'>;\n}\n\nexport interface MorphoBlueWithdrawCollateralOutputs {\n readonly withdrawn: OutputHandle<'resource'>;\n readonly collateralWithdrawn: OutputHandle<'uint256'>;\n}\n\nexport interface LifiZapOutputs {\n readonly amountOut: OutputHandle<'resource'>;\n}\n\nexport interface ParaswapBuyOutputs {\n readonly amountOut: OutputHandle<'resource'>;\n readonly unspentIn: OutputHandle<'resource'>;\n}\n\nexport interface CorePeekOutputs {\n readonly result: OutputHandle<'uint256'>;\n}\n\nexport type GeneratedOps = {\n readonly core: {\n /** Split a resource into two outputs by basis-point ratio — original id: \"core.split\" */\n readonly split: (nodeId: string, args: CoreSplitArgs) => CoreSplitOutputs;\n /** Merge two same-token resources into one by addition — original id: \"core.merge\" */\n readonly merge: (nodeId: string, args: CoreMergeArgs) => CoreMergeOutputs;\n /** Add two unsigned integers (a + b) — original id: \"core.add\" */\n readonly add: (nodeId: string, args: CoreAddArgs) => CoreAddOutputs;\n /** Subtract b from a (a - b); reverts on underflow — original id: \"core.subtract\" */\n readonly subtract: (\n nodeId: string,\n args: CoreSubtractArgs,\n ) => CoreSubtractOutputs;\n /** Multiply two unsigned integers (a * b) — original id: \"core.multiply\" */\n readonly multiply: (\n nodeId: string,\n args: CoreMultiplyArgs,\n ) => CoreMultiplyOutputs;\n /** Divide a by b, rounding toward zero — original id: \"core.divideDown\" */\n readonly divideDown: (\n nodeId: string,\n args: CoreDivideDownArgs,\n ) => CoreDivideDownOutputs;\n /** Divide a by b, rounding away from zero — original id: \"core.divideUp\" */\n readonly divideUp: (\n nodeId: string,\n args: CoreDivideUpArgs,\n ) => CoreDivideUpOutputs;\n /** Multiply value by basis points and divide by 10000, rounding down — original id: \"core.bpsDown\" */\n readonly bpsDown: (\n nodeId: string,\n args: CoreBpsDownArgs,\n ) => CoreBpsDownOutputs;\n /** Multiply value by basis points and divide by 10000, rounding up — original id: \"core.bpsUp\" */\n readonly bpsUp: (nodeId: string, args: CoreBpsUpArgs) => CoreBpsUpOutputs;\n /** Assert a == b; reverts if not equal — original id: \"core.assertEqual\" */\n readonly assertEqual: (nodeId: string, args: CoreAssertEqualArgs) => void;\n /** Assert a != b; reverts if equal — original id: \"core.assertNotEqual\" */\n readonly assertNotEqual: (\n nodeId: string,\n args: CoreAssertNotEqualArgs,\n ) => void;\n /** Assert a > b; reverts if a <= b — original id: \"core.assertGt\" */\n readonly assertGt: (nodeId: string, args: CoreAssertGtArgs) => void;\n /** Assert a >= b; reverts if a < b — original id: \"core.assertGte\" */\n readonly assertGte: (nodeId: string, args: CoreAssertGteArgs) => void;\n /** Assert a < b; reverts if a >= b — original id: \"core.assertLt\" */\n readonly assertLt: (nodeId: string, args: CoreAssertLtArgs) => void;\n /** Assert a <= b; reverts if a > b — original id: \"core.assertLte\" */\n readonly assertLte: (nodeId: string, args: CoreAssertLteArgs) => void;\n /** Assert min <= value <= max; reverts if value is outside the range — original id: \"core.assertInRange\" */\n readonly assertInRange: (\n nodeId: string,\n args: CoreAssertInRangeArgs,\n ) => void;\n /** Approve an ERC20 spender for the given token and amount — original id: \"core.approve\" */\n readonly approve: (nodeId: string, args: CoreApproveArgs) => void;\n /** Read an ERC20 balance, producing a resource — original id: \"core.balanceOf\" */\n readonly balanceOf: (\n nodeId: string,\n args: CoreBalanceOfArgs,\n ) => CoreBalanceOfOutputs;\n /** Transfer tokens to a recipient address, optionally specifying a partial amount — original id: \"core.transfer\" */\n readonly transfer: (\n nodeId: string,\n args: CoreTransferArgs,\n ) => CoreTransferOutputs;\n /** Emit a custom on-chain event carrying 1 32-byte payload value. The value becomes a non-indexed data word in a fixed VM log event; the signature is hashed into a discriminator word (it is NOT an indexed EVM topic). — original id: \"core.emitEvent1\" */\n readonly emitEvent1: (nodeId: string, args: CoreEmitEvent1Args) => void;\n /** Emit a custom on-chain event carrying 2 32-byte payload values. The values become non-indexed data words in a fixed VM log event; the signature is hashed into a discriminator word (it is NOT an indexed EVM topic). — original id: \"core.emitEvent2\" */\n readonly emitEvent2: (nodeId: string, args: CoreEmitEvent2Args) => void;\n /** Emit a custom on-chain event carrying 3 32-byte payload values. The values become non-indexed data words in a fixed VM log event; the signature is hashed into a discriminator word (it is NOT an indexed EVM topic). — original id: \"core.emitEvent3\" */\n readonly emitEvent3: (nodeId: string, args: CoreEmitEvent3Args) => void;\n /** Emit a custom on-chain event carrying 4 32-byte payload values. The values become non-indexed data words in a fixed VM log event; the signature is hashed into a discriminator word (it is NOT an indexed EVM topic). — original id: \"core.emitEvent4\" */\n readonly emitEvent4: (nodeId: string, args: CoreEmitEvent4Args) => void;\n /** Invoke a smart contract function, optionally spending a token resource — original id: \"core.call\" */\n readonly call: <TSig extends string>(\n nodeId: string,\n args: CoreCallArgs<TSig>,\n ) => CoreCallResult<TSig>;\n /** Read from a smart contract at runtime (StaticCall); result is fresh at execution time — original id: \"core.staticCall\" */\n readonly staticCall: <TSig extends string>(\n nodeId: string,\n args: CoreStaticCallArgs<TSig>,\n ) => StaticCallResult<TSig>;\n /** Invoke a contract with pre-encoded calldata — original id: \"core.rawCall\" */\n readonly rawCall: (\n nodeId: string,\n args: CoreRawCallArgs,\n ) => CoreRawCallOutputs;\n /** Graduate a raw handle to a resource, enabling slippage surfacing and linearity tracking — original id: \"core.asResource\" */\n readonly asResource: (\n nodeId: string,\n args: CoreAsResourceArgs,\n ) => CoreAsResourceOutputs;\n /** Read a smart contract value at compile time (off-chain eth_call); result is baked as a literal — original id: \"core.peek\" */\n readonly peek: (nodeId: string, args: CorePeekArgs) => CorePeekOutputs;\n };\n readonly lifi: {\n /** Swap tokens via the LI.FI aggregator API — original id: \"lifi.swap\" */\n readonly swap: (nodeId: string, args: LifiSwapArgs) => LifiSwapOutputs;\n /** Route tokens into a DeFi protocol position via the edge catalog — original id: \"lifi.zap\" */\n readonly zap: (nodeId: string, args: LifiZapArgs) => LifiZapOutputs;\n };\n readonly invariant: {\n /** Assert that an account holds at least a minimum token balance — original id: \"invariant.balanceAtLeast\" */\n readonly balanceAtLeast: (\n nodeId: string,\n args: InvariantBalanceAtLeastArgs,\n ) => void;\n /** Assert that an account holds exactly an expected token balance — original id: \"invariant.balanceEquals\" */\n readonly balanceEquals: (\n nodeId: string,\n args: InvariantBalanceEqualsArgs,\n ) => void;\n /** Assert that an account holds at most a maximum token balance — original id: \"invariant.balanceAtMost\" */\n readonly balanceAtMost: (\n nodeId: string,\n args: InvariantBalanceAtMostArgs,\n ) => void;\n /** Assert that an account's token balance is between a minimum and a maximum (inclusive) — original id: \"invariant.balanceInRange\" */\n readonly balanceInRange: (\n nodeId: string,\n args: InvariantBalanceInRangeArgs,\n ) => void;\n /** Assert that a spender is permitted to move at least a minimum allowance on behalf of an owner — original id: \"invariant.allowanceAtLeast\" */\n readonly allowanceAtLeast: (\n nodeId: string,\n args: InvariantAllowanceAtLeastArgs,\n ) => void;\n /** Assert that a spender's allowance on behalf of an owner exactly equals an expected amount — original id: \"invariant.allowanceEquals\" */\n readonly allowanceEquals: (\n nodeId: string,\n args: InvariantAllowanceEqualsArgs,\n ) => void;\n /** Assert that a spender is permitted to move at most a maximum allowance on behalf of an owner — original id: \"invariant.allowanceAtMost\" */\n readonly allowanceAtMost: (\n nodeId: string,\n args: InvariantAllowanceAtMostArgs,\n ) => void;\n /** Assert that a spender's allowance on behalf of an owner is between a minimum and a maximum (inclusive) — original id: \"invariant.allowanceInRange\" */\n readonly allowanceInRange: (\n nodeId: string,\n args: InvariantAllowanceInRangeArgs,\n ) => void;\n /** Assert a uint256 value satisfies a comparison against a constant threshold; reverts on violation — original id: \"invariant.numeric\" */\n readonly numeric: (nodeId: string, args: InvariantNumericArgs) => void;\n /** Assert min <= value <= max against constant bounds; reverts if outside the range — original id: \"invariant.numericInRange\" */\n readonly numericInRange: (\n nodeId: string,\n args: InvariantNumericInRangeArgs,\n ) => void;\n };\n readonly aave: {\n /** Borrow an asset from an Aave v3 pool against existing collateral, exposing the borrowed asset as a Resource — original id: \"aave.borrow\" */\n readonly borrow: (\n nodeId: string,\n args: AaveBorrowArgs,\n ) => AaveBorrowOutputs;\n /** Repay an Aave v3 variable-rate debt position with the supplied asset. mode: 'exact' passes the input handle amount; mode: 'max' passes type(uint256).max so Aave's Pool clamps paybackAmount to userVariableDebt exactly. Any unspent input is returned through the residual port. — original id: \"aave.repay\" */\n readonly repay: (nodeId: string, args: AaveRepayArgs) => AaveRepayOutputs;\n /** Repay an Aave v3 variable-rate debt by burning the caller's aToken balance, returning any unspent residual — original id: \"aave.repayWithATokens\" */\n readonly repayWithATokens: (\n nodeId: string,\n args: AaveRepayWithATokensArgs,\n ) => AaveRepayWithATokensOutputs;\n /** Claim a specific Aave v3 incentives reward token against a set of receipt-token positions, exposing the claimed amount as a Resource — original id: \"aave.claimRewards\" */\n readonly claimRewards: (\n nodeId: string,\n args: AaveClaimRewardsArgs,\n ) => AaveClaimRewardsOutputs;\n /** Switch the executionAddress's Aave v3 eMode category. 0 disables eMode. The pool reverts if the switch would make the position unhealthy or if any open borrow is for an asset outside the target category. — original id: \"aave.setEMode\" */\n readonly setEMode: (nodeId: string, args: AaveSetEModeArgs) => void;\n };\n readonly morphoBlue: {\n /** Deposit the collateral asset of a Morpho Blue market on behalf of the execution proxy. mode: 'exact' pulls the input handle's amount. mode: 'all' reads the proxy's current ERC20 balance of the market's collateral token and pulls that amount, ignoring the input handle's literal value — note this pulls the proxy's total balance (including unrelated upstream residuals), not just the input port's delivery. Credits Position.collateral on the Morpho singleton; emits no return value and exposes no resource output (the collateral is non-transferable accounting state). — original id: \"morphoBlue.supplyCollateral\" */\n readonly supplyCollateral: (\n nodeId: string,\n args: MorphoBlueSupplyCollateralArgs,\n ) => void;\n /** Withdraw collateral from a Morpho Blue market position to the receiver address. Exposes the withdrawn ERC20 amount as a Resource output. — original id: \"morphoBlue.withdrawCollateral\" */\n readonly withdrawCollateral: (\n nodeId: string,\n args: MorphoBlueWithdrawCollateralArgs,\n ) => MorphoBlueWithdrawCollateralOutputs;\n };\n readonly paraswap: {\n /** Exact-output (BUY) swap via the Paraswap/Velora Market API: produce exactly `exactAmountOut` of the destination token, pulling only the source needed and exposing the genuinely-unspent source as `unspentIn`. — original id: \"paraswap.buy\" */\n readonly buy: (nodeId: string, args: ParaswapBuyArgs) => ParaswapBuyOutputs;\n };\n};\n\nexport const bindGeneratedOps = (\n builder: FlowBuilderInternal,\n): GeneratedOps => ({\n core: {\n split: (nodeId: string, args: CoreSplitArgs) =>\n builder.call(nodeId, 'core.split', args, {\n a: 'resource',\n b: 'resource',\n } as const),\n merge: (nodeId: string, args: CoreMergeArgs) =>\n builder.call(nodeId, 'core.merge', { ...args, config: {} }, {\n merged: 'resource',\n } as const),\n add: (nodeId: string, args: CoreAddArgs) =>\n builder.call(nodeId, 'core.add', { ...args, config: {} }, {\n result: 'uint256',\n } as const),\n subtract: (nodeId: string, args: CoreSubtractArgs) =>\n builder.call(nodeId, 'core.subtract', { ...args, config: {} }, {\n result: 'uint256',\n } as const),\n multiply: (nodeId: string, args: CoreMultiplyArgs) =>\n builder.call(nodeId, 'core.multiply', { ...args, config: {} }, {\n result: 'uint256',\n } as const),\n divideDown: (nodeId: string, args: CoreDivideDownArgs) =>\n builder.call(nodeId, 'core.divideDown', { ...args, config: {} }, {\n result: 'uint256',\n } as const),\n divideUp: (nodeId: string, args: CoreDivideUpArgs) =>\n builder.call(nodeId, 'core.divideUp', { ...args, config: {} }, {\n result: 'uint256',\n } as const),\n bpsDown: (nodeId: string, args: CoreBpsDownArgs) =>\n builder.call(nodeId, 'core.bpsDown', args, {\n result: 'uint256',\n } as const),\n bpsUp: (nodeId: string, args: CoreBpsUpArgs) =>\n builder.call(nodeId, 'core.bpsUp', args, { result: 'uint256' } as const),\n assertEqual: (nodeId: string, args: CoreAssertEqualArgs) =>\n builder.call(nodeId, 'core.assertEqual', { ...args, config: {} }, {}),\n assertNotEqual: (nodeId: string, args: CoreAssertNotEqualArgs) =>\n builder.call(nodeId, 'core.assertNotEqual', { ...args, config: {} }, {}),\n assertGt: (nodeId: string, args: CoreAssertGtArgs) =>\n builder.call(nodeId, 'core.assertGt', { ...args, config: {} }, {}),\n assertGte: (nodeId: string, args: CoreAssertGteArgs) =>\n builder.call(nodeId, 'core.assertGte', { ...args, config: {} }, {}),\n assertLt: (nodeId: string, args: CoreAssertLtArgs) =>\n builder.call(nodeId, 'core.assertLt', { ...args, config: {} }, {}),\n assertLte: (nodeId: string, args: CoreAssertLteArgs) =>\n builder.call(nodeId, 'core.assertLte', { ...args, config: {} }, {}),\n assertInRange: (nodeId: string, args: CoreAssertInRangeArgs) =>\n builder.call(nodeId, 'core.assertInRange', { ...args, config: {} }, {}),\n approve: (nodeId: string, args: CoreApproveArgs) =>\n builder.call(nodeId, 'core.approve', args, {}),\n balanceOf: (nodeId: string, args: CoreBalanceOfArgs) =>\n builder.call(nodeId, 'core.balanceOf', args, {\n balance: 'resource',\n } as const),\n transfer: (nodeId: string, args: CoreTransferArgs) =>\n builder.call(nodeId, 'core.transfer', args, {\n transferred: 'resource',\n remainder: 'resource',\n } as const),\n emitEvent1: (nodeId: string, args: CoreEmitEvent1Args) =>\n builder.call(nodeId, 'core.emitEvent1', args, {}),\n emitEvent2: (nodeId: string, args: CoreEmitEvent2Args) =>\n builder.call(nodeId, 'core.emitEvent2', args, {}),\n emitEvent3: (nodeId: string, args: CoreEmitEvent3Args) =>\n builder.call(nodeId, 'core.emitEvent3', args, {}),\n emitEvent4: (nodeId: string, args: CoreEmitEvent4Args) =>\n builder.call(nodeId, 'core.emitEvent4', args, {}),\n call: <TSig extends string>(nodeId: string, args: CoreCallArgs<TSig>) => {\n const wire = buildCallWireFormat({\n resource: args.resource,\n bind: args.bind as Record<string, AnyBindable>,\n config: args.config as Record<string, unknown>,\n guards: args.guards,\n });\n return builder.call(nodeId, wire.op, wire, {\n result: 'uint256',\n } as const) as unknown as CoreCallResult<TSig>;\n },\n staticCall: <TSig extends string>(\n nodeId: string,\n args: CoreStaticCallArgs<TSig>,\n ) =>\n builder.call(\n nodeId,\n 'core.staticCall',\n buildStaticCallWireFormat({\n bind: args.bind as Record<string, AnyBindable>,\n config: args.config as Record<string, unknown>,\n guards: args.guards,\n }),\n { result: 'uint256' } as const,\n ) as unknown as StaticCallResult<TSig>,\n rawCall: (nodeId: string, args: CoreRawCallArgs) =>\n builder.call(nodeId, 'core.rawCall', args, {\n result: 'uint256',\n } as const),\n asResource: (nodeId: string, args: CoreAsResourceArgs) =>\n builder.call(nodeId, 'core.asResource', args, {\n resource: 'resource',\n } as const),\n peek: (nodeId: string, args: CorePeekArgs) =>\n builder.call(nodeId, 'core.peek', args, { result: 'uint256' } as const),\n },\n lifi: {\n swap: (nodeId: string, args: LifiSwapArgs) =>\n builder.call(nodeId, 'lifi.swap', args, {\n amountOut: 'resource',\n unspentIn: 'resource',\n } as const),\n zap: (nodeId: string, args: LifiZapArgs) =>\n builder.call(nodeId, 'lifi.zap', args, {\n amountOut: 'resource',\n } as const),\n },\n invariant: {\n balanceAtLeast: (nodeId: string, args: InvariantBalanceAtLeastArgs) =>\n builder.call(\n nodeId,\n 'invariant.balanceAtLeast',\n { ...args, config: {} },\n {},\n ),\n balanceEquals: (nodeId: string, args: InvariantBalanceEqualsArgs) =>\n builder.call(\n nodeId,\n 'invariant.balanceEquals',\n { ...args, config: {} },\n {},\n ),\n balanceAtMost: (nodeId: string, args: InvariantBalanceAtMostArgs) =>\n builder.call(\n nodeId,\n 'invariant.balanceAtMost',\n { ...args, config: {} },\n {},\n ),\n balanceInRange: (nodeId: string, args: InvariantBalanceInRangeArgs) =>\n builder.call(\n nodeId,\n 'invariant.balanceInRange',\n { ...args, config: {} },\n {},\n ),\n allowanceAtLeast: (nodeId: string, args: InvariantAllowanceAtLeastArgs) =>\n builder.call(\n nodeId,\n 'invariant.allowanceAtLeast',\n { ...args, config: {} },\n {},\n ),\n allowanceEquals: (nodeId: string, args: InvariantAllowanceEqualsArgs) =>\n builder.call(\n nodeId,\n 'invariant.allowanceEquals',\n { ...args, config: {} },\n {},\n ),\n allowanceAtMost: (nodeId: string, args: InvariantAllowanceAtMostArgs) =>\n builder.call(\n nodeId,\n 'invariant.allowanceAtMost',\n { ...args, config: {} },\n {},\n ),\n allowanceInRange: (nodeId: string, args: InvariantAllowanceInRangeArgs) =>\n builder.call(\n nodeId,\n 'invariant.allowanceInRange',\n { ...args, config: {} },\n {},\n ),\n numeric: (nodeId: string, args: InvariantNumericArgs) =>\n builder.call(nodeId, 'invariant.numeric', args, {}),\n numericInRange: (nodeId: string, args: InvariantNumericInRangeArgs) =>\n builder.call(nodeId, 'invariant.numericInRange', args, {}),\n },\n aave: {\n borrow: (nodeId: string, args: AaveBorrowArgs) =>\n builder.call(nodeId, 'aave.borrow', args, {\n borrowed: 'resource',\n debtBalance: 'uint256',\n } as const),\n repay: (nodeId: string, args: AaveRepayArgs) =>\n builder.call(nodeId, 'aave.repay', args, {\n actualRepaid: 'uint256',\n residual: 'resource',\n } as const),\n repayWithATokens: (nodeId: string, args: AaveRepayWithATokensArgs) =>\n builder.call(nodeId, 'aave.repayWithATokens', args, {\n actualRepaid: 'uint256',\n residual: 'resource',\n } as const),\n claimRewards: (nodeId: string, args: AaveClaimRewardsArgs) =>\n builder.call(nodeId, 'aave.claimRewards', args, {\n claimed: 'resource',\n claimedAmount: 'uint256',\n } as const),\n setEMode: (nodeId: string, args: AaveSetEModeArgs) =>\n builder.call(nodeId, 'aave.setEMode', args, {}),\n },\n morphoBlue: {\n supplyCollateral: (nodeId: string, args: MorphoBlueSupplyCollateralArgs) =>\n builder.call(nodeId, 'morphoBlue.supplyCollateral', args, {}),\n withdrawCollateral: (\n nodeId: string,\n args: MorphoBlueWithdrawCollateralArgs,\n ) =>\n builder.call(nodeId, 'morphoBlue.withdrawCollateral', args, {\n withdrawn: 'resource',\n collateralWithdrawn: 'uint256',\n } as const),\n },\n paraswap: {\n buy: (nodeId: string, args: ParaswapBuyArgs) =>\n builder.call(nodeId, 'paraswap.buy', args, {\n amountOut: 'resource',\n unspentIn: 'resource',\n } as const),\n },\n});\n"],"mappings":"AAaA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAovBA,MAAM,mBAAmB,CAC9B,aACkB;AAAA,EAClB,MAAM;AAAA,IACJ,OAAO,CAAC,QAAgB,SACtB,QAAQ,KAAK,QAAQ,cAAc,MAAM;AAAA,MACvC,GAAG;AAAA,MACH,GAAG;AAAA,IACL,CAAU;AAAA,IACZ,OAAO,CAAC,QAAgB,SACtB,QAAQ,KAAK,QAAQ,cAAc,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG;AAAA,MAC1D,QAAQ;AAAA,IACV,CAAU;AAAA,IACZ,KAAK,CAAC,QAAgB,SACpB,QAAQ,KAAK,QAAQ,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG;AAAA,MACxD,QAAQ;AAAA,IACV,CAAU;AAAA,IACZ,UAAU,CAAC,QAAgB,SACzB,QAAQ,KAAK,QAAQ,iBAAiB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG;AAAA,MAC7D,QAAQ;AAAA,IACV,CAAU;AAAA,IACZ,UAAU,CAAC,QAAgB,SACzB,QAAQ,KAAK,QAAQ,iBAAiB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG;AAAA,MAC7D,QAAQ;AAAA,IACV,CAAU;AAAA,IACZ,YAAY,CAAC,QAAgB,SAC3B,QAAQ,KAAK,QAAQ,mBAAmB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG;AAAA,MAC/D,QAAQ;AAAA,IACV,CAAU;AAAA,IACZ,UAAU,CAAC,QAAgB,SACzB,QAAQ,KAAK,QAAQ,iBAAiB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG;AAAA,MAC7D,QAAQ;AAAA,IACV,CAAU;AAAA,IACZ,SAAS,CAAC,QAAgB,SACxB,QAAQ,KAAK,QAAQ,gBAAgB,MAAM;AAAA,MACzC,QAAQ;AAAA,IACV,CAAU;AAAA,IACZ,OAAO,CAAC,QAAgB,SACtB,QAAQ,KAAK,QAAQ,cAAc,MAAM,EAAE,QAAQ,UAAU,CAAU;AAAA,IACzE,aAAa,CAAC,QAAgB,SAC5B,QAAQ,KAAK,QAAQ,oBAAoB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;AAAA,IACtE,gBAAgB,CAAC,QAAgB,SAC/B,QAAQ,KAAK,QAAQ,uBAAuB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;AAAA,IACzE,UAAU,CAAC,QAAgB,SACzB,QAAQ,KAAK,QAAQ,iBAAiB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;AAAA,IACnE,WAAW,CAAC,QAAgB,SAC1B,QAAQ,KAAK,QAAQ,kBAAkB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;AAAA,IACpE,UAAU,CAAC,QAAgB,SACzB,QAAQ,KAAK,QAAQ,iBAAiB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;AAAA,IACnE,WAAW,CAAC,QAAgB,SAC1B,QAAQ,KAAK,QAAQ,kBAAkB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;AAAA,IACpE,eAAe,CAAC,QAAgB,SAC9B,QAAQ,KAAK,QAAQ,sBAAsB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;AAAA,IACxE,SAAS,CAAC,QAAgB,SACxB,QAAQ,KAAK,QAAQ,gBAAgB,MAAM,CAAC,CAAC;AAAA,IAC/C,WAAW,CAAC,QAAgB,SAC1B,QAAQ,KAAK,QAAQ,kBAAkB,MAAM;AAAA,MAC3C,SAAS;AAAA,IACX,CAAU;AAAA,IACZ,UAAU,CAAC,QAAgB,SACzB,QAAQ,KAAK,QAAQ,iBAAiB,MAAM;AAAA,MAC1C,aAAa;AAAA,MACb,WAAW;AAAA,IACb,CAAU;AAAA,IACZ,YAAY,CAAC,QAAgB,SAC3B,QAAQ,KAAK,QAAQ,mBAAmB,MAAM,CAAC,CAAC;AAAA,IAClD,YAAY,CAAC,QAAgB,SAC3B,QAAQ,KAAK,QAAQ,mBAAmB,MAAM,CAAC,CAAC;AAAA,IAClD,YAAY,CAAC,QAAgB,SAC3B,QAAQ,KAAK,QAAQ,mBAAmB,MAAM,CAAC,CAAC;AAAA,IAClD,YAAY,CAAC,QAAgB,SAC3B,QAAQ,KAAK,QAAQ,mBAAmB,MAAM,CAAC,CAAC;AAAA,IAClD,MAAM,CAAsB,QAAgB,SAA6B;AACvE,YAAM,OAAO,oBAAoB;AAAA,QAC/B,UAAU,KAAK;AAAA,QACf,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK;AAAA,QACb,QAAQ,KAAK;AAAA,MACf,CAAC;AACD,aAAO,QAAQ,KAAK,QAAQ,KAAK,IAAI,MAAM;AAAA,QACzC,QAAQ;AAAA,MACV,CAAU;AAAA,IACZ;AAAA,IACA,YAAY,CACV,QACA,SAEA,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,0BAA0B;AAAA,QACxB,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK;AAAA,QACb,QAAQ,KAAK;AAAA,MACf,CAAC;AAAA,MACD,EAAE,QAAQ,UAAU;AAAA,IACtB;AAAA,IACF,SAAS,CAAC,QAAgB,SACxB,QAAQ,KAAK,QAAQ,gBAAgB,MAAM;AAAA,MACzC,QAAQ;AAAA,IACV,CAAU;AAAA,IACZ,YAAY,CAAC,QAAgB,SAC3B,QAAQ,KAAK,QAAQ,mBAAmB,MAAM;AAAA,MAC5C,UAAU;AAAA,IACZ,CAAU;AAAA,IACZ,MAAM,CAAC,QAAgB,SACrB,QAAQ,KAAK,QAAQ,aAAa,MAAM,EAAE,QAAQ,UAAU,CAAU;AAAA,EAC1E;AAAA,EACA,MAAM;AAAA,IACJ,MAAM,CAAC,QAAgB,SACrB,QAAQ,KAAK,QAAQ,aAAa,MAAM;AAAA,MACtC,WAAW;AAAA,MACX,WAAW;AAAA,IACb,CAAU;AAAA,IACZ,KAAK,CAAC,QAAgB,SACpB,QAAQ,KAAK,QAAQ,YAAY,MAAM;AAAA,MACrC,WAAW;AAAA,IACb,CAAU;AAAA,EACd;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB,CAAC,QAAgB,SAC/B,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACF,eAAe,CAAC,QAAgB,SAC9B,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACF,eAAe,CAAC,QAAgB,SAC9B,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACF,gBAAgB,CAAC,QAAgB,SAC/B,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACF,kBAAkB,CAAC,QAAgB,SACjC,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACF,iBAAiB,CAAC,QAAgB,SAChC,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACF,iBAAiB,CAAC,QAAgB,SAChC,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACF,kBAAkB,CAAC,QAAgB,SACjC,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACF,SAAS,CAAC,QAAgB,SACxB,QAAQ,KAAK,QAAQ,qBAAqB,MAAM,CAAC,CAAC;AAAA,IACpD,gBAAgB,CAAC,QAAgB,SAC/B,QAAQ,KAAK,QAAQ,4BAA4B,MAAM,CAAC,CAAC;AAAA,EAC7D;AAAA,EACA,MAAM;AAAA,IACJ,QAAQ,CAAC,QAAgB,SACvB,QAAQ,KAAK,QAAQ,eAAe,MAAM;AAAA,MACxC,UAAU;AAAA,MACV,aAAa;AAAA,IACf,CAAU;AAAA,IACZ,OAAO,CAAC,QAAgB,SACtB,QAAQ,KAAK,QAAQ,cAAc,MAAM;AAAA,MACvC,cAAc;AAAA,MACd,UAAU;AAAA,IACZ,CAAU;AAAA,IACZ,kBAAkB,CAAC,QAAgB,SACjC,QAAQ,KAAK,QAAQ,yBAAyB,MAAM;AAAA,MAClD,cAAc;AAAA,MACd,UAAU;AAAA,IACZ,CAAU;AAAA,IACZ,cAAc,CAAC,QAAgB,SAC7B,QAAQ,KAAK,QAAQ,qBAAqB,MAAM;AAAA,MAC9C,SAAS;AAAA,MACT,eAAe;AAAA,IACjB,CAAU;AAAA,IACZ,UAAU,CAAC,QAAgB,SACzB,QAAQ,KAAK,QAAQ,iBAAiB,MAAM,CAAC,CAAC;AAAA,EAClD;AAAA,EACA,YAAY;AAAA,IACV,kBAAkB,CAAC,QAAgB,SACjC,QAAQ,KAAK,QAAQ,+BAA+B,MAAM,CAAC,CAAC;AAAA,IAC9D,oBAAoB,CAClB,QACA,SAEA,QAAQ,KAAK,QAAQ,iCAAiC,MAAM;AAAA,MAC1D,WAAW;AAAA,MACX,qBAAqB;AAAA,IACvB,CAAU;AAAA,EACd;AAAA,EACA,UAAU;AAAA,IACR,KAAK,CAAC,QAAgB,SACpB,QAAQ,KAAK,QAAQ,gBAAgB,MAAM;AAAA,MACzC,WAAW;AAAA,MACX,WAAW;AAAA,IACb,CAAU;AAAA,EACd;AACF;","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TypedGuard } from './types.js';
|
|
2
|
+
import { CoreNumericInvariantGuardConfig, SlippageGuardConfig } from './generated/config.generated.js';
|
|
3
|
+
|
|
4
|
+
/** Assert that output amounts are within a slippage tolerance in basis points */
|
|
5
|
+
declare const slippage: <P extends string>(config: Omit<SlippageGuardConfig, "port"> & {
|
|
6
|
+
port: P;
|
|
7
|
+
}) => TypedGuard<P>;
|
|
8
|
+
/** 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. */
|
|
9
|
+
declare const coreNumericInvariant: <P extends string>(config: Omit<CoreNumericInvariantGuardConfig, "port"> & {
|
|
10
|
+
port: P;
|
|
11
|
+
}) => TypedGuard<P>;
|
|
12
|
+
|
|
13
|
+
declare const guardsMod_coreNumericInvariant: typeof coreNumericInvariant;
|
|
14
|
+
declare const guardsMod_slippage: typeof slippage;
|
|
15
|
+
declare namespace guardsMod {
|
|
16
|
+
export { guardsMod_coreNumericInvariant as coreNumericInvariant, guardsMod_slippage as slippage };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { coreNumericInvariant as c, guardsMod as g, slippage as s };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TypedGuard } from './types.cjs';
|
|
2
|
+
import { CoreNumericInvariantGuardConfig, SlippageGuardConfig } from './generated/config.generated.cjs';
|
|
3
|
+
|
|
4
|
+
/** Assert that output amounts are within a slippage tolerance in basis points */
|
|
5
|
+
declare const slippage: <P extends string>(config: Omit<SlippageGuardConfig, "port"> & {
|
|
6
|
+
port: P;
|
|
7
|
+
}) => TypedGuard<P>;
|
|
8
|
+
/** 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. */
|
|
9
|
+
declare const coreNumericInvariant: <P extends string>(config: Omit<CoreNumericInvariantGuardConfig, "port"> & {
|
|
10
|
+
port: P;
|
|
11
|
+
}) => TypedGuard<P>;
|
|
12
|
+
|
|
13
|
+
declare const guardsMod_coreNumericInvariant: typeof coreNumericInvariant;
|
|
14
|
+
declare const guardsMod_slippage: typeof slippage;
|
|
15
|
+
declare namespace guardsMod {
|
|
16
|
+
export { guardsMod_coreNumericInvariant as coreNumericInvariant, guardsMod_slippage as slippage };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { coreNumericInvariant as c, guardsMod as g, slippage as s };
|
package/dist/index.d.cts
CHANGED
|
@@ -7,12 +7,12 @@ export { ref } from './authoring/raw.cjs';
|
|
|
7
7
|
export { AnyBindable, FlowOptions, TypedFlow } from './authoring/FlowBuilderCore.cjs';
|
|
8
8
|
export { ComposeRunInput, materialiser } from './run/inputs.cjs';
|
|
9
9
|
export { ComposeSdk, ComposeSdkOptions, FlowBuilder, createComposeSdk } from './sdk.cjs';
|
|
10
|
-
import { g as guardsMod } from './guards.generated-
|
|
11
|
-
import { m as materialisersMod } from './materialisers.generated-
|
|
10
|
+
import { g as guardsMod } from './guards.generated-M3VAIevI.cjs';
|
|
11
|
+
import { m as materialisersMod } from './materialisers.generated-BWq5oePO.cjs';
|
|
12
12
|
import { p as preconditionsMod } from './preconditions.generated-DblS13Wq.cjs';
|
|
13
13
|
import { r as rawMod } from './raw-Dj_2rBSQ.cjs';
|
|
14
14
|
import { r as resourcesMod } from './resources-BKlFxjo8.cjs';
|
|
15
|
-
export { BalanceOfMaterialiserConfig, Between010000, CallMaterialiserConfig, CoreApproveConfig, CoreAsResourceConfig, CoreBalanceOfConfig, CoreBpsDownConfig, CoreBpsUpConfig, CoreCallConfig, CoreInvokeConfig, CorePeekConfig, CoreRawCallConfig, CoreSplitConfig, CoreStaticCallConfig, CoreTransferConfig, DirectDepositMaterialiserConfig, Erc20AllowancePreconditionConfig, Erc20BalancePreconditionConfig, LifiSwapConfig, LifiZapConfig, NativeBalancePreconditionConfig, Positive, SlippageGuardConfig, Unknown } from './generated/config.generated.cjs';
|
|
15
|
+
export { 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 } from './generated/config.generated.cjs';
|
|
16
16
|
import './client.cjs';
|
|
17
17
|
import './generated/operations.generated.cjs';
|
|
18
18
|
import './authoring/signatureArgs.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -7,12 +7,12 @@ export { ref } from './authoring/raw.js';
|
|
|
7
7
|
export { AnyBindable, FlowOptions, TypedFlow } from './authoring/FlowBuilderCore.js';
|
|
8
8
|
export { ComposeRunInput, materialiser } from './run/inputs.js';
|
|
9
9
|
export { ComposeSdk, ComposeSdkOptions, FlowBuilder, createComposeSdk } from './sdk.js';
|
|
10
|
-
import { g as guardsMod } from './guards.generated-
|
|
11
|
-
import { m as materialisersMod } from './materialisers.generated-
|
|
10
|
+
import { g as guardsMod } from './guards.generated-BPLFwe7y.js';
|
|
11
|
+
import { m as materialisersMod } from './materialisers.generated-BMkBQgWZ.js';
|
|
12
12
|
import { p as preconditionsMod } from './preconditions.generated-U7YpVh30.js';
|
|
13
13
|
import { r as rawMod } from './raw-IxCF_bSS.js';
|
|
14
14
|
import { r as resourcesMod } from './resources-CYis1_DS.js';
|
|
15
|
-
export { BalanceOfMaterialiserConfig, Between010000, CallMaterialiserConfig, CoreApproveConfig, CoreAsResourceConfig, CoreBalanceOfConfig, CoreBpsDownConfig, CoreBpsUpConfig, CoreCallConfig, CoreInvokeConfig, CorePeekConfig, CoreRawCallConfig, CoreSplitConfig, CoreStaticCallConfig, CoreTransferConfig, DirectDepositMaterialiserConfig, Erc20AllowancePreconditionConfig, Erc20BalancePreconditionConfig, LifiSwapConfig, LifiZapConfig, NativeBalancePreconditionConfig, Positive, SlippageGuardConfig, Unknown } from './generated/config.generated.js';
|
|
15
|
+
export { 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 } from './generated/config.generated.js';
|
|
16
16
|
import './client.js';
|
|
17
17
|
import './generated/operations.generated.js';
|
|
18
18
|
import './authoring/signatureArgs.js';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MaterialiserConfigOf, MaterialiserInput } from '@lifi/compose-spec';
|
|
2
|
+
import { BalanceOfMaterialiserConfig as BalanceOfMaterialiserConfig$1, CallMaterialiserConfig as CallMaterialiserConfig$1, DirectDepositMaterialiserConfig as DirectDepositMaterialiserConfig$1 } from './generated/config.generated.js';
|
|
3
|
+
|
|
4
|
+
type BalanceOfMaterialiserConfig = MaterialiserConfigOf<BalanceOfMaterialiserConfig$1>;
|
|
5
|
+
/** Read the on-chain token balance of an address as the input amount — accepts: resource */
|
|
6
|
+
declare const balanceOf: (config: BalanceOfMaterialiserConfig) => MaterialiserInput;
|
|
7
|
+
type DirectDepositMaterialiserConfig = MaterialiserConfigOf<DirectDepositMaterialiserConfig$1>;
|
|
8
|
+
/** Deposit tokens into the VM — native via msg.value, ERC-20 via transferFrom — accepts: resource */
|
|
9
|
+
declare const directDeposit: (config: DirectDepositMaterialiserConfig) => MaterialiserInput;
|
|
10
|
+
type CallMaterialiserConfig = MaterialiserConfigOf<CallMaterialiserConfig$1>;
|
|
11
|
+
/** Execute an arbitrary contract call and measure the resulting token balance diff — accepts: resource */
|
|
12
|
+
declare const call: (config: CallMaterialiserConfig) => MaterialiserInput;
|
|
13
|
+
|
|
14
|
+
type materialisersMod_BalanceOfMaterialiserConfig = BalanceOfMaterialiserConfig;
|
|
15
|
+
type materialisersMod_CallMaterialiserConfig = CallMaterialiserConfig;
|
|
16
|
+
type materialisersMod_DirectDepositMaterialiserConfig = DirectDepositMaterialiserConfig;
|
|
17
|
+
declare const materialisersMod_balanceOf: typeof balanceOf;
|
|
18
|
+
declare const materialisersMod_call: typeof call;
|
|
19
|
+
declare const materialisersMod_directDeposit: typeof directDeposit;
|
|
20
|
+
declare namespace materialisersMod {
|
|
21
|
+
export { type materialisersMod_BalanceOfMaterialiserConfig as BalanceOfMaterialiserConfig, type materialisersMod_CallMaterialiserConfig as CallMaterialiserConfig, type materialisersMod_DirectDepositMaterialiserConfig as DirectDepositMaterialiserConfig, materialisersMod_balanceOf as balanceOf, materialisersMod_call as call, materialisersMod_directDeposit as directDeposit };
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { type BalanceOfMaterialiserConfig as B, type CallMaterialiserConfig as C, type DirectDepositMaterialiserConfig as D, balanceOf as b, call as c, directDeposit as d, materialisersMod as m };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MaterialiserConfigOf, MaterialiserInput } from '@lifi/compose-spec';
|
|
2
|
+
import { BalanceOfMaterialiserConfig as BalanceOfMaterialiserConfig$1, CallMaterialiserConfig as CallMaterialiserConfig$1, DirectDepositMaterialiserConfig as DirectDepositMaterialiserConfig$1 } from './generated/config.generated.cjs';
|
|
3
|
+
|
|
4
|
+
type BalanceOfMaterialiserConfig = MaterialiserConfigOf<BalanceOfMaterialiserConfig$1>;
|
|
5
|
+
/** Read the on-chain token balance of an address as the input amount — accepts: resource */
|
|
6
|
+
declare const balanceOf: (config: BalanceOfMaterialiserConfig) => MaterialiserInput;
|
|
7
|
+
type DirectDepositMaterialiserConfig = MaterialiserConfigOf<DirectDepositMaterialiserConfig$1>;
|
|
8
|
+
/** Deposit tokens into the VM — native via msg.value, ERC-20 via transferFrom — accepts: resource */
|
|
9
|
+
declare const directDeposit: (config: DirectDepositMaterialiserConfig) => MaterialiserInput;
|
|
10
|
+
type CallMaterialiserConfig = MaterialiserConfigOf<CallMaterialiserConfig$1>;
|
|
11
|
+
/** Execute an arbitrary contract call and measure the resulting token balance diff — accepts: resource */
|
|
12
|
+
declare const call: (config: CallMaterialiserConfig) => MaterialiserInput;
|
|
13
|
+
|
|
14
|
+
type materialisersMod_BalanceOfMaterialiserConfig = BalanceOfMaterialiserConfig;
|
|
15
|
+
type materialisersMod_CallMaterialiserConfig = CallMaterialiserConfig;
|
|
16
|
+
type materialisersMod_DirectDepositMaterialiserConfig = DirectDepositMaterialiserConfig;
|
|
17
|
+
declare const materialisersMod_balanceOf: typeof balanceOf;
|
|
18
|
+
declare const materialisersMod_call: typeof call;
|
|
19
|
+
declare const materialisersMod_directDeposit: typeof directDeposit;
|
|
20
|
+
declare namespace materialisersMod {
|
|
21
|
+
export { type materialisersMod_BalanceOfMaterialiserConfig as BalanceOfMaterialiserConfig, type materialisersMod_CallMaterialiserConfig as CallMaterialiserConfig, type materialisersMod_DirectDepositMaterialiserConfig as DirectDepositMaterialiserConfig, materialisersMod_balanceOf as balanceOf, materialisersMod_call as call, materialisersMod_directDeposit as directDeposit };
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { type BalanceOfMaterialiserConfig as B, type CallMaterialiserConfig as C, type DirectDepositMaterialiserConfig as D, balanceOf as b, call as c, directDeposit as d, materialisersMod as m };
|
package/dist/run/inputs.cjs
CHANGED
|
@@ -31,15 +31,18 @@ const buildRun = (run) => ({
|
|
|
31
31
|
...run.preconditions?.length && { preconditions: run.preconditions },
|
|
32
32
|
signer: run.signer,
|
|
33
33
|
...run.assumptions && { assumptions: run.assumptions },
|
|
34
|
-
...run.referrer
|
|
35
|
-
...run.
|
|
34
|
+
...run.referrer !== void 0 && { referrer: run.referrer },
|
|
35
|
+
...run.integratorFeeBps !== void 0 && {
|
|
36
|
+
integratorFeeBps: run.integratorFeeBps
|
|
37
|
+
},
|
|
38
|
+
...run.maxPriceImpactBps !== void 0 && {
|
|
36
39
|
maxPriceImpactBps: run.maxPriceImpactBps
|
|
37
40
|
},
|
|
38
|
-
...run.sweepTo
|
|
39
|
-
...run.simulationPolicy
|
|
41
|
+
...run.sweepTo !== void 0 && { sweepTo: run.sweepTo },
|
|
42
|
+
...run.simulationPolicy !== void 0 && {
|
|
40
43
|
simulationPolicy: run.simulationPolicy
|
|
41
44
|
},
|
|
42
|
-
...run.checkOnChainAllowances
|
|
45
|
+
...run.checkOnChainAllowances !== void 0 && {
|
|
43
46
|
checkOnChainAllowances: run.checkOnChainAllowances
|
|
44
47
|
}
|
|
45
48
|
});
|
package/dist/run/inputs.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/run/inputs.ts"],"sourcesContent":["import type {\n ComposeRun,\n InputSpec,\n MaterialiserInput,\n Precondition,\n SimulationPolicy,\n SweepTo,\n} from '@lifi/compose-spec';\n\nimport type { Address, InputSchema, InputSpecOf } from '../types.js';\n\n/**\n * Runtime inputs for compiling a flow. Passed to `builder.compile()` or `sdk.request()`.\n *\n * @typeParam T - The flow's input schema, used to type-check `inputs` and `assumptions`.\n */\nexport interface ComposeRunInput<T extends InputSchema = InputSchema> {\n /**\n * Concrete values for each declared flow input. Resource inputs accept a\n * materialiser or a literal integer amount; scalar inputs accept the matching type.\n */\n readonly inputs: { readonly [K in keyof T]: InputSpecOf<T[K]> };\n /** Optional preconditions that must hold before the flow executes (e.g. minimum balances). */\n readonly preconditions?: readonly Precondition[];\n /** The `0x`-prefixed address of the transaction signer. */\n readonly signer: Address;\n /**\n * Optional assumed token amounts for resource inputs, keyed by input name.\n * When a materialiser resolves amounts at execution time rather than upfront,\n * assumptions let the compiler plan routes using estimated values. The keys\n * must match the input names declared in the flow schema.\n */\n readonly assumptions?: { readonly [K in keyof T]?: bigint };\n /** Optional integrator referrer identifier. */\n readonly referrer?: string;\n /** Maximum acceptable price impact in basis points (e.g. `300` = 3%). */\n readonly maxPriceImpactBps?: number;\n /**\n * Destination for sweeping all proxy-held terminal resources after execution.\n * Pass a literal `0x`-prefixed address or `{ $ref: \"context.sender\" }` to\n * send remaining tokens to the signer.\n */\n readonly sweepTo?: SweepTo;\n /**\n * Controls behavior when simulation detects a revert.\n * `'strict'` (default) returns an error; `'allow-revert'` returns a partial\n * result with the transaction and revert diagnostics.\n */\n readonly simulationPolicy?: SimulationPolicy;\n /**\n * When `true`, the server checks on-chain ERC-20 allowances and omits\n * approvals that are already sufficient. Defaults to `false`.\n */\n readonly checkOnChainAllowances?: boolean;\n}\n\n/**\n * Creates an untyped materialiser input spec. This is a low-level escape hatch\n * for materialiser kinds not yet covered by the generated helpers.\n *\n * Prefer the typed helpers in the `materialisers` namespace (e.g.\n * `materialisers.balanceOf()`, `materialisers.directDeposit()`) which provide\n * compile-time config validation.\n *\n * @param kind - The materialiser type (e.g. `\"balanceOf\"`, `\"directDeposit\"`).\n * @param config - Optional materialiser-specific configuration.\n * @returns A {@link MaterialiserInput} for use in {@link ComposeRunInput.inputs}.\n *\n * @example\n * ```ts\n * const run = {\n * inputs: { token: materialiser('customKind', { myParam: '0x...' }) },\n * signer: '0x...',\n * };\n * ```\n */\nexport const materialiser = (\n kind: string,\n config: Record<string, unknown> = {},\n): MaterialiserInput => ({\n kind,\n ...config,\n});\n\n/**\n * Assembles a {@link ComposeRun} object from individual parameters.\n * Used internally by the SDK; prefer {@link ComposeRunInput} for external use.\n *\n * @internal\n */\nexport const buildRun = (run: {\n inputs: Record<string, InputSpec>;\n preconditions?: readonly Precondition[];\n signer: string;\n assumptions?: Record<string, bigint>;\n referrer?: string;\n maxPriceImpactBps?: number;\n sweepTo?: SweepTo;\n simulationPolicy?: SimulationPolicy;\n checkOnChainAllowances?: boolean;\n}): ComposeRun => ({\n inputs: run.inputs,\n ...(run.preconditions?.length && { preconditions: run.preconditions }),\n signer: run.signer,\n ...(run.assumptions && { assumptions: run.assumptions }),\n ...(run.referrer
|
|
1
|
+
{"version":3,"sources":["../../src/run/inputs.ts"],"sourcesContent":["import type {\n ComposeRun,\n InputSpec,\n MaterialiserInput,\n Precondition,\n SimulationPolicy,\n SweepTo,\n} from '@lifi/compose-spec';\n\nimport type { Address, InputSchema, InputSpecOf } from '../types.js';\n\n/**\n * Runtime inputs for compiling a flow. Passed to `builder.compile()` or `sdk.request()`.\n *\n * @typeParam T - The flow's input schema, used to type-check `inputs` and `assumptions`.\n */\nexport interface ComposeRunInput<T extends InputSchema = InputSchema> {\n /**\n * Concrete values for each declared flow input. Resource inputs accept a\n * materialiser or a literal integer amount; scalar inputs accept the matching type.\n */\n readonly inputs: { readonly [K in keyof T]: InputSpecOf<T[K]> };\n /** Optional preconditions that must hold before the flow executes (e.g. minimum balances). */\n readonly preconditions?: readonly Precondition[];\n /** The `0x`-prefixed address of the transaction signer. */\n readonly signer: Address;\n /**\n * Optional assumed token amounts for resource inputs, keyed by input name.\n * When a materialiser resolves amounts at execution time rather than upfront,\n * assumptions let the compiler plan routes using estimated values. The keys\n * must match the input names declared in the flow schema.\n */\n readonly assumptions?: { readonly [K in keyof T]?: bigint };\n /** Optional integrator referrer identifier. */\n readonly referrer?: string;\n /**\n * Optional integrator fee in basis points (1bp = 0.01%, max `9000` = 90%).\n * A non-zero value requires the request to be authenticated with an\n * integration-scoped API key — the integration is derived from the key, not\n * this field. Defaults to `0` (no fee) when omitted.\n */\n readonly integratorFeeBps?: number;\n /** Maximum acceptable price impact in basis points (e.g. `300` = 3%). */\n readonly maxPriceImpactBps?: number;\n /**\n * Destination for sweeping all proxy-held terminal resources after execution.\n * Pass a literal `0x`-prefixed address or `{ $ref: \"context.sender\" }` to\n * send remaining tokens to the signer.\n */\n readonly sweepTo?: SweepTo;\n /**\n * Controls behavior when simulation detects a revert.\n * `'strict'` (default) returns an error; `'allow-revert'` returns a partial\n * result with the transaction and revert diagnostics.\n */\n readonly simulationPolicy?: SimulationPolicy;\n /**\n * When `true`, the server checks on-chain ERC-20 allowances and omits\n * approvals that are already sufficient. Defaults to `false`.\n */\n readonly checkOnChainAllowances?: boolean;\n}\n\n/**\n * Creates an untyped materialiser input spec. This is a low-level escape hatch\n * for materialiser kinds not yet covered by the generated helpers.\n *\n * Prefer the typed helpers in the `materialisers` namespace (e.g.\n * `materialisers.balanceOf()`, `materialisers.directDeposit()`) which provide\n * compile-time config validation.\n *\n * @param kind - The materialiser type (e.g. `\"balanceOf\"`, `\"directDeposit\"`).\n * @param config - Optional materialiser-specific configuration.\n * @returns A {@link MaterialiserInput} for use in {@link ComposeRunInput.inputs}.\n *\n * @example\n * ```ts\n * const run = {\n * inputs: { token: materialiser('customKind', { myParam: '0x...' }) },\n * signer: '0x...',\n * };\n * ```\n */\nexport const materialiser = (\n kind: string,\n config: Record<string, unknown> = {},\n): MaterialiserInput => ({\n kind,\n ...config,\n});\n\n/**\n * Assembles a {@link ComposeRun} object from individual parameters.\n * Used internally by the SDK; prefer {@link ComposeRunInput} for external use.\n *\n * @internal\n */\nexport const buildRun = (run: {\n inputs: Record<string, InputSpec>;\n preconditions?: readonly Precondition[];\n signer: string;\n assumptions?: Record<string, bigint>;\n referrer?: string;\n integratorFeeBps?: number;\n maxPriceImpactBps?: number;\n sweepTo?: SweepTo;\n simulationPolicy?: SimulationPolicy;\n checkOnChainAllowances?: boolean;\n}): ComposeRun => ({\n inputs: run.inputs,\n ...(run.preconditions?.length && { preconditions: run.preconditions }),\n signer: run.signer,\n ...(run.assumptions && { assumptions: run.assumptions }),\n ...(run.referrer !== undefined && { referrer: run.referrer }),\n ...(run.integratorFeeBps !== undefined && {\n integratorFeeBps: run.integratorFeeBps,\n }),\n ...(run.maxPriceImpactBps !== undefined && {\n maxPriceImpactBps: run.maxPriceImpactBps,\n }),\n ...(run.sweepTo !== undefined && { sweepTo: run.sweepTo }),\n ...(run.simulationPolicy !== undefined && {\n simulationPolicy: run.simulationPolicy,\n }),\n ...(run.checkOnChainAllowances !== undefined && {\n checkOnChainAllowances: run.checkOnChainAllowances,\n }),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmFO,MAAM,eAAe,CAC1B,MACA,SAAkC,CAAC,OACZ;AAAA,EACvB;AAAA,EACA,GAAG;AACL;AAQO,MAAM,WAAW,CAAC,SAWN;AAAA,EACjB,QAAQ,IAAI;AAAA,EACZ,GAAI,IAAI,eAAe,UAAU,EAAE,eAAe,IAAI,cAAc;AAAA,EACpE,QAAQ,IAAI;AAAA,EACZ,GAAI,IAAI,eAAe,EAAE,aAAa,IAAI,YAAY;AAAA,EACtD,GAAI,IAAI,aAAa,UAAa,EAAE,UAAU,IAAI,SAAS;AAAA,EAC3D,GAAI,IAAI,qBAAqB,UAAa;AAAA,IACxC,kBAAkB,IAAI;AAAA,EACxB;AAAA,EACA,GAAI,IAAI,sBAAsB,UAAa;AAAA,IACzC,mBAAmB,IAAI;AAAA,EACzB;AAAA,EACA,GAAI,IAAI,YAAY,UAAa,EAAE,SAAS,IAAI,QAAQ;AAAA,EACxD,GAAI,IAAI,qBAAqB,UAAa;AAAA,IACxC,kBAAkB,IAAI;AAAA,EACxB;AAAA,EACA,GAAI,IAAI,2BAA2B,UAAa;AAAA,IAC9C,wBAAwB,IAAI;AAAA,EAC9B;AACF;","names":[]}
|
package/dist/run/inputs.d.cts
CHANGED
|
@@ -29,6 +29,13 @@ interface ComposeRunInput<T extends InputSchema = InputSchema> {
|
|
|
29
29
|
};
|
|
30
30
|
/** Optional integrator referrer identifier. */
|
|
31
31
|
readonly referrer?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Optional integrator fee in basis points (1bp = 0.01%, max `9000` = 90%).
|
|
34
|
+
* A non-zero value requires the request to be authenticated with an
|
|
35
|
+
* integration-scoped API key — the integration is derived from the key, not
|
|
36
|
+
* this field. Defaults to `0` (no fee) when omitted.
|
|
37
|
+
*/
|
|
38
|
+
readonly integratorFeeBps?: number;
|
|
32
39
|
/** Maximum acceptable price impact in basis points (e.g. `300` = 3%). */
|
|
33
40
|
readonly maxPriceImpactBps?: number;
|
|
34
41
|
/**
|
|
@@ -82,6 +89,7 @@ declare const buildRun: (run: {
|
|
|
82
89
|
signer: string;
|
|
83
90
|
assumptions?: Record<string, bigint>;
|
|
84
91
|
referrer?: string;
|
|
92
|
+
integratorFeeBps?: number;
|
|
85
93
|
maxPriceImpactBps?: number;
|
|
86
94
|
sweepTo?: SweepTo;
|
|
87
95
|
simulationPolicy?: SimulationPolicy;
|
package/dist/run/inputs.d.ts
CHANGED
|
@@ -29,6 +29,13 @@ interface ComposeRunInput<T extends InputSchema = InputSchema> {
|
|
|
29
29
|
};
|
|
30
30
|
/** Optional integrator referrer identifier. */
|
|
31
31
|
readonly referrer?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Optional integrator fee in basis points (1bp = 0.01%, max `9000` = 90%).
|
|
34
|
+
* A non-zero value requires the request to be authenticated with an
|
|
35
|
+
* integration-scoped API key — the integration is derived from the key, not
|
|
36
|
+
* this field. Defaults to `0` (no fee) when omitted.
|
|
37
|
+
*/
|
|
38
|
+
readonly integratorFeeBps?: number;
|
|
32
39
|
/** Maximum acceptable price impact in basis points (e.g. `300` = 3%). */
|
|
33
40
|
readonly maxPriceImpactBps?: number;
|
|
34
41
|
/**
|
|
@@ -82,6 +89,7 @@ declare const buildRun: (run: {
|
|
|
82
89
|
signer: string;
|
|
83
90
|
assumptions?: Record<string, bigint>;
|
|
84
91
|
referrer?: string;
|
|
92
|
+
integratorFeeBps?: number;
|
|
85
93
|
maxPriceImpactBps?: number;
|
|
86
94
|
sweepTo?: SweepTo;
|
|
87
95
|
simulationPolicy?: SimulationPolicy;
|
package/dist/run/inputs.js
CHANGED
|
@@ -7,15 +7,18 @@ const buildRun = (run) => ({
|
|
|
7
7
|
...run.preconditions?.length && { preconditions: run.preconditions },
|
|
8
8
|
signer: run.signer,
|
|
9
9
|
...run.assumptions && { assumptions: run.assumptions },
|
|
10
|
-
...run.referrer
|
|
11
|
-
...run.
|
|
10
|
+
...run.referrer !== void 0 && { referrer: run.referrer },
|
|
11
|
+
...run.integratorFeeBps !== void 0 && {
|
|
12
|
+
integratorFeeBps: run.integratorFeeBps
|
|
13
|
+
},
|
|
14
|
+
...run.maxPriceImpactBps !== void 0 && {
|
|
12
15
|
maxPriceImpactBps: run.maxPriceImpactBps
|
|
13
16
|
},
|
|
14
|
-
...run.sweepTo
|
|
15
|
-
...run.simulationPolicy
|
|
17
|
+
...run.sweepTo !== void 0 && { sweepTo: run.sweepTo },
|
|
18
|
+
...run.simulationPolicy !== void 0 && {
|
|
16
19
|
simulationPolicy: run.simulationPolicy
|
|
17
20
|
},
|
|
18
|
-
...run.checkOnChainAllowances
|
|
21
|
+
...run.checkOnChainAllowances !== void 0 && {
|
|
19
22
|
checkOnChainAllowances: run.checkOnChainAllowances
|
|
20
23
|
}
|
|
21
24
|
});
|
package/dist/run/inputs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/run/inputs.ts"],"sourcesContent":["import type {\n ComposeRun,\n InputSpec,\n MaterialiserInput,\n Precondition,\n SimulationPolicy,\n SweepTo,\n} from '@lifi/compose-spec';\n\nimport type { Address, InputSchema, InputSpecOf } from '../types.js';\n\n/**\n * Runtime inputs for compiling a flow. Passed to `builder.compile()` or `sdk.request()`.\n *\n * @typeParam T - The flow's input schema, used to type-check `inputs` and `assumptions`.\n */\nexport interface ComposeRunInput<T extends InputSchema = InputSchema> {\n /**\n * Concrete values for each declared flow input. Resource inputs accept a\n * materialiser or a literal integer amount; scalar inputs accept the matching type.\n */\n readonly inputs: { readonly [K in keyof T]: InputSpecOf<T[K]> };\n /** Optional preconditions that must hold before the flow executes (e.g. minimum balances). */\n readonly preconditions?: readonly Precondition[];\n /** The `0x`-prefixed address of the transaction signer. */\n readonly signer: Address;\n /**\n * Optional assumed token amounts for resource inputs, keyed by input name.\n * When a materialiser resolves amounts at execution time rather than upfront,\n * assumptions let the compiler plan routes using estimated values. The keys\n * must match the input names declared in the flow schema.\n */\n readonly assumptions?: { readonly [K in keyof T]?: bigint };\n /** Optional integrator referrer identifier. */\n readonly referrer?: string;\n /** Maximum acceptable price impact in basis points (e.g. `300` = 3%). */\n readonly maxPriceImpactBps?: number;\n /**\n * Destination for sweeping all proxy-held terminal resources after execution.\n * Pass a literal `0x`-prefixed address or `{ $ref: \"context.sender\" }` to\n * send remaining tokens to the signer.\n */\n readonly sweepTo?: SweepTo;\n /**\n * Controls behavior when simulation detects a revert.\n * `'strict'` (default) returns an error; `'allow-revert'` returns a partial\n * result with the transaction and revert diagnostics.\n */\n readonly simulationPolicy?: SimulationPolicy;\n /**\n * When `true`, the server checks on-chain ERC-20 allowances and omits\n * approvals that are already sufficient. Defaults to `false`.\n */\n readonly checkOnChainAllowances?: boolean;\n}\n\n/**\n * Creates an untyped materialiser input spec. This is a low-level escape hatch\n * for materialiser kinds not yet covered by the generated helpers.\n *\n * Prefer the typed helpers in the `materialisers` namespace (e.g.\n * `materialisers.balanceOf()`, `materialisers.directDeposit()`) which provide\n * compile-time config validation.\n *\n * @param kind - The materialiser type (e.g. `\"balanceOf\"`, `\"directDeposit\"`).\n * @param config - Optional materialiser-specific configuration.\n * @returns A {@link MaterialiserInput} for use in {@link ComposeRunInput.inputs}.\n *\n * @example\n * ```ts\n * const run = {\n * inputs: { token: materialiser('customKind', { myParam: '0x...' }) },\n * signer: '0x...',\n * };\n * ```\n */\nexport const materialiser = (\n kind: string,\n config: Record<string, unknown> = {},\n): MaterialiserInput => ({\n kind,\n ...config,\n});\n\n/**\n * Assembles a {@link ComposeRun} object from individual parameters.\n * Used internally by the SDK; prefer {@link ComposeRunInput} for external use.\n *\n * @internal\n */\nexport const buildRun = (run: {\n inputs: Record<string, InputSpec>;\n preconditions?: readonly Precondition[];\n signer: string;\n assumptions?: Record<string, bigint>;\n referrer?: string;\n maxPriceImpactBps?: number;\n sweepTo?: SweepTo;\n simulationPolicy?: SimulationPolicy;\n checkOnChainAllowances?: boolean;\n}): ComposeRun => ({\n inputs: run.inputs,\n ...(run.preconditions?.length && { preconditions: run.preconditions }),\n signer: run.signer,\n ...(run.assumptions && { assumptions: run.assumptions }),\n ...(run.referrer
|
|
1
|
+
{"version":3,"sources":["../../src/run/inputs.ts"],"sourcesContent":["import type {\n ComposeRun,\n InputSpec,\n MaterialiserInput,\n Precondition,\n SimulationPolicy,\n SweepTo,\n} from '@lifi/compose-spec';\n\nimport type { Address, InputSchema, InputSpecOf } from '../types.js';\n\n/**\n * Runtime inputs for compiling a flow. Passed to `builder.compile()` or `sdk.request()`.\n *\n * @typeParam T - The flow's input schema, used to type-check `inputs` and `assumptions`.\n */\nexport interface ComposeRunInput<T extends InputSchema = InputSchema> {\n /**\n * Concrete values for each declared flow input. Resource inputs accept a\n * materialiser or a literal integer amount; scalar inputs accept the matching type.\n */\n readonly inputs: { readonly [K in keyof T]: InputSpecOf<T[K]> };\n /** Optional preconditions that must hold before the flow executes (e.g. minimum balances). */\n readonly preconditions?: readonly Precondition[];\n /** The `0x`-prefixed address of the transaction signer. */\n readonly signer: Address;\n /**\n * Optional assumed token amounts for resource inputs, keyed by input name.\n * When a materialiser resolves amounts at execution time rather than upfront,\n * assumptions let the compiler plan routes using estimated values. The keys\n * must match the input names declared in the flow schema.\n */\n readonly assumptions?: { readonly [K in keyof T]?: bigint };\n /** Optional integrator referrer identifier. */\n readonly referrer?: string;\n /**\n * Optional integrator fee in basis points (1bp = 0.01%, max `9000` = 90%).\n * A non-zero value requires the request to be authenticated with an\n * integration-scoped API key — the integration is derived from the key, not\n * this field. Defaults to `0` (no fee) when omitted.\n */\n readonly integratorFeeBps?: number;\n /** Maximum acceptable price impact in basis points (e.g. `300` = 3%). */\n readonly maxPriceImpactBps?: number;\n /**\n * Destination for sweeping all proxy-held terminal resources after execution.\n * Pass a literal `0x`-prefixed address or `{ $ref: \"context.sender\" }` to\n * send remaining tokens to the signer.\n */\n readonly sweepTo?: SweepTo;\n /**\n * Controls behavior when simulation detects a revert.\n * `'strict'` (default) returns an error; `'allow-revert'` returns a partial\n * result with the transaction and revert diagnostics.\n */\n readonly simulationPolicy?: SimulationPolicy;\n /**\n * When `true`, the server checks on-chain ERC-20 allowances and omits\n * approvals that are already sufficient. Defaults to `false`.\n */\n readonly checkOnChainAllowances?: boolean;\n}\n\n/**\n * Creates an untyped materialiser input spec. This is a low-level escape hatch\n * for materialiser kinds not yet covered by the generated helpers.\n *\n * Prefer the typed helpers in the `materialisers` namespace (e.g.\n * `materialisers.balanceOf()`, `materialisers.directDeposit()`) which provide\n * compile-time config validation.\n *\n * @param kind - The materialiser type (e.g. `\"balanceOf\"`, `\"directDeposit\"`).\n * @param config - Optional materialiser-specific configuration.\n * @returns A {@link MaterialiserInput} for use in {@link ComposeRunInput.inputs}.\n *\n * @example\n * ```ts\n * const run = {\n * inputs: { token: materialiser('customKind', { myParam: '0x...' }) },\n * signer: '0x...',\n * };\n * ```\n */\nexport const materialiser = (\n kind: string,\n config: Record<string, unknown> = {},\n): MaterialiserInput => ({\n kind,\n ...config,\n});\n\n/**\n * Assembles a {@link ComposeRun} object from individual parameters.\n * Used internally by the SDK; prefer {@link ComposeRunInput} for external use.\n *\n * @internal\n */\nexport const buildRun = (run: {\n inputs: Record<string, InputSpec>;\n preconditions?: readonly Precondition[];\n signer: string;\n assumptions?: Record<string, bigint>;\n referrer?: string;\n integratorFeeBps?: number;\n maxPriceImpactBps?: number;\n sweepTo?: SweepTo;\n simulationPolicy?: SimulationPolicy;\n checkOnChainAllowances?: boolean;\n}): ComposeRun => ({\n inputs: run.inputs,\n ...(run.preconditions?.length && { preconditions: run.preconditions }),\n signer: run.signer,\n ...(run.assumptions && { assumptions: run.assumptions }),\n ...(run.referrer !== undefined && { referrer: run.referrer }),\n ...(run.integratorFeeBps !== undefined && {\n integratorFeeBps: run.integratorFeeBps,\n }),\n ...(run.maxPriceImpactBps !== undefined && {\n maxPriceImpactBps: run.maxPriceImpactBps,\n }),\n ...(run.sweepTo !== undefined && { sweepTo: run.sweepTo }),\n ...(run.simulationPolicy !== undefined && {\n simulationPolicy: run.simulationPolicy,\n }),\n ...(run.checkOnChainAllowances !== undefined && {\n checkOnChainAllowances: run.checkOnChainAllowances,\n }),\n});\n"],"mappings":"AAmFO,MAAM,eAAe,CAC1B,MACA,SAAkC,CAAC,OACZ;AAAA,EACvB;AAAA,EACA,GAAG;AACL;AAQO,MAAM,WAAW,CAAC,SAWN;AAAA,EACjB,QAAQ,IAAI;AAAA,EACZ,GAAI,IAAI,eAAe,UAAU,EAAE,eAAe,IAAI,cAAc;AAAA,EACpE,QAAQ,IAAI;AAAA,EACZ,GAAI,IAAI,eAAe,EAAE,aAAa,IAAI,YAAY;AAAA,EACtD,GAAI,IAAI,aAAa,UAAa,EAAE,UAAU,IAAI,SAAS;AAAA,EAC3D,GAAI,IAAI,qBAAqB,UAAa;AAAA,IACxC,kBAAkB,IAAI;AAAA,EACxB;AAAA,EACA,GAAI,IAAI,sBAAsB,UAAa;AAAA,IACzC,mBAAmB,IAAI;AAAA,EACzB;AAAA,EACA,GAAI,IAAI,YAAY,UAAa,EAAE,SAAS,IAAI,QAAQ;AAAA,EACxD,GAAI,IAAI,qBAAqB,UAAa;AAAA,IACxC,kBAAkB,IAAI;AAAA,EACxB;AAAA,EACA,GAAI,IAAI,2BAA2B,UAAa;AAAA,IAC9C,wBAAwB,IAAI;AAAA,EAC9B;AACF;","names":[]}
|
package/dist/sdk.cjs
CHANGED
|
@@ -35,6 +35,7 @@ const createComposeSdk = (options) => {
|
|
|
35
35
|
signer: run.signer,
|
|
36
36
|
assumptions: run.assumptions,
|
|
37
37
|
referrer: run.referrer,
|
|
38
|
+
integratorFeeBps: run.integratorFeeBps,
|
|
38
39
|
maxPriceImpactBps: run.maxPriceImpactBps,
|
|
39
40
|
sweepTo: run.sweepTo,
|
|
40
41
|
simulationPolicy: run.simulationPolicy,
|
package/dist/sdk.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sdk.ts"],"sourcesContent":["import type {\n ComposeCompileRequest,\n ComposeCompileResult,\n InputSpec,\n} from '@lifi/compose-spec';\n\nimport {\n createFlowBuilderCore,\n type FlowBuilderCore,\n type FlowOptions,\n type TypedFlow,\n} from './authoring/FlowBuilderCore.js';\nimport { type ComposeClient, createComposeClient } from './client.js';\nimport {\n bindGeneratedOps,\n type GeneratedOps,\n} from './generated/operations.generated.js';\nimport { buildRun, type ComposeRunInput } from './run/inputs.js';\nimport type { InputSchema } from './types.js';\n\nexport type { ComposeRunInput };\n\n/**\n * A flow builder augmented with generated operation methods and a `compile` method\n * that submits the flow to the Compose backend for compilation.\n *\n * Created via {@link ComposeSdk.flow}.\n *\n * @typeParam T - The input schema describing the flow's required inputs.\n */\nexport type FlowBuilder<T extends InputSchema = InputSchema> =\n FlowBuilderCore<T> &\n GeneratedOps & {\n /**\n * Builds the flow document from the current builder state and submits it\n * to the Compose API for compilation.\n *\n * @param run - Runtime inputs, preconditions, and signer address.\n * @returns The compiled transaction calldata and metadata.\n * @throws {@link ComposeError} on network, validation, or server errors.\n *\n * @example\n * ```ts\n * const result = await builder.compile({\n * inputs: { token: materialisers.balanceOf({}) },\n * signer: '0xYourAddress...',\n * });\n * console.log(result.calldata);\n * ```\n */\n readonly compile: (\n run: ComposeRunInput<T>,\n ) => Promise<ComposeCompileResult>;\n };\n\n/**\n * Configuration for creating a Compose SDK instance.\n */\nexport interface ComposeSdkOptions {\n /** Base URL of the Compose API (e.g. `\"https://li.quest\"`). */\n readonly baseUrl: string;\n /** Optional custom `fetch` implementation. Defaults to `globalThis.fetch`. */\n readonly fetch?: typeof globalThis.fetch;\n /** Optional LI.FI API key for authenticated access. Sent as the `x-lifi-api-key` header on every request. */\n readonly apiKey?: string;\n}\n\n/**\n * The top-level Compose SDK interface.\n *\n * Provides methods to build flows, compile them into executable calldata, and\n * interact with the Compose API directly.\n *\n * @example\n * ```ts\n * import { createComposeSdk, resources, materialisers } from '@lifi/composer-sdk';\n *\n * const sdk = createComposeSdk({ baseUrl: 'https://li.quest' });\n *\n * const builder = sdk.flow(1, {\n * inputs: { usdc: resources.erc20('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 1) },\n * });\n *\n * builder.lifi.swap('swap1', {\n * bind: { amountIn: builder.inputs.usdc },\n * config: { resourceOut: resources.native(1) },\n * });\n *\n * const result = await builder.compile({\n * inputs: { usdc: materialisers.balanceOf({}) },\n * signer: '0xYourAddress...',\n * });\n * ```\n */\nexport interface ComposeSdk {\n /** Low-level HTTP client for the Compose API. */\n readonly client: ComposeClient;\n /**\n * Creates a new flow builder targeting the given chain.\n * @param chainId - The EVM chain ID (e.g. `1` for Ethereum mainnet).\n * @param options - Flow configuration including input declarations.\n * @returns A {@link FlowBuilder} with generated operation methods and a `compile` method.\n * @throws Error if any resource input's `chainId` doesn't match the flow's `chainId`.\n */\n readonly flow: <T extends InputSchema>(\n chainId: number,\n options: FlowOptions<T>,\n ) => FlowBuilder<T>;\n /**\n * Builds a raw compile request without sending it. Useful for inspecting the\n * request payload or submitting it through a custom transport.\n * @param flow - A built flow document (from `builder.build()`).\n * @param run - Runtime inputs, preconditions, and signer address.\n * @returns A {@link ComposeCompileRequest} ready to send to the Compose API.\n */\n readonly request: <T extends InputSchema>(\n flow: TypedFlow<T>,\n run: ComposeRunInput<T>,\n ) => ComposeCompileRequest;\n}\n\n/**\n * Creates a new Compose SDK instance.\n *\n * @param options - SDK configuration including the API base URL and optional fetch implementation.\n * @returns A {@link ComposeSdk} instance.\n *\n * @example\n * ```ts\n * const sdk = createComposeSdk({ baseUrl: 'https://li.quest' });\n * ```\n */\nexport const createComposeSdk = (options: ComposeSdkOptions): ComposeSdk => {\n const composeClient = createComposeClient(options);\n\n const request = <T extends InputSchema>(\n flowDoc: TypedFlow<T>,\n run: ComposeRunInput<T>,\n ): ComposeCompileRequest => ({\n flow: flowDoc,\n run: buildRun({\n inputs: run.inputs as Record<string, InputSpec>,\n preconditions: run.preconditions,\n signer: run.signer,\n assumptions: run.assumptions as Record<string, bigint> | undefined,\n referrer: run.referrer,\n maxPriceImpactBps: run.maxPriceImpactBps,\n sweepTo: run.sweepTo,\n simulationPolicy: run.simulationPolicy,\n checkOnChainAllowances: run.checkOnChainAllowances,\n }),\n });\n\n const flow = <T extends InputSchema>(\n chainId: number,\n opts: FlowOptions<T>,\n ): FlowBuilder<T> => {\n const core = createFlowBuilderCore(chainId, opts);\n const builder = Object.assign(core, bindGeneratedOps(core));\n\n const compile = async (\n run: ComposeRunInput<T>,\n ): Promise<ComposeCompileResult> => {\n const flowDoc = builder.build();\n const req = request(flowDoc, run);\n return composeClient.compile(req);\n };\n\n return Object.assign(builder, { compile });\n };\n\n return { client: composeClient, flow, request };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,6BAKO;AACP,oBAAwD;AACxD,kCAGO;AACP,oBAA+C;AAmHxC,MAAM,mBAAmB,CAAC,YAA2C;AAC1E,QAAM,oBAAgB,mCAAoB,OAAO;AAEjD,QAAM,UAAU,CACd,SACA,SAC2B;AAAA,IAC3B,MAAM;AAAA,IACN,SAAK,wBAAS;AAAA,MACZ,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,MACnB,QAAQ,IAAI;AAAA,MACZ,aAAa,IAAI;AAAA,MACjB,UAAU,IAAI;AAAA,MACd,mBAAmB,IAAI;AAAA,MACvB,SAAS,IAAI;AAAA,MACb,kBAAkB,IAAI;AAAA,MACtB,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,CACX,SACA,SACmB;AACnB,UAAM,WAAO,8CAAsB,SAAS,IAAI;AAChD,UAAM,UAAU,OAAO,OAAO,UAAM,8CAAiB,IAAI,CAAC;AAE1D,UAAM,UAAU,OACd,QACkC;AAClC,YAAM,UAAU,QAAQ,MAAM;AAC9B,YAAM,MAAM,QAAQ,SAAS,GAAG;AAChC,aAAO,cAAc,QAAQ,GAAG;AAAA,IAClC;AAEA,WAAO,OAAO,OAAO,SAAS,EAAE,QAAQ,CAAC;AAAA,EAC3C;AAEA,SAAO,EAAE,QAAQ,eAAe,MAAM,QAAQ;AAChD;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/sdk.ts"],"sourcesContent":["import type {\n ComposeCompileRequest,\n ComposeCompileResult,\n InputSpec,\n} from '@lifi/compose-spec';\n\nimport {\n createFlowBuilderCore,\n type FlowBuilderCore,\n type FlowOptions,\n type TypedFlow,\n} from './authoring/FlowBuilderCore.js';\nimport { type ComposeClient, createComposeClient } from './client.js';\nimport {\n bindGeneratedOps,\n type GeneratedOps,\n} from './generated/operations.generated.js';\nimport { buildRun, type ComposeRunInput } from './run/inputs.js';\nimport type { InputSchema } from './types.js';\n\nexport type { ComposeRunInput };\n\n/**\n * A flow builder augmented with generated operation methods and a `compile` method\n * that submits the flow to the Compose backend for compilation.\n *\n * Created via {@link ComposeSdk.flow}.\n *\n * @typeParam T - The input schema describing the flow's required inputs.\n */\nexport type FlowBuilder<T extends InputSchema = InputSchema> =\n FlowBuilderCore<T> &\n GeneratedOps & {\n /**\n * Builds the flow document from the current builder state and submits it\n * to the Compose API for compilation.\n *\n * @param run - Runtime inputs, preconditions, and signer address.\n * @returns The compiled transaction calldata and metadata.\n * @throws {@link ComposeError} on network, validation, or server errors.\n *\n * @example\n * ```ts\n * const result = await builder.compile({\n * inputs: { token: materialisers.balanceOf({}) },\n * signer: '0xYourAddress...',\n * });\n * console.log(result.calldata);\n * ```\n */\n readonly compile: (\n run: ComposeRunInput<T>,\n ) => Promise<ComposeCompileResult>;\n };\n\n/**\n * Configuration for creating a Compose SDK instance.\n */\nexport interface ComposeSdkOptions {\n /** Base URL of the Compose API (e.g. `\"https://li.quest\"`). */\n readonly baseUrl: string;\n /** Optional custom `fetch` implementation. Defaults to `globalThis.fetch`. */\n readonly fetch?: typeof globalThis.fetch;\n /** Optional LI.FI API key for authenticated access. Sent as the `x-lifi-api-key` header on every request. */\n readonly apiKey?: string;\n}\n\n/**\n * The top-level Compose SDK interface.\n *\n * Provides methods to build flows, compile them into executable calldata, and\n * interact with the Compose API directly.\n *\n * @example\n * ```ts\n * import { createComposeSdk, resources, materialisers } from '@lifi/composer-sdk';\n *\n * const sdk = createComposeSdk({ baseUrl: 'https://li.quest' });\n *\n * const builder = sdk.flow(1, {\n * inputs: { usdc: resources.erc20('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 1) },\n * });\n *\n * builder.lifi.swap('swap1', {\n * bind: { amountIn: builder.inputs.usdc },\n * config: { resourceOut: resources.native(1) },\n * });\n *\n * const result = await builder.compile({\n * inputs: { usdc: materialisers.balanceOf({}) },\n * signer: '0xYourAddress...',\n * });\n * ```\n */\nexport interface ComposeSdk {\n /** Low-level HTTP client for the Compose API. */\n readonly client: ComposeClient;\n /**\n * Creates a new flow builder targeting the given chain.\n * @param chainId - The EVM chain ID (e.g. `1` for Ethereum mainnet).\n * @param options - Flow configuration including input declarations.\n * @returns A {@link FlowBuilder} with generated operation methods and a `compile` method.\n * @throws Error if any resource input's `chainId` doesn't match the flow's `chainId`.\n */\n readonly flow: <T extends InputSchema>(\n chainId: number,\n options: FlowOptions<T>,\n ) => FlowBuilder<T>;\n /**\n * Builds a raw compile request without sending it. Useful for inspecting the\n * request payload or submitting it through a custom transport.\n * @param flow - A built flow document (from `builder.build()`).\n * @param run - Runtime inputs, preconditions, and signer address.\n * @returns A {@link ComposeCompileRequest} ready to send to the Compose API.\n */\n readonly request: <T extends InputSchema>(\n flow: TypedFlow<T>,\n run: ComposeRunInput<T>,\n ) => ComposeCompileRequest;\n}\n\n/**\n * Creates a new Compose SDK instance.\n *\n * @param options - SDK configuration including the API base URL and optional fetch implementation.\n * @returns A {@link ComposeSdk} instance.\n *\n * @example\n * ```ts\n * const sdk = createComposeSdk({ baseUrl: 'https://li.quest' });\n * ```\n */\nexport const createComposeSdk = (options: ComposeSdkOptions): ComposeSdk => {\n const composeClient = createComposeClient(options);\n\n const request = <T extends InputSchema>(\n flowDoc: TypedFlow<T>,\n run: ComposeRunInput<T>,\n ): ComposeCompileRequest => ({\n flow: flowDoc,\n run: buildRun({\n inputs: run.inputs as Record<string, InputSpec>,\n preconditions: run.preconditions,\n signer: run.signer,\n assumptions: run.assumptions as Record<string, bigint> | undefined,\n referrer: run.referrer,\n integratorFeeBps: run.integratorFeeBps,\n maxPriceImpactBps: run.maxPriceImpactBps,\n sweepTo: run.sweepTo,\n simulationPolicy: run.simulationPolicy,\n checkOnChainAllowances: run.checkOnChainAllowances,\n }),\n });\n\n const flow = <T extends InputSchema>(\n chainId: number,\n opts: FlowOptions<T>,\n ): FlowBuilder<T> => {\n const core = createFlowBuilderCore(chainId, opts);\n const builder = Object.assign(core, bindGeneratedOps(core));\n\n const compile = async (\n run: ComposeRunInput<T>,\n ): Promise<ComposeCompileResult> => {\n const flowDoc = builder.build();\n const req = request(flowDoc, run);\n return composeClient.compile(req);\n };\n\n return Object.assign(builder, { compile });\n };\n\n return { client: composeClient, flow, request };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,6BAKO;AACP,oBAAwD;AACxD,kCAGO;AACP,oBAA+C;AAmHxC,MAAM,mBAAmB,CAAC,YAA2C;AAC1E,QAAM,oBAAgB,mCAAoB,OAAO;AAEjD,QAAM,UAAU,CACd,SACA,SAC2B;AAAA,IAC3B,MAAM;AAAA,IACN,SAAK,wBAAS;AAAA,MACZ,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,MACnB,QAAQ,IAAI;AAAA,MACZ,aAAa,IAAI;AAAA,MACjB,UAAU,IAAI;AAAA,MACd,kBAAkB,IAAI;AAAA,MACtB,mBAAmB,IAAI;AAAA,MACvB,SAAS,IAAI;AAAA,MACb,kBAAkB,IAAI;AAAA,MACtB,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,CACX,SACA,SACmB;AACnB,UAAM,WAAO,8CAAsB,SAAS,IAAI;AAChD,UAAM,UAAU,OAAO,OAAO,UAAM,8CAAiB,IAAI,CAAC;AAE1D,UAAM,UAAU,OACd,QACkC;AAClC,YAAM,UAAU,QAAQ,MAAM;AAC9B,YAAM,MAAM,QAAQ,SAAS,GAAG;AAChC,aAAO,cAAc,QAAQ,GAAG;AAAA,IAClC;AAEA,WAAO,OAAO,OAAO,SAAS,EAAE,QAAQ,CAAC;AAAA,EAC3C;AAEA,SAAO,EAAE,QAAQ,eAAe,MAAM,QAAQ;AAChD;","names":[]}
|
package/dist/sdk.js
CHANGED
|
@@ -16,6 +16,7 @@ const createComposeSdk = (options) => {
|
|
|
16
16
|
signer: run.signer,
|
|
17
17
|
assumptions: run.assumptions,
|
|
18
18
|
referrer: run.referrer,
|
|
19
|
+
integratorFeeBps: run.integratorFeeBps,
|
|
19
20
|
maxPriceImpactBps: run.maxPriceImpactBps,
|
|
20
21
|
sweepTo: run.sweepTo,
|
|
21
22
|
simulationPolicy: run.simulationPolicy,
|
package/dist/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sdk.ts"],"sourcesContent":["import type {\n ComposeCompileRequest,\n ComposeCompileResult,\n InputSpec,\n} from '@lifi/compose-spec';\n\nimport {\n createFlowBuilderCore,\n type FlowBuilderCore,\n type FlowOptions,\n type TypedFlow,\n} from './authoring/FlowBuilderCore.js';\nimport { type ComposeClient, createComposeClient } from './client.js';\nimport {\n bindGeneratedOps,\n type GeneratedOps,\n} from './generated/operations.generated.js';\nimport { buildRun, type ComposeRunInput } from './run/inputs.js';\nimport type { InputSchema } from './types.js';\n\nexport type { ComposeRunInput };\n\n/**\n * A flow builder augmented with generated operation methods and a `compile` method\n * that submits the flow to the Compose backend for compilation.\n *\n * Created via {@link ComposeSdk.flow}.\n *\n * @typeParam T - The input schema describing the flow's required inputs.\n */\nexport type FlowBuilder<T extends InputSchema = InputSchema> =\n FlowBuilderCore<T> &\n GeneratedOps & {\n /**\n * Builds the flow document from the current builder state and submits it\n * to the Compose API for compilation.\n *\n * @param run - Runtime inputs, preconditions, and signer address.\n * @returns The compiled transaction calldata and metadata.\n * @throws {@link ComposeError} on network, validation, or server errors.\n *\n * @example\n * ```ts\n * const result = await builder.compile({\n * inputs: { token: materialisers.balanceOf({}) },\n * signer: '0xYourAddress...',\n * });\n * console.log(result.calldata);\n * ```\n */\n readonly compile: (\n run: ComposeRunInput<T>,\n ) => Promise<ComposeCompileResult>;\n };\n\n/**\n * Configuration for creating a Compose SDK instance.\n */\nexport interface ComposeSdkOptions {\n /** Base URL of the Compose API (e.g. `\"https://li.quest\"`). */\n readonly baseUrl: string;\n /** Optional custom `fetch` implementation. Defaults to `globalThis.fetch`. */\n readonly fetch?: typeof globalThis.fetch;\n /** Optional LI.FI API key for authenticated access. Sent as the `x-lifi-api-key` header on every request. */\n readonly apiKey?: string;\n}\n\n/**\n * The top-level Compose SDK interface.\n *\n * Provides methods to build flows, compile them into executable calldata, and\n * interact with the Compose API directly.\n *\n * @example\n * ```ts\n * import { createComposeSdk, resources, materialisers } from '@lifi/composer-sdk';\n *\n * const sdk = createComposeSdk({ baseUrl: 'https://li.quest' });\n *\n * const builder = sdk.flow(1, {\n * inputs: { usdc: resources.erc20('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 1) },\n * });\n *\n * builder.lifi.swap('swap1', {\n * bind: { amountIn: builder.inputs.usdc },\n * config: { resourceOut: resources.native(1) },\n * });\n *\n * const result = await builder.compile({\n * inputs: { usdc: materialisers.balanceOf({}) },\n * signer: '0xYourAddress...',\n * });\n * ```\n */\nexport interface ComposeSdk {\n /** Low-level HTTP client for the Compose API. */\n readonly client: ComposeClient;\n /**\n * Creates a new flow builder targeting the given chain.\n * @param chainId - The EVM chain ID (e.g. `1` for Ethereum mainnet).\n * @param options - Flow configuration including input declarations.\n * @returns A {@link FlowBuilder} with generated operation methods and a `compile` method.\n * @throws Error if any resource input's `chainId` doesn't match the flow's `chainId`.\n */\n readonly flow: <T extends InputSchema>(\n chainId: number,\n options: FlowOptions<T>,\n ) => FlowBuilder<T>;\n /**\n * Builds a raw compile request without sending it. Useful for inspecting the\n * request payload or submitting it through a custom transport.\n * @param flow - A built flow document (from `builder.build()`).\n * @param run - Runtime inputs, preconditions, and signer address.\n * @returns A {@link ComposeCompileRequest} ready to send to the Compose API.\n */\n readonly request: <T extends InputSchema>(\n flow: TypedFlow<T>,\n run: ComposeRunInput<T>,\n ) => ComposeCompileRequest;\n}\n\n/**\n * Creates a new Compose SDK instance.\n *\n * @param options - SDK configuration including the API base URL and optional fetch implementation.\n * @returns A {@link ComposeSdk} instance.\n *\n * @example\n * ```ts\n * const sdk = createComposeSdk({ baseUrl: 'https://li.quest' });\n * ```\n */\nexport const createComposeSdk = (options: ComposeSdkOptions): ComposeSdk => {\n const composeClient = createComposeClient(options);\n\n const request = <T extends InputSchema>(\n flowDoc: TypedFlow<T>,\n run: ComposeRunInput<T>,\n ): ComposeCompileRequest => ({\n flow: flowDoc,\n run: buildRun({\n inputs: run.inputs as Record<string, InputSpec>,\n preconditions: run.preconditions,\n signer: run.signer,\n assumptions: run.assumptions as Record<string, bigint> | undefined,\n referrer: run.referrer,\n maxPriceImpactBps: run.maxPriceImpactBps,\n sweepTo: run.sweepTo,\n simulationPolicy: run.simulationPolicy,\n checkOnChainAllowances: run.checkOnChainAllowances,\n }),\n });\n\n const flow = <T extends InputSchema>(\n chainId: number,\n opts: FlowOptions<T>,\n ): FlowBuilder<T> => {\n const core = createFlowBuilderCore(chainId, opts);\n const builder = Object.assign(core, bindGeneratedOps(core));\n\n const compile = async (\n run: ComposeRunInput<T>,\n ): Promise<ComposeCompileResult> => {\n const flowDoc = builder.build();\n const req = request(flowDoc, run);\n return composeClient.compile(req);\n };\n\n return Object.assign(builder, { compile });\n };\n\n return { client: composeClient, flow, request };\n};\n"],"mappings":"AAMA;AAAA,EACE;AAAA,OAIK;AACP,SAA6B,2BAA2B;AACxD;AAAA,EACE;AAAA,OAEK;AACP,SAAS,gBAAsC;AAmHxC,MAAM,mBAAmB,CAAC,YAA2C;AAC1E,QAAM,gBAAgB,oBAAoB,OAAO;AAEjD,QAAM,UAAU,CACd,SACA,SAC2B;AAAA,IAC3B,MAAM;AAAA,IACN,KAAK,SAAS;AAAA,MACZ,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,MACnB,QAAQ,IAAI;AAAA,MACZ,aAAa,IAAI;AAAA,MACjB,UAAU,IAAI;AAAA,MACd,mBAAmB,IAAI;AAAA,MACvB,SAAS,IAAI;AAAA,MACb,kBAAkB,IAAI;AAAA,MACtB,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,CACX,SACA,SACmB;AACnB,UAAM,OAAO,sBAAsB,SAAS,IAAI;AAChD,UAAM,UAAU,OAAO,OAAO,MAAM,iBAAiB,IAAI,CAAC;AAE1D,UAAM,UAAU,OACd,QACkC;AAClC,YAAM,UAAU,QAAQ,MAAM;AAC9B,YAAM,MAAM,QAAQ,SAAS,GAAG;AAChC,aAAO,cAAc,QAAQ,GAAG;AAAA,IAClC;AAEA,WAAO,OAAO,OAAO,SAAS,EAAE,QAAQ,CAAC;AAAA,EAC3C;AAEA,SAAO,EAAE,QAAQ,eAAe,MAAM,QAAQ;AAChD;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/sdk.ts"],"sourcesContent":["import type {\n ComposeCompileRequest,\n ComposeCompileResult,\n InputSpec,\n} from '@lifi/compose-spec';\n\nimport {\n createFlowBuilderCore,\n type FlowBuilderCore,\n type FlowOptions,\n type TypedFlow,\n} from './authoring/FlowBuilderCore.js';\nimport { type ComposeClient, createComposeClient } from './client.js';\nimport {\n bindGeneratedOps,\n type GeneratedOps,\n} from './generated/operations.generated.js';\nimport { buildRun, type ComposeRunInput } from './run/inputs.js';\nimport type { InputSchema } from './types.js';\n\nexport type { ComposeRunInput };\n\n/**\n * A flow builder augmented with generated operation methods and a `compile` method\n * that submits the flow to the Compose backend for compilation.\n *\n * Created via {@link ComposeSdk.flow}.\n *\n * @typeParam T - The input schema describing the flow's required inputs.\n */\nexport type FlowBuilder<T extends InputSchema = InputSchema> =\n FlowBuilderCore<T> &\n GeneratedOps & {\n /**\n * Builds the flow document from the current builder state and submits it\n * to the Compose API for compilation.\n *\n * @param run - Runtime inputs, preconditions, and signer address.\n * @returns The compiled transaction calldata and metadata.\n * @throws {@link ComposeError} on network, validation, or server errors.\n *\n * @example\n * ```ts\n * const result = await builder.compile({\n * inputs: { token: materialisers.balanceOf({}) },\n * signer: '0xYourAddress...',\n * });\n * console.log(result.calldata);\n * ```\n */\n readonly compile: (\n run: ComposeRunInput<T>,\n ) => Promise<ComposeCompileResult>;\n };\n\n/**\n * Configuration for creating a Compose SDK instance.\n */\nexport interface ComposeSdkOptions {\n /** Base URL of the Compose API (e.g. `\"https://li.quest\"`). */\n readonly baseUrl: string;\n /** Optional custom `fetch` implementation. Defaults to `globalThis.fetch`. */\n readonly fetch?: typeof globalThis.fetch;\n /** Optional LI.FI API key for authenticated access. Sent as the `x-lifi-api-key` header on every request. */\n readonly apiKey?: string;\n}\n\n/**\n * The top-level Compose SDK interface.\n *\n * Provides methods to build flows, compile them into executable calldata, and\n * interact with the Compose API directly.\n *\n * @example\n * ```ts\n * import { createComposeSdk, resources, materialisers } from '@lifi/composer-sdk';\n *\n * const sdk = createComposeSdk({ baseUrl: 'https://li.quest' });\n *\n * const builder = sdk.flow(1, {\n * inputs: { usdc: resources.erc20('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 1) },\n * });\n *\n * builder.lifi.swap('swap1', {\n * bind: { amountIn: builder.inputs.usdc },\n * config: { resourceOut: resources.native(1) },\n * });\n *\n * const result = await builder.compile({\n * inputs: { usdc: materialisers.balanceOf({}) },\n * signer: '0xYourAddress...',\n * });\n * ```\n */\nexport interface ComposeSdk {\n /** Low-level HTTP client for the Compose API. */\n readonly client: ComposeClient;\n /**\n * Creates a new flow builder targeting the given chain.\n * @param chainId - The EVM chain ID (e.g. `1` for Ethereum mainnet).\n * @param options - Flow configuration including input declarations.\n * @returns A {@link FlowBuilder} with generated operation methods and a `compile` method.\n * @throws Error if any resource input's `chainId` doesn't match the flow's `chainId`.\n */\n readonly flow: <T extends InputSchema>(\n chainId: number,\n options: FlowOptions<T>,\n ) => FlowBuilder<T>;\n /**\n * Builds a raw compile request without sending it. Useful for inspecting the\n * request payload or submitting it through a custom transport.\n * @param flow - A built flow document (from `builder.build()`).\n * @param run - Runtime inputs, preconditions, and signer address.\n * @returns A {@link ComposeCompileRequest} ready to send to the Compose API.\n */\n readonly request: <T extends InputSchema>(\n flow: TypedFlow<T>,\n run: ComposeRunInput<T>,\n ) => ComposeCompileRequest;\n}\n\n/**\n * Creates a new Compose SDK instance.\n *\n * @param options - SDK configuration including the API base URL and optional fetch implementation.\n * @returns A {@link ComposeSdk} instance.\n *\n * @example\n * ```ts\n * const sdk = createComposeSdk({ baseUrl: 'https://li.quest' });\n * ```\n */\nexport const createComposeSdk = (options: ComposeSdkOptions): ComposeSdk => {\n const composeClient = createComposeClient(options);\n\n const request = <T extends InputSchema>(\n flowDoc: TypedFlow<T>,\n run: ComposeRunInput<T>,\n ): ComposeCompileRequest => ({\n flow: flowDoc,\n run: buildRun({\n inputs: run.inputs as Record<string, InputSpec>,\n preconditions: run.preconditions,\n signer: run.signer,\n assumptions: run.assumptions as Record<string, bigint> | undefined,\n referrer: run.referrer,\n integratorFeeBps: run.integratorFeeBps,\n maxPriceImpactBps: run.maxPriceImpactBps,\n sweepTo: run.sweepTo,\n simulationPolicy: run.simulationPolicy,\n checkOnChainAllowances: run.checkOnChainAllowances,\n }),\n });\n\n const flow = <T extends InputSchema>(\n chainId: number,\n opts: FlowOptions<T>,\n ): FlowBuilder<T> => {\n const core = createFlowBuilderCore(chainId, opts);\n const builder = Object.assign(core, bindGeneratedOps(core));\n\n const compile = async (\n run: ComposeRunInput<T>,\n ): Promise<ComposeCompileResult> => {\n const flowDoc = builder.build();\n const req = request(flowDoc, run);\n return composeClient.compile(req);\n };\n\n return Object.assign(builder, { compile });\n };\n\n return { client: composeClient, flow, request };\n};\n"],"mappings":"AAMA;AAAA,EACE;AAAA,OAIK;AACP,SAA6B,2BAA2B;AACxD;AAAA,EACE;AAAA,OAEK;AACP,SAAS,gBAAsC;AAmHxC,MAAM,mBAAmB,CAAC,YAA2C;AAC1E,QAAM,gBAAgB,oBAAoB,OAAO;AAEjD,QAAM,UAAU,CACd,SACA,SAC2B;AAAA,IAC3B,MAAM;AAAA,IACN,KAAK,SAAS;AAAA,MACZ,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,MACnB,QAAQ,IAAI;AAAA,MACZ,aAAa,IAAI;AAAA,MACjB,UAAU,IAAI;AAAA,MACd,kBAAkB,IAAI;AAAA,MACtB,mBAAmB,IAAI;AAAA,MACvB,SAAS,IAAI;AAAA,MACb,kBAAkB,IAAI;AAAA,MACtB,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,CACX,SACA,SACmB;AACnB,UAAM,OAAO,sBAAsB,SAAS,IAAI;AAChD,UAAM,UAAU,OAAO,OAAO,MAAM,iBAAiB,IAAI,CAAC;AAE1D,UAAM,UAAU,OACd,QACkC;AAClC,YAAM,UAAU,QAAQ,MAAM;AAC9B,YAAM,MAAM,QAAQ,SAAS,GAAG;AAChC,aAAO,cAAc,QAAQ,GAAG;AAAA,IAClC;AAEA,WAAO,OAAO,OAAO,SAAS,EAAE,QAAQ,CAAC;AAAA,EAC3C;AAEA,SAAO,EAAE,QAAQ,eAAe,MAAM,QAAQ;AAChD;","names":[]}
|