@lifi/composer-sdk 的公共 API。如需权威的 TypeScript 类型,请浏览包源码 unpkg.com/browse/@lifi/composer-sdk。
不存在
sdk.compile()。 compile 位于 builder 上:builder.compile(run)。sdk.request(flow, run) 是用于自定义传输的应急出口(escape hatch)。createComposeSdk(options)
声明于 sdk.ts。
ComposeSdkOptions
ComposeSdk
成员:
sdk.flow(chainId, options) → FlowBuilder
FlowOptions<T>
泛型
T 会贯穿传递到 builder.inputs.<name> 上的类型化句柄。
FlowBuilder<T>
FlowBuilder 是一个 FlowBuilderCore<T>(声明于 FlowBuilderCore.ts),并额外增加了每个 op 对应一个类型化方法以及一个 compile 方法。
Inherited FlowBuilderCore members
Op methods
SDK 为 Composer API 支持的每个 op 暴露一个类型化方法。示例:builder.lifi.swap(id, args)、builder.lifi.zap(id, args)builder.core.call(id, args)、builder.core.asResource(id, args)、builder.core.balanceOf(id, args),以及算术方法builder.core.add(id, args)、subtract、multiply、divideDown、divideUp、bpsDown、bpsUp—— 每个算术 op 一个方法。
Record<portName, OutputHandle>。参见实时的 Ops catalog。
builder.compile(run)
一步完成:调用 build(),经由 sdk.request 组成一个 ComposeCompileRequest,将其 POST 到 /compose,并返回一个 ComposeCompileResult。
ComposeError。
sdk.request(flow, run) → ComposeCompileRequest
当你需要原始请求载荷时使用 —— 排队、服务端代理、对请求签名、在测试中检查。
sdk.client
低层 HTTP 客户端。大多数集成只需要 builder.compile();当你通过 sdk.request() 构建请求并自行提交,或需要协议/manifest 发现时,再使用该客户端。
getZapPacks 接受一个可选的 { protocols?: string | readonly string[] } 过滤器。结果不由 SDK 缓存 —— 请根据你的刷新需求自行缓存。参见路由边目录以查看渲染后的实时视图。
ComposeCompileResult
一个基于 status 字段的判别联合(discriminated union)。在访问特定结构的字段之前,先按 result.status 分支。
status: 'success'—— 在默认的simulationPolicy: 'strict'下,当 compile 与 simulation 都成功时返回。status: 'partial'—— 仅当运行时传入了simulationPolicy: 'allow-revert'且 模拟发生了 revert 时返回。transactionRequest仍然存在;revert 诊断信息被暴露出来供调用方呈现。
transactionRequest、userProxy、producedResources、producedHandles(任何标记为 expose: true 的输出句柄的值)、可选的 approvals、可选的 priceImpact,以及可选的 fees。
ComposeRunInput<T>
声明于 run/inputs.ts。
Handles
声明于authoring/handles.ts。
InputHandle<T>——{ _tag: 'input', inputName, __outputKind?: T }。以幻影类型参数(phantom type parameter)携带该输入的输出 kind。ResourceInputHandle——InputHandle<'resource'> & { resource: Resource }。OutputHandle<T>——{ _tag: 'output', nodeId, portName, __outputKind?: T }。Bindable<T>—— 类型化 bind 槽位所接受的值的联合:InputHandle<T>、OutputHandle<T>、TypedRef<T>。对于'uint256'槽位,'resource'标记的句柄也被接受(资源即 uint256 金额)。
handleToRef(从同一模块导出)将句柄转换为原始 ref。
Namespaces
resources—— 用于声明代币资源的辅助函数(resources.erc20(token, chainId)、resources.native(chainId))。materialisers—— 为已注册 materialiser 生成的辅助函数(materialisers.directDeposit({ amount })、materialisers.balanceOf({ ... })等)。guards—— 为已注册 guard 生成的辅助函数(guards.slippage({ port, bps })等)。raw—— 低层应急出口:raw.ref<T>(path)创建一个TypedRef<T>;raw.guard(kind, config?)为尚未被类型化辅助函数覆盖的 guard kind 构建一个AppliedGuard;raw.materialiser(kind, config?)出于同样原因构建一个MaterialiserInput。
TypedFlow<T>
builder.build() 返回的 Flow 文档。在结构上与来自 @lifi/compose-spec 的 Flow 完全相同,另带一个幻影 __inputs?: T,通过 TypeScript 推断携带输入 schema(__inputs 在运行时不存在)。
Error types
ComposeError(从 @lifi/compose-spec 重新导出)携带:
See also
- Quickstart —— 五分钟的首个 flow 讲解。
- Build a Flow —— 生产环境的设置、输入、ops、materialisers、guards、preconditions 与提交。
- Flow wire format —— SDK 生成的 JSON。

