Venue Admin
Administrative operations for venue operators — pause trading, update configuration, and manage your venue.
The venue operator (the address that called createVenue) has exclusive administrative control over the venue. This role is immutable — there is no function to transfer venue ownership.
Pausing and Unpausing
Pause a venue to halt all trading and market creation. Existing orders remain on the book but cannot be matched or filled.
// Pause
const tx = await client.venue.setPaused(1n, true);
// Unpause
const tx = await client.venue.setPaused(1n, false);Pausing is scoped to individual venues — there is no global protocol pause. Use this for emergency situations or maintenance.
Pause vs. Suspend
Two distinct controls exist:
- Pause (venue operator) — self-service on/off switch, the operator can pause and unpause at will
- Suspend (protocol owner) — a protocol-level lock on a venue; only the protocol owner can un-suspend
Suspend is reserved for protocol emergencies and is not something a venue operator controls.
Updating Venue Configuration
Fees
Update trading fee tiers at any time. Changes take effect immediately for all subsequent trades:
const tx = await client.venue.updateFees({
venueId: 1n,
venueFeeBps: 150, // 1.50%
creatorFeeBps: 50, // 0.50% (carved from venue fee)
});Constraints:
venueFeeBpsmust be between 1 and 200creatorFeeBpsmust be ≤venueFeeBps
Venue Details and Access Control
Update the venue name, metadata, access control gates, and fee recipient:
const hash = await client.venue.updateVenue({
venueId: 1n,
name: 'Updated Venue Name',
metadata: '{"category": "sports"}',
tradingAccessControl: tradingAccessControl, // address or 0x0 for open
creationAccessControl: creationAccessControl, // address or 0x0 for open
feeRecipient: feeRecipient, // cannot be zero address
});Oracle Parameters
Update the UMA reward and minimum bond for future markets:
const hash = await client.venue.updateOracleParams({
venueId: 1n,
umaRewardAmount: parseUnits('10', 6), // 10 USDC
umaMinBond: parseUnits('5', 6), // 5 USDC
});Pause Individual Markets
You can also pause and unpause individual markets on your venue:
await client.market.pauseMarket(marketId);
await client.market.unpauseMarket(marketId);Market Tags and Metadata
Tags and metadata URIs for markets and groups are event-only (not stored on-chain, indexed by the subgraph). Only the market creator or venue operator can update them:
await client.market.updateMarketTags({ marketId: 1n, tags: ['sports'] });
await client.market.updateMarketMetadata({ marketId: 1n, metadataURI: 'ipfs://…' });
await client.market.updateMarketGroupTags({ marketGroupId: 1n, tags: ['elections'] });
await client.market.updateMarketGroupMetadata({ marketGroupId: 1n, metadataURI: 'ipfs://…' });What Can't Be Changed
Some parameters are permanently set at venue creation:
| Parameter | Updatable |
|---|---|
| Operator (owner) | No |
defaultTickSize | No |
marketCreationFee | No |
Reading Venue Data
Read the complete venue configuration on-chain:
const venueData = await publicClient.readContract({
address: diamondAddress,
abi: VenueFacetABI,
functionName: 'getVenue',
args: [venueId],
});Returns the full VenueData struct including fees, oracle params, access control addresses, and active status.
What's Next
- Fee Structure → — understand fee tiers and calculation
- Access Control → — gate who can trade and create markets
- Oracle Settings → — configure UMA resolution parameters