generateOrder
The generateOrder
function implements a common flow to open and track the status of an order on a SolverNet inbox contract, by combining single-purpose functions:
- Validating the order, using
validateOrder
- Sending the order transaction, using
sendOrder
- Waiting for the order to be open on the blockchain, using
waitForOrderOpen
- Waiting for the order reach a terminal state, using
waitForOrderClose
Usage
import { generateOrder } from '@omni-network/core'
import { generateOrder } from '@omni-network/core'
const generator = await generateOrder({
// ... params
});
Parameters
Prop | Type | Required | Description |
---|---|---|---|
client | Client | Yes | The viem client used to send the transaction. This client must have an account attached to it. |
inboxAddress | Address | Yes | The address of the inbox contract, retrieved using the getContracts function. |
order | Order | Yes | Order parameters |
pollinginterval | number | No | Polling interval in milliseconds, defaults to the client polling interval. |
environment | Environment | No | SolverNet environment to use, either mainnet (default) or testnet . |
Return
generateOrder
returns an AsyncGenerator of OrderState
objects through the order flow.
OrderState
type OrderState =
| { status: 'valid'; txHash?: never; order?: never }
| { status: 'sent'; txHash: Hex; order?: never }
| { status: 'open'; txHash: Hex; order: ResolvedOrder }
| { status: TerminalStatus; txHash: Hex; order: ResolvedOrder }
Example
import { type OrderState, getContracts, generateOrder } from '@omni-network/core'
const contracts = await getContracts()
const generator = generateOrder({
client: viemWalletClient,
inboxAddress: contracts.inbox,
order: orderParams,
})
let orderState: OrderState | undefined
for await (orderState of generator) {
console.log('current order state', orderState)
}
console.log('terminal order state', orderState)