@somnia-chain/markets-sdk / index / SomniaMarketsAddresses
Interface: SomniaMarketsAddresses
Defined in: packages/sdk/src/config.ts:16
Protocol contract addresses (all optional — features degrade if unset).
Properties
fakeOracle?
optionalfakeOracle?:`0x${string}`
Defined in: packages/sdk/src/config.ts:18
FakeOracle resolver (demo resolve/void).
collateral?
optionalcollateral?:`0x${string}`
Defined in: packages/sdk/src/config.ts:24
Per-venue collateral ERC-20 (the venue's quote/collateral token; on test
environments this is the faucet-capable TestUSDC). Preferred over
testUsdc, which remains as the legacy/fallback alias.
testUsdc?
optionaltestUsdc?:`0x${string}`
Defined in: packages/sdk/src/config.ts:29
TestUSDC collateral (faucet + balances). Legacy/fallback alias for SomniaMarketsAddresses.collateral.
binaryModule?
optionalbinaryModule?:`0x${string}`
Defined in: packages/sdk/src/config.ts:35
BinaryMarketsModule — the binary product's core module (complete-set mint/redeem, market creation, adapter approval). Needed by the trader writes, the hub-approval reads, and /system diagnostics.
marketCreator?
optionalmarketCreator?:`0x${string}`
Defined in: packages/sdk/src/config.ts:40
MarketCreator factory. When set, the live tail watches MarketCreated and picks up new binary markets the block they deploy — no indexer round-trip.
clobFactory?
optionalclobFactory?:`0x${string}`
Defined in: packages/sdk/src/config.ts:45
ClobFactory — /system-diagnostics fallback when the module's live
clobFactory() read fails; a live/config mismatch is flagged.
binaryPoolImpl?
optionalbinaryPoolImpl?:`0x${string}`
Defined in: packages/sdk/src/config.ts:53
BinaryPool implementation behind the fleet (distinct from the factory's
binaryMarketImpl). On beacon-generation deploys this is the impl the
SomniaMarketsAddresses.binaryPoolBeacon points at; on pre-beacon
deploys it is the EIP-1167 master copy the factory cloned. Not read by the
SDK itself, but surfaced to apps — the explorer's system overview renders it.
binaryPoolBeacon?
optionalbinaryPoolBeacon?:`0x${string}`
Defined in: packages/sdk/src/config.ts:60
The fleet's UpgradeableBeacon (beacon generation onwards). Every pool the
factory deploys is a BeaconProxy against it, so upgrading the beacon moves
the whole fleet at once. Absent on pre-beacon manifests, where pools are
independent clones of SomniaMarketsAddresses.binaryPoolImpl.
binarySettlement?
optionalbinarySettlement?:`0x${string}`
Defined in: packages/sdk/src/config.ts:68
The permanent BinarySettlement singleton (settlement-extraction v2). Every
pool finalizes its markets into it and every redemption routes through it,
so a pool can be recycled onto the next market. Needed by the low-level
redeemDirect / claimOwed / getSettlement trader methods, which throw
if it is unset. Absent on pre-v2 (pool-redeem) deploys.
operatorPermissionsRegistry?
optionaloperatorPermissionsRegistry?:`0x${string}`
Defined in: packages/sdk/src/config.ts:73
Shared OperatorPermissionsRegistry — users operator-approve a SpotStopOrderRegistry here (once, globally) so it can place their stop order via the pool at trigger time.
marketsCore?
optionalmarketsCore?:`0x${string}`
Defined in: packages/sdk/src/config.ts:79
MarketsCore — the control-plane registry of operators, typed venues, and
the module binding per market type. Needed by the operator/venue admin
reads + createOperatorAdmin writes.
collateralRouter?
optionalcollateralRouter?:`0x${string}`
Defined in: packages/sdk/src/config.ts:86
CollateralRouter periphery — the native-token (wrap/unwrap) + Permit2 entry over BinaryMarketsModule's complete-set flow. May be absent for an environment where only the plain-ERC-20 path is deployed; the router-based trader methods throw if it is unset rather than sending to the zero address.
marketCreatorFactory?
optionalmarketCreatorFactory?:`0x${string}`
Defined in: packages/sdk/src/config.ts:92
MarketCreatorFactory — stamps out per-operator/venue MarketCreator (+ its
policy) instances, the operator "market machinery" layer. Needed by
createMarketCreatorAdmin writes; the admin throws if it is unset.
marketCreatorFactoryV2?
optionalmarketCreatorFactoryV2?:`0x${string}`
Defined in: packages/sdk/src/config.ts:101
v2 sibling of SomniaMarketsAddresses.marketCreatorFactory — stamps
out MarketCreatorV2 (interval/bucket-mode rolling series) instances.
Additive: coexists with the v1 factory. Not read by
createMarketCreatorAdmin automatically — pass it explicitly via that
call's factory override to mint a v2 creator instead of v1. Undefined
on deploys that predate it.
oracleHub?
optionaloracleHub?:`0x${string}`
Defined in: packages/sdk/src/config.ts:112
The OracleHub proxy (Oracle v2 §8e) — the protocol's ONE
governance-approved oracle adapter. Every market creation binds through it
(content-addressed scheduleQuestion dedup, earmark-at-creation resolution
funding + bounded-drain exact metering, payout-vector delivery). Needed by
the OracleHub reads (quoteCreateMarketValue, getSchedulingCost,
earmarkedOf, resolveReserve) and the createOracleHubAdmin writes; those throw if it
is unset. Also the default adapter for
createMarketCreatorAdmin.createMarketCreator.
oracleAdapterFactory?
optionaloracleAdapterFactory?:`0x${string}`
Defined in: packages/sdk/src/config.ts:120
Legacy OracleAdapterFactory address retained for source compatibility.
Deprecated
LEGACY (pre-oracle-v2): OracleAdapterFactory. The factory contract was deleted in Oracle v2 — use SomniaMarketsAddresses.oracleHub. Kept only so old configs keep type-checking; nothing in the SDK reads it.
sharedOracleAdapter?
optionalsharedOracleAdapter?:`0x${string}`
Defined in: packages/sdk/src/config.ts:128
Legacy shared oracle-adapter address retained for source compatibility.
Deprecated
LEGACY (pre-oracle-v2): the shared ProphecyOracleAdapter proxy. Replaced by SomniaMarketsAddresses.oracleHub. Kept only so old configs keep type-checking; nothing in the SDK reads it.
perpPoolFactory?
optionalperpPoolFactory?:`0x${string}`
Defined in: packages/sdk/src/config.ts:144
PerpPoolFactory — the on-chain authority on which perp markets exist.
Normally UNNECESSARY. SomniaMarkets.loadMarkets finds the factory
itself: any indexed perp row carries its marginBank, and
MarginBank.getSystemConfig() reports the factory the bank actually calls.
That is the better source — it is the deployment's own view of its wiring,
so it cannot drift from a stale config the way a hardcoded address can.
Set this only for the one case the bootstrap cannot cover: an indexer with
NO perp rows at all (a fresh reindex, or a chain whose perp manifest was
never written), where there is no marginBank to ask. When set it takes
precedence, so it also serves as an override while a bank's reported
factory is being rotated.
lend?
optionallend?:LendAddresses
Defined in: packages/sdk/src/config.ts:171
SomniaLend money-market addresses — a THIRD-PARTY Aave v3 fork
(docs.somnialend.finance), so unlike the first-party fields above these
are NOT in the deployments manifests. Set SOMNIA_MAINNET_LEND or
SOMNIA_TESTNET_LEND (from the root entry) for the
published deployments. Backs the client.lend namespace; its methods
throw a clear error when the address they need is unset.
Gotchas
This is the ONLY way to point the lend surface at a deployment — and the
addresses must belong to this client's chain. A testnet deployment needs a
testnet client; there is no way to graft one chain's lend addresses onto
another chain's socket.
Example (Configuring SomniaLend)
const exchange = new SomniaMarkets({
...config,
addresses: { lend: SOMNIA_MAINNET_LEND },
});
const account = await exchange.client.lend.getAccount(me);
console.log(`health factor ${account.healthFactor}`);