from opinion_clob_sdk.model import TopicStatus
class TopicStatus(Enum):
CREATED = 1 # Market created but not yet active
ACTIVATED = 2 # Market is live and accepting trades
RESOLVING = 3 # Market ended, awaiting resolution
RESOLVED = 4 # Market resolved with outcome
market = client.get_market(123)
status = market.result.data.status
if status == TopicStatus.ACTIVATED.value:
print("Market is live for trading")
elif status == TopicStatus.RESOLVED.value:
print("Market resolved, can redeem winnings")
from opinion_clob_sdk.model import TopicStatusFilter
class TopicStatusFilter(Enum):
ALL = None # All markets regardless of status
ACTIVATED = "activated" # Only active markets
RESOLVED = "resolved" # Only resolved markets
# Get only active markets
markets = client.get_markets(status=TopicStatusFilter.ACTIVATED)
# Get only resolved markets
markets = client.get_markets(status=TopicStatusFilter.RESOLVED)
# Get all markets
markets = client.get_markets(status=TopicStatusFilter.ALL)
from opinion_clob_sdk.chain.py_order_utils.model.sides import OrderSide
class OrderSide(IntEnum):
BUY = 0 # Buy outcome tokens
SELL = 1 # Sell outcome tokens
from opinion_clob_sdk.chain.py_order_utils.model.order import PlaceOrderDataInput
# Place buy order
buy_order = PlaceOrderDataInput(
marketId=123,
tokenId="token_yes",
side=OrderSide.BUY, # Buy YES tokens
# ...
)
# Place sell order
sell_order = PlaceOrderDataInput(
marketId=123,
tokenId="token_yes",
side=OrderSide.SELL, # Sell YES tokens
# ...
)
from opinion_clob_sdk.chain.py_order_utils.model.order_type import (
MARKET_ORDER,
LIMIT_ORDER
)
MARKET_ORDER = 1 # Execute immediately at best available price
LIMIT_ORDER = 2 # Execute at specified price or better
from opinion_clob_sdk.chain.py_order_utils.model.order_type import MARKET_ORDER, LIMIT_ORDER
# Market order - executes immediately
market_order = PlaceOrderDataInput(
orderType=MARKET_ORDER,
price="0", # Price ignored for market orders
# ...
)
# Limit order - waits for specified price
limit_order = PlaceOrderDataInput(
orderType=LIMIT_ORDER,
price="0.55", # Execute at $0.55 or better
# ...
)
@dataclass
class PlaceOrderDataInput:
marketId: int
tokenId: str
side: int # OrderSide.BUY or OrderSide.SELL
orderType: int # MARKET_ORDER or LIMIT_ORDER
price: str
makerAmountInQuoteToken: str = None # Amount in USDT (optional)
makerAmountInBaseToken: str = None # Amount in YES/NO tokens (optional)