Skip to main content
import * as BuilderBid from 'voltaire-effect/primitives/BuilderBid'
import * as Schema from 'effect/Schema'
import { Effect } from 'effect'

const bid = await Effect.runPromise(BuilderBid.from({
  builderPubkey: pubkeyBytes,    // 48 bytes BLS
  builderAddress: '0x...',
  value: 1000000000000000000n,   // wei
  gasLimit: 30000000n,
  gasUsed: 15000000n,
  slot: 1234567n,
  parentHash: hashBytes,         // 32 bytes
  blockHash: hashBytes,
  feeRecipient: '0x...',
  timestamp: 1700000000n,
}))

// Validate constraints
await Effect.runPromise(BuilderBid.validate(bid))

// Compare bids by value
BuilderBid.compareBids(bidA, bidB) // 1, -1, or 0

// Value per gas
BuilderBid.valuePerGas(bid)

// Serialize
BuilderBid.toHex(bid)
Builder bids in Proposer-Builder Separation (PBS) contain block value, gas limits, and hashes.