UNPKG

@lifi/composer-sdk

Version:

Public Composer SDK for building and submitting flows

60 lines (57 loc) 2.44 kB
import { ComposeCompileResult, TrackedBalance, SlotFinderRequirement, SimulateRequest } from '@lifi/compose-spec'; /** * Input for {@link buildSimulateRequest}: a compile result plus the fields a * simulation needs that a compiled flow does not carry. */ interface BuildSimulateRequestInput { /** * A result from `builder.compile(...)` / `client.compile(...)`. Both * `success` and `partial` results carry a `transactionRequest`, so either is * valid input — the helper does not discriminate on `status`. */ readonly result: ComposeCompileResult; /** EVM chain id. A compile result does not carry the target chain. */ readonly chainId: number; /** * The transaction sender (`from`). A compile result does not carry the * signer, so it must be supplied here. */ readonly signer: string; /** * Balances to watch across the simulation. These cannot be inferred from a * flow and must be supplied by the caller. */ readonly trackedBalances: readonly TrackedBalance[]; /** Optional funding instructions applied before simulation. */ readonly requirements?: readonly SlotFinderRequirement[]; /** Optional block to pin the simulation to. Omitted ⇒ chain head. */ readonly block?: number; /** * Optional native value override. Defaults to the compiled * `transactionRequest.value` when omitted. */ readonly value?: bigint | string; } /** * Assembles a {@link SimulateRequest} from a compile result and the * caller-supplied chain, signer, and tracked balances. Pure: performs no * network I/O, does not mutate its input, and returns a fresh object. * * Bridges the common case — simulate the transaction you just compiled — * without coupling raw-transaction simulation to the flow builder. The * `value` defaults to the compiled transaction's value unless overridden. * * @example * ```ts * const compiled = await builder.compile({ inputs: { ... }, signer: '0x1111...' }); * const req = buildSimulateRequest({ * result: compiled, * chainId: 1, * signer: '0x1111111111111111111111111111111111111111', * trackedBalances: [{ token: '0xA0b8...', owner: '0x1111...' }], * }); * const sim = await sdk.client.simulate(req); * ``` */ declare const buildSimulateRequest: (input: BuildSimulateRequestInput) => SimulateRequest; export { type BuildSimulateRequestInput, buildSimulateRequest };