SubmitResult (what you can log)
- signature: string
- lane: 'l1' | 'router'
- preflightSkipped: boolean
- attempts: number
Common errors
PreflightFailedError — simulation failed; inspect error.logs.RpcRetriableError — throttling/429; back off and retry.TransactionTooLargeError — exceeded maxMessageSize.BlockhashStaleError — blockhash expired; rebuild/refresh.RouterJsonRpcError — router JSON-RPC error.NetworkError — transport failures; retryable.InvalidIntentError — rejected intent/instruction.
Handling pattern
try {
const res = await submitter.submit(tx, [payer], { skipPreflight: false });
await connection.confirmTransaction(res.signature, 'confirmed');
} catch (e) {
// size split, inspect preflight logs, or backoff on 429
}